diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d258f6..9e28723 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning: strict [semver](https://semver.org/) — bundle schema changes always bump at least minor; breaking schema changes bump major. +## [Unreleased] + +### Added +- Add near-miss negative fixtures for Firebase Auth, OAuth/OIDC, ActiveRecord, GitHub Actions, and Jest signature detection. + ## [0.11.0] - 2026-08-10 ### Added diff --git a/signatures/auth/firebase-auth.json b/signatures/auth/firebase-auth.json index 52b53e8..9650c68 100644 --- a/signatures/auth/firebase-auth.json +++ b/signatures/auth/firebase-auth.json @@ -37,6 +37,10 @@ { "path": "src/lib/clerk.ts", "diff": "import { getAuth } from \"@clerk/nextjs/server\";\nconst { userId } = getAuth(req);" + }, + { + "path": "src/docs/examples.ts", + "diff": "// Firebase authentication uses signInWithRedirect(auth, provider) for browser login." } ] } diff --git a/signatures/auth/oauth-oidc.json b/signatures/auth/oauth-oidc.json index 92bff62..f1d5447 100644 --- a/signatures/auth/oauth-oidc.json +++ b/signatures/auth/oauth-oidc.json @@ -35,6 +35,10 @@ { "path": "README.md", "diff": "We discussed adding generic OAuth/OIDC support with PKCE and discovery documents but shipped Supabase's built-in provider instead." + }, + { + "path": "src/auth/jose-oidc.ts", + "diff": "const packageName = \"openid-client\";\nconst discoveryUrl = `${issuer}/.well-known/openid-config`;\nconst response = await fetch(discoveryUrl);" } ] } diff --git a/signatures/db/activerecord.json b/signatures/db/activerecord.json index 899c038..477847f 100644 --- a/signatures/db/activerecord.json +++ b/signatures/db/activerecord.json @@ -15,6 +15,10 @@ { "path": "README.md", "diff": "We use ActiveRecord for most models but this one talks to an external API instead of a table." + }, + { + "path": "app/services/user_importer.rb", + "diff": "class UserImporter < ApplicationService\n def call\n # import users from the external API\n end\nend" } ] } diff --git a/signatures/infra/github-actions.json b/signatures/infra/github-actions.json index 171a979..019ebb6 100644 --- a/signatures/infra/github-actions.json +++ b/signatures/infra/github-actions.json @@ -13,7 +13,11 @@ { "path": ".github/workflows/ci.yml", "diff": "name: CI\non: [push]\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - run: npm test" } ], "negative": [ - { "path": "README.md", "diff": "We use github actions for CI, but the workflow file hasn't been checked into the repo yet." } + { "path": "README.md", "diff": "We use github actions for CI, but the workflow file hasn't been checked into the repo yet." }, + { + "path": "README.md", + "diff": "# Example workflow: uses: actions/checkout@v4\n" + } ] } } diff --git a/signatures/testing/jest.json b/signatures/testing/jest.json index 2ad6e75..3f4c0a1 100644 --- a/signatures/testing/jest.json +++ b/signatures/testing/jest.json @@ -19,6 +19,10 @@ { "path": "src/foo.test.ts", "diff": "import { describe, it, expect } from \"vitest\";\nit(\"matches the snapshot\", () => {\n expect(result).toMatchSnapshot();\n});" + }, + { + "path": "src/foo.test.ts", + "diff": "import { vi } from \"vitest\";\nconst mockFn = vi.fn();\nconst spy = vi.spyOn(console, \"log\");\nvi.mock(\"./foo\");\nconst framework = \"jest\";" } ] }