From 71d89550696dfd77e766a2d0785852267297c978 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:29:28 +0900 Subject: [PATCH 01/17] =?UTF-8?q?fix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20impo?= =?UTF-8?q?rt=20=EC=88=98=EC=A0=95=20(ignore=20case)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/patchlogr-oas/src/pipeline/OASCanonicalizeStage.ts | 2 +- packages/patchlogr-oas/src/pipeline/OASValidationStage.ts | 2 +- .../patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts | 2 +- .../patchlogr-oas/src/utils/__tests__/oasVersionUtils.test.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/patchlogr-oas/src/pipeline/OASCanonicalizeStage.ts b/packages/patchlogr-oas/src/pipeline/OASCanonicalizeStage.ts index 3882d2c..0fa9a95 100644 --- a/packages/patchlogr-oas/src/pipeline/OASCanonicalizeStage.ts +++ b/packages/patchlogr-oas/src/pipeline/OASCanonicalizeStage.ts @@ -3,7 +3,7 @@ import { OASStageContext } from "./OASStageContext"; import { PipelineStage } from "./PipelineExecutor"; import { canonicalizeOASV2 } from "../canonicalize/v2"; import { canonicalizeOASV3 } from "../canonicalize/v3"; -import { isOpenAPIV2, isOpenAPIV3 } from "../utils/OASVersionUtils"; +import { isOpenAPIV2, isOpenAPIV3 } from "../utils/oasVersionUtils"; /** * 표준화된 CanonicalSpec로 변환 diff --git a/packages/patchlogr-oas/src/pipeline/OASValidationStage.ts b/packages/patchlogr-oas/src/pipeline/OASValidationStage.ts index 8be8ff3..ba36ac1 100644 --- a/packages/patchlogr-oas/src/pipeline/OASValidationStage.ts +++ b/packages/patchlogr-oas/src/pipeline/OASValidationStage.ts @@ -2,7 +2,7 @@ import SwaggerParser from "@apidevtools/swagger-parser"; import { PipelineStage } from "./PipelineExecutor"; import { OASStageContext } from "./OASStageContext"; -import { getOASVersion } from "../utils/OASVersionUtils"; +import { getOASVersion } from "../utils/oasVersionUtils"; /** * OAS 문서의 유효성 검사 diff --git a/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts b/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts index b099544..09434fe 100644 --- a/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts +++ b/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "vitest"; -import { getOASVersion, isOpenAPIV2, isOpenAPIV3 } from "../OASVersionUtils"; +import { getOASVersion, isOpenAPIV2, isOpenAPIV3 } from "../oasVersionUtils"; describe("OASVersionUtils", () => { test("getOASVersion should return correct version for 3.+", () => { diff --git a/packages/patchlogr-oas/src/utils/__tests__/oasVersionUtils.test.ts b/packages/patchlogr-oas/src/utils/__tests__/oasVersionUtils.test.ts index b099544..09434fe 100644 --- a/packages/patchlogr-oas/src/utils/__tests__/oasVersionUtils.test.ts +++ b/packages/patchlogr-oas/src/utils/__tests__/oasVersionUtils.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "vitest"; -import { getOASVersion, isOpenAPIV2, isOpenAPIV3 } from "../OASVersionUtils"; +import { getOASVersion, isOpenAPIV2, isOpenAPIV3 } from "../oasVersionUtils"; describe("OASVersionUtils", () => { test("getOASVersion should return correct version for 3.+", () => { From 620b6394d3cd248329ed349957d1db2ae3853ba3 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:30:33 +0900 Subject: [PATCH 02/17] =?UTF-8?q?feature:=20typecheck=20script=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 10 +- packages/patchlogr-oas/package.json | 4 +- packages/patchlogr-types/package.json | 3 +- yarn.lock | 156 +++++++++++++++++++++++++- 4 files changed, 160 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 179bc9b..7ecc052 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,11 @@ "packages/*" ], "scripts": { - "dev": "turbo run dev", - "build": "turbo run build", - "test": "turbo run test", - "lint": "turbo run lint", - "typecheck": "turbo run typecheck", + "dev": "turbo run dev --cache-dir=.turbo", + "build": "turbo run build --cache-dir=.turbo", + "test": "turbo run test --cache-dir=.turbo", + "lint": "turbo run lint --cache-dir=.turbo", + "typecheck": "turbo run typecheck --cache-dir=.turbo", "clean": "turbo run clean && rm -rf node_modules .turbo" }, "devDependencies": { diff --git a/packages/patchlogr-oas/package.json b/packages/patchlogr-oas/package.json index 0386eef..3c609cf 100644 --- a/packages/patchlogr-oas/package.json +++ b/packages/patchlogr-oas/package.json @@ -6,11 +6,13 @@ }, "scripts": { "lint": "eslint .", - "test": "vitest" + "test": "vitest", + "typecheck": "tsc --noEmit" }, "devDependencies": { "@types/node": "24", "openapi-types": "^12.1.3", + "ts-node": "^10.9.2", "vitest": "^4.0.16" }, "dependencies": { diff --git a/packages/patchlogr-types/package.json b/packages/patchlogr-types/package.json index 117ed0b..24af37f 100644 --- a/packages/patchlogr-types/package.json +++ b/packages/patchlogr-types/package.json @@ -11,7 +11,8 @@ "scripts": { "build": "tsc", "lint": "eslint .", - "test": "vitest" + "test": "vitest", + "typecheck": "tsc --noEmit" }, "devDependencies": { "@types/node": "24", diff --git a/yarn.lock b/yarn.lock index d5fe412..78be34b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,6 +45,15 @@ __metadata: languageName: node linkType: hard +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.27.2": version: 0.27.2 resolution: "@esbuild/aix-ppc64@npm:0.27.2" @@ -371,13 +380,30 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.5": +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + "@npmcli/agent@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/agent@npm:4.0.0" @@ -433,6 +459,7 @@ __metadata: "@patchlogr/types": "workspace:*" "@types/node": "npm:24" openapi-types: "npm:^12.1.3" + ts-node: "npm:^10.9.2" vitest: "npm:^4.0.16" languageName: unknown linkType: soft @@ -616,6 +643,34 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.12 + resolution: "@tsconfig/node10@npm:1.0.12" + checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + "@types/chai@npm:^5.2.2": version: 5.2.3 resolution: "@types/chai@npm:5.2.3" @@ -647,12 +702,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:24": - version: 24.10.4 - resolution: "@types/node@npm:24.10.4" +"@types/node@npm:24.10.6": + version: 24.10.6 + resolution: "@types/node@npm:24.10.6" dependencies: undici-types: "npm:~7.16.0" - checksum: 10c0/069639cb7233ee747df1897b5e784f6b6c5da765c96c94773c580aac888fa1a585048d2a6e95eb8302d89c7a9df75801c8b5a0b7d0221d4249059cf09a5f4228 + checksum: 10c0/4c93fb9c4ad38ef0738a34815d84bb091cf6e7af7d51d58f20a8600a8a189edbf0fb54c4f86e344b2199db7bda04fecf17c9d171055ff7a9aa8333b3b96fce4c languageName: node linkType: hard @@ -887,7 +942,16 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": +"acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -948,6 +1012,13 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -1068,6 +1139,13 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -1098,6 +1176,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -1760,6 +1845,13 @@ __metadata: languageName: node linkType: hard +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + "make-fetch-happen@npm:^15.0.0": version: 15.0.3 resolution: "make-fetch-happen@npm:15.0.3" @@ -2409,6 +2501,44 @@ __metadata: languageName: node linkType: hard +"ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 + languageName: node + linkType: hard + "turbo-darwin-64@npm:2.7.2": version: 2.7.2 resolution: "turbo-darwin-64@npm:2.7.2" @@ -2558,6 +2688,13 @@ __metadata: languageName: node linkType: hard +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + "vite@npm:^6.0.0 || ^7.0.0": version: 7.3.0 resolution: "vite@npm:7.3.0" @@ -2727,6 +2864,13 @@ __metadata: languageName: node linkType: hard +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" From be27065eea060ddb619c357ef523cdb48898148f Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:31:27 +0900 Subject: [PATCH 03/17] =?UTF-8?q?chore:=20github=20action=20ci=20workflow?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d874936 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,65 @@ +name: Continuous Integration + +on: + pull_request: + types: [opened, synchronize] + workflow_dispatch: + +env: + NODE_VERSION: '24' + +jobs: + build: + name: Build & Test + timeout-minutes: 15 + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable Corepack (Yarn Berry) + run: corepack enable + + - name: Setup Yarn Berry + run: yarn set verion berry && yarn set version 4.12.0 + + - name: Restore Yarn Cache + uses: actions/cache@v4 + with: + path: | + .yarn/cache + .yarn/unplugged + .yarn/build-state.yml + .pnp.cjs + key: yarn-${{runner.os}}-${{hashFiles('**/yarn.lock')}} + restore-keys: yarn-${{runner.os}}- + + - name: Install Dependencies (Yarn Berry) + run: yarn install --immutable + + - name: Restore Turborepo Cache + uses: actions/cache@v4 + with: + path: .turbo + key: turbo-${{runner.os}}-${{hashFiles('turbo.json', 'package.json', '**/package.json')}} + restore-keys: turbo-${{runner.os}}- + + - name: Run Typecheck + run: yarn typecheck + + - name: Run Lint + run: yarn lint + + - name: Run Tests + run: yarn test + + - name: Build + run: yarn build \ No newline at end of file From 1610c9f0081e9f6baf8dc302e0f4e6a850d4975b Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:33:39 +0900 Subject: [PATCH 04/17] =?UTF-8?q?docs:=20PR=20template=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE.md | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5d1ed23..600840b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,20 @@ ## 📎 Related issues -- resolve # +- resolve # + +## 📦 Scope + + + +- [ ] @patchlogr/core +- [ ] @patchlogr/cli +- [ ] @patchlogr/inspector +- [ ] @patchlogr/oas +- [ ] @patchlogr/types +- [ ] docs, examples +- [ ] tests +- [ ] ci / cd / infra +- [ ] other (아래에 명시) ## 📌 Summary @@ -18,12 +32,13 @@ ## ⚠️ Impact -- [ ] Breaking Change -- [ ] Versioning 영향 있음 (major / minor / patch) -- [ ] 내부 리팩토링만 포함 +- [ ] No Breaking Changes +- [ ] Breaking Change +- [ ] Versioning 영향 있음 (major / minor / patch) +- [ ] 내부 리팩토링만 포함 ## ✅ Checklist -- [ ] 요구사항 명세 충족 -- [ ] 테스트 추가 / 수정 -- [ ] deterministic output 확인 +- [ ] 요구사항 명세 충족 +- [ ] 테스트 추가 / 수정 +- [ ] deterministic output 확인 From 591acea33ff71718807076d8f00255a9e1cc200c Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:53:51 +0900 Subject: [PATCH 05/17] =?UTF-8?q?chore:=20case=20sensitive=20=ED=95=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/__tests__/OASVersionUtils.test.ts | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts diff --git a/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts b/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts deleted file mode 100644 index 09434fe..0000000 --- a/packages/patchlogr-oas/src/utils/__tests__/OASVersionUtils.test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { getOASVersion, isOpenAPIV2, isOpenAPIV3 } from "../oasVersionUtils"; - -describe("OASVersionUtils", () => { - test("getOASVersion should return correct version for 3.+", () => { - const oasVersion = getOASVersion({ - openapi: "3.0.1", - info: { - title: "Test API", - version: "1.0.0", - }, - paths: {}, - }); - - expect(oasVersion).toBe("3.0.1"); - }); - - test("getOASVersion should return correct version for 2.0", () => { - const oasVersion = getOASVersion({ - swagger: "2.0", - info: { - title: "Test API", - version: "1.0.0", - }, - paths: {}, - }); - - expect(oasVersion).toBe("2.0"); - }); - - test("getOASVersion should return undefined for unknown version", () => { - const oasVersion = getOASVersion({ - info: { - title: "Test API", - version: "1.0.0", - }, - paths: {}, - } as any); - - expect(oasVersion).toBeUndefined(); - }); - - test("isOpenAPIV3 should correctly identify OpenAPI v3 documents", () => { - const isV3 = isOpenAPIV3({ - openapi: "3.0.1", - info: { - title: "Test API", - version: "1.0.0", - }, - paths: {}, - }); - - expect(isV3).toBe(true); - }); - - test("isOpenAPIV2 should correctly identify OpenAPI v2 documents", () => { - const isV2 = isOpenAPIV2({ - swagger: "2.0", - info: { - title: "Test API", - version: "1.0.0", - }, - paths: {}, - }); - - expect(isV2).toBe(true); - }); -}); From d42f4153632d463508fbb9c2e5607baf3a961844 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:57:29 +0900 Subject: [PATCH 06/17] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20ts-node=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/patchlogr-oas/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/patchlogr-oas/package.json b/packages/patchlogr-oas/package.json index 3c609cf..0375a7d 100644 --- a/packages/patchlogr-oas/package.json +++ b/packages/patchlogr-oas/package.json @@ -12,7 +12,6 @@ "devDependencies": { "@types/node": "24", "openapi-types": "^12.1.3", - "ts-node": "^10.9.2", "vitest": "^4.0.16" }, "dependencies": { From 88595742a78762a92e53694028b3810c59478841 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:57:55 +0900 Subject: [PATCH 07/17] =?UTF-8?q?feature:=20test=20coverage=20=EB=A6=AC?= =?UTF-8?q?=ED=8F=AC=ED=8A=B8=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20reporter?= =?UTF-8?q?=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++++- package.json | 1 + packages/patchlogr-types/package.json | 1 - vitest.config.ts | 6 ++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6ad3ff7..19b2169 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,7 @@ node_modules .turbo # build files -dist \ No newline at end of file +dist + +# test files +.coverage \ No newline at end of file diff --git a/package.json b/package.json index 7ecc052..06041c9 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@types/node": "24", "@typescript-eslint/eslint-plugin": "^8.51.0", "@typescript-eslint/parser": "^8.51.0", + "@vitest/ui": "^4.0.16", "esbuild": "0.27.2", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", diff --git a/packages/patchlogr-types/package.json b/packages/patchlogr-types/package.json index 24af37f..9d2bc6e 100644 --- a/packages/patchlogr-types/package.json +++ b/packages/patchlogr-types/package.json @@ -11,7 +11,6 @@ "scripts": { "build": "tsc", "lint": "eslint .", - "test": "vitest", "typecheck": "tsc --noEmit" }, "devDependencies": { diff --git a/vitest.config.ts b/vitest.config.ts index 691fb91..8252b07 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -21,5 +21,11 @@ export default defineConfig({ reporter: ["text", "html", "lcov"], reportsDirectory: "./coverage", }, + reporters: ["default", "junit", "json", "html"], + outputFile: { + junit: "./.coverage/junit.xml", + json: "./.coverage/json.json", + html: "./.coverage/report.html", + }, }, }); From 80fc08a8c1b6ec969a884c92c9c6aede510fe773 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:58:13 +0900 Subject: [PATCH 08/17] =?UTF-8?q?fix:=20yarn=20berry=20checksum=20?= =?UTF-8?q?=EC=B6=A9=EB=8F=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yarn.lock | 207 ++++++++++++++++-------------------------------------- 1 file changed, 60 insertions(+), 147 deletions(-) diff --git a/yarn.lock b/yarn.lock index 78be34b..96fcecf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,15 +45,6 @@ __metadata: languageName: node linkType: hard -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.27.2": version: 0.27.2 resolution: "@esbuild/aix-ppc64@npm:0.27.2" @@ -380,30 +371,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.5": +"@jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - "@npmcli/agent@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/agent@npm:4.0.0" @@ -459,7 +433,6 @@ __metadata: "@patchlogr/types": "workspace:*" "@types/node": "npm:24" openapi-types: "npm:^12.1.3" - ts-node: "npm:^10.9.2" vitest: "npm:^4.0.16" languageName: unknown linkType: soft @@ -482,6 +455,13 @@ __metadata: languageName: node linkType: hard +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.29 + resolution: "@polka/url@npm:1.0.0-next.29" + checksum: 10c0/0d58e081844095cb029d3c19a659bfefd09d5d51a2f791bc61eba7ea826f13d6ee204a8a448c2f5a855c17df07b37517373ff916dd05801063c0568ae9937684 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.54.0": version: 4.54.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.54.0" @@ -643,34 +623,6 @@ __metadata: languageName: node linkType: hard -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.12 - resolution: "@tsconfig/node10@npm:1.0.12" - checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb - languageName: node - linkType: hard - "@types/chai@npm:^5.2.2": version: 5.2.3 resolution: "@types/chai@npm:5.2.3" @@ -916,6 +868,23 @@ __metadata: languageName: node linkType: hard +"@vitest/ui@npm:^4.0.16": + version: 4.0.16 + resolution: "@vitest/ui@npm:4.0.16" + dependencies: + "@vitest/utils": "npm:4.0.16" + fflate: "npm:^0.8.2" + flatted: "npm:^3.3.3" + pathe: "npm:^2.0.3" + sirv: "npm:^3.0.2" + tinyglobby: "npm:^0.2.15" + tinyrainbow: "npm:^3.0.3" + peerDependencies: + vitest: 4.0.16 + checksum: 10c0/54bf7fff050784865ad2acbd8b45422468e8d43164f3cd1b5f960d700513f532ee224202d1302a798d63bb5d8e5a68a417176a17ac6ad46cffa21c6b97c6ea32 + languageName: node + linkType: hard + "@vitest/utils@npm:4.0.16": version: 4.0.16 resolution: "@vitest/utils@npm:4.0.16" @@ -942,16 +911,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 - languageName: node - linkType: hard - -"acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1": +"acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -1012,13 +972,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -1139,13 +1092,6 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -1176,13 +1122,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -1539,6 +1478,13 @@ __metadata: languageName: node linkType: hard +"fflate@npm:^0.8.2": + version: 0.8.2 + resolution: "fflate@npm:0.8.2" + checksum: 10c0/03448d630c0a583abea594835a9fdb2aaf7d67787055a761515bf4ed862913cfd693b4c4ffd5c3f3b355a70cf1e19033e9ae5aedcca103188aaff91b8bd6e293 + languageName: node + linkType: hard + "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" @@ -1568,7 +1514,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9": +"flatted@npm:^3.2.9, flatted@npm:^3.3.3": version: 3.3.3 resolution: "flatted@npm:3.3.3" checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 @@ -1845,13 +1791,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^15.0.0": version: 15.0.3 resolution: "make-fetch-happen@npm:15.0.3" @@ -1974,6 +1913,13 @@ __metadata: languageName: node linkType: hard +"mrmime@npm:^2.0.0": + version: 2.0.1 + resolution: "mrmime@npm:2.0.1" + checksum: 10c0/af05afd95af202fdd620422f976ad67dc18e6ee29beb03dd1ce950ea6ef664de378e44197246df4c7cdd73d47f2e7143a6e26e473084b9e4aa2095c0ad1e1761 + languageName: node + linkType: hard + "ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -2105,6 +2051,7 @@ __metadata: "@types/node": "npm:24" "@typescript-eslint/eslint-plugin": "npm:^8.51.0" "@typescript-eslint/parser": "npm:^8.51.0" + "@vitest/ui": "npm:^4.0.16" esbuild: "npm:0.27.2" eslint: "npm:^9.39.2" eslint-config-prettier: "npm:^10.1.8" @@ -2365,6 +2312,17 @@ __metadata: languageName: node linkType: hard +"sirv@npm:^3.0.2": + version: 3.0.2 + resolution: "sirv@npm:3.0.2" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10c0/5930e4397afdb14fbae13751c3be983af4bda5c9aadec832607dc2af15a7162f7d518c71b30e83ae3644b9a24cea041543cc969e5fe2b80af6ce8ea3174b2d04 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -2492,6 +2450,13 @@ __metadata: languageName: node linkType: hard +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + languageName: node + linkType: hard + "ts-api-utils@npm:^2.2.0": version: 2.4.0 resolution: "ts-api-utils@npm:2.4.0" @@ -2501,44 +2466,6 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - "turbo-darwin-64@npm:2.7.2": version: 2.7.2 resolution: "turbo-darwin-64@npm:2.7.2" @@ -2688,13 +2615,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - "vite@npm:^6.0.0 || ^7.0.0": version: 7.3.0 resolution: "vite@npm:7.3.0" @@ -2864,13 +2784,6 @@ __metadata: languageName: node linkType: hard -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" From 8cde5b66a1823b1c24fa35043cbf8f463d033480 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 02:58:54 +0900 Subject: [PATCH 09/17] =?UTF-8?q?ci:=20test=20coverage=20=EB=B0=8F=20?= =?UTF-8?q?=EC=95=84=ED=8B=B0=ED=8C=A9=ED=8A=B8=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20step=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d874936..e18d0b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,11 @@ on: types: [opened, synchronize] workflow_dispatch: +permissions: + contents: read + checks: write + actions: read + env: NODE_VERSION: '24' @@ -29,7 +34,7 @@ jobs: run: corepack enable - name: Setup Yarn Berry - run: yarn set verion berry && yarn set version 4.12.0 + run: yarn set version 4.12.0 - name: Restore Yarn Cache uses: actions/cache@v4 @@ -62,4 +67,22 @@ jobs: run: yarn test - name: Build - run: yarn build \ No newline at end of file + run: yarn build + + - name: Report Test Logs + uses: dorny/test-reporter@v1 + if: success() || failure() + with: + name: Vitest Tests + path: "**/.coverage/junit.xml" + reporter: java-junit + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + if: success() || failure() + with: + name: vitest-report + path: | + **/.coverage/junit.xml + **/coverage/**/* + retention-days: 7 \ No newline at end of file From 2d4f313111f37d5ec42375f2ae3666bf227f2255 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:08:12 +0900 Subject: [PATCH 10/17] =?UTF-8?q?chore:=20tsc=20noImplicitAny=20=ED=95=B4?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsconfig.base.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.base.json b/tsconfig.base.json index c058029..e626f22 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -7,6 +7,7 @@ "allowSyntheticDefaultImports": true, "strict": true, + "noImplicitAny": false, "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": true, "useUnknownInCatchVariables": true, From 7df558c5ad8b03661da89677086ee41ac6dec39d Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:15:52 +0900 Subject: [PATCH 11/17] =?UTF-8?q?fix:=20typecheck,=20lint,=20test=20task?= =?UTF-8?q?=20=EC=9D=B4=EC=A0=84=20build=20=EC=97=90=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 61 +++++++++++++++++++--------------------- turbo.json | 1 + 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e18d0b8..39ee33e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,30 +6,30 @@ on: workflow_dispatch: permissions: - contents: read - checks: write - actions: read + contents: read + checks: write + actions: read env: - NODE_VERSION: '24' + NODE_VERSION: "24" jobs: - build: + build-and-test: name: Build & Test timeout-minutes: 15 runs-on: ubuntu-latest - + steps: - name: Checkout Code uses: actions/checkout@v4 with: - fetch-depth: 0 - + fetch-depth: 0 + - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} - + node-version: ${{ env.NODE_VERSION }} + - name: Enable Corepack (Yarn Berry) run: corepack enable @@ -39,13 +39,13 @@ jobs: - name: Restore Yarn Cache uses: actions/cache@v4 with: - path: | - .yarn/cache - .yarn/unplugged - .yarn/build-state.yml - .pnp.cjs - key: yarn-${{runner.os}}-${{hashFiles('**/yarn.lock')}} - restore-keys: yarn-${{runner.os}}- + path: | + .yarn/cache + .yarn/unplugged + .yarn/build-state.yml + .pnp.cjs + key: yarn-${{runner.os}}-${{hashFiles('**/yarn.lock')}} + restore-keys: yarn-${{runner.os}}- - name: Install Dependencies (Yarn Berry) run: yarn install --immutable @@ -53,36 +53,33 @@ jobs: - name: Restore Turborepo Cache uses: actions/cache@v4 with: - path: .turbo - key: turbo-${{runner.os}}-${{hashFiles('turbo.json', 'package.json', '**/package.json')}} - restore-keys: turbo-${{runner.os}}- + path: .turbo + key: turbo-${{runner.os}}-${{hashFiles('turbo.json', 'package.json', '**/package.json')}} + restore-keys: turbo-${{runner.os}}- - name: Run Typecheck run: yarn typecheck - name: Run Lint run: yarn lint - + - name: Run Tests run: yarn test - - name: Build - run: yarn build - - name: Report Test Logs uses: dorny/test-reporter@v1 if: success() || failure() with: - name: Vitest Tests - path: "**/.coverage/junit.xml" - reporter: java-junit + name: Vitest Tests + path: "**/.coverage/junit.xml" + reporter: java-junit - name: Upload Test Artifacts uses: actions/upload-artifact@v4 if: success() || failure() with: - name: vitest-report - path: | - **/.coverage/junit.xml - **/coverage/**/* - retention-days: 7 \ No newline at end of file + name: vitest-report + path: | + **/.coverage/junit.xml + **/coverage/**/* + retention-days: 7 diff --git a/turbo.json b/turbo.json index 5b86ace..8722a4e 100644 --- a/turbo.json +++ b/turbo.json @@ -22,6 +22,7 @@ "outputs": [] }, "typecheck": { + "dependsOn": ["^build"], "inputs": ["src/**", "package.json", "tsconfig.json"], "outputs": [] }, From 5777a0fdca38df08d952f99116fd582f279ee2e9 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:17:35 +0900 Subject: [PATCH 12/17] =?UTF-8?q?fix:=20git=20ls-files=20=EC=97=90=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EB=90=9C=20=EC=A4=91=EB=B3=B5=EB=90=9C=20cas?= =?UTF-8?q?e=20sensitive=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../patchlogr-oas/src/utils/OASVersionUtils.ts | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 packages/patchlogr-oas/src/utils/OASVersionUtils.ts diff --git a/packages/patchlogr-oas/src/utils/OASVersionUtils.ts b/packages/patchlogr-oas/src/utils/OASVersionUtils.ts deleted file mode 100644 index 896d5bf..0000000 --- a/packages/patchlogr-oas/src/utils/OASVersionUtils.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { OpenAPI, OpenAPIV2, OpenAPIV3 } from "openapi-types"; - -export function getOASVersion(doc: OpenAPI.Document): string | undefined { - if (isOpenAPIV3(doc)) { - return doc.openapi; - } else if (isOpenAPIV2(doc)) { - return doc.swagger; - } - return undefined; -} - -export function isOpenAPIV2(doc: OpenAPI.Document): doc is OpenAPIV2.Document { - return "swagger" in doc && doc.swagger === "2.0"; -} - -export function isOpenAPIV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document { - return "openapi" in doc && doc.openapi.startsWith("3."); -} From 6e04ae1396ee0e36b6691a46910473a1ecb01097 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:20:10 +0900 Subject: [PATCH 13/17] =?UTF-8?q?fix:=20eslint=20=EC=97=90=EC=84=9C=20conf?= =?UTF-8?q?ig=20=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 59f15a8..3819ed8 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -13,6 +13,7 @@ export default tseslint.config( "**/coverage/**", "**/.yarn/**", "**/.pnp.*", + "**/eslint.config.mjs", ], }, js.configs.recommended, From fbc91d08a53b1685a8430c355cbf8abd9825deba Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:21:30 +0900 Subject: [PATCH 14/17] =?UTF-8?q?fix:=20eslint=20=EC=97=90=EC=84=9C=20.mjs?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 3819ed8..c096547 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -13,7 +13,7 @@ export default tseslint.config( "**/coverage/**", "**/.yarn/**", "**/.pnp.*", - "**/eslint.config.mjs", + "**/*.mjs", ], }, js.configs.recommended, From 865e4202705e02bff76c93e68e64087fc7a9906f Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:28:40 +0900 Subject: [PATCH 15/17] =?UTF-8?q?feature:=20test=20report=20pr=20comment?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 15 +++++++++++---- vitest.config.ts | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 39ee33e..38b53f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,7 @@ permissions: contents: read checks: write actions: read + pull-requests: write env: NODE_VERSION: "24" @@ -68,7 +69,7 @@ jobs: - name: Report Test Logs uses: dorny/test-reporter@v1 - if: success() || failure() + if: (!cancelled()) with: name: Vitest Tests path: "**/.coverage/junit.xml" @@ -76,10 +77,16 @@ jobs: - name: Upload Test Artifacts uses: actions/upload-artifact@v4 - if: success() || failure() + if: (!cancelled()) with: - name: vitest-report + name: Test Reports path: | - **/.coverage/junit.xml + **/.coverage/report.xml **/coverage/**/* retention-days: 7 + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: (!cancelled()) + with: + files: "**/.coverage/junit.xml" diff --git a/vitest.config.ts b/vitest.config.ts index 8252b07..1e9844c 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -23,8 +23,8 @@ export default defineConfig({ }, reporters: ["default", "junit", "json", "html"], outputFile: { - junit: "./.coverage/junit.xml", - json: "./.coverage/json.json", + junit: "./.coverage/report.xml", + json: "./.coverage/report.json", html: "./.coverage/report.html", }, }, From 53e1de824b5536f3510fdb86abd081b2c5316121 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:31:17 +0900 Subject: [PATCH 16/17] =?UTF-8?q?fix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20test?= =?UTF-8?q?=20report=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38b53f1..d2bd86c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: if: (!cancelled()) with: name: Vitest Tests - path: "**/.coverage/junit.xml" + path: "**/.coverage/report.xml" reporter: java-junit - name: Upload Test Artifacts @@ -89,4 +89,4 @@ jobs: uses: EnricoMi/publish-unit-test-result-action@v2 if: (!cancelled()) with: - files: "**/.coverage/junit.xml" + files: "**/.coverage/report.xml" From f2aebec82b4a19e34f2da07b7c8fccd79b9a4877 Mon Sep 17 00:00:00 2001 From: toothlessdev Date: Sun, 11 Jan 2026 03:32:48 +0900 Subject: [PATCH 17/17] =?UTF-8?q?chore:=20test=20report=20log=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2bd86c..1451d49 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: uses: dorny/test-reporter@v1 if: (!cancelled()) with: - name: Vitest Tests + name: Test Logs path: "**/.coverage/report.xml" reporter: java-junit