diff --git a/.github/workflows/lint-and-test.yaml b/.github/workflows/lint-and-test.yaml index 608ec02..2c713a3 100644 --- a/.github/workflows/lint-and-test.yaml +++ b/.github/workflows/lint-and-test.yaml @@ -10,25 +10,6 @@ on: jobs: lint_and_test: runs-on: ubuntu-latest - - services: - postgres: - image: postgres:latest - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: secret - POSTGRES_DB: project - options: >- - --health-cmd "pg_isready -U postgres" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432:5432 - - env: - DATABASE_URL: postgresql://postgres:secret@localhost:5432/project - steps: - name: Checkout repo uses: actions/checkout@v6 @@ -47,23 +28,3 @@ jobs: - name: Run lint ✅ run: pnpm lint - - name: Run unit tests ✅ - run: pnpm test - - # - name: Setup database - # run: | - # sudo apt-get update - # sudo apt-get install -y postgresql-client - - # until pg_isready -h localhost -p 5432 -U postgres; do - # echo "Waiting for Pg..." - # sleep 2 - # done - - # PGPASSWORD=secret psql -h localhost -U postgres -d project -c "CREATE EXTENSION fuzzystrmatch;" - - - name: Run db:migration 🆙 - run: pnpm db:migrate:up - - - name: Run integration tests ✅ - run: pnpm test:integration diff --git a/src/app/services/docker.ts b/src/app/services/docker.ts index 81c8906..12de92c 100644 --- a/src/app/services/docker.ts +++ b/src/app/services/docker.ts @@ -30,7 +30,7 @@ export class DockerService { try { output = JSON.parse(result.stdout) } catch (e) { - throw new Error(`Failed to parse script output: Invalid JSON response`) + throw new Error(`Failed to parse script output: Invalid JSON response`, { cause: e }) } return { @@ -76,7 +76,7 @@ export class DockerService { try { output = JSON.parse(result.stdout) } catch (e) { - throw new Error(`Failed to parse script output: Invalid JSON response`) + throw new Error(`Failed to parse script output: Invalid JSON response`, { cause: e }) } return { @@ -99,7 +99,7 @@ export class DockerService { try { inspect = JSON.parse(result.stdout) } catch (e) { - throw new Error(`Failed to parse container data: Invalid JSON response`) + throw new Error(`Failed to parse container data: Invalid JSON response`, { cause: e }) } const status = inspect.State.Status @@ -145,7 +145,7 @@ export class DockerService { try { container = JSON.parse(line) } catch (e) { - throw new Error(`Failed to parse container data: Invalid JSON response`) + throw new Error(`Failed to parse container data: Invalid JSON response`, { cause: e }) } return { id: container.ID.substring(0, 12), diff --git a/src/lib/middleware/auth.ts b/src/lib/middleware/auth.ts index d0f754d..5f6937b 100644 --- a/src/lib/middleware/auth.ts +++ b/src/lib/middleware/auth.ts @@ -1,4 +1,5 @@ import { Context, Next } from 'hono'; +import { timingSafeEqual as cryptoTimingSafeEqual } from 'crypto'; function timingSafeEqual(a: string, b: string): boolean { if (a.length !== b.length) { @@ -9,7 +10,7 @@ function timingSafeEqual(a: string, b: string): boolean { const bufferB = Buffer.from(b, 'utf8'); try { - return require('crypto').timingSafeEqual(bufferA, bufferB); + return cryptoTimingSafeEqual(bufferA, bufferB); } catch { return false; }