prodlint 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,7 +13,7 @@ npx prodlint
13
13
  ```
14
14
 
15
15
  ```
16
- prodlint v0.9.2
16
+ prodlint v0.9.4
17
17
  Scanned 148 files · 2 critical · 5 warnings · 1 info
18
18
 
19
19
  src/app/api/checkout/route.ts
package/action.yml CHANGED
@@ -132,7 +132,7 @@ runs:
132
132
 
133
133
  - name: Post PR comment
134
134
  if: inputs.comment == 'true' && github.event_name == 'pull_request'
135
- uses: marocchino/sticky-pull-request-comment@v2
135
+ uses: marocchino/sticky-pull-request-comment@v3
136
136
  with:
137
137
  header: prodlint
138
138
  path: /tmp/prodlint-comment.md
package/dist/cli.js CHANGED
@@ -723,10 +723,25 @@ var SECRET_PATTERNS = [
723
723
  { name: "Supabase service role key", pattern: /eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.[A-Za-z0-9_-]{50,}\.[A-Za-z0-9_-]{20,}/ },
724
724
  { name: "OpenAI API key (legacy)", pattern: /sk-[a-zA-Z0-9]{20,}T3BlbkFJ[a-zA-Z0-9]{20,}/ },
725
725
  { name: "OpenAI API key", pattern: /sk-proj-[a-zA-Z0-9_\-]{20,}/ },
726
+ { name: "Anthropic API key", pattern: /sk-ant-(?:api|admin)[0-9]{2}-[a-zA-Z0-9_\-]{20,}/ },
726
727
  { name: "GitHub token", pattern: /gh[ps]_[A-Za-z0-9_]{36,}/ },
727
728
  { name: "GitHub fine-grained token", pattern: /github_pat_[A-Za-z0-9_]{22,}/ },
728
729
  { name: "Generic API key assignment", pattern: /(?:api_key|apikey|api_secret|secret_key|private_key)\s*[=:]\s*['"][a-zA-Z0-9_\-]{20,}['"]/ },
729
- { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ }
730
+ { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ },
731
+ // Cloud / platform keys
732
+ { name: "Google API key", pattern: /AIza[0-9A-Za-z_\-]{35}/ },
733
+ { name: "Google OAuth client secret", pattern: /GOCSPX-[a-zA-Z0-9_\-]{20,}/ },
734
+ { name: "GitLab personal access token", pattern: /glpat-[A-Za-z0-9_\-]{20,}/ },
735
+ { name: "npm access token", pattern: /npm_[A-Za-z0-9]{36}/ },
736
+ { name: "Slack token", pattern: /xox[baprs]-[A-Za-z0-9-]{10,}/ },
737
+ { name: "Slack webhook URL", pattern: /hooks\.slack\.com\/services\/[A-Za-z0-9_\-\/]{20,}/ },
738
+ { name: "Supabase secret key", pattern: /sb_secret_[a-zA-Z0-9_\-]{20,}/ },
739
+ // AI provider keys
740
+ { name: "Hugging Face token", pattern: /hf_[a-zA-Z0-9]{34,}/ },
741
+ { name: "Groq API key", pattern: /gsk_[a-zA-Z0-9]{40,}/ },
742
+ // Structural / high-signal
743
+ { name: "private key", pattern: /-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY-----/ },
744
+ { name: "database connection string with credentials", pattern: /(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqps?):\/\/[^\s:@/]+:[^\s@/]{3,}@/ }
730
745
  ];
731
746
  var secretsRule = {
732
747
  id: "secrets",
package/dist/index.js CHANGED
@@ -717,10 +717,25 @@ var SECRET_PATTERNS = [
717
717
  { name: "Supabase service role key", pattern: /eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.[A-Za-z0-9_-]{50,}\.[A-Za-z0-9_-]{20,}/ },
718
718
  { name: "OpenAI API key (legacy)", pattern: /sk-[a-zA-Z0-9]{20,}T3BlbkFJ[a-zA-Z0-9]{20,}/ },
719
719
  { name: "OpenAI API key", pattern: /sk-proj-[a-zA-Z0-9_\-]{20,}/ },
720
+ { name: "Anthropic API key", pattern: /sk-ant-(?:api|admin)[0-9]{2}-[a-zA-Z0-9_\-]{20,}/ },
720
721
  { name: "GitHub token", pattern: /gh[ps]_[A-Za-z0-9_]{36,}/ },
721
722
  { name: "GitHub fine-grained token", pattern: /github_pat_[A-Za-z0-9_]{22,}/ },
722
723
  { name: "Generic API key assignment", pattern: /(?:api_key|apikey|api_secret|secret_key|private_key)\s*[=:]\s*['"][a-zA-Z0-9_\-]{20,}['"]/ },
723
- { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ }
724
+ { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ },
725
+ // Cloud / platform keys
726
+ { name: "Google API key", pattern: /AIza[0-9A-Za-z_\-]{35}/ },
727
+ { name: "Google OAuth client secret", pattern: /GOCSPX-[a-zA-Z0-9_\-]{20,}/ },
728
+ { name: "GitLab personal access token", pattern: /glpat-[A-Za-z0-9_\-]{20,}/ },
729
+ { name: "npm access token", pattern: /npm_[A-Za-z0-9]{36}/ },
730
+ { name: "Slack token", pattern: /xox[baprs]-[A-Za-z0-9-]{10,}/ },
731
+ { name: "Slack webhook URL", pattern: /hooks\.slack\.com\/services\/[A-Za-z0-9_\-\/]{20,}/ },
732
+ { name: "Supabase secret key", pattern: /sb_secret_[a-zA-Z0-9_\-]{20,}/ },
733
+ // AI provider keys
734
+ { name: "Hugging Face token", pattern: /hf_[a-zA-Z0-9]{34,}/ },
735
+ { name: "Groq API key", pattern: /gsk_[a-zA-Z0-9]{40,}/ },
736
+ // Structural / high-signal
737
+ { name: "private key", pattern: /-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY-----/ },
738
+ { name: "database connection string with credentials", pattern: /(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqps?):\/\/[^\s:@/]+:[^\s@/]{3,}@/ }
724
739
  ];
725
740
  var secretsRule = {
726
741
  id: "secrets",
package/dist/mcp.js CHANGED
@@ -726,10 +726,25 @@ var SECRET_PATTERNS = [
726
726
  { name: "Supabase service role key", pattern: /eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.[A-Za-z0-9_-]{50,}\.[A-Za-z0-9_-]{20,}/ },
727
727
  { name: "OpenAI API key (legacy)", pattern: /sk-[a-zA-Z0-9]{20,}T3BlbkFJ[a-zA-Z0-9]{20,}/ },
728
728
  { name: "OpenAI API key", pattern: /sk-proj-[a-zA-Z0-9_\-]{20,}/ },
729
+ { name: "Anthropic API key", pattern: /sk-ant-(?:api|admin)[0-9]{2}-[a-zA-Z0-9_\-]{20,}/ },
729
730
  { name: "GitHub token", pattern: /gh[ps]_[A-Za-z0-9_]{36,}/ },
730
731
  { name: "GitHub fine-grained token", pattern: /github_pat_[A-Za-z0-9_]{22,}/ },
731
732
  { name: "Generic API key assignment", pattern: /(?:api_key|apikey|api_secret|secret_key|private_key)\s*[=:]\s*['"][a-zA-Z0-9_\-]{20,}['"]/ },
732
- { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ }
733
+ { name: "SendGrid API key", pattern: /SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}/ },
734
+ // Cloud / platform keys
735
+ { name: "Google API key", pattern: /AIza[0-9A-Za-z_\-]{35}/ },
736
+ { name: "Google OAuth client secret", pattern: /GOCSPX-[a-zA-Z0-9_\-]{20,}/ },
737
+ { name: "GitLab personal access token", pattern: /glpat-[A-Za-z0-9_\-]{20,}/ },
738
+ { name: "npm access token", pattern: /npm_[A-Za-z0-9]{36}/ },
739
+ { name: "Slack token", pattern: /xox[baprs]-[A-Za-z0-9-]{10,}/ },
740
+ { name: "Slack webhook URL", pattern: /hooks\.slack\.com\/services\/[A-Za-z0-9_\-\/]{20,}/ },
741
+ { name: "Supabase secret key", pattern: /sb_secret_[a-zA-Z0-9_\-]{20,}/ },
742
+ // AI provider keys
743
+ { name: "Hugging Face token", pattern: /hf_[a-zA-Z0-9]{34,}/ },
744
+ { name: "Groq API key", pattern: /gsk_[a-zA-Z0-9]{40,}/ },
745
+ // Structural / high-signal
746
+ { name: "private key", pattern: /-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP )?PRIVATE KEY-----/ },
747
+ { name: "database connection string with credentials", pattern: /(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqps?):\/\/[^\s:@/]+:[^\s@/]{3,}@/ }
733
748
  ];
734
749
  var secretsRule = {
735
750
  id: "secrets",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prodlint",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "Production readiness for vibe-coded apps — know your AI code is ready to ship",
5
5
  "license": "MIT",
6
6
  "author": "prodlint contributors",
@@ -40,22 +40,28 @@
40
40
  "test": "vitest run",
41
41
  "test:watch": "vitest",
42
42
  "lint": "node dist/cli.js .",
43
+ "audit:supply-chain": "node scripts/supply-chain-audit.cjs",
43
44
  "prepublishOnly": "npm run build"
44
45
  },
45
46
  "dependencies": {
46
- "@babel/parser": "^7.29.0",
47
- "@babel/types": "^7.29.0",
48
- "@modelcontextprotocol/sdk": "^1.26.0",
49
- "@rollup/rollup-win32-x64-msvc": "^4.59.0",
47
+ "@babel/parser": "^7.29.7",
48
+ "@babel/types": "^7.29.7",
49
+ "@modelcontextprotocol/sdk": "^1.29.0",
50
50
  "fast-glob": "^3.3.3",
51
51
  "picocolors": "^1.1.1",
52
- "zod": "^4.3.6"
52
+ "zod": "^4.4.3"
53
53
  },
54
54
  "devDependencies": {
55
- "@types/node": "^25.2.3",
55
+ "@types/node": "^26.0.1",
56
56
  "tsup": "^8.4.0",
57
- "typescript": "^5.7.0",
58
- "vitest": "^3.0.0"
57
+ "typescript": "^5.9.3",
58
+ "vitest": "^3.2.6"
59
+ },
60
+ "optionalDependencies": {
61
+ "@rollup/rollup-win32-x64-msvc": "^4.62.2"
62
+ },
63
+ "overrides": {
64
+ "esbuild": "^0.28.1"
59
65
  },
60
66
  "engines": {
61
67
  "node": ">=18"