diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 37c2635..23e7820 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -36,10 +36,20 @@ jobs: yarn -v || true (YARN_ENABLE_IMMUTABLE_INSTALLS=1 yarn install --immutable) || yarn install --frozen-lockfile - - name: Lint & Build + - name: GraphQL codegen + run: yarn graphql:codegen + + - name: Type check + run: npx tsc --noEmit + + - name: Lint + run: yarn lint + + - name: Test + run: yarn test + + - name: Build run: | - yarn lint - yarn graphql:codegen yarn graphql:docs yarn build diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml new file mode 100644 index 0000000..0875356 --- /dev/null +++ b/.github/workflows/pr-check.yml @@ -0,0 +1,94 @@ +name: PR Check + +on: + pull_request: + branches: [main] + +permissions: + contents: read + +concurrency: + group: pr-check-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + check: + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js (24.x) & Yarn cache + uses: actions/setup-node@v4 + with: + node-version: "24.x" + cache: "yarn" + + - name: Install dependencies + run: | + corepack enable + yarn install --immutable + + - name: GraphQL codegen + run: yarn graphql:codegen + + - name: Type check + run: npx tsc --noEmit + + - name: Lint + run: yarn lint + + - name: Test with coverage + run: yarn test:cov + + - name: Build + run: | + yarn graphql:docs + yarn build + + coverage-report: + runs-on: ubuntu-latest + timeout-minutes: 10 + permissions: + contents: read + pull-requests: write + checks: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js (24.x) & Yarn cache + uses: actions/setup-node@v4 + with: + node-version: "24.x" + cache: "yarn" + + - name: Install dependencies + run: | + corepack enable + yarn install --immutable + + - name: Coverage Report + uses: ArtiomTr/jest-coverage-report-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + test-script: yarn jest --coverage --ci + skip-step: install + + pr-title: + runs-on: ubuntu-latest + permissions: + pull-requests: read + steps: + - name: Validate PR title + uses: amannn/action-semantic-pull-request@v5 + with: + subjectPattern: ^.+$ + subjectPatternError: | + PR 제목이 Conventional Commits 형식이 아닙니다. + 예: "feat: 새 기능 추가", "fix: 버그 수정" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..2785bc1 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +yarn commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..3723623 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +yarn lint-staged diff --git a/commitlint.config.mjs b/commitlint.config.mjs new file mode 100644 index 0000000..f43cdea --- /dev/null +++ b/commitlint.config.mjs @@ -0,0 +1,11 @@ +export default { + extends: ['@commitlint/config-conventional'], + rules: { + // 한국어 커밋 메시지를 허용하기 위해 subject 대소문자 규칙 비활성화 + 'subject-case': [0], + // 본문 최대 줄 길이 완화 (Co-Authored-By 등 긴 줄 허용) + 'body-max-line-length': [0], + // footer 최대 줄 길이 완화 + 'footer-max-line-length': [0], + }, +}; diff --git a/package.json b/package.json index c1b47be..8425cb2 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "prisma:migrate:deploy": "prisma migrate deploy", "prisma:studio": "prisma studio", "graphql:codegen": "graphql-codegen --config codegen.yml", - "graphql:docs": "spectaql -c spectaql.yml" + "graphql:docs": "spectaql -c spectaql.yml", + "prepare": "husky" }, "dependencies": { "@apollo/server": "^5.2.0", @@ -57,6 +58,8 @@ "winston": "^3.19.0" }, "devDependencies": { + "@commitlint/cli": "^20.5.0", + "@commitlint/config-conventional": "^20.5.0", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.18.0", "@graphql-codegen/cli": "^6.1.1", @@ -79,8 +82,10 @@ "eslint-plugin-import": "^2.32.0", "eslint-plugin-prettier": "^5.2.2", "globals": "^16.0.0", + "husky": "^9.1.7", "jest": "^29", "langsmith": "^0.5.7", + "lint-staged": "^16.4.0", "openai": "^6.27.0", "prettier": "^3.4.2", "prisma": "^6.2.0", @@ -107,13 +112,33 @@ "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ - "**/*.(t|j)s" + "**/*.(t|j)s", + "!**/index.ts", + "!**/main.ts", + "!**/*.module.ts", + "!**/*.d.ts", + "!**/graphql/graphql.types.ts", + "!**/config/**" ], + "coverageThreshold": { + "global": { + "statements": 43, + "branches": 33, + "functions": 30, + "lines": 43 + } + }, "coverageDirectory": "../coverage", "testEnvironment": "node", "moduleNameMapper": { "^@/(.*)$": "/$1" } }, + "lint-staged": { + "*.ts": [ + "eslint --fix", + "prettier --write" + ] + }, "packageManager": "yarn@4.9.4" } diff --git a/src/features/seller/services/seller-conversation.service.spec.ts b/src/features/seller/services/seller-conversation.service.spec.ts index 6123170..f839b40 100644 --- a/src/features/seller/services/seller-conversation.service.spec.ts +++ b/src/features/seller/services/seller-conversation.service.spec.ts @@ -111,7 +111,9 @@ describe('SellerConversationService', () => { expect(result.id).toBe('77'); expect(result.bodyText).toBe('테스트 메시지'); - expect(conversationRepo.createSellerConversationMessage).toHaveBeenCalled(); + expect( + conversationRepo.createSellerConversationMessage, + ).toHaveBeenCalled(); expect(repo.createAuditLog).toHaveBeenCalled(); }); diff --git a/src/global/graphql/scalars/date-time.scalar.ts b/src/global/graphql/scalars/date-time.scalar.ts index bca648f..015af3a 100644 --- a/src/global/graphql/scalars/date-time.scalar.ts +++ b/src/global/graphql/scalars/date-time.scalar.ts @@ -11,7 +11,10 @@ export class DateTimeScalar implements CustomScalar { /** * 클라이언트 입력 값을 Date로 변환한다. */ - parseValue(value: string): Date { + parseValue(value: unknown): Date { + if (typeof value !== 'string') { + throw new TypeError('Invalid DateTime value.'); + } const date = new Date(value); if (Number.isNaN(date.getTime())) { throw new TypeError('Invalid DateTime value.'); diff --git a/tsconfig.json b/tsconfig.json index 0d3c4e6..a040469 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,10 +19,8 @@ "types": ["node", "jest"], "incremental": true, "skipLibCheck": true, - "strictNullChecks": true, + "strict": true, "forceConsistentCasingInFileNames": true, - "noImplicitAny": false, - "strictBindCallApply": false, - "noFallthroughCasesInSwitch": false + "noFallthroughCasesInSwitch": true } } diff --git a/yarn.lock b/yarn.lock index 02c35c8..4f49891 100644 --- a/yarn.lock +++ b/yarn.lock @@ -911,6 +911,215 @@ __metadata: languageName: node linkType: hard +"@commitlint/cli@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/cli@npm:20.5.0" + dependencies: + "@commitlint/format": "npm:^20.5.0" + "@commitlint/lint": "npm:^20.5.0" + "@commitlint/load": "npm:^20.5.0" + "@commitlint/read": "npm:^20.5.0" + "@commitlint/types": "npm:^20.5.0" + tinyexec: "npm:^1.0.0" + yargs: "npm:^17.0.0" + bin: + commitlint: ./cli.js + checksum: 10c0/9676c2544f6b73c71ba2fcfe531333c0f0e6b687acbf1c8f616b605bba0e55e60b1896f4400c57f9fe7f6676d2b8b2b36ffb8e6c89509740f26e0bae1437667c + languageName: node + linkType: hard + +"@commitlint/config-conventional@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/config-conventional@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + conventional-changelog-conventionalcommits: "npm:^9.2.0" + checksum: 10c0/3d5343243a02fd44c048b5b9bdc401f86d9eacff269e157d9ace3aed42c88c44a07589324d47692453967495d54470d6d6374fc6fe43418a88d7f4aaa17a921f + languageName: node + linkType: hard + +"@commitlint/config-validator@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/config-validator@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + ajv: "npm:^8.11.0" + checksum: 10c0/3acf6903933ca8a76d5b6297a3a6901d0be213ab28d1f651ff1a479a1e80868db0fa95fd169e31fb5cf419b65806354b6d0fafa3d39a8e2fe4aaf3bc07b078b2 + languageName: node + linkType: hard + +"@commitlint/ensure@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/ensure@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + lodash.camelcase: "npm:^4.3.0" + lodash.kebabcase: "npm:^4.1.1" + lodash.snakecase: "npm:^4.1.1" + lodash.startcase: "npm:^4.4.0" + lodash.upperfirst: "npm:^4.3.1" + checksum: 10c0/c80c0a49e1396030220560b1e6b51373233a505eb7a41753edb97799a00d657454ae8db894ec69f783cf687d776a3f7b7cd86ef040cf1030a3e9ca2c269982e6 + languageName: node + linkType: hard + +"@commitlint/execute-rule@npm:^20.0.0": + version: 20.0.0 + resolution: "@commitlint/execute-rule@npm:20.0.0" + checksum: 10c0/a1035ae9d6842489e617f18b244e6e53ac44b051b54501b9544019d33da924c877d7b893bfa2a66ad325a9c2ff65b11137d5383743e31d3e0b606decc1619584 + languageName: node + linkType: hard + +"@commitlint/format@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/format@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/033aa1d61b2b33f026450d444924e1844bf50a7ec4f9c9dd3faa8a10d8d0e2a6951e8f18725c44afcc046a7fb5b52a60d7d8a3b28f92a93b725386aa080ec55f + languageName: node + linkType: hard + +"@commitlint/is-ignored@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/is-ignored@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + semver: "npm:^7.6.0" + checksum: 10c0/ccd0da50ba775064c1357f1613c658cbee6cd986c9738f496657b27ca3d84da26e4293cce1bbd95dd5d1174b3b6b5dc826e8f9bd91ce4d0d3145321f91d9eb56 + languageName: node + linkType: hard + +"@commitlint/lint@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/lint@npm:20.5.0" + dependencies: + "@commitlint/is-ignored": "npm:^20.5.0" + "@commitlint/parse": "npm:^20.5.0" + "@commitlint/rules": "npm:^20.5.0" + "@commitlint/types": "npm:^20.5.0" + checksum: 10c0/dadd0b74314fdfe07371197802b5400da87644ad22ceb44b80108b0c73289a766b123ee0e5e4e1bf9f123e52fc0cc211effbb0d47f572000053aca31e207fb57 + languageName: node + linkType: hard + +"@commitlint/load@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/load@npm:20.5.0" + dependencies: + "@commitlint/config-validator": "npm:^20.5.0" + "@commitlint/execute-rule": "npm:^20.0.0" + "@commitlint/resolve-extends": "npm:^20.5.0" + "@commitlint/types": "npm:^20.5.0" + cosmiconfig: "npm:^9.0.1" + cosmiconfig-typescript-loader: "npm:^6.1.0" + is-plain-obj: "npm:^4.1.0" + lodash.mergewith: "npm:^4.6.2" + picocolors: "npm:^1.1.1" + checksum: 10c0/7350c612c6654cb25a627c15538fa5454696adb92cee7d0d76f7189f90284334b20cd1c0bee2204348fc7a5fbf093c9b8a5e9f9c87b552be429529ebba5dff00 + languageName: node + linkType: hard + +"@commitlint/message@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/message@npm:20.4.3" + checksum: 10c0/16f7a67d17df916830a9d6b2cdbaef0d680afcc47e9de53b18c7580bcbb50d8241b86c0e26a4ae71bd1d4a1025b318eb6c920e75fbc97aee7341744d4ef5dcbc + languageName: node + linkType: hard + +"@commitlint/parse@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/parse@npm:20.5.0" + dependencies: + "@commitlint/types": "npm:^20.5.0" + conventional-changelog-angular: "npm:^8.2.0" + conventional-commits-parser: "npm:^6.3.0" + checksum: 10c0/6a762c1e618847f6844bad3b32ec67ddb0d77196afcfc1f4b2b7246a6199bc482530d50162e0f380f88238ec46c0bfcaa4e1f7a229288d206439688696ad0953 + languageName: node + linkType: hard + +"@commitlint/read@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/read@npm:20.5.0" + dependencies: + "@commitlint/top-level": "npm:^20.4.3" + "@commitlint/types": "npm:^20.5.0" + git-raw-commits: "npm:^5.0.0" + minimist: "npm:^1.2.8" + tinyexec: "npm:^1.0.0" + checksum: 10c0/99027e6c36af9353c9dd6abf782834a6ac017bf12013efa7001c31782847d5b3e63938b9c6e133506cc6747e3e306bbd32789ec5678e77235818c564232ced13 + languageName: node + linkType: hard + +"@commitlint/resolve-extends@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/resolve-extends@npm:20.5.0" + dependencies: + "@commitlint/config-validator": "npm:^20.5.0" + "@commitlint/types": "npm:^20.5.0" + global-directory: "npm:^4.0.1" + import-meta-resolve: "npm:^4.0.0" + lodash.mergewith: "npm:^4.6.2" + resolve-from: "npm:^5.0.0" + checksum: 10c0/0ad1a5099104189c72679199a3c45494fc7ee37a229941537f7b8593a8395f70dcdaa1bdb68200bb996d2b372922e1ec9a7294274aa5d70851f2d3dd7eb0123d + languageName: node + linkType: hard + +"@commitlint/rules@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/rules@npm:20.5.0" + dependencies: + "@commitlint/ensure": "npm:^20.5.0" + "@commitlint/message": "npm:^20.4.3" + "@commitlint/to-lines": "npm:^20.0.0" + "@commitlint/types": "npm:^20.5.0" + checksum: 10c0/8cdde213b2de37ce316a754a6f8d5140d100ccae9e561d40d4c3375b4d34dd28a9ef08864f5556cae2d49190456e92e46187e6018dd7418fa571773ea470e0c5 + languageName: node + linkType: hard + +"@commitlint/to-lines@npm:^20.0.0": + version: 20.0.0 + resolution: "@commitlint/to-lines@npm:20.0.0" + checksum: 10c0/49bc05eb0649adc6f4740a4f3976cc43402080bd9d90567c654180f90c0b6deb9a922b0efbde38567ac1def8f63cc506589124cc7f862e3914d30e13f29997c0 + languageName: node + linkType: hard + +"@commitlint/top-level@npm:^20.4.3": + version: 20.4.3 + resolution: "@commitlint/top-level@npm:20.4.3" + dependencies: + escalade: "npm:^3.2.0" + checksum: 10c0/52a1f59677d3d2e4bdd998bbde6e7e3848ce52372c7bd394ad24555820cadbf6820886bc33bf42a8c73878c6f0b211334ce93c4f4fbf6d8e8022b72c5c39ebd5 + languageName: node + linkType: hard + +"@commitlint/types@npm:^20.5.0": + version: 20.5.0 + resolution: "@commitlint/types@npm:20.5.0" + dependencies: + conventional-commits-parser: "npm:^6.3.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/682913a179074251a65990ce37f784849375ba02d5d80a77299580fb34781747cc48087c3516023b748fd76ef38d3b5c26863767532ed739565cb5a80605cb44 + languageName: node + linkType: hard + +"@conventional-changelog/git-client@npm:^2.6.0": + version: 2.6.0 + resolution: "@conventional-changelog/git-client@npm:2.6.0" + dependencies: + "@simple-libs/child-process-utils": "npm:^1.0.0" + "@simple-libs/stream-utils": "npm:^1.2.0" + semver: "npm:^7.5.2" + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.3.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + checksum: 10c0/7f0582858c5a2ecd481e9c3cfd4d87aeecc2ae5894b968a58b692e2a085b80345f069ba33274c77292b64e29af07a98531accb46d7902e93b7c6dce11aee1eb1 + 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" @@ -3323,6 +3532,22 @@ __metadata: languageName: node linkType: hard +"@simple-libs/child-process-utils@npm:^1.0.0": + version: 1.0.2 + resolution: "@simple-libs/child-process-utils@npm:1.0.2" + dependencies: + "@simple-libs/stream-utils": "npm:^1.2.0" + checksum: 10c0/a057603daf68a852d75bc6a840659291187b4bb5310e8d46e35dd5c1848047a15b40f6dd1917e17a533bd25d0a8ad75c48ef1a8301aad7e9a325c2b180e96cb6 + languageName: node + linkType: hard + +"@simple-libs/stream-utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@simple-libs/stream-utils@npm:1.2.0" + checksum: 10c0/2788ac7b167d1b6c81b8c6fae2f5d9688b1f02ab31e9e15b33c9dc2ae920cf7de87869de10679be8957f9adb645c91c8919e271f3e34b6b4ec56daf725522dc7 + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -4502,6 +4727,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.11.0": + version: 8.18.0 + resolution: "ajv@npm:8.18.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/e7517c426173513a07391be951879932bdf3348feaebd2199f5b901c20f99d60db8cd1591502d4d551dc82f594e82a05c4fe1c70139b15b8937f7afeaed9532f + languageName: node + linkType: hard + "ansi-colors@npm:4.1.3": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" @@ -4655,6 +4892,13 @@ __metadata: languageName: node linkType: hard +"array-ify@npm:^1.0.0": + version: 1.0.0 + resolution: "array-ify@npm:1.0.0" + checksum: 10c0/75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c + languageName: node + linkType: hard + "array-includes@npm:^3.1.9": version: 3.1.9 resolution: "array-includes@npm:3.1.9" @@ -5265,6 +5509,8 @@ __metadata: dependencies: "@apollo/server": "npm:^5.2.0" "@as-integrations/express5": "npm:^1.1.2" + "@commitlint/cli": "npm:^20.5.0" + "@commitlint/config-conventional": "npm:^20.5.0" "@eslint/eslintrc": "npm:^3.2.0" "@eslint/js": "npm:^9.18.0" "@graphql-codegen/cli": "npm:^6.1.1" @@ -5305,8 +5551,10 @@ __metadata: express: "npm:^5.2.1" globals: "npm:^16.0.0" graphql: "npm:^16.12.0" + husky: "npm:^9.1.7" jest: "npm:^29" langsmith: "npm:^0.5.7" + lint-staged: "npm:^16.4.0" logform: "npm:^2.7.0" openai: "npm:^6.27.0" openid-client: "npm:5.7.1" @@ -5714,6 +5962,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^14.0.3": + version: 14.0.3 + resolution: "commander@npm:14.0.3" + checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24 + languageName: node + linkType: hard + "commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -5739,6 +5994,16 @@ __metadata: languageName: node linkType: hard +"compare-func@npm:^2.0.0": + version: 2.0.0 + resolution: "compare-func@npm:2.0.0" + dependencies: + array-ify: "npm:^1.0.0" + dot-prop: "npm:^5.1.0" + checksum: 10c0/78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3 + languageName: node + linkType: hard + "component-emitter@npm:^1.3.1": version: 1.3.1 resolution: "component-emitter@npm:1.3.1" @@ -5861,6 +6126,36 @@ __metadata: languageName: node linkType: hard +"conventional-changelog-angular@npm:^8.2.0": + version: 8.3.0 + resolution: "conventional-changelog-angular@npm:8.3.0" + dependencies: + compare-func: "npm:^2.0.0" + checksum: 10c0/bab87fa741a25e4fb623e2629912a5e592de5ed616398bee0cd9779dc950aae2a78ac48a6f4268cbb5f5544bb33644e01c7b40cea378bb9763ae5304cc22efc2 + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^9.2.0": + version: 9.3.0 + resolution: "conventional-changelog-conventionalcommits@npm:9.3.0" + dependencies: + compare-func: "npm:^2.0.0" + checksum: 10c0/36be9435bb1f6e97bc729a1e69471851b6621054980617dc9a82c03221de5f9c21cd2369308c364f89b2383bd596071f90c8c71efdbe7a2908f91a935685fc76 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^6.3.0": + version: 6.3.0 + resolution: "conventional-commits-parser@npm:6.3.0" + dependencies: + "@simple-libs/stream-utils": "npm:^1.2.0" + meow: "npm:^13.0.0" + bin: + conventional-commits-parser: dist/cli/index.js + checksum: 10c0/7b152db0b63617fb5f993c3422942c05f48ff42fef4350d7e73b1d8a9f24489050b126478f2aabee5e45f205dbd02cb0b486e4bb865f9c0b18c35b4d13952b25 + languageName: node + linkType: hard + "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -5930,6 +6225,19 @@ __metadata: languageName: node linkType: hard +"cosmiconfig-typescript-loader@npm:^6.1.0": + version: 6.2.0 + resolution: "cosmiconfig-typescript-loader@npm:6.2.0" + dependencies: + jiti: "npm:^2.6.1" + peerDependencies: + "@types/node": "*" + cosmiconfig: ">=9" + typescript: ">=5" + checksum: 10c0/0fd8fd9b9b6a04eec75617b965ce0a1f63310fe29a361c1f95cb971e05dbbb935291899c2b15abfd69e09db58dbe97077f24a7c61414bbc6c3e78349b4314ad7 + languageName: node + linkType: hard + "cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.2.0": version: 8.3.6 resolution: "cosmiconfig@npm:8.3.6" @@ -5964,6 +6272,23 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^9.0.1": + version: 9.0.1 + resolution: "cosmiconfig@npm:9.0.1" + dependencies: + env-paths: "npm:^2.2.1" + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a5d4d95599687532ee072bca60170133c24d4e08cd795529e0f22c6ce5fde9409eaf4f26e36e3d671f43270ef858fc68f3c7b0ec28e58fac7ddebda5b7725306 + languageName: node + linkType: hard + "create-jest@npm:^29.7.0": version: 29.7.0 resolution: "create-jest@npm:29.7.0" @@ -6395,6 +6720,15 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^5.1.0": + version: 5.3.0 + resolution: "dot-prop@npm:5.3.0" + dependencies: + is-obj: "npm:^2.0.0" + checksum: 10c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 + languageName: node + linkType: hard + "dotenv-expand@npm:12.0.1": version: 12.0.1 resolution: "dotenv-expand@npm:12.0.1" @@ -7893,6 +8227,18 @@ __metadata: languageName: node linkType: hard +"git-raw-commits@npm:^5.0.0": + version: 5.0.1 + resolution: "git-raw-commits@npm:5.0.1" + dependencies: + "@conventional-changelog/git-client": "npm:^2.6.0" + meow: "npm:^13.0.0" + bin: + git-raw-commits: src/cli.js + checksum: 10c0/51d27464bbcc8fe8164d79fc6425164374c00f0bc852e2b1e21061f0af0e56f505d03d7e2f30a52fa891703205d479c93bc0579ae49e9f00271c6537c4ab4f84 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -7986,6 +8332,15 @@ __metadata: languageName: node linkType: hard +"global-directory@npm:^4.0.1": + version: 4.0.1 + resolution: "global-directory@npm:4.0.1" + dependencies: + ini: "npm:4.1.1" + checksum: 10c0/f9cbeef41db4876f94dd0bac1c1b4282a7de9c16350ecaaf83e7b2dd777b32704cc25beeb1170b5a63c42a2c9abfade74d46357fe0133e933218bc89e613d4b2 + languageName: node + linkType: hard + "global-modules@npm:^1.0.0": version: 1.0.0 resolution: "global-modules@npm:1.0.0" @@ -8619,6 +8974,15 @@ __metadata: languageName: node linkType: hard +"husky@npm:^9.1.7": + version: 9.1.7 + resolution: "husky@npm:9.1.7" + bin: + husky: bin.js + checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -8710,6 +9074,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^4.0.0": + version: 4.2.0 + resolution: "import-meta-resolve@npm:4.2.0" + checksum: 10c0/3ee8aeecb61d19b49d2703987f977e9d1c7d4ba47db615a570eaa02fe414f40dfa63f7b953e842cbe8470d26df6371332bfcf21b2fd92b0112f9fea80dde2c4c + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -8734,6 +9105,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:4.1.1": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 10c0/7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 + languageName: node + linkType: hard + "ini@npm:^1.3.4": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -9014,6 +9392,20 @@ __metadata: languageName: node linkType: hard +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.1.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + "is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" @@ -9780,7 +10172,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.0.0, jiti@npm:^2.3.0, jiti@npm:^2.4.2": +"jiti@npm:^2.0.0, jiti@npm:^2.3.0, jiti@npm:^2.4.2, jiti@npm:^2.6.1": version: 2.6.1 resolution: "jiti@npm:2.6.1" bin: @@ -10120,7 +10512,23 @@ __metadata: languageName: node linkType: hard -"listr2@npm:^9.0.0": +"lint-staged@npm:^16.4.0": + version: 16.4.0 + resolution: "lint-staged@npm:16.4.0" + dependencies: + commander: "npm:^14.0.3" + listr2: "npm:^9.0.5" + picomatch: "npm:^4.0.3" + string-argv: "npm:^0.3.2" + tinyexec: "npm:^1.0.4" + yaml: "npm:^2.8.2" + bin: + lint-staged: bin/lint-staged.js + checksum: 10c0/67625a49a2a01368c7df2da7e553567a79c4b261d9faf3436e00fc3a2f9c4bbe7295909012c47b3d9029e269fd7d7469901a5120573527a032f15797aa497c26 + languageName: node + linkType: hard + +"listr2@npm:^9.0.0, listr2@npm:^9.0.5": version: 9.0.5 resolution: "listr2@npm:9.0.5" dependencies: @@ -10173,6 +10581,13 @@ __metadata: languageName: node linkType: hard +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + languageName: node + linkType: hard + "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" @@ -10236,6 +10651,13 @@ __metadata: languageName: node linkType: hard +"lodash.kebabcase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.kebabcase@npm:4.1.1" + checksum: 10c0/da5d8f41dbb5bc723d4bf9203d5096ca8da804d6aec3d2b56457156ba6c8d999ff448d347ebd97490da853cb36696ea4da09a431499f1ee8deb17b094ecf4e33 + languageName: node + linkType: hard + "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -10250,6 +10672,13 @@ __metadata: languageName: node linkType: hard +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: 10c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 + languageName: node + linkType: hard + "lodash.omit@npm:4.5.0": version: 4.5.0 resolution: "lodash.omit@npm:4.5.0" @@ -10264,6 +10693,13 @@ __metadata: languageName: node linkType: hard +"lodash.snakecase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.snakecase@npm:4.1.1" + checksum: 10c0/f0b3f2497eb20eea1a1cfc22d645ecaeb78ac14593eb0a40057977606d2f35f7aaff0913a06553c783b535aafc55b718f523f9eb78f8d5293f492af41002eaf9 + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -10271,6 +10707,13 @@ __metadata: languageName: node linkType: hard +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: 10c0/bd82aa87a45de8080e1c5ee61128c7aee77bf7f1d86f4ff94f4a6d7438fc9e15e5f03374b947be577a93804c8ad6241f0251beaf1452bf716064eeb657b3a9f0 + languageName: node + linkType: hard + "lodash.unset@npm:^4.5.2": version: 4.5.2 resolution: "lodash.unset@npm:4.5.2" @@ -10278,6 +10721,13 @@ __metadata: languageName: node linkType: hard +"lodash.upperfirst@npm:^4.3.1": + version: 4.3.1 + resolution: "lodash.upperfirst@npm:4.3.1" + checksum: 10c0/435625da4b3ee74e7a1367a780d9107ab0b13ef4359fc074b2a1a40458eb8d91b655af62f6795b7138d493303a98c0285340160341561d6896e4947e077fa975 + languageName: node + linkType: hard + "lodash@npm:4.17.21, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" @@ -10534,6 +10984,13 @@ __metadata: languageName: node linkType: hard +"meow@npm:^13.0.0": + version: 13.2.0 + resolution: "meow@npm:13.2.0" + checksum: 10c0/d5b339ae314715bcd0b619dd2f8a266891928e21526b4800d49b4fba1cc3fff7e2c1ff5edd3344149fac841bc2306157f858e8c4d5eaee4d52ce52ad925664ce + languageName: node + linkType: hard + "merge-descriptors@npm:^2.0.0": version: 2.0.0 resolution: "merge-descriptors@npm:2.0.0" @@ -10704,7 +11161,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -12582,7 +13039,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.6.3": +"semver@npm:^7.5.2, semver@npm:^7.6.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -13122,6 +13579,13 @@ __metadata: languageName: node linkType: hard +"string-argv@npm:^0.3.2": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82 + languageName: node + linkType: hard + "string-env-interpolation@npm:^1.0.1": version: 1.0.1 resolution: "string-env-interpolation@npm:1.0.1" @@ -13587,6 +14051,13 @@ __metadata: languageName: node linkType: hard +"tinyexec@npm:^1.0.0, tinyexec@npm:^1.0.4": + version: 1.0.4 + resolution: "tinyexec@npm:1.0.4" + checksum: 10c0/d4a5bbcf6bdb23527a4b74c4aa566f41432167112fe76f420ec7e3a90a3ecfd3a7d944383e2719fc3987b69400f7b928daf08700d145fb527c2e80ec01e198bd + languageName: node + linkType: hard + "tinyexec@npm:^1.0.1": version: 1.0.2 resolution: "tinyexec@npm:1.0.2" @@ -14808,6 +15279,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.8.2": + version: 2.8.3 + resolution: "yaml@npm:2.8.3" + bin: + yaml: bin.mjs + checksum: 10c0/ddff0e11c1b467728d7eb4633db61c5f5de3d8e9373cf84d08fb0cdee03e1f58f02b9f1c51a4a8a865751695addbd465a77f73f1079be91fe5493b29c305fd77 + languageName: node + linkType: hard + "yamlparser@npm:0.0.x": version: 0.0.2 resolution: "yamlparser@npm:0.0.2"