From 8ebb73e7e6ff9b210e0ff004f4f5348e1804be24 Mon Sep 17 00:00:00 2001 From: Taesu Date: Sat, 25 Jul 2026 15:22:00 +0900 Subject: [PATCH 1/3] chore: add lefthook --- lefthook.yml | 13 ++++++ package.json | 6 +-- pnpm-lock.yaml | 100 ++++++++++++++++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 1 + 4 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 lefthook.yml diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..e3f4c9d --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,13 @@ +output: + - success + - failure + +pre-commit: + parallel: true + commands: + biome: + run: pnpm biome check --write --error-on-warnings --no-errors-on-unmatched --files-ignore-unknown=true --colors=off {staged_files} + stage_fixed: true + lockfile: + glob: "{package.json,pnpm-lock.yaml,pnpm-workspace.yaml}" + run: pnpm install --frozen-lockfile --ignore-scripts diff --git a/package.json b/package.json index b4dcd2e..84be6e4 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "main": "./dist/index.cjs", "module": "./dist/index.mjs", "scripts": { + "prepare": "git rev-parse --git-dir >/dev/null 2>&1 && lefthook install --reset-hooks-path || echo \"skipping lefthook (not a git repo)\"", "test": "vitest", "typecheck": "tsc --noEmit", "build": "tsdown", @@ -30,6 +31,7 @@ "@types/node": "^22.10.1", "bumpp": "^9.9.0", "happy-dom": "^15.11.7", + "lefthook": "^2.1.4", "tsdown": "0.22.9", "typescript": "^6.0.3", "vitest": "^2.1.8" @@ -92,9 +94,7 @@ "require": "./dist/password.cjs" } }, - "files": [ - "dist" - ], + "files": ["dist"], "dependencies": { "@noble/hashes": "^2.0.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04c7069..3854545 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,9 @@ importers: happy-dom: specifier: ^15.11.7 version: 15.11.7 + lefthook: + specifier: ^2.1.4 + version: 2.1.10 tsdown: specifier: 0.22.9 version: 0.22.9(typescript@6.0.3) @@ -833,6 +836,60 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + lefthook-darwin-arm64@2.1.10: + resolution: {integrity: sha512-nw+X8wRNDoUUV6WSteyKBbcLySq+fsmZt5WV/s50ZJpysmsDKJOUMln6SllNfP+60dzUahAO7REco/2633BsLg==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@2.1.10: + resolution: {integrity: sha512-KQ/bHmvpkFdHMn4pZnUdTf+GuSC+aBBgBTxZT4GW+6cSf+qbErKZBhK7cH6BmILsvx43+VzEArvHYY7YOfRFOQ==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@2.1.10: + resolution: {integrity: sha512-8su6DwydP7+pv7kG0zCtjphqsw4ouOnfexRUErapy5GTxYBoUOhYz3RSHTSWNRsK6W4jva7FPUh2Lp5/PSn30w==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@2.1.10: + resolution: {integrity: sha512-GeAJEFxko3Lk+AsnS3NleAFrpyMLFUKOlgJvPKuU0xHwVEI/z+ZoCcmuO0BX+4CS0NLbZhC/YQAvBASqDvvVdQ==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@2.1.10: + resolution: {integrity: sha512-1sHTCmpTWjVMs+yKPBLRNT1kuuIr1yjietlk7rCB6wFPVOS6Ph3o2zPFH2AvW1UymHlqwyHXzBr9EtDpQ7j1mQ==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@2.1.10: + resolution: {integrity: sha512-z/VlRB3bh6mBvW3r1rwnJ5vP8z+Krx5gJzkZ4veDXh+6FlRTx8wtd3g3fllOv/yZMxkgmL3fQoFXv05Esa7vBQ==} + cpu: [x64] + os: [linux] + + lefthook-openbsd-arm64@2.1.10: + resolution: {integrity: sha512-430zL8sSIKw5P0YXGG6PB+eAhHa06n0PXuaERaAQE4Ss3odfqwnl5Mq9hQmkEnOS1EGiQEKkd0UHv/i4PtMNIQ==} + cpu: [arm64] + os: [openbsd] + + lefthook-openbsd-x64@2.1.10: + resolution: {integrity: sha512-bgkO8PphGZVDhQgCJ524aYYPI5491pVmCiLPGjBIo1AvOSlIyw4N1Y+1C3QfqwEmechzw+Aq16SNc8pqv6UuXg==} + cpu: [x64] + os: [openbsd] + + lefthook-windows-arm64@2.1.10: + resolution: {integrity: sha512-5Q6etF0Fla2DDA4ilDySrdNgiR5+W7cJZwnZ69Je3kvWCaWm4wnkuc8FEdjp3kiL2x3ZXipdI00f5vpO8aWmog==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@2.1.10: + resolution: {integrity: sha512-c/XH8YZtylG4XaxzqFfXluvq2LXq2W/p54Bnzn3+Z7E5X2Fk3JlFJAibulMbIt2+w8T7UI/r97ok5GqE4kGaeA==} + cpu: [x64] + os: [win32] + + lefthook@2.1.10: + resolution: {integrity: sha512-K7mM4WoqMwqfXYK11EHy+lSH1uW8XHni3Yn/bSqyerPkUPygGdf3xn18JoV5HyA06xuQL3ofGAOjG01QX9oJ4w==} + hasBin: true + loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} @@ -1764,6 +1821,49 @@ snapshots: kleur@3.0.3: {} + lefthook-darwin-arm64@2.1.10: + optional: true + + lefthook-darwin-x64@2.1.10: + optional: true + + lefthook-freebsd-arm64@2.1.10: + optional: true + + lefthook-freebsd-x64@2.1.10: + optional: true + + lefthook-linux-arm64@2.1.10: + optional: true + + lefthook-linux-x64@2.1.10: + optional: true + + lefthook-openbsd-arm64@2.1.10: + optional: true + + lefthook-openbsd-x64@2.1.10: + optional: true + + lefthook-windows-arm64@2.1.10: + optional: true + + lefthook-windows-x64@2.1.10: + optional: true + + lefthook@2.1.10: + optionalDependencies: + lefthook-darwin-arm64: 2.1.10 + lefthook-darwin-x64: 2.1.10 + lefthook-freebsd-arm64: 2.1.10 + lefthook-freebsd-x64: 2.1.10 + lefthook-linux-arm64: 2.1.10 + lefthook-linux-x64: 2.1.10 + lefthook-openbsd-arm64: 2.1.10 + lefthook-openbsd-x64: 2.1.10 + lefthook-windows-arm64: 2.1.10 + lefthook-windows-x64: 2.1.10 + loupe@3.1.2: {} magic-string@0.30.15: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 97db6de..5fbae79 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ allowBuilds: '@biomejs/biome': false esbuild: false + lefthook: true From 073aedc9702e4c887efa8053851c1fc91dd6e39f Mon Sep 17 00:00:00 2001 From: Taesu Date: Sat, 25 Jul 2026 15:24:50 +0900 Subject: [PATCH 2/3] chore: lint all files --- src/password.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/password.ts b/src/password.ts index 67ecad7..80c418e 100644 --- a/src/password.ts +++ b/src/password.ts @@ -8,7 +8,10 @@ const config = { dkLen: 64, }; -async function generateKey(password: string, salt: string): Promise { +async function generateKey( + password: string, + salt: string, +): Promise { return scryptAsync(password.normalize("NFKC"), salt, { N: config.N, r: config.r, From 8ba4766c6775777771e4b7c298089fb21cc71d3f Mon Sep 17 00:00:00 2001 From: Taesu Date: Sat, 25 Jul 2026 16:33:56 +0900 Subject: [PATCH 3/3] fix: propagate lefthook installation failures --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 84be6e4..37ababf 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "main": "./dist/index.cjs", "module": "./dist/index.mjs", "scripts": { - "prepare": "git rev-parse --git-dir >/dev/null 2>&1 && lefthook install --reset-hooks-path || echo \"skipping lefthook (not a git repo)\"", + "prepare": "if git rev-parse --git-dir >/dev/null 2>&1; then lefthook install --reset-hooks-path; else echo \"skipping lefthook (not a git repo)\"; fi", "test": "vitest", "typecheck": "tsc --noEmit", "build": "tsdown",