@guardbee/guard-core 0.1.0 → 0.2.1
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 +14 -4
- package/TR.md +36 -0
- package/ZH.md +36 -0
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/injection.d.ts +46 -1
- package/dist/cjs/injection.d.ts.map +1 -1
- package/dist/cjs/injection.js +322 -34
- package/dist/cjs/injection.js.map +1 -1
- package/dist/cjs/pii.d.ts.map +1 -1
- package/dist/cjs/pii.js +54 -11
- package/dist/cjs/pii.js.map +1 -1
- package/dist/cjs/secrets.d.ts +18 -0
- package/dist/cjs/secrets.d.ts.map +1 -0
- package/dist/cjs/secrets.js +278 -0
- package/dist/cjs/secrets.js.map +1 -0
- package/dist/cjs/validators.d.ts +8 -0
- package/dist/cjs/validators.d.ts.map +1 -1
- package/dist/cjs/validators.js +30 -0
- package/dist/cjs/validators.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/injection.d.ts +46 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +320 -33
- package/dist/injection.js.map +1 -1
- package/dist/pii.d.ts.map +1 -1
- package/dist/pii.js +55 -12
- package/dist/pii.js.map +1 -1
- package/dist/secrets.d.ts +18 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +275 -0
- package/dist/secrets.js.map +1 -0
- package/dist/validators.d.ts +8 -0
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +28 -0
- package/dist/validators.js.map +1 -1
- package/package.json +4 -2
package/dist/secrets.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
export const SECRET_RULES = [
|
|
2
|
+
// ── Cloud providers ────────────────────────────────────────────────────────
|
|
3
|
+
{
|
|
4
|
+
id: "aws_access_key",
|
|
5
|
+
name: "AWS Access Key ID",
|
|
6
|
+
pattern: /\b(AKIA|ABIA|ACCA|AIPA|AKIA|ANPA|ANVA|APKA)[0-9A-Z]{16}\b/g,
|
|
7
|
+
severity: "critical",
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "aws_secret_key",
|
|
11
|
+
broad: true,
|
|
12
|
+
name: "AWS Secret Access Key",
|
|
13
|
+
pattern: /(?<![A-Za-z0-9/+])([A-Za-z0-9/+]{40})(?![A-Za-z0-9/+])/g,
|
|
14
|
+
severity: "critical",
|
|
15
|
+
allowlist: [/^[A-Za-z0-9+/]{40}={0,2}$/], // base64 payloads
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: "google_api_key",
|
|
19
|
+
name: "Google API Key",
|
|
20
|
+
pattern: /AIza[0-9A-Za-z\-_]{35}/g,
|
|
21
|
+
severity: "critical",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: "google_oauth",
|
|
25
|
+
name: "Google OAuth Client Secret",
|
|
26
|
+
pattern: /GOCSPX-[0-9A-Za-z\-_]{28}/g,
|
|
27
|
+
severity: "critical",
|
|
28
|
+
},
|
|
29
|
+
// ── Version control & CI ───────────────────────────────────────────────────
|
|
30
|
+
{
|
|
31
|
+
id: "github_pat",
|
|
32
|
+
name: "GitHub Personal Access Token",
|
|
33
|
+
pattern: /ghp_[0-9A-Za-z]{36}/g,
|
|
34
|
+
severity: "critical",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: "github_oauth",
|
|
38
|
+
name: "GitHub OAuth Token",
|
|
39
|
+
pattern: /gho_[0-9A-Za-z]{36}/g,
|
|
40
|
+
severity: "critical",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "github_app_token",
|
|
44
|
+
name: "GitHub App Token",
|
|
45
|
+
pattern: /ghs_[0-9A-Za-z]{36}/g,
|
|
46
|
+
severity: "critical",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "github_refresh_token",
|
|
50
|
+
name: "GitHub Refresh Token",
|
|
51
|
+
pattern: /ghr_[0-9A-Za-z]{36}/g,
|
|
52
|
+
severity: "high",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "gitlab_pat",
|
|
56
|
+
name: "GitLab Personal Access Token",
|
|
57
|
+
pattern: /glpat-[0-9A-Za-z\-_]{20}/g,
|
|
58
|
+
severity: "critical",
|
|
59
|
+
},
|
|
60
|
+
// ── Payment ────────────────────────────────────────────────────────────────
|
|
61
|
+
{
|
|
62
|
+
id: "stripe_secret",
|
|
63
|
+
name: "Stripe Secret Key (live)",
|
|
64
|
+
pattern: /sk_live_[0-9A-Za-z]{24,}/g,
|
|
65
|
+
severity: "critical",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "stripe_secret_test",
|
|
69
|
+
// Stripe'ın kendi dokümantasyonu test-mode key'lerini kod örneklerine
|
|
70
|
+
// gömmenin güvenli olduğunu belirtiyor — gerçek parasal etkisi yok,
|
|
71
|
+
// sadece sandbox hesabına erişim. Yine de görünürlük için raporlanıyor.
|
|
72
|
+
name: "Stripe Secret Key (test mode)",
|
|
73
|
+
pattern: /sk_test_[0-9A-Za-z]{24,}/g,
|
|
74
|
+
severity: "low",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "stripe_publishable",
|
|
78
|
+
broad: true,
|
|
79
|
+
name: "Stripe Publishable Key",
|
|
80
|
+
pattern: /pk_(live|test)_[0-9A-Za-z]{24,}/g,
|
|
81
|
+
severity: "medium",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "stripe_restricted",
|
|
85
|
+
name: "Stripe Restricted Key (live)",
|
|
86
|
+
pattern: /rk_live_[0-9A-Za-z]{24,}/g,
|
|
87
|
+
severity: "critical",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: "stripe_restricted_test",
|
|
91
|
+
name: "Stripe Restricted Key (test mode)",
|
|
92
|
+
pattern: /rk_test_[0-9A-Za-z]{24,}/g,
|
|
93
|
+
severity: "low",
|
|
94
|
+
},
|
|
95
|
+
// ── AI / ML ────────────────────────────────────────────────────────────────
|
|
96
|
+
{
|
|
97
|
+
id: "openai_key",
|
|
98
|
+
name: "OpenAI API Key",
|
|
99
|
+
pattern: /sk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}/g,
|
|
100
|
+
severity: "critical",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: "openai_key_v2",
|
|
104
|
+
name: "OpenAI API Key (v2)",
|
|
105
|
+
pattern: /sk-proj-[A-Za-z0-9\-_]{50,}/g,
|
|
106
|
+
severity: "critical",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: "anthropic_key",
|
|
110
|
+
name: "Anthropic API Key",
|
|
111
|
+
pattern: /sk-ant-[A-Za-z0-9\-_]{32,}/g,
|
|
112
|
+
severity: "critical",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: "huggingface_token",
|
|
116
|
+
name: "HuggingFace Token",
|
|
117
|
+
pattern: /hf_[A-Za-z0-9]{34}/g,
|
|
118
|
+
severity: "high",
|
|
119
|
+
},
|
|
120
|
+
// ── Communication ──────────────────────────────────────────────────────────
|
|
121
|
+
{
|
|
122
|
+
id: "slack_token",
|
|
123
|
+
name: "Slack Token",
|
|
124
|
+
pattern: /xox[baprs]-([0-9a-zA-Z]{10,48})/g,
|
|
125
|
+
severity: "critical",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
id: "slack_webhook",
|
|
129
|
+
name: "Slack Webhook URL",
|
|
130
|
+
pattern: /https:\/\/hooks\.slack\.com\/services\/T[0-9A-Z]{8}\/B[0-9A-Z]{8}\/[0-9a-zA-Z]{24}/g,
|
|
131
|
+
severity: "high",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "twilio_account_sid",
|
|
135
|
+
broad: true,
|
|
136
|
+
name: "Twilio Account SID",
|
|
137
|
+
pattern: /AC[0-9a-f]{32}/g,
|
|
138
|
+
severity: "high",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "twilio_auth_token",
|
|
142
|
+
name: "Twilio Auth Token",
|
|
143
|
+
pattern: /[Tt][Ww][Ii][Ll][Ii][Oo].{0,20}[0-9a-f]{32}/g,
|
|
144
|
+
severity: "critical",
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: "sendgrid_key",
|
|
148
|
+
name: "SendGrid API Key",
|
|
149
|
+
pattern: /SG\.[0-9A-Za-z\-_]{22}\.[0-9A-Za-z\-_]{43}/g,
|
|
150
|
+
severity: "critical",
|
|
151
|
+
},
|
|
152
|
+
// ── Database URLs ──────────────────────────────────────────────────────────
|
|
153
|
+
{
|
|
154
|
+
id: "db_url_postgres",
|
|
155
|
+
name: "PostgreSQL Connection String with credentials",
|
|
156
|
+
pattern: /postgres(?:ql)?:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
157
|
+
severity: "critical",
|
|
158
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
159
|
+
skipPlaceholderCheck: true,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: "db_url_mysql",
|
|
163
|
+
name: "MySQL Connection String with credentials",
|
|
164
|
+
pattern: /mysql:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
165
|
+
severity: "critical",
|
|
166
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
167
|
+
skipPlaceholderCheck: true,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: "db_url_mongodb",
|
|
171
|
+
name: "MongoDB Connection String with credentials",
|
|
172
|
+
pattern: /mongodb(?:\+srv)?:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
173
|
+
severity: "critical",
|
|
174
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
175
|
+
skipPlaceholderCheck: true,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: "db_url_redis",
|
|
179
|
+
name: "Redis Connection String with credentials",
|
|
180
|
+
pattern: /redis:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
181
|
+
severity: "high",
|
|
182
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
183
|
+
skipPlaceholderCheck: true,
|
|
184
|
+
},
|
|
185
|
+
// ── Private keys ───────────────────────────────────────────────────────────
|
|
186
|
+
{
|
|
187
|
+
id: "private_key_rsa",
|
|
188
|
+
name: "RSA Private Key",
|
|
189
|
+
pattern: /-----BEGIN RSA PRIVATE KEY-----/g,
|
|
190
|
+
severity: "critical",
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
id: "private_key_ec",
|
|
194
|
+
name: "EC Private Key",
|
|
195
|
+
pattern: /-----BEGIN EC PRIVATE KEY-----/g,
|
|
196
|
+
severity: "critical",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: "private_key_openssh",
|
|
200
|
+
name: "OpenSSH Private Key",
|
|
201
|
+
pattern: /-----BEGIN OPENSSH PRIVATE KEY-----/g,
|
|
202
|
+
severity: "critical",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
id: "private_key_generic",
|
|
206
|
+
name: "Generic Private Key",
|
|
207
|
+
pattern: /-----BEGIN PRIVATE KEY-----/g,
|
|
208
|
+
severity: "critical",
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: "pgp_private_key",
|
|
212
|
+
name: "PGP Private Key Block",
|
|
213
|
+
pattern: /-----BEGIN PGP PRIVATE KEY BLOCK-----/g,
|
|
214
|
+
severity: "critical",
|
|
215
|
+
},
|
|
216
|
+
// ── Auth tokens & JWTs ─────────────────────────────────────────────────────
|
|
217
|
+
{
|
|
218
|
+
id: "jwt",
|
|
219
|
+
name: "JSON Web Token",
|
|
220
|
+
pattern: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,
|
|
221
|
+
severity: "high",
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: "bearer_token",
|
|
225
|
+
broad: true,
|
|
226
|
+
name: "Bearer Token in code",
|
|
227
|
+
// Gerçek bearer token'lar (JWT, OAuth2 opak token) neredeyse hiç 20
|
|
228
|
+
// karakterin altına inmez — testlerdeki "Bearer alpha"/"Bearer test-token"
|
|
229
|
+
// gibi kısa sahte değerleri eleyip gürültüyü büyük ölçüde azaltıyor.
|
|
230
|
+
pattern: /['"](Bearer\s+[A-Za-z0-9\-._~+/]{20,}=*)['"]/gi,
|
|
231
|
+
severity: "high",
|
|
232
|
+
lowerSeverityInTestFiles: true,
|
|
233
|
+
},
|
|
234
|
+
// ── DevOps & infra ─────────────────────────────────────────────────────────
|
|
235
|
+
{
|
|
236
|
+
id: "npm_token",
|
|
237
|
+
name: "npm Access Token",
|
|
238
|
+
pattern: /npm_[A-Za-z0-9]{36}/g,
|
|
239
|
+
severity: "critical",
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
id: "docker_pat",
|
|
243
|
+
name: "Docker Hub Personal Access Token",
|
|
244
|
+
pattern: /dckr_pat_[A-Za-z0-9\-_]{27}/g,
|
|
245
|
+
severity: "high",
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
id: "vercel_token",
|
|
249
|
+
broad: true,
|
|
250
|
+
name: "Vercel API Token",
|
|
251
|
+
pattern: /vercel(?:[._-])?(?:token|api)['":\s=]+([A-Za-z0-9]{24})/gi,
|
|
252
|
+
severity: "high",
|
|
253
|
+
},
|
|
254
|
+
// ── Generic patterns ───────────────────────────────────────────────────────
|
|
255
|
+
{
|
|
256
|
+
id: "generic_secret_assignment",
|
|
257
|
+
broad: true,
|
|
258
|
+
name: "Hardcoded secret assignment",
|
|
259
|
+
pattern: /(?:password|passwd|secret|api[_-]?key|auth[_-]?token|access[_-]?token|private[_-]?key)\s*[:=]\s*['"][^'"]{8,}['"]/gi,
|
|
260
|
+
severity: "medium",
|
|
261
|
+
allowlist: [
|
|
262
|
+
/process\.env/,
|
|
263
|
+
/\$\{/,
|
|
264
|
+
/os\.environ/,
|
|
265
|
+
/getenv/,
|
|
266
|
+
/placeholder/i,
|
|
267
|
+
/example/i,
|
|
268
|
+
/your[-_]?/i,
|
|
269
|
+
/<[^<>]{1,80}>/,
|
|
270
|
+
/\*{3,}/,
|
|
271
|
+
],
|
|
272
|
+
lowerSeverityInTestFiles: true,
|
|
273
|
+
},
|
|
274
|
+
];
|
|
275
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,8EAA8E;IAC9E;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,4DAA4D;QACrE,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,yDAAyD;QAClE,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,kBAAkB;KAC7D;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,yBAAyB;QAClC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,UAAU;KACrB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,UAAU;KACrB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,sEAAsE;QACtE,oEAAoE;QACpE,wEAAwE;QACxE,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,KAAK;KAChB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,MAAM;KACjB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,qFAAqF;QAC9F,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,8CAA8C;QACvD,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,6CAA6C;QACtD,QAAQ,EAAE,UAAU;KACrB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,+CAA+C;QACrD,OAAO,EAAE,8CAA8C;QACvD,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;QACjE,oBAAoB,EAAE,IAAI;KAC3B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,oCAAoC;QAC7C,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;QACjE,oBAAoB,EAAE,IAAI;KAC3B;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,gDAAgD;QACzD,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;QACjE,oBAAoB,EAAE,IAAI;KAC3B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,oCAAoC;QAC7C,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,CAAC;QACjE,oBAAoB,EAAE,IAAI;KAC3B;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,iCAAiC;QAC1C,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,sCAAsC;QAC/C,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,UAAU;KACrB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,sBAAsB;QAC5B,oEAAoE;QACpE,2EAA2E;QAC3E,qEAAqE;QACrE,OAAO,EAAE,gDAAgD;QACzD,QAAQ,EAAE,MAAM;QAChB,wBAAwB,EAAE,IAAI;KAC/B;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,sBAAsB;QAC/B,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2DAA2D;QACpE,QAAQ,EAAE,MAAM;KACjB;IAED,8EAA8E;IAC9E;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,6BAA6B;QACnC,OAAO,EACL,qHAAqH;QACvH,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,cAAc;YACd,MAAM;YACN,aAAa;YACb,QAAQ;YACR,cAAc;YACd,UAAU;YACV,YAAY;YACZ,eAAe;YACf,QAAQ;SACT;QACD,wBAAwB,EAAE,IAAI;KAC/B;CACF,CAAC"}
|
package/dist/validators.d.ts
CHANGED
|
@@ -4,4 +4,12 @@ export declare function isValidTcKimlik(raw: string): boolean;
|
|
|
4
4
|
export declare function isValidLuhn(raw: string): boolean;
|
|
5
5
|
/** IBAN mod-97 checksum (ISO 7064 MOD97-10), computed in chunks to avoid precision loss. */
|
|
6
6
|
export declare function isValidIban(raw: string): boolean;
|
|
7
|
+
/** Turkish tax number (Vergi Kimlik No, 10 digits) — the Gelir İdaresi check-digit algorithm. */
|
|
8
|
+
export declare function isValidVkn(raw: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Turkish phone number: after an optional +90 / 0090 / 0 prefix, 10 digits
|
|
11
|
+
* starting with a mobile (5xx), landline (2xx–4xx) or 850 code. Any other
|
|
12
|
+
* 10-digit run (an order number) is not a phone number.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isValidTrPhone(raw: string): boolean;
|
|
7
15
|
//# sourceMappingURL=validators.d.ts.map
|
package/dist/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUpD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAehD;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUhD"}
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUpD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAehD;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUhD;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMnD"}
|
package/dist/validators.js
CHANGED
|
@@ -44,4 +44,32 @@ export function isValidIban(raw) {
|
|
|
44
44
|
}
|
|
45
45
|
return Number(remainder) === 1;
|
|
46
46
|
}
|
|
47
|
+
/** Turkish tax number (Vergi Kimlik No, 10 digits) — the Gelir İdaresi check-digit algorithm. */
|
|
48
|
+
export function isValidVkn(raw) {
|
|
49
|
+
const d = raw.replace(/\D/g, "");
|
|
50
|
+
if (d.length !== 10)
|
|
51
|
+
return false;
|
|
52
|
+
const digits = d.split("").map(Number);
|
|
53
|
+
let sum = 0;
|
|
54
|
+
for (let i = 0; i < 9; i++) {
|
|
55
|
+
const tmp = (digits[i] + 10 - (i + 1)) % 10;
|
|
56
|
+
sum += tmp === 9 ? 9 : (tmp * 2 ** (10 - (i + 1))) % 9;
|
|
57
|
+
}
|
|
58
|
+
return (10 - (sum % 10)) % 10 === digits[9];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Turkish phone number: after an optional +90 / 0090 / 0 prefix, 10 digits
|
|
62
|
+
* starting with a mobile (5xx), landline (2xx–4xx) or 850 code. Any other
|
|
63
|
+
* 10-digit run (an order number) is not a phone number.
|
|
64
|
+
*/
|
|
65
|
+
export function isValidTrPhone(raw) {
|
|
66
|
+
let d = raw.replace(/\D/g, "");
|
|
67
|
+
if (d.startsWith("0090"))
|
|
68
|
+
d = d.slice(4);
|
|
69
|
+
else if (d.startsWith("90") && d.length === 12)
|
|
70
|
+
d = d.slice(2);
|
|
71
|
+
else if (d.startsWith("0") && d.length === 11)
|
|
72
|
+
d = d.slice(1);
|
|
73
|
+
return d.length === 10 && /^(?:5\d|[234][1-9]|850)/.test(d);
|
|
74
|
+
}
|
|
47
75
|
//# sourceMappingURL=validators.js.map
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guardbee/guard-core",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Shared detectors for GuardBee MCP packages — checksum-validated PII masking, prompt injection patterns, and lethal-trifecta tool classification",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
-
"README.md"
|
|
22
|
+
"README.md",
|
|
23
|
+
"TR.md",
|
|
24
|
+
"ZH.md"
|
|
23
25
|
],
|
|
24
26
|
"keywords": [
|
|
25
27
|
"mcp",
|