@sanity-labs/secret-scan 0.1.0

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/dist/index.cjs ADDED
@@ -0,0 +1,3142 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/rules.ts
2
+ var globalAllowlist = {
3
+ regexes: [
4
+ { regex: new RegExp("^true|false|null$", "i") },
5
+ { regex: new RegExp("^(?:a+|b+|c+|d+|e+|f+|g+|h+|i+|j+|k+|l+|m+|n+|o+|p+|q+|r+|s+|t+|u+|v+|w+|x+|y+|z+|\\*+|\\.+)$", "i") },
6
+ { regex: new RegExp("^\\$(?:\\d+|{\\d+})$", "") },
7
+ { regex: new RegExp("^\\$(?:[A-Z_]+|[a-z_]+)$", "") },
8
+ { regex: new RegExp("^\\${(?:[A-Z_]+|[a-z_]+)}$", "") },
9
+ { regex: new RegExp("^\\{\\{[ \\t]*[\\w ().|]+[ \\t]*}}$", "") },
10
+ { regex: new RegExp(`^\\$\\{\\{[ \\t]*(?:(?:env|github|secrets|vars)(?:\\.[A-Za-z]\\w+)+[\\w "'&./=|]*)[ \\t]*}}$`, "") },
11
+ { regex: new RegExp("^%(?:[A-Z_]+|[a-z_]+)%$", "") },
12
+ { regex: new RegExp("^%[+\\-# 0]?[bcdeEfFgGoOpqstTUvxX]$", "") },
13
+ { regex: new RegExp("^\\{\\d{0,2}}$", "") },
14
+ { regex: new RegExp("^@(?:[A-Z_]+|[a-z_]+)@$", "") },
15
+ { regex: new RegExp("^/Users/[a-z0-9]+/[\\w .-/]+$", "i") },
16
+ { regex: new RegExp("^/(?:bin|etc|home|opt|tmp|usr|var)/[\\w ./-]+$", "") }
17
+ ],
18
+ stopwords: [
19
+ "014df517-39d1-4453-b7b3-9930c563627c",
20
+ "abcdefghijklmnopqrstuvwxyz"
21
+ ]
22
+ };
23
+ var rules = [
24
+ {
25
+ id: "1password-secret-key",
26
+ label: "1password Secret Key",
27
+ regex: new RegExp("\\bA3-[A-Z0-9]{6}-(?:(?:[A-Z0-9]{11})|(?:[A-Z0-9]{6}-[A-Z0-9]{5}))-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}\\b", ""),
28
+ keywords: ["a3-"],
29
+ entropy: 3.8
30
+ },
31
+ {
32
+ id: "1password-service-account-token",
33
+ label: "1password Service Account Token",
34
+ regex: new RegExp("ops_eyJ[a-zA-Z0-9+/]{250,}={0,3}", ""),
35
+ keywords: ["ops_"],
36
+ entropy: 4
37
+ },
38
+ {
39
+ id: "adafruit-api-key",
40
+ label: "Adafruit API Key",
41
+ regex: new RegExp(`[\\w.-]{0,50}?(?:adafruit)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9_-]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
42
+ keywords: ["adafruit"]
43
+ },
44
+ {
45
+ id: "adobe-client-id",
46
+ label: "Adobe Client ID",
47
+ regex: new RegExp(`[\\w.-]{0,50}?(?:adobe)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
48
+ keywords: ["adobe"],
49
+ entropy: 2
50
+ },
51
+ {
52
+ id: "adobe-client-secret",
53
+ label: "Adobe Client Secret",
54
+ regex: new RegExp(`\\b(p8e-[a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
55
+ keywords: ["p8e-"],
56
+ entropy: 2
57
+ },
58
+ {
59
+ id: "age-secret-key",
60
+ label: "Age Secret Key",
61
+ regex: new RegExp("AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}", ""),
62
+ keywords: ["age-secret-key-1"]
63
+ },
64
+ {
65
+ id: "airtable-api-key",
66
+ label: "Airtable API Key",
67
+ regex: new RegExp(`[\\w.-]{0,50}?(?:airtable)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{17})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
68
+ keywords: ["airtable"]
69
+ },
70
+ {
71
+ id: "airtable-personnal-access-token",
72
+ label: "Airtable Personnal Access Token",
73
+ regex: new RegExp("\\b(pat[[:alnum:]]{14}\\.[a-f0-9]{64})\\b", ""),
74
+ keywords: ["airtable"]
75
+ },
76
+ {
77
+ id: "algolia-api-key",
78
+ label: "Algolia API Key",
79
+ regex: new RegExp(`[\\w.-]{0,50}?(?:algolia)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
80
+ keywords: ["algolia"]
81
+ },
82
+ {
83
+ id: "alibaba-access-key-id",
84
+ label: "Alibaba Access Key ID",
85
+ regex: new RegExp(`\\b(LTAI[a-z0-9]{20})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
86
+ keywords: ["ltai"],
87
+ entropy: 2
88
+ },
89
+ {
90
+ id: "alibaba-secret-key",
91
+ label: "Alibaba Secret Key",
92
+ regex: new RegExp(`[\\w.-]{0,50}?(?:alibaba)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{30})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
93
+ keywords: ["alibaba"],
94
+ entropy: 2
95
+ },
96
+ {
97
+ id: "anthropic-admin-api-key",
98
+ label: "Anthropic Admin API Key",
99
+ regex: new RegExp(`\\b(sk-ant-admin01-[a-zA-Z0-9_\\-]{93}AA)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
100
+ keywords: ["sk-ant-admin01"]
101
+ },
102
+ {
103
+ id: "anthropic-api-key",
104
+ label: "Anthropic API Key",
105
+ regex: new RegExp(`\\b(sk-ant-api03-[a-zA-Z0-9_\\-]{93}AA)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
106
+ keywords: ["sk-ant-api03"]
107
+ },
108
+ {
109
+ id: "artifactory-api-key",
110
+ label: "Artifactory API Key",
111
+ regex: new RegExp("\\bAKCp[A-Za-z0-9]{69}\\b", ""),
112
+ keywords: ["akcp"],
113
+ entropy: 4.5
114
+ },
115
+ {
116
+ id: "artifactory-reference-token",
117
+ label: "Artifactory Reference Token",
118
+ regex: new RegExp("\\bcmVmd[A-Za-z0-9]{59}\\b", ""),
119
+ keywords: ["cmvmd"],
120
+ entropy: 4.5
121
+ },
122
+ {
123
+ id: "asana-client-id",
124
+ label: "Asana Client ID",
125
+ regex: new RegExp(`[\\w.-]{0,50}?(?:asana)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
126
+ keywords: ["asana"]
127
+ },
128
+ {
129
+ id: "asana-client-secret",
130
+ label: "Asana Client Secret",
131
+ regex: new RegExp(`[\\w.-]{0,50}?(?:asana)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
132
+ keywords: ["asana"]
133
+ },
134
+ {
135
+ id: "atlassian-api-token",
136
+ label: "Atlassian API Token",
137
+ regex: new RegExp(`[\\w.-]{0,50}?(?:(?:ATLASSIAN|[Aa]tlassian)|(?:CONFLUENCE|[Cc]onfluence)|(?:JIRA|[Jj]ira))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{20}[a-f0-9]{4})(?:[\\x60'"\\s;]|\\\\[nr]|$)|\\b(ATATT3[A-Za-z0-9_\\-=]{186})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
138
+ keywords: ["atlassian", "confluence", "jira", "atatt3"],
139
+ entropy: 3.5
140
+ },
141
+ {
142
+ id: "authress-service-client-access-key",
143
+ label: "Authress Service Client Access Key",
144
+ regex: new RegExp(`\\b((?:sc|ext|scauth|authress)_[a-z0-9]{5,30}\\.[a-z0-9]{4,6}\\.(?:acc)[_-][a-z0-9-]{10,32}\\.[a-z0-9+/_=-]{30,120})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
145
+ keywords: ["sc_", "ext_", "scauth_", "authress_"],
146
+ entropy: 2
147
+ },
148
+ {
149
+ id: "aws-access-token",
150
+ label: "AWS Access Token",
151
+ regex: new RegExp("\\b((?:A3T[A-Z0-9]|AKIA|ASIA|ABIA|ACCA)[A-Z2-7]{16})\\b", ""),
152
+ keywords: ["a3t", "akia", "asia", "abia", "acca"],
153
+ entropy: 3,
154
+ allowlist: {
155
+ regexes: [
156
+ { regex: new RegExp(".+EXAMPLE$", "") }
157
+ ]
158
+ }
159
+ },
160
+ {
161
+ id: "aws-amazon-bedrock-api-key-long-lived",
162
+ label: "AWS Amazon Bedrock API Key Long Lived",
163
+ regex: new RegExp(`\\b(ABSK[A-Za-z0-9+/]{109,269}={0,2})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
164
+ keywords: ["absk"],
165
+ entropy: 3
166
+ },
167
+ {
168
+ id: "aws-amazon-bedrock-api-key-short-lived",
169
+ label: "AWS Amazon Bedrock API Key Short Lived",
170
+ regex: new RegExp("bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t", ""),
171
+ keywords: ["bedrock-api-key-"],
172
+ entropy: 3
173
+ },
174
+ {
175
+ id: "azure-ad-client-secret",
176
+ label: "Azure Ad Client Secret",
177
+ regex: new RegExp(`(?:^|[\\\\'"\\x60\\s>=:(,)])([a-zA-Z0-9_~.]{3}\\dQ~[a-zA-Z0-9_~.-]{31,34})(?:$|[\\\\'"\\x60\\s<),])`, ""),
178
+ keywords: ["q~"],
179
+ entropy: 3
180
+ },
181
+ {
182
+ id: "beamer-api-token",
183
+ label: "Beamer API Token",
184
+ regex: new RegExp(`[\\w.-]{0,50}?(?:beamer)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(b_[a-z0-9=_\\-]{44})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
185
+ keywords: ["beamer"]
186
+ },
187
+ {
188
+ id: "bitbucket-client-id",
189
+ label: "Bitbucket Client ID",
190
+ regex: new RegExp(`[\\w.-]{0,50}?(?:bitbucket)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
191
+ keywords: ["bitbucket"]
192
+ },
193
+ {
194
+ id: "bitbucket-client-secret",
195
+ label: "Bitbucket Client Secret",
196
+ regex: new RegExp(`[\\w.-]{0,50}?(?:bitbucket)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
197
+ keywords: ["bitbucket"]
198
+ },
199
+ {
200
+ id: "bittrex-access-key",
201
+ label: "Bittrex Access Key",
202
+ regex: new RegExp(`[\\w.-]{0,50}?(?:bittrex)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
203
+ keywords: ["bittrex"]
204
+ },
205
+ {
206
+ id: "bittrex-secret-key",
207
+ label: "Bittrex Secret Key",
208
+ regex: new RegExp(`[\\w.-]{0,50}?(?:bittrex)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
209
+ keywords: ["bittrex"]
210
+ },
211
+ {
212
+ id: "cisco-meraki-api-key",
213
+ label: "Cisco Meraki API Key",
214
+ regex: new RegExp(`[\\w.-]{0,50}?(?:[\\w.-]{0,50}?(?:(?:[Mm]eraki|MERAKI))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
215
+ keywords: ["meraki"],
216
+ entropy: 3
217
+ },
218
+ {
219
+ id: "clickhouse-cloud-api-secret-key",
220
+ label: "Clickhouse Cloud API Secret Key",
221
+ regex: new RegExp("\\b(4b1d[A-Za-z0-9]{38})\\b", ""),
222
+ keywords: ["4b1d"],
223
+ entropy: 3
224
+ },
225
+ {
226
+ id: "clojars-api-token",
227
+ label: "Clojars API Token",
228
+ regex: new RegExp("CLOJARS_[a-z0-9]{60}", "i"),
229
+ keywords: ["clojars_"],
230
+ entropy: 2
231
+ },
232
+ {
233
+ id: "cloudflare-api-key",
234
+ label: "Cloudflare API Key",
235
+ regex: new RegExp(`[\\w.-]{0,50}?(?:cloudflare)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9_-]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
236
+ keywords: ["cloudflare"],
237
+ entropy: 2
238
+ },
239
+ {
240
+ id: "cloudflare-global-api-key",
241
+ label: "Cloudflare Global API Key",
242
+ regex: new RegExp(`[\\w.-]{0,50}?(?:cloudflare)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{37})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
243
+ keywords: ["cloudflare"],
244
+ entropy: 2
245
+ },
246
+ {
247
+ id: "cloudflare-origin-ca-key",
248
+ label: "Cloudflare Origin Ca Key",
249
+ regex: new RegExp(`\\b(v1\\.0-[a-f0-9]{24}-[a-f0-9]{146})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
250
+ keywords: ["cloudflare", "v1.0-"],
251
+ entropy: 2
252
+ },
253
+ {
254
+ id: "codecov-access-token",
255
+ label: "Codecov Access Token",
256
+ regex: new RegExp(`[\\w.-]{0,50}?(?:codecov)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
257
+ keywords: ["codecov"]
258
+ },
259
+ {
260
+ id: "cohere-api-token",
261
+ label: "Cohere API Token",
262
+ regex: new RegExp(`[\\w.-]{0,50}?(?:[\\w.-]{0,50}?(?:cohere|CO_API_KEY)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-zA-Z0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
263
+ keywords: ["cohere", "co_api_key"],
264
+ entropy: 4
265
+ },
266
+ {
267
+ id: "coinbase-access-token",
268
+ label: "Coinbase Access Token",
269
+ regex: new RegExp(`[\\w.-]{0,50}?(?:coinbase)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9_-]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
270
+ keywords: ["coinbase"]
271
+ },
272
+ {
273
+ id: "confluent-access-token",
274
+ label: "Confluent Access Token",
275
+ regex: new RegExp(`[\\w.-]{0,50}?(?:confluent)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
276
+ keywords: ["confluent"]
277
+ },
278
+ {
279
+ id: "confluent-secret-key",
280
+ label: "Confluent Secret Key",
281
+ regex: new RegExp(`[\\w.-]{0,50}?(?:confluent)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
282
+ keywords: ["confluent"]
283
+ },
284
+ {
285
+ id: "contentful-delivery-api-token",
286
+ label: "Contentful Delivery API Token",
287
+ regex: new RegExp(`[\\w.-]{0,50}?(?:contentful)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{43})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
288
+ keywords: ["contentful"]
289
+ },
290
+ {
291
+ id: "curl-auth-header",
292
+ label: "Curl Auth Header",
293
+ regex: new RegExp(`\\bcurl\\b(?:.*?|.*?(?:[\\r\\n]{1,2}.*?){1,5})[ \\t\\n\\r](?:-H|--header)(?:=|[ \\t]{0,5})(?:"(?:Authorization:[ \\t]{0,5}(?:Basic[ \\t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \\t]([\\w=~@.+/-]{8,})|([\\w=~@.+/-]{8,}))|(?:(?:X-(?:[a-z]+-)?)?(?:Api-?)?(?:Key|Token)):[ \\t]{0,5}([\\w=~@.+/-]{8,}))"|'(?:Authorization:[ \\t]{0,5}(?:Basic[ \\t]([a-z0-9+/]{8,}={0,3})|(?:Bearer|(?:Api-)?Token)[ \\t]([\\w=~@.+/-]{8,})|([\\w=~@.+/-]{8,}))|(?:(?:X-(?:[a-z]+-)?)?(?:Api-?)?(?:Key|Token)):[ \\t]{0,5}([\\w=~@.+/-]{8,}))')(?:\\B|\\s|$)`, "i"),
294
+ keywords: ["curl"],
295
+ entropy: 2.75
296
+ },
297
+ {
298
+ id: "curl-auth-user",
299
+ label: "Curl Auth User",
300
+ regex: new RegExp(`\\bcurl\\b(?:.*|.*(?:[\\r\\n]{1,2}.*){1,5})[ \\t\\n\\r](?:-u|--user)(?:=|[ \\t]{0,5})("(:[^"]{3,}|[^:"]{3,}:|[^:"]{3,}:[^"]{3,})"|'([^:']{3,}:[^']{3,})'|((?:"[^"]{3,}"|'[^']{3,}'|[\\w$@.-]+):(?:"[^"]{3,}"|'[^']{3,}'|[\\w\${}@.-]+)))(?:\\s|$)`, ""),
301
+ keywords: ["curl"],
302
+ entropy: 2,
303
+ allowlist: {
304
+ regexes: [
305
+ { regex: new RegExp("[^:]+:(?:change(?:it|me)|pass(?:word)?|pwd|test|token|\\*+|x+)", "") },
306
+ { regex: new RegExp(`['"]?<[^>]+>['"]?:['"]?<[^>]+>|<[^:]+:[^>]+>['"]?`, "") },
307
+ { regex: new RegExp("[^:]+:\\[[^]]+]", "") },
308
+ { regex: new RegExp(`['"]?[^:]+['"]?:['"]?\\$(?:\\d|\\w+|\\{(?:\\d|\\w+)})['"]?`, "") },
309
+ { regex: new RegExp("\\$\\([^)]+\\):\\$\\([^)]+\\)", "") },
310
+ { regex: new RegExp(`['"]?\\$?{{[^}]+}}['"]?:['"]?\\$?{{[^}]+}}['"]?`, "") }
311
+ ]
312
+ }
313
+ },
314
+ {
315
+ id: "databricks-api-token",
316
+ label: "Databricks API Token",
317
+ regex: new RegExp(`\\b(dapi[a-f0-9]{32}(?:-\\d)?)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
318
+ keywords: ["dapi"],
319
+ entropy: 3
320
+ },
321
+ {
322
+ id: "datadog-access-token",
323
+ label: "Datadog Access Token",
324
+ regex: new RegExp(`[\\w.-]{0,50}?(?:datadog)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
325
+ keywords: ["datadog"]
326
+ },
327
+ {
328
+ id: "defined-networking-api-token",
329
+ label: "Defined Networking API Token",
330
+ regex: new RegExp(`[\\w.-]{0,50}?(?:dnkey)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(dnkey-[a-z0-9=_\\-]{26}-[a-z0-9=_\\-]{52})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
331
+ keywords: ["dnkey"]
332
+ },
333
+ {
334
+ id: "digitalocean-access-token",
335
+ label: "Digitalocean Access Token",
336
+ regex: new RegExp(`\\b(doo_v1_[a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
337
+ keywords: ["doo_v1_"],
338
+ entropy: 3
339
+ },
340
+ {
341
+ id: "digitalocean-pat",
342
+ label: "Digitalocean PAT",
343
+ regex: new RegExp(`\\b(dop_v1_[a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
344
+ keywords: ["dop_v1_"],
345
+ entropy: 3
346
+ },
347
+ {
348
+ id: "digitalocean-refresh-token",
349
+ label: "Digitalocean Refresh Token",
350
+ regex: new RegExp(`\\b(dor_v1_[a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
351
+ keywords: ["dor_v1_"]
352
+ },
353
+ {
354
+ id: "discord-api-token",
355
+ label: "Discord API Token",
356
+ regex: new RegExp(`[\\w.-]{0,50}?(?:discord)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
357
+ keywords: ["discord"]
358
+ },
359
+ {
360
+ id: "discord-client-id",
361
+ label: "Discord Client ID",
362
+ regex: new RegExp(`[\\w.-]{0,50}?(?:discord)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9]{18})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
363
+ keywords: ["discord"],
364
+ entropy: 2
365
+ },
366
+ {
367
+ id: "discord-client-secret",
368
+ label: "Discord Client Secret",
369
+ regex: new RegExp(`[\\w.-]{0,50}?(?:discord)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
370
+ keywords: ["discord"],
371
+ entropy: 2
372
+ },
373
+ {
374
+ id: "doppler-api-token",
375
+ label: "Doppler API Token",
376
+ regex: new RegExp("dp\\.pt\\.[a-z0-9]{43}", "i"),
377
+ keywords: ["dp.pt."],
378
+ entropy: 2
379
+ },
380
+ {
381
+ id: "droneci-access-token",
382
+ label: "Droneci Access Token",
383
+ regex: new RegExp(`[\\w.-]{0,50}?(?:droneci)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
384
+ keywords: ["droneci"]
385
+ },
386
+ {
387
+ id: "dropbox-api-token",
388
+ label: "Dropbox API Token",
389
+ regex: new RegExp(`[\\w.-]{0,50}?(?:dropbox)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{15})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
390
+ keywords: ["dropbox"]
391
+ },
392
+ {
393
+ id: "dropbox-long-lived-api-token",
394
+ label: "Dropbox Long Lived API Token",
395
+ regex: new RegExp(`[\\w.-]{0,50}?(?:dropbox)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{11}(AAAAAAAAAA)[a-z0-9\\-_=]{43})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
396
+ keywords: ["dropbox"]
397
+ },
398
+ {
399
+ id: "dropbox-short-lived-api-token",
400
+ label: "Dropbox Short Lived API Token",
401
+ regex: new RegExp(`[\\w.-]{0,50}?(?:dropbox)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(sl\\.[a-z0-9\\-=_]{135})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
402
+ keywords: ["dropbox"]
403
+ },
404
+ {
405
+ id: "duffel-api-token",
406
+ label: "Duffel API Token",
407
+ regex: new RegExp("duffel_(?:test|live)_[a-z0-9_\\-=]{43}", "i"),
408
+ keywords: ["duffel_"],
409
+ entropy: 2
410
+ },
411
+ {
412
+ id: "dynatrace-api-token",
413
+ label: "Dynatrace API Token",
414
+ regex: new RegExp("dt0c01\\.[a-z0-9]{24}\\.[a-z0-9]{64}", "i"),
415
+ keywords: ["dt0c01."],
416
+ entropy: 4
417
+ },
418
+ {
419
+ id: "easypost-api-token",
420
+ label: "Easypost API Token",
421
+ regex: new RegExp("\\bEZAK[a-z0-9]{54}\\b", "i"),
422
+ keywords: ["ezak"],
423
+ entropy: 2
424
+ },
425
+ {
426
+ id: "easypost-test-api-token",
427
+ label: "Easypost Test API Token",
428
+ regex: new RegExp("\\bEZTK[a-z0-9]{54}\\b", "i"),
429
+ keywords: ["eztk"],
430
+ entropy: 2
431
+ },
432
+ {
433
+ id: "etsy-access-token",
434
+ label: "Etsy Access Token",
435
+ regex: new RegExp(`[\\w.-]{0,50}?(?:(?:ETSY|[Ee]tsy))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{24})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
436
+ keywords: ["etsy"],
437
+ entropy: 3
438
+ },
439
+ {
440
+ id: "facebook-access-token",
441
+ label: "Facebook Access Token",
442
+ regex: new RegExp(`\\b(\\d{15,16}(\\||%)[0-9a-z\\-_]{27,40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
443
+ keywords: ["facebook"],
444
+ entropy: 3
445
+ },
446
+ {
447
+ id: "facebook-page-access-token",
448
+ label: "Facebook Page Access Token",
449
+ regex: new RegExp(`\\b(EAA[MC][a-z0-9]{100,})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
450
+ keywords: ["eaam", "eaac"],
451
+ entropy: 4
452
+ },
453
+ {
454
+ id: "facebook-secret",
455
+ label: "Facebook Secret",
456
+ regex: new RegExp(`[\\w.-]{0,50}?(?:facebook)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
457
+ keywords: ["facebook"],
458
+ entropy: 3
459
+ },
460
+ {
461
+ id: "fastly-api-token",
462
+ label: "Fastly API Token",
463
+ regex: new RegExp(`[\\w.-]{0,50}?(?:fastly)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
464
+ keywords: ["fastly"]
465
+ },
466
+ {
467
+ id: "finicity-api-token",
468
+ label: "Finicity API Token",
469
+ regex: new RegExp(`[\\w.-]{0,50}?(?:finicity)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
470
+ keywords: ["finicity"]
471
+ },
472
+ {
473
+ id: "finicity-client-secret",
474
+ label: "Finicity Client Secret",
475
+ regex: new RegExp(`[\\w.-]{0,50}?(?:finicity)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{20})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
476
+ keywords: ["finicity"]
477
+ },
478
+ {
479
+ id: "finnhub-access-token",
480
+ label: "Finnhub Access Token",
481
+ regex: new RegExp(`[\\w.-]{0,50}?(?:finnhub)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{20})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
482
+ keywords: ["finnhub"]
483
+ },
484
+ {
485
+ id: "flickr-access-token",
486
+ label: "Flickr Access Token",
487
+ regex: new RegExp(`[\\w.-]{0,50}?(?:flickr)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
488
+ keywords: ["flickr"]
489
+ },
490
+ {
491
+ id: "flutterwave-encryption-key",
492
+ label: "Flutterwave Encryption Key",
493
+ regex: new RegExp("FLWSECK_TEST-[a-h0-9]{12}", "i"),
494
+ keywords: ["flwseck_test"],
495
+ entropy: 2
496
+ },
497
+ {
498
+ id: "flutterwave-public-key",
499
+ label: "Flutterwave Public Key",
500
+ regex: new RegExp("FLWPUBK_TEST-[a-h0-9]{32}-X", "i"),
501
+ keywords: ["flwpubk_test"],
502
+ entropy: 2
503
+ },
504
+ {
505
+ id: "flutterwave-secret-key",
506
+ label: "Flutterwave Secret Key",
507
+ regex: new RegExp("FLWSECK_TEST-[a-h0-9]{32}-X", "i"),
508
+ keywords: ["flwseck_test"],
509
+ entropy: 2
510
+ },
511
+ {
512
+ id: "flyio-access-token",
513
+ label: "Flyio Access Token",
514
+ regex: new RegExp(`\\b((?:fo1_[\\w-]{43}|fm1[ar]_[a-zA-Z0-9+\\/]{100,}={0,3}|fm2_[a-zA-Z0-9+\\/]{100,}={0,3}))(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
515
+ keywords: ["fo1_", "fm1", "fm2_"],
516
+ entropy: 4
517
+ },
518
+ {
519
+ id: "frameio-api-token",
520
+ label: "Frameio API Token",
521
+ regex: new RegExp("fio-u-[a-z0-9\\-_=]{64}", "i"),
522
+ keywords: ["fio-u-"]
523
+ },
524
+ {
525
+ id: "freemius-secret-key",
526
+ label: "Freemius Secret Key",
527
+ regex: new RegExp(`["']secret_key["']\\s*=>\\s*["'](sk_[\\S]{29})["']`, "i"),
528
+ keywords: ["secret_key"]
529
+ },
530
+ {
531
+ id: "freshbooks-access-token",
532
+ label: "Freshbooks Access Token",
533
+ regex: new RegExp(`[\\w.-]{0,50}?(?:freshbooks)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
534
+ keywords: ["freshbooks"]
535
+ },
536
+ {
537
+ id: "gcp-api-key",
538
+ label: "GCP API Key",
539
+ regex: new RegExp(`\\b(AIza[\\w-]{35})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
540
+ keywords: ["aiza"],
541
+ entropy: 4,
542
+ allowlist: {
543
+ regexes: [
544
+ { regex: new RegExp("AIzaSyabcdefghijklmnopqrstuvwxyz1234567", "") },
545
+ { regex: new RegExp("AIzaSyAnLA7NfeLquW1tJFpx_eQCxoX-oo6YyIs", "") },
546
+ { regex: new RegExp("AIzaSyCkEhVjf3pduRDt6d1yKOMitrUEke8agEM", "") },
547
+ { regex: new RegExp("AIzaSyDMAScliyLx7F0NPDEJi1QmyCgHIAODrlU", "") },
548
+ { regex: new RegExp("AIzaSyD3asb-2pEZVqMkmL6M9N6nHZRR_znhrh0", "") },
549
+ { regex: new RegExp("AIzayDNSXIbFmlXbIE6mCzDLQAqITYefhixbX4A", "") },
550
+ { regex: new RegExp("AIzaSyAdOS2zB6NCsk1pCdZ4-P6GBdi_UUPwX7c", "") },
551
+ { regex: new RegExp("AIzaSyASWm6HmTMdYWpgMnjRBjxcQ9CKctWmLd4", "") },
552
+ { regex: new RegExp("AIzaSyANUvH9H9BsUccjsu2pCmEkOPjjaXeDQgY", "") },
553
+ { regex: new RegExp("AIzaSyA5_iVawFQ8ABuTZNUdcwERLJv_a_p4wtM", "") },
554
+ { regex: new RegExp("AIzaSyA4UrcGxgwQFTfaI3no3t7Lt1sjmdnP5sQ", "") },
555
+ { regex: new RegExp("AIzaSyDSb51JiIcB6OJpwwMicseKRhhrOq1cS7g", "") },
556
+ { regex: new RegExp("AIzaSyBF2RrAIm4a0mO64EShQfqfd2AFnzAvvuU", "") },
557
+ { regex: new RegExp("AIzaSyBcE-OOIbhjyR83gm4r2MFCu4MJmprNXsw", "") },
558
+ { regex: new RegExp("AIzaSyB8qGxt4ec15vitgn44duC5ucxaOi4FmqE", "") },
559
+ { regex: new RegExp("AIzaSyA8vmApnrHNFE0bApF4hoZ11srVL_n0nvY", "") }
560
+ ]
561
+ }
562
+ },
563
+ {
564
+ id: "generic-api-key",
565
+ label: "Generic API Key",
566
+ regex: new RegExp(`[\\w.-]{0,50}?(?:access|auth|(?:[Aa]pi|API)|credential|creds|key|passw(?:or)?d|secret|token)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([\\w.=-]{10,150}|[a-z0-9][a-z0-9+/]{11,}={0,3})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
567
+ keywords: ["access", "api", "auth", "key", "credential", "creds", "passwd", "password", "secret", "token"],
568
+ entropy: 3.5,
569
+ allowlist: {
570
+ regexes: [
571
+ { regex: new RegExp("^[a-zA-Z_.-]+$", "") },
572
+ { regex: new RegExp("(?:access(?:ibility|or)|access[_.-]?id|random[_.-]?access|api[_.-]?(?:id|name|version)|rapid|capital|[a-z0-9-]*?api[a-z0-9-]*?:jar:|author|X-MS-Exchange-Organization-Auth|Authentication-Results|(?:credentials?[_.-]?id|withCredentials)|(?:bucket|foreign|hot|idx|natural|primary|pub(?:lic)?|schema|sequence)[_.-]?key|(?:turkey)|key[_.-]?(?:alias|board|code|frame|id|length|mesh|name|pair|press(?:ed)?|ring|selector|signature|size|stone|storetype|word|up|down|left|right)|key[_.-]?vault[_.-]?(?:id|name)|keyVaultToStoreSecrets|key(?:store|tab)[_.-]?(?:file|path)|issuerkeyhash|(?:[DdMm]onkey|[DM]ONKEY)|keying|(?:secret)[_.-]?(?:length|name|size)|UserSecretsId|(?:csrf)[_.-]?token|(?:io\\.jsonwebtoken[ \\t]?:[ \\t]?[\\w-]+)|(?:api|credentials|token)[_.-]?(?:endpoint|ur[il])|public[_.-]?token|(?:key|token)[_.-]?file|(?:(?:[A-Z_]+=\\n[A-Z_]+=|[a-z_]+=\\n[a-z_]+=)(?:\\n|$))|(?:(?:[A-Z.]+=\\n[A-Z.]+=|[a-z.]+=\\n[a-z.]+=)(?:\\n|$)))", "i") },
573
+ { regex: new RegExp("--mount=type=secret,", ""), target: "line" },
574
+ { regex: new RegExp(`import[ \\t]+{[ \\t\\w,]+}[ \\t]+from[ \\t]+['"][^'"]+['"]`, ""), target: "line" },
575
+ { regex: new RegExp('LICENSE[^=]*=\\s*"[^"]+', ""), target: "line" },
576
+ { regex: new RegExp('LIC_FILES_CHKSUM[^=]*=\\s*"[^"]+', ""), target: "line" },
577
+ { regex: new RegExp('SRC[^=]*=\\s*"[a-zA-Z0-9]+', ""), target: "line" }
578
+ ],
579
+ stopwords: [
580
+ "000000",
581
+ "6fe4476ee5a1832882e326b506d14126",
582
+ "_ec2_",
583
+ "aaaaaa",
584
+ "about",
585
+ "abstract",
586
+ "academy",
587
+ "acces",
588
+ "account",
589
+ "act-",
590
+ "act.",
591
+ "act_",
592
+ "action",
593
+ "active",
594
+ "actively",
595
+ "activity",
596
+ "adapter",
597
+ "add-",
598
+ "add-on",
599
+ "add.",
600
+ "add_",
601
+ "addon",
602
+ "addres",
603
+ "admin",
604
+ "adobe",
605
+ "advanced",
606
+ "adventure",
607
+ "agent",
608
+ "agile",
609
+ "air-",
610
+ "air.",
611
+ "air_",
612
+ "ajax",
613
+ "akka",
614
+ "alert",
615
+ "alfred",
616
+ "algorithm",
617
+ "all-",
618
+ "all.",
619
+ "all_",
620
+ "alloy",
621
+ "alpha",
622
+ "amazon",
623
+ "amqp",
624
+ "analysi",
625
+ "analytic",
626
+ "analyzer",
627
+ "android",
628
+ "angular",
629
+ "angularj",
630
+ "animate",
631
+ "animation",
632
+ "another",
633
+ "ansible",
634
+ "answer",
635
+ "ant-",
636
+ "ant.",
637
+ "ant_",
638
+ "any-",
639
+ "any.",
640
+ "any_",
641
+ "apache",
642
+ "app-",
643
+ "app.",
644
+ "app_",
645
+ "apple",
646
+ "arch",
647
+ "archive",
648
+ "archived",
649
+ "arduino",
650
+ "array",
651
+ "art-",
652
+ "art.",
653
+ "art_",
654
+ "article",
655
+ "asp-",
656
+ "asp.",
657
+ "asp_",
658
+ "asset",
659
+ "async",
660
+ "atom",
661
+ "attention",
662
+ "audio",
663
+ "audit",
664
+ "aura",
665
+ "auth",
666
+ "author",
667
+ "authorize",
668
+ "auto",
669
+ "automated",
670
+ "automatic",
671
+ "awesome",
672
+ "aws_",
673
+ "azure",
674
+ "back",
675
+ "backbone",
676
+ "backend",
677
+ "backup",
678
+ "bar-",
679
+ "bar.",
680
+ "bar_",
681
+ "base",
682
+ "based",
683
+ "bash",
684
+ "basic",
685
+ "batch",
686
+ "been",
687
+ "beer",
688
+ "behavior",
689
+ "being",
690
+ "benchmark",
691
+ "best",
692
+ "beta",
693
+ "better",
694
+ "big-",
695
+ "big.",
696
+ "big_",
697
+ "binary",
698
+ "binding",
699
+ "bit-",
700
+ "bit.",
701
+ "bit_",
702
+ "bitcoin",
703
+ "block",
704
+ "blog",
705
+ "board",
706
+ "book",
707
+ "bookmark",
708
+ "boost",
709
+ "boot",
710
+ "bootstrap",
711
+ "bosh",
712
+ "bot-",
713
+ "bot.",
714
+ "bot_",
715
+ "bower",
716
+ "box-",
717
+ "box.",
718
+ "box_",
719
+ "boxen",
720
+ "bracket",
721
+ "branch",
722
+ "bridge",
723
+ "browser",
724
+ "brunch",
725
+ "buffer",
726
+ "bug-",
727
+ "bug.",
728
+ "bug_",
729
+ "build",
730
+ "builder",
731
+ "building",
732
+ "buildout",
733
+ "buildpack",
734
+ "built",
735
+ "bundle",
736
+ "busines",
737
+ "but-",
738
+ "but.",
739
+ "but_",
740
+ "button",
741
+ "cache",
742
+ "caching",
743
+ "cakephp",
744
+ "calendar",
745
+ "call",
746
+ "camera",
747
+ "campfire",
748
+ "can-",
749
+ "can.",
750
+ "can_",
751
+ "canva",
752
+ "captcha",
753
+ "capture",
754
+ "card",
755
+ "carousel",
756
+ "case",
757
+ "cassandra",
758
+ "cat-",
759
+ "cat.",
760
+ "cat_",
761
+ "category",
762
+ "center",
763
+ "cento",
764
+ "challenge",
765
+ "change",
766
+ "changelog",
767
+ "channel",
768
+ "chart",
769
+ "chat",
770
+ "cheat",
771
+ "check",
772
+ "checker",
773
+ "chef",
774
+ "ches",
775
+ "chinese",
776
+ "chosen",
777
+ "chrome",
778
+ "ckeditor",
779
+ "clas",
780
+ "classe",
781
+ "classic",
782
+ "clean",
783
+ "cli-",
784
+ "cli.",
785
+ "cli_",
786
+ "client",
787
+ "clojure",
788
+ "clone",
789
+ "closure",
790
+ "cloud",
791
+ "club",
792
+ "cluster",
793
+ "cms-",
794
+ "cms_",
795
+ "coco",
796
+ "code",
797
+ "coding",
798
+ "coffee",
799
+ "color",
800
+ "combination",
801
+ "combo",
802
+ "command",
803
+ "commander",
804
+ "comment",
805
+ "commit",
806
+ "common",
807
+ "community",
808
+ "compas",
809
+ "compiler",
810
+ "complete",
811
+ "component",
812
+ "composer",
813
+ "computer",
814
+ "computing",
815
+ "con-",
816
+ "con.",
817
+ "con_",
818
+ "concept",
819
+ "conf",
820
+ "config",
821
+ "connect",
822
+ "connector",
823
+ "console",
824
+ "contact",
825
+ "container",
826
+ "contao",
827
+ "content",
828
+ "contest",
829
+ "context",
830
+ "control",
831
+ "convert",
832
+ "converter",
833
+ "conway'",
834
+ "cookbook",
835
+ "cookie",
836
+ "cool",
837
+ "copy",
838
+ "cordova",
839
+ "core",
840
+ "couchbase",
841
+ "couchdb",
842
+ "countdown",
843
+ "counter",
844
+ "course",
845
+ "craft",
846
+ "crawler",
847
+ "create",
848
+ "creating",
849
+ "creator",
850
+ "credential",
851
+ "crm-",
852
+ "crm.",
853
+ "crm_",
854
+ "cros",
855
+ "crud",
856
+ "csv-",
857
+ "csv.",
858
+ "csv_",
859
+ "cube",
860
+ "cucumber",
861
+ "cuda",
862
+ "current",
863
+ "currently",
864
+ "custom",
865
+ "daemon",
866
+ "dark",
867
+ "dart",
868
+ "dash",
869
+ "dashboard",
870
+ "data",
871
+ "database",
872
+ "date",
873
+ "day-",
874
+ "day.",
875
+ "day_",
876
+ "dead",
877
+ "debian",
878
+ "debug",
879
+ "debugger",
880
+ "deck",
881
+ "define",
882
+ "del-",
883
+ "del.",
884
+ "del_",
885
+ "delete",
886
+ "demo",
887
+ "deploy",
888
+ "design",
889
+ "designer",
890
+ "desktop",
891
+ "detection",
892
+ "detector",
893
+ "dev-",
894
+ "dev.",
895
+ "dev_",
896
+ "develop",
897
+ "developer",
898
+ "device",
899
+ "devise",
900
+ "diff",
901
+ "digital",
902
+ "directive",
903
+ "directory",
904
+ "discovery",
905
+ "display",
906
+ "django",
907
+ "dns-",
908
+ "dns_",
909
+ "doc-",
910
+ "doc.",
911
+ "doc_",
912
+ "docker",
913
+ "docpad",
914
+ "doctrine",
915
+ "document",
916
+ "doe-",
917
+ "doe.",
918
+ "doe_",
919
+ "dojo",
920
+ "dom-",
921
+ "dom.",
922
+ "dom_",
923
+ "domain",
924
+ "don't",
925
+ "done",
926
+ "dot-",
927
+ "dot.",
928
+ "dot_",
929
+ "dotfile",
930
+ "download",
931
+ "draft",
932
+ "drag",
933
+ "drill",
934
+ "drive",
935
+ "driven",
936
+ "driver",
937
+ "drop",
938
+ "dropbox",
939
+ "drupal",
940
+ "dsl-",
941
+ "dsl.",
942
+ "dsl_",
943
+ "dynamic",
944
+ "easy",
945
+ "ecdsa",
946
+ "eclipse",
947
+ "edit",
948
+ "editing",
949
+ "edition",
950
+ "editor",
951
+ "element",
952
+ "emac",
953
+ "email",
954
+ "embed",
955
+ "embedded",
956
+ "ember",
957
+ "emitter",
958
+ "emulator",
959
+ "encoding",
960
+ "endpoint",
961
+ "engine",
962
+ "english",
963
+ "enhanced",
964
+ "entity",
965
+ "entry",
966
+ "env_",
967
+ "episode",
968
+ "erlang",
969
+ "error",
970
+ "espresso",
971
+ "event",
972
+ "evented",
973
+ "example",
974
+ "exchange",
975
+ "exercise",
976
+ "experiment",
977
+ "expire",
978
+ "exploit",
979
+ "explorer",
980
+ "export",
981
+ "exporter",
982
+ "expres",
983
+ "ext-",
984
+ "ext.",
985
+ "ext_",
986
+ "extended",
987
+ "extension",
988
+ "external",
989
+ "extra",
990
+ "extractor",
991
+ "fabric",
992
+ "facebook",
993
+ "factory",
994
+ "fake",
995
+ "fast",
996
+ "feature",
997
+ "feed",
998
+ "fewfwef",
999
+ "ffmpeg",
1000
+ "field",
1001
+ "file",
1002
+ "filter",
1003
+ "find",
1004
+ "finder",
1005
+ "firefox",
1006
+ "firmware",
1007
+ "first",
1008
+ "fish",
1009
+ "fix-",
1010
+ "fix_",
1011
+ "flash",
1012
+ "flask",
1013
+ "flat",
1014
+ "flex",
1015
+ "flexible",
1016
+ "flickr",
1017
+ "flow",
1018
+ "fluent",
1019
+ "fluentd",
1020
+ "fluid",
1021
+ "folder",
1022
+ "font",
1023
+ "force",
1024
+ "foreman",
1025
+ "fork",
1026
+ "form",
1027
+ "format",
1028
+ "formatter",
1029
+ "forum",
1030
+ "foundry",
1031
+ "framework",
1032
+ "free",
1033
+ "friend",
1034
+ "friendly",
1035
+ "front-end",
1036
+ "frontend",
1037
+ "ftp-",
1038
+ "ftp.",
1039
+ "ftp_",
1040
+ "fuel",
1041
+ "full",
1042
+ "fun-",
1043
+ "fun.",
1044
+ "fun_",
1045
+ "func",
1046
+ "future",
1047
+ "gaia",
1048
+ "gallery",
1049
+ "game",
1050
+ "gateway",
1051
+ "gem-",
1052
+ "gem.",
1053
+ "gem_",
1054
+ "gen-",
1055
+ "gen.",
1056
+ "gen_",
1057
+ "general",
1058
+ "generator",
1059
+ "generic",
1060
+ "genetic",
1061
+ "get-",
1062
+ "get.",
1063
+ "get_",
1064
+ "getenv",
1065
+ "getting",
1066
+ "ghost",
1067
+ "gist",
1068
+ "git-",
1069
+ "git.",
1070
+ "git_",
1071
+ "github",
1072
+ "gitignore",
1073
+ "gitlab",
1074
+ "glas",
1075
+ "gmail",
1076
+ "gnome",
1077
+ "gnu-",
1078
+ "gnu.",
1079
+ "gnu_",
1080
+ "goal",
1081
+ "golang",
1082
+ "gollum",
1083
+ "good",
1084
+ "google",
1085
+ "gpu-",
1086
+ "gpu.",
1087
+ "gpu_",
1088
+ "gradle",
1089
+ "grail",
1090
+ "graph",
1091
+ "graphic",
1092
+ "great",
1093
+ "grid",
1094
+ "groovy",
1095
+ "group",
1096
+ "grunt",
1097
+ "guard",
1098
+ "gui-",
1099
+ "gui.",
1100
+ "gui_",
1101
+ "guide",
1102
+ "guideline",
1103
+ "gulp",
1104
+ "gwt-",
1105
+ "gwt.",
1106
+ "gwt_",
1107
+ "hack",
1108
+ "hackathon",
1109
+ "hacker",
1110
+ "hacking",
1111
+ "hadoop",
1112
+ "haml",
1113
+ "handler",
1114
+ "hardware",
1115
+ "has-",
1116
+ "has_",
1117
+ "hash",
1118
+ "haskell",
1119
+ "have",
1120
+ "haxe",
1121
+ "hello",
1122
+ "help",
1123
+ "helper",
1124
+ "here",
1125
+ "hero",
1126
+ "heroku",
1127
+ "high",
1128
+ "hipchat",
1129
+ "history",
1130
+ "home",
1131
+ "homebrew",
1132
+ "homepage",
1133
+ "hook",
1134
+ "host",
1135
+ "hosting",
1136
+ "hot-",
1137
+ "hot.",
1138
+ "hot_",
1139
+ "house",
1140
+ "how-",
1141
+ "how.",
1142
+ "how_",
1143
+ "html",
1144
+ "http",
1145
+ "hub-",
1146
+ "hub.",
1147
+ "hub_",
1148
+ "hubot",
1149
+ "human",
1150
+ "icon",
1151
+ "ide-",
1152
+ "ide.",
1153
+ "ide_",
1154
+ "idea",
1155
+ "identity",
1156
+ "idiomatic",
1157
+ "image",
1158
+ "impact",
1159
+ "import",
1160
+ "important",
1161
+ "importer",
1162
+ "impres",
1163
+ "index",
1164
+ "infinite",
1165
+ "info",
1166
+ "injection",
1167
+ "inline",
1168
+ "input",
1169
+ "inside",
1170
+ "inspector",
1171
+ "instagram",
1172
+ "install",
1173
+ "installer",
1174
+ "instant",
1175
+ "intellij",
1176
+ "interface",
1177
+ "internet",
1178
+ "interview",
1179
+ "into",
1180
+ "intro",
1181
+ "ionic",
1182
+ "iphone",
1183
+ "ipython",
1184
+ "irc-",
1185
+ "irc_",
1186
+ "iso-",
1187
+ "iso.",
1188
+ "iso_",
1189
+ "issue",
1190
+ "jade",
1191
+ "jasmine",
1192
+ "java",
1193
+ "jbos",
1194
+ "jekyll",
1195
+ "jenkin",
1196
+ "jetbrains",
1197
+ "job-",
1198
+ "job.",
1199
+ "job_",
1200
+ "joomla",
1201
+ "jpa-",
1202
+ "jpa.",
1203
+ "jpa_",
1204
+ "jquery",
1205
+ "json",
1206
+ "just",
1207
+ "kafka",
1208
+ "karma",
1209
+ "kata",
1210
+ "kernel",
1211
+ "keyboard",
1212
+ "kindle",
1213
+ "kit-",
1214
+ "kit.",
1215
+ "kit_",
1216
+ "kitchen",
1217
+ "knife",
1218
+ "koan",
1219
+ "kohana",
1220
+ "lab-",
1221
+ "lab.",
1222
+ "lab_",
1223
+ "lambda",
1224
+ "lamp",
1225
+ "language",
1226
+ "laravel",
1227
+ "last",
1228
+ "latest",
1229
+ "latex",
1230
+ "launcher",
1231
+ "layer",
1232
+ "layout",
1233
+ "lazy",
1234
+ "ldap",
1235
+ "leaflet",
1236
+ "league",
1237
+ "learn",
1238
+ "learning",
1239
+ "led-",
1240
+ "led.",
1241
+ "led_",
1242
+ "leetcode",
1243
+ "les-",
1244
+ "les.",
1245
+ "les_",
1246
+ "level",
1247
+ "leveldb",
1248
+ "lib-",
1249
+ "lib.",
1250
+ "lib_",
1251
+ "librarie",
1252
+ "library",
1253
+ "license",
1254
+ "life",
1255
+ "liferay",
1256
+ "light",
1257
+ "lightbox",
1258
+ "like",
1259
+ "line",
1260
+ "link",
1261
+ "linked",
1262
+ "linkedin",
1263
+ "linux",
1264
+ "lisp",
1265
+ "list",
1266
+ "lite",
1267
+ "little",
1268
+ "load",
1269
+ "loader",
1270
+ "local",
1271
+ "location",
1272
+ "lock",
1273
+ "log-",
1274
+ "log.",
1275
+ "log_",
1276
+ "logger",
1277
+ "logging",
1278
+ "logic",
1279
+ "login",
1280
+ "logstash",
1281
+ "longer",
1282
+ "look",
1283
+ "love",
1284
+ "lua-",
1285
+ "lua.",
1286
+ "lua_",
1287
+ "mac-",
1288
+ "mac.",
1289
+ "mac_",
1290
+ "machine",
1291
+ "made",
1292
+ "magento",
1293
+ "magic",
1294
+ "mail",
1295
+ "make",
1296
+ "maker",
1297
+ "making",
1298
+ "man-",
1299
+ "man.",
1300
+ "man_",
1301
+ "manage",
1302
+ "manager",
1303
+ "manifest",
1304
+ "manual",
1305
+ "map-",
1306
+ "map.",
1307
+ "map_",
1308
+ "mapper",
1309
+ "mapping",
1310
+ "markdown",
1311
+ "markup",
1312
+ "master",
1313
+ "math",
1314
+ "matrix",
1315
+ "maven",
1316
+ "md5",
1317
+ "mean",
1318
+ "media",
1319
+ "mediawiki",
1320
+ "meetup",
1321
+ "memcached",
1322
+ "memory",
1323
+ "menu",
1324
+ "merchant",
1325
+ "message",
1326
+ "messaging",
1327
+ "meta",
1328
+ "metadata",
1329
+ "meteor",
1330
+ "method",
1331
+ "metric",
1332
+ "micro",
1333
+ "middleman",
1334
+ "migration",
1335
+ "minecraft",
1336
+ "miner",
1337
+ "mini",
1338
+ "minimal",
1339
+ "mirror",
1340
+ "mit-",
1341
+ "mit.",
1342
+ "mit_",
1343
+ "mobile",
1344
+ "mocha",
1345
+ "mock",
1346
+ "mod-",
1347
+ "mod.",
1348
+ "mod_",
1349
+ "mode",
1350
+ "model",
1351
+ "modern",
1352
+ "modular",
1353
+ "module",
1354
+ "modx",
1355
+ "money",
1356
+ "mongo",
1357
+ "mongodb",
1358
+ "mongoid",
1359
+ "mongoose",
1360
+ "monitor",
1361
+ "monkey",
1362
+ "more",
1363
+ "motion",
1364
+ "moved",
1365
+ "movie",
1366
+ "mozilla",
1367
+ "mqtt",
1368
+ "mule",
1369
+ "multi",
1370
+ "multiple",
1371
+ "music",
1372
+ "mustache",
1373
+ "mvc-",
1374
+ "mvc.",
1375
+ "mvc_",
1376
+ "mysql",
1377
+ "nagio",
1378
+ "name",
1379
+ "native",
1380
+ "need",
1381
+ "neo-",
1382
+ "neo.",
1383
+ "neo_",
1384
+ "nest",
1385
+ "nested",
1386
+ "net-",
1387
+ "net.",
1388
+ "net_",
1389
+ "nette",
1390
+ "network",
1391
+ "new-",
1392
+ "new.",
1393
+ "new_",
1394
+ "next",
1395
+ "nginx",
1396
+ "ninja",
1397
+ "nlp-",
1398
+ "nlp.",
1399
+ "nlp_",
1400
+ "node",
1401
+ "nodej",
1402
+ "nosql",
1403
+ "not-",
1404
+ "not.",
1405
+ "not_",
1406
+ "note",
1407
+ "notebook",
1408
+ "notepad",
1409
+ "notice",
1410
+ "notifier",
1411
+ "now-",
1412
+ "now.",
1413
+ "now_",
1414
+ "number",
1415
+ "oauth",
1416
+ "object",
1417
+ "objective",
1418
+ "obsolete",
1419
+ "ocaml",
1420
+ "octopres",
1421
+ "official",
1422
+ "old-",
1423
+ "old.",
1424
+ "old_",
1425
+ "onboard",
1426
+ "online",
1427
+ "only",
1428
+ "open",
1429
+ "opencv",
1430
+ "opengl",
1431
+ "openshift",
1432
+ "openwrt",
1433
+ "option",
1434
+ "oracle",
1435
+ "org-",
1436
+ "org.",
1437
+ "org_",
1438
+ "origin",
1439
+ "original",
1440
+ "orm-",
1441
+ "orm.",
1442
+ "orm_",
1443
+ "osx-",
1444
+ "osx_",
1445
+ "our-",
1446
+ "our.",
1447
+ "our_",
1448
+ "out-",
1449
+ "out.",
1450
+ "out_",
1451
+ "output",
1452
+ "over",
1453
+ "overview",
1454
+ "own-",
1455
+ "own.",
1456
+ "own_",
1457
+ "pack",
1458
+ "package",
1459
+ "packet",
1460
+ "page",
1461
+ "panel",
1462
+ "paper",
1463
+ "paperclip",
1464
+ "para",
1465
+ "parallax",
1466
+ "parallel",
1467
+ "parse",
1468
+ "parser",
1469
+ "parsing",
1470
+ "particle",
1471
+ "party",
1472
+ "password",
1473
+ "patch",
1474
+ "path",
1475
+ "pattern",
1476
+ "payment",
1477
+ "paypal",
1478
+ "pdf-",
1479
+ "pdf.",
1480
+ "pdf_",
1481
+ "pebble",
1482
+ "people",
1483
+ "perl",
1484
+ "personal",
1485
+ "phalcon",
1486
+ "phoenix",
1487
+ "phone",
1488
+ "phonegap",
1489
+ "photo",
1490
+ "php-",
1491
+ "php.",
1492
+ "php_",
1493
+ "physic",
1494
+ "picker",
1495
+ "pipeline",
1496
+ "platform",
1497
+ "play",
1498
+ "player",
1499
+ "please",
1500
+ "plu-",
1501
+ "plu.",
1502
+ "plu_",
1503
+ "plug-in",
1504
+ "plugin",
1505
+ "plupload",
1506
+ "png-",
1507
+ "png.",
1508
+ "png_",
1509
+ "poker",
1510
+ "polyfill",
1511
+ "polymer",
1512
+ "pool",
1513
+ "pop-",
1514
+ "pop.",
1515
+ "pop_",
1516
+ "popcorn",
1517
+ "popup",
1518
+ "port",
1519
+ "portable",
1520
+ "portal",
1521
+ "portfolio",
1522
+ "post",
1523
+ "power",
1524
+ "powered",
1525
+ "powerful",
1526
+ "prelude",
1527
+ "pretty",
1528
+ "preview",
1529
+ "principle",
1530
+ "print",
1531
+ "pro-",
1532
+ "pro.",
1533
+ "pro_",
1534
+ "problem",
1535
+ "proc",
1536
+ "product",
1537
+ "profile",
1538
+ "profiler",
1539
+ "program",
1540
+ "progres",
1541
+ "project",
1542
+ "protocol",
1543
+ "prototype",
1544
+ "provider",
1545
+ "proxy",
1546
+ "public",
1547
+ "pull",
1548
+ "puppet",
1549
+ "pure",
1550
+ "purpose",
1551
+ "push",
1552
+ "pusher",
1553
+ "pyramid",
1554
+ "python",
1555
+ "quality",
1556
+ "query",
1557
+ "queue",
1558
+ "quick",
1559
+ "rabbitmq",
1560
+ "rack",
1561
+ "radio",
1562
+ "rail",
1563
+ "railscast",
1564
+ "random",
1565
+ "range",
1566
+ "raspberry",
1567
+ "rdf-",
1568
+ "rdf.",
1569
+ "rdf_",
1570
+ "react",
1571
+ "reactive",
1572
+ "read",
1573
+ "reader",
1574
+ "readme",
1575
+ "ready",
1576
+ "real",
1577
+ "real-time",
1578
+ "reality",
1579
+ "realtime",
1580
+ "recipe",
1581
+ "recorder",
1582
+ "red-",
1583
+ "red.",
1584
+ "red_",
1585
+ "reddit",
1586
+ "redi",
1587
+ "redmine",
1588
+ "reference",
1589
+ "refinery",
1590
+ "refresh",
1591
+ "registry",
1592
+ "related",
1593
+ "release",
1594
+ "remote",
1595
+ "rendering",
1596
+ "repo",
1597
+ "report",
1598
+ "request",
1599
+ "require",
1600
+ "required",
1601
+ "requirej",
1602
+ "research",
1603
+ "resource",
1604
+ "response",
1605
+ "resque",
1606
+ "rest",
1607
+ "restful",
1608
+ "resume",
1609
+ "reveal",
1610
+ "reverse",
1611
+ "review",
1612
+ "riak",
1613
+ "rich",
1614
+ "right",
1615
+ "ring",
1616
+ "robot",
1617
+ "role",
1618
+ "room",
1619
+ "router",
1620
+ "routing",
1621
+ "rpc-",
1622
+ "rpc.",
1623
+ "rpc_",
1624
+ "rpg-",
1625
+ "rpg.",
1626
+ "rpg_",
1627
+ "rspec",
1628
+ "ruby-",
1629
+ "ruby.",
1630
+ "ruby_",
1631
+ "rule",
1632
+ "run-",
1633
+ "run.",
1634
+ "run_",
1635
+ "runner",
1636
+ "running",
1637
+ "runtime",
1638
+ "rust",
1639
+ "rvm-",
1640
+ "rvm.",
1641
+ "rvm_",
1642
+ "salt",
1643
+ "sample",
1644
+ "sandbox",
1645
+ "sas-",
1646
+ "sas.",
1647
+ "sas_",
1648
+ "sbt-",
1649
+ "sbt.",
1650
+ "sbt_",
1651
+ "scala",
1652
+ "scalable",
1653
+ "scanner",
1654
+ "schema",
1655
+ "scheme",
1656
+ "school",
1657
+ "science",
1658
+ "scraper",
1659
+ "scratch",
1660
+ "screen",
1661
+ "script",
1662
+ "scroll",
1663
+ "scs-",
1664
+ "scs.",
1665
+ "scs_",
1666
+ "sdk-",
1667
+ "sdk.",
1668
+ "sdk_",
1669
+ "sdl-",
1670
+ "sdl.",
1671
+ "sdl_",
1672
+ "search",
1673
+ "secure",
1674
+ "security",
1675
+ "see-",
1676
+ "see.",
1677
+ "see_",
1678
+ "seed",
1679
+ "select",
1680
+ "selector",
1681
+ "selenium",
1682
+ "semantic",
1683
+ "sencha",
1684
+ "send",
1685
+ "sentiment",
1686
+ "serie",
1687
+ "server",
1688
+ "service",
1689
+ "session",
1690
+ "set-",
1691
+ "set.",
1692
+ "set_",
1693
+ "setting",
1694
+ "setup",
1695
+ "sha1",
1696
+ "sha2",
1697
+ "sha256",
1698
+ "share",
1699
+ "shared",
1700
+ "sharing",
1701
+ "sheet",
1702
+ "shell",
1703
+ "shield",
1704
+ "shipping",
1705
+ "shop",
1706
+ "shopify",
1707
+ "shortener",
1708
+ "should",
1709
+ "show",
1710
+ "showcase",
1711
+ "side",
1712
+ "silex",
1713
+ "simple",
1714
+ "simulator",
1715
+ "single",
1716
+ "site",
1717
+ "skeleton",
1718
+ "sketch",
1719
+ "skin",
1720
+ "slack",
1721
+ "slide",
1722
+ "slider",
1723
+ "slim",
1724
+ "small",
1725
+ "smart",
1726
+ "smtp",
1727
+ "snake",
1728
+ "snapshot",
1729
+ "snippet",
1730
+ "soap",
1731
+ "social",
1732
+ "socket",
1733
+ "software",
1734
+ "solarized",
1735
+ "solr",
1736
+ "solution",
1737
+ "solver",
1738
+ "some",
1739
+ "soon",
1740
+ "source",
1741
+ "space",
1742
+ "spark",
1743
+ "spatial",
1744
+ "spec",
1745
+ "sphinx",
1746
+ "spine",
1747
+ "spotify",
1748
+ "spree",
1749
+ "spring",
1750
+ "sprite",
1751
+ "sql-",
1752
+ "sql.",
1753
+ "sql_",
1754
+ "sqlite",
1755
+ "ssh-",
1756
+ "ssh.",
1757
+ "ssh_",
1758
+ "stack",
1759
+ "staging",
1760
+ "standard",
1761
+ "stanford",
1762
+ "start",
1763
+ "started",
1764
+ "starter",
1765
+ "startup",
1766
+ "stat",
1767
+ "statamic",
1768
+ "state",
1769
+ "static",
1770
+ "statistic",
1771
+ "statsd",
1772
+ "statu",
1773
+ "steam",
1774
+ "step",
1775
+ "still",
1776
+ "stm-",
1777
+ "stm.",
1778
+ "stm_",
1779
+ "storage",
1780
+ "store",
1781
+ "storm",
1782
+ "story",
1783
+ "strategy",
1784
+ "stream",
1785
+ "streaming",
1786
+ "string",
1787
+ "stripe",
1788
+ "structure",
1789
+ "studio",
1790
+ "study",
1791
+ "stuff",
1792
+ "style",
1793
+ "sublime",
1794
+ "sugar",
1795
+ "suite",
1796
+ "summary",
1797
+ "super",
1798
+ "support",
1799
+ "supported",
1800
+ "svg-",
1801
+ "svg.",
1802
+ "svg_",
1803
+ "svn-",
1804
+ "svn.",
1805
+ "svn_",
1806
+ "swagger",
1807
+ "swift",
1808
+ "switch",
1809
+ "switcher",
1810
+ "symfony",
1811
+ "symphony",
1812
+ "sync",
1813
+ "synopsi",
1814
+ "syntax",
1815
+ "system",
1816
+ "tab-",
1817
+ "tab.",
1818
+ "tab_",
1819
+ "table",
1820
+ "tag-",
1821
+ "tag.",
1822
+ "tag_",
1823
+ "talk",
1824
+ "target",
1825
+ "task",
1826
+ "tcp-",
1827
+ "tcp.",
1828
+ "tcp_",
1829
+ "tdd-",
1830
+ "tdd.",
1831
+ "tdd_",
1832
+ "team",
1833
+ "tech",
1834
+ "template",
1835
+ "term",
1836
+ "terminal",
1837
+ "testing",
1838
+ "tetri",
1839
+ "text",
1840
+ "textmate",
1841
+ "theme",
1842
+ "theory",
1843
+ "three",
1844
+ "thrift",
1845
+ "time",
1846
+ "timeline",
1847
+ "timer",
1848
+ "tiny",
1849
+ "tinymce",
1850
+ "tip-",
1851
+ "tip.",
1852
+ "tip_",
1853
+ "title",
1854
+ "todo",
1855
+ "todomvc",
1856
+ "token",
1857
+ "tool",
1858
+ "toolbox",
1859
+ "toolkit",
1860
+ "top-",
1861
+ "top.",
1862
+ "top_",
1863
+ "tornado",
1864
+ "touch",
1865
+ "tower",
1866
+ "tracker",
1867
+ "tracking",
1868
+ "traffic",
1869
+ "training",
1870
+ "transfer",
1871
+ "translate",
1872
+ "transport",
1873
+ "tree",
1874
+ "trello",
1875
+ "try-",
1876
+ "try.",
1877
+ "try_",
1878
+ "tumblr",
1879
+ "tut-",
1880
+ "tut.",
1881
+ "tut_",
1882
+ "tutorial",
1883
+ "tweet",
1884
+ "twig",
1885
+ "twitter",
1886
+ "type",
1887
+ "typo",
1888
+ "ubuntu",
1889
+ "uiview",
1890
+ "ultimate",
1891
+ "under",
1892
+ "unit",
1893
+ "unity",
1894
+ "universal",
1895
+ "unix",
1896
+ "update",
1897
+ "updated",
1898
+ "upgrade",
1899
+ "upload",
1900
+ "uploader",
1901
+ "uri-",
1902
+ "uri.",
1903
+ "uri_",
1904
+ "url-",
1905
+ "url.",
1906
+ "url_",
1907
+ "usage",
1908
+ "usb-",
1909
+ "usb.",
1910
+ "usb_",
1911
+ "use-",
1912
+ "use.",
1913
+ "use_",
1914
+ "used",
1915
+ "useful",
1916
+ "user",
1917
+ "using",
1918
+ "util",
1919
+ "utilitie",
1920
+ "utility",
1921
+ "vagrant",
1922
+ "validator",
1923
+ "value",
1924
+ "variou",
1925
+ "varnish",
1926
+ "version",
1927
+ "via-",
1928
+ "via.",
1929
+ "via_",
1930
+ "video",
1931
+ "view",
1932
+ "viewer",
1933
+ "vim-",
1934
+ "vim.",
1935
+ "vim_",
1936
+ "vimrc",
1937
+ "virtual",
1938
+ "vision",
1939
+ "visual",
1940
+ "vpn",
1941
+ "want",
1942
+ "warning",
1943
+ "watch",
1944
+ "watcher",
1945
+ "wave",
1946
+ "way-",
1947
+ "way.",
1948
+ "way_",
1949
+ "weather",
1950
+ "web-",
1951
+ "web_",
1952
+ "webapp",
1953
+ "webgl",
1954
+ "webhook",
1955
+ "webkit",
1956
+ "webrtc",
1957
+ "website",
1958
+ "websocket",
1959
+ "welcome",
1960
+ "what",
1961
+ "what'",
1962
+ "when",
1963
+ "where",
1964
+ "which",
1965
+ "why-",
1966
+ "why.",
1967
+ "why_",
1968
+ "widget",
1969
+ "wifi",
1970
+ "wiki",
1971
+ "win-",
1972
+ "win.",
1973
+ "win_",
1974
+ "window",
1975
+ "wip-",
1976
+ "wip.",
1977
+ "wip_",
1978
+ "within",
1979
+ "without",
1980
+ "wizard",
1981
+ "word",
1982
+ "wordpres",
1983
+ "work",
1984
+ "worker",
1985
+ "workflow",
1986
+ "working",
1987
+ "workshop",
1988
+ "world",
1989
+ "wrapper",
1990
+ "write",
1991
+ "writer",
1992
+ "writing",
1993
+ "written",
1994
+ "www-",
1995
+ "www.",
1996
+ "www_",
1997
+ "xamarin",
1998
+ "xcode",
1999
+ "xml-",
2000
+ "xml.",
2001
+ "xml_",
2002
+ "xmpp",
2003
+ "xxxxxx",
2004
+ "yahoo",
2005
+ "yaml",
2006
+ "yandex",
2007
+ "yeoman",
2008
+ "yet-",
2009
+ "yet.",
2010
+ "yet_",
2011
+ "yii-",
2012
+ "yii.",
2013
+ "yii_",
2014
+ "youtube",
2015
+ "yui-",
2016
+ "yui.",
2017
+ "yui_",
2018
+ "zend",
2019
+ "zero",
2020
+ "zip-",
2021
+ "zip.",
2022
+ "zip_",
2023
+ "zsh-",
2024
+ "zsh.",
2025
+ "zsh_"
2026
+ ]
2027
+ }
2028
+ },
2029
+ {
2030
+ id: "github-app-token",
2031
+ label: "Github App Token",
2032
+ regex: new RegExp("(?:ghu|ghs)_[0-9a-zA-Z]{36}", ""),
2033
+ keywords: ["ghu_", "ghs_"],
2034
+ entropy: 3
2035
+ },
2036
+ {
2037
+ id: "github-fine-grained-pat",
2038
+ label: "Github Fine Grained PAT",
2039
+ regex: new RegExp("github_pat_\\w{82}", ""),
2040
+ keywords: ["github_pat_"],
2041
+ entropy: 3
2042
+ },
2043
+ {
2044
+ id: "github-oauth",
2045
+ label: "Github OAUTH",
2046
+ regex: new RegExp("gho_[0-9a-zA-Z]{36}", ""),
2047
+ keywords: ["gho_"],
2048
+ entropy: 3
2049
+ },
2050
+ {
2051
+ id: "github-pat",
2052
+ label: "Github PAT",
2053
+ regex: new RegExp("ghp_[0-9a-zA-Z]{36}", ""),
2054
+ keywords: ["ghp_"],
2055
+ entropy: 3
2056
+ },
2057
+ {
2058
+ id: "github-refresh-token",
2059
+ label: "Github Refresh Token",
2060
+ regex: new RegExp("ghr_[0-9a-zA-Z]{36}", ""),
2061
+ keywords: ["ghr_"],
2062
+ entropy: 3
2063
+ },
2064
+ {
2065
+ id: "gitlab-cicd-job-token",
2066
+ label: "Gitlab Cicd Job Token",
2067
+ regex: new RegExp("glcbt-[0-9a-zA-Z]{1,5}_[0-9a-zA-Z_-]{20}", ""),
2068
+ keywords: ["glcbt-"],
2069
+ entropy: 3
2070
+ },
2071
+ {
2072
+ id: "gitlab-deploy-token",
2073
+ label: "Gitlab Deploy Token",
2074
+ regex: new RegExp("gldt-[0-9a-zA-Z_\\-]{20}", ""),
2075
+ keywords: ["gldt-"],
2076
+ entropy: 3
2077
+ },
2078
+ {
2079
+ id: "gitlab-feature-flag-client-token",
2080
+ label: "Gitlab Feature Flag Client Token",
2081
+ regex: new RegExp("glffct-[0-9a-zA-Z_\\-]{20}", ""),
2082
+ keywords: ["glffct-"],
2083
+ entropy: 3
2084
+ },
2085
+ {
2086
+ id: "gitlab-feed-token",
2087
+ label: "Gitlab Feed Token",
2088
+ regex: new RegExp("glft-[0-9a-zA-Z_\\-]{20}", ""),
2089
+ keywords: ["glft-"],
2090
+ entropy: 3
2091
+ },
2092
+ {
2093
+ id: "gitlab-incoming-mail-token",
2094
+ label: "Gitlab Incoming Mail Token",
2095
+ regex: new RegExp("glimt-[0-9a-zA-Z_\\-]{25}", ""),
2096
+ keywords: ["glimt-"],
2097
+ entropy: 3
2098
+ },
2099
+ {
2100
+ id: "gitlab-kubernetes-agent-token",
2101
+ label: "Gitlab Kubernetes Agent Token",
2102
+ regex: new RegExp("glagent-[0-9a-zA-Z_\\-]{50}", ""),
2103
+ keywords: ["glagent-"],
2104
+ entropy: 3
2105
+ },
2106
+ {
2107
+ id: "gitlab-oauth-app-secret",
2108
+ label: "Gitlab OAUTH App Secret",
2109
+ regex: new RegExp("gloas-[0-9a-zA-Z_\\-]{64}", ""),
2110
+ keywords: ["gloas-"],
2111
+ entropy: 3
2112
+ },
2113
+ {
2114
+ id: "gitlab-pat",
2115
+ label: "Gitlab PAT",
2116
+ regex: new RegExp("glpat-[\\w-]{20}", ""),
2117
+ keywords: ["glpat-"],
2118
+ entropy: 3
2119
+ },
2120
+ {
2121
+ id: "gitlab-pat-routable",
2122
+ label: "Gitlab PAT Routable",
2123
+ regex: new RegExp("\\bglpat-[0-9a-zA-Z_-]{27,300}\\.[0-9a-z]{2}[0-9a-z]{7}\\b", ""),
2124
+ keywords: ["glpat-"],
2125
+ entropy: 4
2126
+ },
2127
+ {
2128
+ id: "gitlab-ptt",
2129
+ label: "Gitlab Ptt",
2130
+ regex: new RegExp("glptt-[0-9a-f]{40}", ""),
2131
+ keywords: ["glptt-"],
2132
+ entropy: 3
2133
+ },
2134
+ {
2135
+ id: "gitlab-rrt",
2136
+ label: "Gitlab Rrt",
2137
+ regex: new RegExp("GR1348941[\\w-]{20}", ""),
2138
+ keywords: ["gr1348941"],
2139
+ entropy: 3
2140
+ },
2141
+ {
2142
+ id: "gitlab-runner-authentication-token",
2143
+ label: "Gitlab Runner Authentication Token",
2144
+ regex: new RegExp("glrt-[0-9a-zA-Z_\\-]{20}", ""),
2145
+ keywords: ["glrt-"],
2146
+ entropy: 3
2147
+ },
2148
+ {
2149
+ id: "gitlab-runner-authentication-token-routable",
2150
+ label: "Gitlab Runner Authentication Token Routable",
2151
+ regex: new RegExp("\\bglrt-t\\d_[0-9a-zA-Z_\\-]{27,300}\\.[0-9a-z]{2}[0-9a-z]{7}\\b", ""),
2152
+ keywords: ["glrt-"],
2153
+ entropy: 4
2154
+ },
2155
+ {
2156
+ id: "gitlab-scim-token",
2157
+ label: "Gitlab Scim Token",
2158
+ regex: new RegExp("glsoat-[0-9a-zA-Z_\\-]{20}", ""),
2159
+ keywords: ["glsoat-"],
2160
+ entropy: 3
2161
+ },
2162
+ {
2163
+ id: "gitlab-session-cookie",
2164
+ label: "Gitlab Session Cookie",
2165
+ regex: new RegExp("_gitlab_session=[0-9a-z]{32}", ""),
2166
+ keywords: ["_gitlab_session="],
2167
+ entropy: 3
2168
+ },
2169
+ {
2170
+ id: "gitter-access-token",
2171
+ label: "Gitter Access Token",
2172
+ regex: new RegExp(`[\\w.-]{0,50}?(?:gitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9_-]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2173
+ keywords: ["gitter"]
2174
+ },
2175
+ {
2176
+ id: "gocardless-api-token",
2177
+ label: "Gocardless API Token",
2178
+ regex: new RegExp(`[\\w.-]{0,50}?(?:gocardless)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(live_[a-z0-9\\-_=]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2179
+ keywords: ["live_", "gocardless"]
2180
+ },
2181
+ {
2182
+ id: "grafana-api-key",
2183
+ label: "Grafana API Key",
2184
+ regex: new RegExp(`\\b(eyJrIjoi[A-Za-z0-9]{70,400}={0,3})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2185
+ keywords: ["eyjrijoi"],
2186
+ entropy: 3
2187
+ },
2188
+ {
2189
+ id: "grafana-cloud-api-token",
2190
+ label: "Grafana Cloud API Token",
2191
+ regex: new RegExp(`\\b(glc_[A-Za-z0-9+/]{32,400}={0,3})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2192
+ keywords: ["glc_"],
2193
+ entropy: 3
2194
+ },
2195
+ {
2196
+ id: "grafana-service-account-token",
2197
+ label: "Grafana Service Account Token",
2198
+ regex: new RegExp(`\\b(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2199
+ keywords: ["glsa_"],
2200
+ entropy: 3
2201
+ },
2202
+ {
2203
+ id: "harness-api-key",
2204
+ label: "Harness API Key",
2205
+ regex: new RegExp("(?:pat|sat)\\.[a-zA-Z0-9_-]{22}\\.[a-zA-Z0-9]{24}\\.[a-zA-Z0-9]{20}", ""),
2206
+ keywords: ["pat.", "sat."]
2207
+ },
2208
+ {
2209
+ id: "hashicorp-tf-api-token",
2210
+ label: "Hashicorp Tf API Token",
2211
+ regex: new RegExp("[a-z0-9]{14}\\.(?:atlasv1)\\.[a-z0-9\\-_=]{60,70}", "i"),
2212
+ keywords: ["atlasv1"],
2213
+ entropy: 3.5
2214
+ },
2215
+ {
2216
+ id: "hashicorp-tf-password",
2217
+ label: "Hashicorp Tf Password",
2218
+ regex: new RegExp(`[\\w.-]{0,50}?(?:administrator_login_password|password)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}("[a-z0-9=_\\-]{8,20}")(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2219
+ keywords: ["administrator_login_password", "password"],
2220
+ entropy: 2
2221
+ },
2222
+ {
2223
+ id: "heroku-api-key",
2224
+ label: "Heroku API Key",
2225
+ regex: new RegExp(`[\\w.-]{0,50}?(?:heroku)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2226
+ keywords: ["heroku"]
2227
+ },
2228
+ {
2229
+ id: "heroku-api-key-v2",
2230
+ label: "Heroku API Key V2",
2231
+ regex: new RegExp(`\\b((HRKU-AA[0-9a-zA-Z_-]{58}))(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2232
+ keywords: ["hrku-aa"],
2233
+ entropy: 4
2234
+ },
2235
+ {
2236
+ id: "hubspot-api-key",
2237
+ label: "Hubspot API Key",
2238
+ regex: new RegExp(`[\\w.-]{0,50}?(?:hubspot)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2239
+ keywords: ["hubspot"]
2240
+ },
2241
+ {
2242
+ id: "huggingface-access-token",
2243
+ label: "Huggingface Access Token",
2244
+ regex: new RegExp(`\\b(hf_(?:[a-z]{34}))(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2245
+ keywords: ["hf_"],
2246
+ entropy: 2
2247
+ },
2248
+ {
2249
+ id: "huggingface-organization-api-token",
2250
+ label: "Huggingface Organization API Token",
2251
+ regex: new RegExp(`\\b(api_org_(?:[a-z]{34}))(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2252
+ keywords: ["api_org_"],
2253
+ entropy: 2
2254
+ },
2255
+ {
2256
+ id: "infracost-api-token",
2257
+ label: "Infracost API Token",
2258
+ regex: new RegExp(`\\b(ico-[a-zA-Z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2259
+ keywords: ["ico-"],
2260
+ entropy: 3
2261
+ },
2262
+ {
2263
+ id: "intercom-api-key",
2264
+ label: "Intercom API Key",
2265
+ regex: new RegExp(`[\\w.-]{0,50}?(?:intercom)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{60})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2266
+ keywords: ["intercom"]
2267
+ },
2268
+ {
2269
+ id: "intra42-client-secret",
2270
+ label: "Intra42 Client Secret",
2271
+ regex: new RegExp(`\\b(s-s4t2(?:ud|af)-[abcdef0123456789]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2272
+ keywords: ["intra", "s-s4t2ud-", "s-s4t2af-"],
2273
+ entropy: 3
2274
+ },
2275
+ {
2276
+ id: "jfrog-api-key",
2277
+ label: "Jfrog API Key",
2278
+ regex: new RegExp(`[\\w.-]{0,50}?(?:jfrog|artifactory|bintray|xray)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{73})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2279
+ keywords: ["jfrog", "artifactory", "bintray", "xray"]
2280
+ },
2281
+ {
2282
+ id: "jfrog-identity-token",
2283
+ label: "Jfrog Identity Token",
2284
+ regex: new RegExp(`[\\w.-]{0,50}?(?:jfrog|artifactory|bintray|xray)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2285
+ keywords: ["jfrog", "artifactory", "bintray", "xray"]
2286
+ },
2287
+ {
2288
+ id: "jwt",
2289
+ label: "JWT",
2290
+ regex: new RegExp(`\\b(ey[a-zA-Z0-9]{17,}\\.ey[a-zA-Z0-9\\/\\\\_-]{17,}\\.(?:[a-zA-Z0-9\\/\\\\_-]{10,}={0,2})?)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2291
+ keywords: ["ey"],
2292
+ entropy: 3
2293
+ },
2294
+ {
2295
+ id: "jwt-base64",
2296
+ label: "JWT Base64",
2297
+ regex: new RegExp("\\bZXlK(?:(?<alg>aGJHY2lPaU)|(?<apu>aGNIVWlPaU)|(?<apv>aGNIWWlPaU)|(?<aud>aGRXUWlPaU)|(?<b64>aU5qUWlP)|(?<crit>amNtbDBJanBi)|(?<cty>amRIa2lPaU)|(?<epk>bGNHc2lPbn)|(?<enc>bGJtTWlPaU)|(?<jku>cWEzVWlPaU)|(?<jwk>cWQyc2lPb)|(?<iss>cGMzTWlPaU)|(?<iv>cGRpSTZJ)|(?<kid>cmFXUWlP)|(?<key_ops>clpYbGZiM0J6SWpwY)|(?<kty>cmRIa2lPaUp)|(?<nonce>dWIyNWpaU0k2)|(?<p2c>d01tTWlP)|(?<p2s>d01uTWlPaU)|(?<ppt>d2NIUWlPaU)|(?<sub>emRXSWlPaU)|(?<svt>emRuUWlP)|(?<tag>MFlXY2lPaU)|(?<typ>MGVYQWlPaUp)|(?<url>MWNtd2l)|(?<use>MWMyVWlPaUp)|(?<ver>MlpYSWlPaU)|(?<version>MlpYSnphVzl1SWpv)|(?<x>NElqb2)|(?<x5c>NE5XTWlP)|(?<x5t>NE5YUWlPaU)|(?<x5ts256>NE5YUWpVekkxTmlJNkl)|(?<x5u>NE5YVWlPaU)|(?<zip>NmFYQWlPaU))[a-zA-Z0-9\\/\\\\_+\\-\\r\\n]{40,}={0,2}", ""),
2298
+ keywords: ["zxlk"],
2299
+ entropy: 2
2300
+ },
2301
+ {
2302
+ id: "kraken-access-token",
2303
+ label: "Kraken Access Token",
2304
+ regex: new RegExp(`[\\w.-]{0,50}?(?:kraken)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9\\/=_\\+\\-]{80,90})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2305
+ keywords: ["kraken"]
2306
+ },
2307
+ {
2308
+ id: "kubernetes-secret-yaml",
2309
+ label: "Kubernetes Secret YAML",
2310
+ regex: new RegExp(`(?:\\bkind:[ \\t]*["']?\\bsecret\\b["']?[\\s\\S]{0,200}?\\bdata:[\\s\\S]{0,100}?\\s+([\\w.-]+:(?:[ \\t]*(?:\\||>[-+]?)\\s+)?[ \\t]*(?:["']?[a-z0-9+/]{10,}={0,3}["']?|\\{\\{[ \\t\\w"|$:=,.-]+}}|""|''))|\\bdata:[\\s\\S]{0,100}?\\s+([\\w.-]+:(?:[ \\t]*(?:\\||>[-+]?)\\s+)?[ \\t]*(?:["']?[a-z0-9+/]{10,}={0,3}["']?|\\{\\{[ \\t\\w"|$:=,.-]+}}|""|''))[\\s\\S]{0,200}?\\bkind:[ \\t]*["']?\\bsecret\\b["']?)`, "i"),
2311
+ keywords: ["secret"],
2312
+ allowlist: {
2313
+ regexes: [
2314
+ { regex: new RegExp(`[\\w.-]+:(?:[ \\t]*(?:\\||>[-+]?)\\s+)?[ \\t]*(?:\\{\\{[ \\t\\w"|$:=,.-]+}}|""|'')`, "") },
2315
+ { regex: new RegExp("(kind:[\\s\\S]+\\n---\\n[\\s\\S]+\\bdata:|data:[\\s\\S]+\\n---\\n[\\s\\S]+\\bkind:)", "") }
2316
+ ]
2317
+ }
2318
+ },
2319
+ {
2320
+ id: "kucoin-access-token",
2321
+ label: "Kucoin Access Token",
2322
+ regex: new RegExp(`[\\w.-]{0,50}?(?:kucoin)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{24})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2323
+ keywords: ["kucoin"]
2324
+ },
2325
+ {
2326
+ id: "kucoin-secret-key",
2327
+ label: "Kucoin Secret Key",
2328
+ regex: new RegExp(`[\\w.-]{0,50}?(?:kucoin)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2329
+ keywords: ["kucoin"]
2330
+ },
2331
+ {
2332
+ id: "launchdarkly-access-token",
2333
+ label: "Launchdarkly Access Token",
2334
+ regex: new RegExp(`[\\w.-]{0,50}?(?:launchdarkly)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2335
+ keywords: ["launchdarkly"]
2336
+ },
2337
+ {
2338
+ id: "linear-api-key",
2339
+ label: "Linear API Key",
2340
+ regex: new RegExp("lin_api_[a-z0-9]{40}", "i"),
2341
+ keywords: ["lin_api_"],
2342
+ entropy: 2
2343
+ },
2344
+ {
2345
+ id: "linear-client-secret",
2346
+ label: "Linear Client Secret",
2347
+ regex: new RegExp(`[\\w.-]{0,50}?(?:linear)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2348
+ keywords: ["linear"],
2349
+ entropy: 2
2350
+ },
2351
+ {
2352
+ id: "linkedin-client-id",
2353
+ label: "Linkedin Client ID",
2354
+ regex: new RegExp(`[\\w.-]{0,50}?(?:linked[_-]?in)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{14})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2355
+ keywords: ["linkedin", "linked_in", "linked-in"],
2356
+ entropy: 2
2357
+ },
2358
+ {
2359
+ id: "linkedin-client-secret",
2360
+ label: "Linkedin Client Secret",
2361
+ regex: new RegExp(`[\\w.-]{0,50}?(?:linked[_-]?in)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2362
+ keywords: ["linkedin", "linked_in", "linked-in"],
2363
+ entropy: 2
2364
+ },
2365
+ {
2366
+ id: "lob-api-key",
2367
+ label: "Lob API Key",
2368
+ regex: new RegExp(`[\\w.-]{0,50}?(?:lob)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}((live|test)_[a-f0-9]{35})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2369
+ keywords: ["test_", "live_"]
2370
+ },
2371
+ {
2372
+ id: "lob-pub-api-key",
2373
+ label: "Lob Pub API Key",
2374
+ regex: new RegExp(`[\\w.-]{0,50}?(?:lob)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}((test|live)_pub_[a-f0-9]{31})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2375
+ keywords: ["test_pub", "live_pub", "_pub"]
2376
+ },
2377
+ {
2378
+ id: "looker-client-id",
2379
+ label: "Looker Client ID",
2380
+ regex: new RegExp(`[\\w.-]{0,50}?(?:looker)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{20})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2381
+ keywords: ["looker"]
2382
+ },
2383
+ {
2384
+ id: "looker-client-secret",
2385
+ label: "Looker Client Secret",
2386
+ regex: new RegExp(`[\\w.-]{0,50}?(?:looker)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{24})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2387
+ keywords: ["looker"]
2388
+ },
2389
+ {
2390
+ id: "mailchimp-api-key",
2391
+ label: "Mailchimp API Key",
2392
+ regex: new RegExp(`[\\w.-]{0,50}?(?:MailchimpSDK.initialize|mailchimp)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{32}-us\\d\\d)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2393
+ keywords: ["mailchimp"]
2394
+ },
2395
+ {
2396
+ id: "mailgun-private-api-token",
2397
+ label: "Mailgun Private API Token",
2398
+ regex: new RegExp(`[\\w.-]{0,50}?(?:mailgun)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(key-[a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2399
+ keywords: ["mailgun"]
2400
+ },
2401
+ {
2402
+ id: "mailgun-pub-key",
2403
+ label: "Mailgun Pub Key",
2404
+ regex: new RegExp(`[\\w.-]{0,50}?(?:mailgun)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(pubkey-[a-f0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2405
+ keywords: ["mailgun"]
2406
+ },
2407
+ {
2408
+ id: "mailgun-signing-key",
2409
+ label: "Mailgun Signing Key",
2410
+ regex: new RegExp(`[\\w.-]{0,50}?(?:mailgun)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2411
+ keywords: ["mailgun"]
2412
+ },
2413
+ {
2414
+ id: "mapbox-api-token",
2415
+ label: "Mapbox API Token",
2416
+ regex: new RegExp(`[\\w.-]{0,50}?(?:mapbox)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(pk\\.[a-z0-9]{60}\\.[a-z0-9]{22})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2417
+ keywords: ["mapbox"]
2418
+ },
2419
+ {
2420
+ id: "mattermost-access-token",
2421
+ label: "Mattermost Access Token",
2422
+ regex: new RegExp(`[\\w.-]{0,50}?(?:mattermost)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{26})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2423
+ keywords: ["mattermost"]
2424
+ },
2425
+ {
2426
+ id: "maxmind-license-key",
2427
+ label: "Maxmind License Key",
2428
+ regex: new RegExp(`\\b([A-Za-z0-9]{6}_[A-Za-z0-9]{29}_mmk)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2429
+ keywords: ["_mmk"],
2430
+ entropy: 4
2431
+ },
2432
+ {
2433
+ id: "messagebird-api-token",
2434
+ label: "Messagebird API Token",
2435
+ regex: new RegExp(`[\\w.-]{0,50}?(?:message[_-]?bird)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{25})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2436
+ keywords: ["messagebird", "message-bird", "message_bird"]
2437
+ },
2438
+ {
2439
+ id: "messagebird-client-id",
2440
+ label: "Messagebird Client ID",
2441
+ regex: new RegExp(`[\\w.-]{0,50}?(?:message[_-]?bird)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2442
+ keywords: ["messagebird", "message-bird", "message_bird"]
2443
+ },
2444
+ {
2445
+ id: "microsoft-teams-webhook",
2446
+ label: "Microsoft Teams Webhook",
2447
+ regex: new RegExp("https://[a-z0-9]+\\.webhook\\.office\\.com/webhookb2/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}/IncomingWebhook/[a-z0-9]{32}/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}", ""),
2448
+ keywords: ["webhook.office.com", "webhookb2", "incomingwebhook"]
2449
+ },
2450
+ {
2451
+ id: "netlify-access-token",
2452
+ label: "Netlify Access Token",
2453
+ regex: new RegExp(`[\\w.-]{0,50}?(?:netlify)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{40,46})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2454
+ keywords: ["netlify"]
2455
+ },
2456
+ {
2457
+ id: "new-relic-browser-api-token",
2458
+ label: "New Relic Browser API Token",
2459
+ regex: new RegExp(`[\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(NRJS-[a-f0-9]{19})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2460
+ keywords: ["nrjs-"]
2461
+ },
2462
+ {
2463
+ id: "new-relic-insert-key",
2464
+ label: "New Relic Insert Key",
2465
+ regex: new RegExp(`[\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(NRII-[a-z0-9-]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2466
+ keywords: ["nrii-"]
2467
+ },
2468
+ {
2469
+ id: "new-relic-user-api-id",
2470
+ label: "New Relic User API ID",
2471
+ regex: new RegExp(`[\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2472
+ keywords: ["new-relic", "newrelic", "new_relic"]
2473
+ },
2474
+ {
2475
+ id: "new-relic-user-api-key",
2476
+ label: "New Relic User API Key",
2477
+ regex: new RegExp(`[\\w.-]{0,50}?(?:new-relic|newrelic|new_relic)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(NRAK-[a-z0-9]{27})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2478
+ keywords: ["nrak"]
2479
+ },
2480
+ {
2481
+ id: "notion-api-token",
2482
+ label: "Notion API Token",
2483
+ regex: new RegExp(`\\b(ntn_[0-9]{11}[A-Za-z0-9]{32}[A-Za-z0-9]{3})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2484
+ keywords: ["ntn_"],
2485
+ entropy: 4
2486
+ },
2487
+ {
2488
+ id: "npm-access-token",
2489
+ label: "NPM Access Token",
2490
+ regex: new RegExp(`\\b(npm_[a-z0-9]{36})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2491
+ keywords: ["npm_"],
2492
+ entropy: 2
2493
+ },
2494
+ {
2495
+ id: "nuget-config-password",
2496
+ label: "Nuget Config Password",
2497
+ regex: new RegExp('<add key=\\"(?:(?:ClearText)?Password)\\"\\s*value=\\"(.{8,})\\"\\s*/>', "i"),
2498
+ keywords: ["<add key="],
2499
+ entropy: 1,
2500
+ allowlist: {
2501
+ regexes: [
2502
+ { regex: new RegExp("33f!!lloppa", "") },
2503
+ { regex: new RegExp("hal\\+9ooo_da!sY", "") },
2504
+ { regex: new RegExp("^\\%\\S.*\\%$", "") }
2505
+ ]
2506
+ }
2507
+ },
2508
+ {
2509
+ id: "nytimes-access-token",
2510
+ label: "Nytimes Access Token",
2511
+ regex: new RegExp(`[\\w.-]{0,50}?(?:nytimes|new-york-times,|newyorktimes)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9=_\\-]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2512
+ keywords: ["nytimes", "new-york-times", "newyorktimes"]
2513
+ },
2514
+ {
2515
+ id: "octopus-deploy-api-key",
2516
+ label: "Octopus Deploy API Key",
2517
+ regex: new RegExp(`\\b(API-[A-Z0-9]{26})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2518
+ keywords: ["api-"],
2519
+ entropy: 3
2520
+ },
2521
+ {
2522
+ id: "okta-access-token",
2523
+ label: "Okta Access Token",
2524
+ regex: new RegExp(`[\\w.-]{0,50}?(?:[\\w.-]{0,50}?(?:(?:[Oo]kta|OKTA))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(00[\\w=\\-]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2525
+ keywords: ["okta"],
2526
+ entropy: 4
2527
+ },
2528
+ {
2529
+ id: "openai-api-key",
2530
+ label: "Openai API Key",
2531
+ regex: new RegExp(`\\b(sk-(?:proj|svcacct|admin)-(?:[A-Za-z0-9_-]{74}|[A-Za-z0-9_-]{58})T3BlbkFJ(?:[A-Za-z0-9_-]{74}|[A-Za-z0-9_-]{58})\\b|sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2532
+ keywords: ["t3blbkfj"],
2533
+ entropy: 3
2534
+ },
2535
+ {
2536
+ id: "openshift-user-token",
2537
+ label: "Openshift User Token",
2538
+ regex: new RegExp("\\b(sha256~[\\w-]{43})(?:[^\\w-]|$)", ""),
2539
+ keywords: ["sha256~"],
2540
+ entropy: 3.5
2541
+ },
2542
+ {
2543
+ id: "perplexity-api-key",
2544
+ label: "Perplexity API Key",
2545
+ regex: new RegExp(`\\b(pplx-[a-zA-Z0-9]{48})(?:[\\x60'"\\s;]|\\\\[nr]|$|\\b)`, ""),
2546
+ keywords: ["pplx-"],
2547
+ entropy: 4
2548
+ },
2549
+ {
2550
+ id: "plaid-api-token",
2551
+ label: "Plaid API Token",
2552
+ regex: new RegExp(`[\\w.-]{0,50}?(?:plaid)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2553
+ keywords: ["plaid"]
2554
+ },
2555
+ {
2556
+ id: "plaid-client-id",
2557
+ label: "Plaid Client ID",
2558
+ regex: new RegExp(`[\\w.-]{0,50}?(?:plaid)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{24})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2559
+ keywords: ["plaid"],
2560
+ entropy: 3.5
2561
+ },
2562
+ {
2563
+ id: "plaid-secret-key",
2564
+ label: "Plaid Secret Key",
2565
+ regex: new RegExp(`[\\w.-]{0,50}?(?:plaid)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{30})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2566
+ keywords: ["plaid"],
2567
+ entropy: 3.5
2568
+ },
2569
+ {
2570
+ id: "planetscale-api-token",
2571
+ label: "Planetscale API Token",
2572
+ regex: new RegExp(`\\b(pscale_tkn_[\\w=\\.-]{32,64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2573
+ keywords: ["pscale_tkn_"],
2574
+ entropy: 3
2575
+ },
2576
+ {
2577
+ id: "planetscale-oauth-token",
2578
+ label: "Planetscale OAUTH Token",
2579
+ regex: new RegExp(`\\b(pscale_oauth_[\\w=\\.-]{32,64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2580
+ keywords: ["pscale_oauth_"],
2581
+ entropy: 3
2582
+ },
2583
+ {
2584
+ id: "planetscale-password",
2585
+ label: "Planetscale Password",
2586
+ regex: new RegExp(`\\b(pscale_pw_[\\w=\\.-]{32,64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2587
+ keywords: ["pscale_pw_"],
2588
+ entropy: 3
2589
+ },
2590
+ {
2591
+ id: "postman-api-token",
2592
+ label: "Postman API Token",
2593
+ regex: new RegExp(`\\b(PMAK-[a-f0-9]{24}\\-[a-f0-9]{34})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2594
+ keywords: ["pmak-"],
2595
+ entropy: 3
2596
+ },
2597
+ {
2598
+ id: "prefect-api-token",
2599
+ label: "Prefect API Token",
2600
+ regex: new RegExp(`\\b(pnu_[a-zA-Z0-9]{36})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2601
+ keywords: ["pnu_"],
2602
+ entropy: 2
2603
+ },
2604
+ {
2605
+ id: "private-key",
2606
+ label: "Private Key",
2607
+ regex: new RegExp("-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----[\\s\\S-]{64,}?KEY(?: BLOCK)?-----", "i"),
2608
+ keywords: ["-----begin"]
2609
+ },
2610
+ {
2611
+ id: "privateai-api-token",
2612
+ label: "Privateai API Token",
2613
+ regex: new RegExp(`[\\w.-]{0,50}?(?:[\\w.-]{0,50}?(?:private[_-]?ai)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{32})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2614
+ keywords: ["privateai", "private_ai", "private-ai"],
2615
+ entropy: 3
2616
+ },
2617
+ {
2618
+ id: "pulumi-api-token",
2619
+ label: "Pulumi API Token",
2620
+ regex: new RegExp(`\\b(pul-[a-f0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2621
+ keywords: ["pul-"],
2622
+ entropy: 2
2623
+ },
2624
+ {
2625
+ id: "pypi-upload-token",
2626
+ label: "Pypi Upload Token",
2627
+ regex: new RegExp("pypi-AgEIcHlwaS5vcmc[\\w-]{50,1000}", ""),
2628
+ keywords: ["pypi-ageichlwas5vcmc"],
2629
+ entropy: 3
2630
+ },
2631
+ {
2632
+ id: "rapidapi-access-token",
2633
+ label: "Rapidapi Access Token",
2634
+ regex: new RegExp(`[\\w.-]{0,50}?(?:rapidapi)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9_-]{50})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2635
+ keywords: ["rapidapi"]
2636
+ },
2637
+ {
2638
+ id: "readme-api-token",
2639
+ label: "Readme API Token",
2640
+ regex: new RegExp(`\\b(rdme_[a-z0-9]{70})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2641
+ keywords: ["rdme_"],
2642
+ entropy: 2
2643
+ },
2644
+ {
2645
+ id: "rubygems-api-token",
2646
+ label: "Rubygems API Token",
2647
+ regex: new RegExp(`\\b(rubygems_[a-f0-9]{48})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2648
+ keywords: ["rubygems_"],
2649
+ entropy: 2
2650
+ },
2651
+ {
2652
+ id: "scalingo-api-token",
2653
+ label: "Scalingo API Token",
2654
+ regex: new RegExp(`\\b(tk-us-[\\w-]{48})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2655
+ keywords: ["tk-us-"],
2656
+ entropy: 2
2657
+ },
2658
+ {
2659
+ id: "sendbird-access-id",
2660
+ label: "Sendbird Access ID",
2661
+ regex: new RegExp(`[\\w.-]{0,50}?(?:sendbird)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2662
+ keywords: ["sendbird"]
2663
+ },
2664
+ {
2665
+ id: "sendbird-access-token",
2666
+ label: "Sendbird Access Token",
2667
+ regex: new RegExp(`[\\w.-]{0,50}?(?:sendbird)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2668
+ keywords: ["sendbird"]
2669
+ },
2670
+ {
2671
+ id: "sendgrid-api-token",
2672
+ label: "Sendgrid API Token",
2673
+ regex: new RegExp(`\\b(SG\\.[a-z0-9=_\\-\\.]{66})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2674
+ keywords: ["sg."],
2675
+ entropy: 2
2676
+ },
2677
+ {
2678
+ id: "sendinblue-api-token",
2679
+ label: "Sendinblue API Token",
2680
+ regex: new RegExp(`\\b(xkeysib-[a-f0-9]{64}\\-[a-z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2681
+ keywords: ["xkeysib-"],
2682
+ entropy: 2
2683
+ },
2684
+ {
2685
+ id: "sentry-access-token",
2686
+ label: "Sentry Access Token",
2687
+ regex: new RegExp(`[\\w.-]{0,50}?(?:sentry)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2688
+ keywords: ["sentry"],
2689
+ entropy: 3
2690
+ },
2691
+ {
2692
+ id: "sentry-org-token",
2693
+ label: "Sentry Org Token",
2694
+ regex: new RegExp("\\bsntrys_eyJpYXQiO[a-zA-Z0-9+/]{10,200}(?:LCJyZWdpb25fdXJs|InJlZ2lvbl91cmwi|cmVnaW9uX3VybCI6)[a-zA-Z0-9+/]{10,200}={0,2}_[a-zA-Z0-9+/]{43}(?:[^a-zA-Z0-9+/]|$)", ""),
2695
+ keywords: ["sntrys_eyjpyxqio"],
2696
+ entropy: 4.5
2697
+ },
2698
+ {
2699
+ id: "sentry-user-token",
2700
+ label: "Sentry User Token",
2701
+ regex: new RegExp(`\\b(sntryu_[a-f0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2702
+ keywords: ["sntryu_"],
2703
+ entropy: 3.5
2704
+ },
2705
+ {
2706
+ id: "settlemint-application-access-token",
2707
+ label: "Settlemint Application Access Token",
2708
+ regex: new RegExp(`\\b(sm_aat_[a-zA-Z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2709
+ keywords: ["sm_aat"],
2710
+ entropy: 3
2711
+ },
2712
+ {
2713
+ id: "settlemint-personal-access-token",
2714
+ label: "Settlemint Personal Access Token",
2715
+ regex: new RegExp(`\\b(sm_pat_[a-zA-Z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2716
+ keywords: ["sm_pat"],
2717
+ entropy: 3
2718
+ },
2719
+ {
2720
+ id: "settlemint-service-access-token",
2721
+ label: "Settlemint Service Access Token",
2722
+ regex: new RegExp(`\\b(sm_sat_[a-zA-Z0-9]{16})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2723
+ keywords: ["sm_sat"],
2724
+ entropy: 3
2725
+ },
2726
+ {
2727
+ id: "shippo-api-token",
2728
+ label: "Shippo API Token",
2729
+ regex: new RegExp(`\\b(shippo_(?:live|test)_[a-fA-F0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2730
+ keywords: ["shippo_"],
2731
+ entropy: 2
2732
+ },
2733
+ {
2734
+ id: "shopify-access-token",
2735
+ label: "Shopify Access Token",
2736
+ regex: new RegExp("shpat_[a-fA-F0-9]{32}", ""),
2737
+ keywords: ["shpat_"],
2738
+ entropy: 2
2739
+ },
2740
+ {
2741
+ id: "shopify-custom-access-token",
2742
+ label: "Shopify Custom Access Token",
2743
+ regex: new RegExp("shpca_[a-fA-F0-9]{32}", ""),
2744
+ keywords: ["shpca_"],
2745
+ entropy: 2
2746
+ },
2747
+ {
2748
+ id: "shopify-private-app-access-token",
2749
+ label: "Shopify Private App Access Token",
2750
+ regex: new RegExp("shppa_[a-fA-F0-9]{32}", ""),
2751
+ keywords: ["shppa_"],
2752
+ entropy: 2
2753
+ },
2754
+ {
2755
+ id: "shopify-shared-secret",
2756
+ label: "Shopify Shared Secret",
2757
+ regex: new RegExp("shpss_[a-fA-F0-9]{32}", ""),
2758
+ keywords: ["shpss_"],
2759
+ entropy: 2
2760
+ },
2761
+ {
2762
+ id: "sidekiq-secret",
2763
+ label: "Sidekiq Secret",
2764
+ regex: new RegExp(`[\\w.-]{0,50}?(?:BUNDLE_ENTERPRISE__CONTRIBSYS__COM|BUNDLE_GEMS__CONTRIBSYS__COM)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-f0-9]{8}:[a-f0-9]{8})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2765
+ keywords: ["bundle_enterprise__contribsys__com", "bundle_gems__contribsys__com"]
2766
+ },
2767
+ {
2768
+ id: "sidekiq-sensitive-url",
2769
+ label: "Sidekiq Sensitive URL",
2770
+ regex: new RegExp("\\bhttps?://([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)(?:[\\/|\\#|\\?|:]|$)", "i"),
2771
+ keywords: ["gems.contribsys.com", "enterprise.contribsys.com"]
2772
+ },
2773
+ {
2774
+ id: "slack-app-token",
2775
+ label: "Slack App Token",
2776
+ regex: new RegExp("xapp-\\d-[A-Z0-9]+-\\d+-[a-z0-9]+", "i"),
2777
+ keywords: ["xapp"],
2778
+ entropy: 2
2779
+ },
2780
+ {
2781
+ id: "slack-bot-token",
2782
+ label: "Slack Bot Token",
2783
+ regex: new RegExp("xoxb-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*", ""),
2784
+ keywords: ["xoxb"],
2785
+ entropy: 3
2786
+ },
2787
+ {
2788
+ id: "slack-config-access-token",
2789
+ label: "Slack Config Access Token",
2790
+ regex: new RegExp("xoxe.xox[bp]-\\d-[A-Z0-9]{163,166}", "i"),
2791
+ keywords: ["xoxe.xoxb-", "xoxe.xoxp-"],
2792
+ entropy: 2
2793
+ },
2794
+ {
2795
+ id: "slack-config-refresh-token",
2796
+ label: "Slack Config Refresh Token",
2797
+ regex: new RegExp("xoxe-\\d-[A-Z0-9]{146}", "i"),
2798
+ keywords: ["xoxe-"],
2799
+ entropy: 2
2800
+ },
2801
+ {
2802
+ id: "slack-legacy-bot-token",
2803
+ label: "Slack Legacy Bot Token",
2804
+ regex: new RegExp("xoxb-[0-9]{8,14}-[a-zA-Z0-9]{18,26}", ""),
2805
+ keywords: ["xoxb"],
2806
+ entropy: 2
2807
+ },
2808
+ {
2809
+ id: "slack-legacy-token",
2810
+ label: "Slack Legacy Token",
2811
+ regex: new RegExp("xox[os]-\\d+-\\d+-\\d+-[a-fA-F\\d]+", ""),
2812
+ keywords: ["xoxo", "xoxs"],
2813
+ entropy: 2
2814
+ },
2815
+ {
2816
+ id: "slack-legacy-workspace-token",
2817
+ label: "Slack Legacy Workspace Token",
2818
+ regex: new RegExp("xox[ar]-(?:\\d-)?[0-9a-zA-Z]{8,48}", ""),
2819
+ keywords: ["xoxa", "xoxr"],
2820
+ entropy: 2
2821
+ },
2822
+ {
2823
+ id: "slack-user-token",
2824
+ label: "Slack User Token",
2825
+ regex: new RegExp("xox[pe](?:-[0-9]{10,13}){3}-[a-zA-Z0-9-]{28,34}", ""),
2826
+ keywords: ["xoxp-", "xoxe-"],
2827
+ entropy: 2
2828
+ },
2829
+ {
2830
+ id: "slack-webhook-url",
2831
+ label: "Slack Webhook URL",
2832
+ regex: new RegExp("(?:https?://)?hooks.slack.com/(?:services|workflows|triggers)/[A-Za-z0-9+/]{43,56}", ""),
2833
+ keywords: ["hooks.slack.com"]
2834
+ },
2835
+ {
2836
+ id: "snyk-api-token",
2837
+ label: "Snyk API Token",
2838
+ regex: new RegExp(`[\\w.-]{0,50}?(?:snyk[_.-]?(?:(?:api|oauth)[_.-]?)?(?:key|token))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2839
+ keywords: ["snyk"]
2840
+ },
2841
+ {
2842
+ id: "sonar-api-token",
2843
+ label: "Sonar API Token",
2844
+ regex: new RegExp(`[\\w.-]{0,50}?(?:sonar[_.-]?(login|token))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}((?:squ_|sqp_|sqa_)?[a-z0-9=_\\-]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2845
+ keywords: ["sonar"],
2846
+ secretGroup: 2
2847
+ },
2848
+ {
2849
+ id: "sourcegraph-access-token",
2850
+ label: "Sourcegraph Access Token",
2851
+ regex: new RegExp(`\\b(\\b(sgp_(?:[a-fA-F0-9]{16}|local)_[a-fA-F0-9]{40}|sgp_[a-fA-F0-9]{40}|[a-fA-F0-9]{40})\\b)(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2852
+ keywords: ["sgp_", "sourcegraph"],
2853
+ entropy: 3
2854
+ },
2855
+ {
2856
+ id: "square-access-token",
2857
+ label: "Square Access Token",
2858
+ regex: new RegExp(`\\b((?:EAAA|sq0atp-)[\\w-]{22,60})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2859
+ keywords: ["sq0atp-", "eaaa"],
2860
+ entropy: 2
2861
+ },
2862
+ {
2863
+ id: "squarespace-access-token",
2864
+ label: "Squarespace Access Token",
2865
+ regex: new RegExp(`[\\w.-]{0,50}?(?:squarespace)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2866
+ keywords: ["squarespace"]
2867
+ },
2868
+ {
2869
+ id: "stripe-access-token",
2870
+ label: "Stripe Access Token",
2871
+ regex: new RegExp(`\\b((?:sk|rk)_(?:test|live|prod)_[a-zA-Z0-9]{10,99})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2872
+ keywords: ["sk_test", "sk_live", "sk_prod", "rk_test", "rk_live", "rk_prod"],
2873
+ entropy: 2
2874
+ },
2875
+ {
2876
+ id: "sumologic-access-id",
2877
+ label: "Sumologic Access ID",
2878
+ regex: new RegExp(`[\\w.-]{0,50}?(?:[\\w.-]{0,50}?(?:(?:[Ss]umo|SUMO))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3})(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(su[a-zA-Z0-9]{12})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2879
+ keywords: ["sumo"],
2880
+ entropy: 3
2881
+ },
2882
+ {
2883
+ id: "sumologic-access-token",
2884
+ label: "Sumologic Access Token",
2885
+ regex: new RegExp(`[\\w.-]{0,50}?(?:(?:[Ss]umo|SUMO))(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{64})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2886
+ keywords: ["sumo"],
2887
+ entropy: 3
2888
+ },
2889
+ {
2890
+ id: "telegram-bot-api-token",
2891
+ label: "Telegram Bot API Token",
2892
+ regex: new RegExp(`[\\w.-]{0,50}?(?:telegr)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9]{5,16}:(?:A)[a-z0-9_\\-]{34})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2893
+ keywords: ["telegr"]
2894
+ },
2895
+ {
2896
+ id: "travisci-access-token",
2897
+ label: "Travisci Access Token",
2898
+ regex: new RegExp(`[\\w.-]{0,50}?(?:travis)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{22})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2899
+ keywords: ["travis"]
2900
+ },
2901
+ {
2902
+ id: "twilio-api-key",
2903
+ label: "Twilio API Key",
2904
+ regex: new RegExp("SK[0-9a-fA-F]{32}", ""),
2905
+ keywords: ["sk"],
2906
+ entropy: 3
2907
+ },
2908
+ {
2909
+ id: "twitch-api-token",
2910
+ label: "Twitch API Token",
2911
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitch)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{30})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2912
+ keywords: ["twitch"]
2913
+ },
2914
+ {
2915
+ id: "twitter-access-secret",
2916
+ label: "Twitter Access Secret",
2917
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{45})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2918
+ keywords: ["twitter"]
2919
+ },
2920
+ {
2921
+ id: "twitter-access-token",
2922
+ label: "Twitter Access Token",
2923
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([0-9]{15,25}-[a-zA-Z0-9]{20,40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2924
+ keywords: ["twitter"]
2925
+ },
2926
+ {
2927
+ id: "twitter-api-key",
2928
+ label: "Twitter API Key",
2929
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{25})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2930
+ keywords: ["twitter"]
2931
+ },
2932
+ {
2933
+ id: "twitter-api-secret",
2934
+ label: "Twitter API Secret",
2935
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{50})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2936
+ keywords: ["twitter"]
2937
+ },
2938
+ {
2939
+ id: "twitter-bearer-token",
2940
+ label: "Twitter Bearer Token",
2941
+ regex: new RegExp(`[\\w.-]{0,50}?(?:twitter)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(A{22}[a-zA-Z0-9%]{80,100})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2942
+ keywords: ["twitter"]
2943
+ },
2944
+ {
2945
+ id: "typeform-api-token",
2946
+ label: "Typeform API Token",
2947
+ regex: new RegExp(`[\\w.-]{0,50}?(?:typeform)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(tfp_[a-z0-9\\-_\\.=]{59})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2948
+ keywords: ["tfp_"]
2949
+ },
2950
+ {
2951
+ id: "vault-batch-token",
2952
+ label: "Vault Batch Token",
2953
+ regex: new RegExp(`\\b(hvb\\.[\\w-]{138,300})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, ""),
2954
+ keywords: ["hvb."],
2955
+ entropy: 4
2956
+ },
2957
+ {
2958
+ id: "vault-service-token",
2959
+ label: "Vault Service Token",
2960
+ regex: new RegExp(`\\b((?:hvs\\.[\\w-]{90,120}|s\\.(?:[a-z0-9]{24})))(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2961
+ keywords: ["hvs.", "s."],
2962
+ entropy: 3.5,
2963
+ allowlist: {
2964
+ regexes: [
2965
+ { regex: new RegExp("s\\.[A-Za-z]{24}", "") }
2966
+ ]
2967
+ }
2968
+ },
2969
+ {
2970
+ id: "yandex-access-token",
2971
+ label: "Yandex Access Token",
2972
+ regex: new RegExp(`[\\w.-]{0,50}?(?:yandex)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(t1\\.[A-Z0-9a-z_-]+[=]{0,2}\\.[A-Z0-9a-z_-]{86}[=]{0,2})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2973
+ keywords: ["yandex"]
2974
+ },
2975
+ {
2976
+ id: "yandex-api-key",
2977
+ label: "Yandex API Key",
2978
+ regex: new RegExp(`[\\w.-]{0,50}?(?:yandex)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(AQVN[A-Za-z0-9_\\-]{35,38})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2979
+ keywords: ["yandex"]
2980
+ },
2981
+ {
2982
+ id: "yandex-aws-access-token",
2983
+ label: "Yandex AWS Access Token",
2984
+ regex: new RegExp(`[\\w.-]{0,50}?(?:yandex)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}(YC[a-zA-Z0-9_\\-]{38})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2985
+ keywords: ["yandex"]
2986
+ },
2987
+ {
2988
+ id: "zendesk-secret-key",
2989
+ label: "Zendesk Secret Key",
2990
+ regex: new RegExp(`[\\w.-]{0,50}?(?:zendesk)(?:[ \\t\\w.-]{0,20})[\\s'"]{0,3}(?:=|>|:{1,3}=|\\|\\||:|=>|\\?=|,)[\\x60'"\\s=]{0,5}([a-z0-9]{40})(?:[\\x60'"\\s;]|\\\\[nr]|$)`, "i"),
2991
+ keywords: ["zendesk"]
2992
+ }
2993
+ ];
2994
+
2995
+ // src/entropy.ts
2996
+ function shannonEntropy(s) {
2997
+ if (s.length === 0) return 0;
2998
+ const freq = /* @__PURE__ */ new Map();
2999
+ for (const ch of s) {
3000
+ freq.set(ch, (_nullishCoalesce(freq.get(ch), () => ( 0))) + 1);
3001
+ }
3002
+ let entropy = 0;
3003
+ const len = s.length;
3004
+ for (const count of freq.values()) {
3005
+ const p = count / len;
3006
+ entropy -= p * Math.log2(p);
3007
+ }
3008
+ return entropy;
3009
+ }
3010
+
3011
+ // src/index.ts
3012
+ var keywordIndex = /* @__PURE__ */ new Map();
3013
+ var rulesWithoutKeywords = [];
3014
+ for (const rule of rules) {
3015
+ if (rule.keywords.length === 0) {
3016
+ rulesWithoutKeywords.push(rule);
3017
+ } else {
3018
+ for (const kw of rule.keywords) {
3019
+ const lower = kw.toLowerCase();
3020
+ let list = keywordIndex.get(lower);
3021
+ if (!list) {
3022
+ list = [];
3023
+ keywordIndex.set(lower, list);
3024
+ }
3025
+ list.push(rule);
3026
+ }
3027
+ }
3028
+ }
3029
+ function isGlobalAllowlisted(secret) {
3030
+ for (const { regex } of globalAllowlist.regexes) {
3031
+ if (regex.test(secret)) return true;
3032
+ }
3033
+ const lower = secret.toLowerCase();
3034
+ for (const stopword of globalAllowlist.stopwords) {
3035
+ if (lower === stopword.toLowerCase()) return true;
3036
+ }
3037
+ return false;
3038
+ }
3039
+ function isRuleAllowlisted(rule, secret, fullMatch, line) {
3040
+ if (!rule.allowlist) return false;
3041
+ if (rule.allowlist.regexes) {
3042
+ for (const { regex, target } of rule.allowlist.regexes) {
3043
+ const testStr = target === "line" ? line : target === "match" ? fullMatch : secret;
3044
+ if (regex.test(testStr)) return true;
3045
+ }
3046
+ }
3047
+ if (rule.allowlist.stopwords) {
3048
+ const lower = secret.toLowerCase();
3049
+ for (const stopword of rule.allowlist.stopwords) {
3050
+ if (lower.includes(stopword.toLowerCase())) return true;
3051
+ }
3052
+ }
3053
+ return false;
3054
+ }
3055
+ function getCandidateRules(inputLower) {
3056
+ const candidates = /* @__PURE__ */ new Set();
3057
+ for (const rule of rulesWithoutKeywords) {
3058
+ candidates.add(rule);
3059
+ }
3060
+ for (const [keyword, kwRules] of keywordIndex) {
3061
+ if (inputLower.includes(keyword)) {
3062
+ for (const rule of kwRules) {
3063
+ candidates.add(rule);
3064
+ }
3065
+ }
3066
+ }
3067
+ return candidates;
3068
+ }
3069
+ function getLineForIndex(input, index) {
3070
+ const lineStart = input.lastIndexOf("\n", index - 1) + 1;
3071
+ let lineEnd = input.indexOf("\n", index);
3072
+ if (lineEnd === -1) lineEnd = input.length;
3073
+ return input.slice(lineStart, lineEnd);
3074
+ }
3075
+ function extractSecret(match, rule) {
3076
+ const groupIndex = _nullishCoalesce(rule.secretGroup, () => ( 1));
3077
+ if (match[groupIndex] !== void 0) return match[groupIndex];
3078
+ for (let i = 1; i < match.length; i++) {
3079
+ if (match[i] !== void 0) return match[i];
3080
+ }
3081
+ return match[0];
3082
+ }
3083
+ var GENERIC_RULE_IDS = /* @__PURE__ */ new Set(["generic-api-key"]);
3084
+ function scan(input) {
3085
+ if (!input) return [];
3086
+ const inputLower = input.toLowerCase();
3087
+ const candidates = getCandidateRules(inputLower);
3088
+ const secrets = [];
3089
+ const matchedRanges = [];
3090
+ for (const rule of candidates) {
3091
+ const regex = new RegExp(rule.regex.source, rule.regex.flags.replace("g", "") + "g");
3092
+ let match;
3093
+ while ((match = regex.exec(input)) !== null) {
3094
+ const secret = extractSecret(match, rule);
3095
+ if (!secret) continue;
3096
+ const secretStart = input.indexOf(secret, match.index);
3097
+ const start = secretStart >= 0 ? secretStart : match.index;
3098
+ const end = start + secret.length;
3099
+ const overlaps = matchedRanges.some(
3100
+ (r) => start < r.end && end > r.start
3101
+ );
3102
+ if (overlaps) continue;
3103
+ if (rule.entropy !== void 0) {
3104
+ const entropy = shannonEntropy(secret);
3105
+ if (entropy < rule.entropy) continue;
3106
+ }
3107
+ if (isGlobalAllowlisted(secret)) continue;
3108
+ const line = getLineForIndex(input, match.index);
3109
+ if (isRuleAllowlisted(rule, secret, match[0], line)) continue;
3110
+ const confidence = GENERIC_RULE_IDS.has(rule.id) ? "medium" : "high";
3111
+ secrets.push({
3112
+ rule: rule.id,
3113
+ label: rule.label,
3114
+ text: secret,
3115
+ confidence,
3116
+ start,
3117
+ end
3118
+ });
3119
+ matchedRanges.push({ start, end });
3120
+ if (match[0].length === 0) regex.lastIndex++;
3121
+ }
3122
+ }
3123
+ secrets.sort((a, b) => a.start - b.start);
3124
+ return secrets;
3125
+ }
3126
+ function redact(input, replacer) {
3127
+ const secrets = scan(input);
3128
+ if (secrets.length === 0) return input;
3129
+ let result = input;
3130
+ for (let i = secrets.length - 1; i >= 0; i--) {
3131
+ const secret = secrets[i];
3132
+ const replacement = replacer(secret);
3133
+ result = result.slice(0, secret.start) + replacement + result.slice(secret.end);
3134
+ }
3135
+ return result;
3136
+ }
3137
+
3138
+
3139
+
3140
+
3141
+ exports.redact = redact; exports.scan = scan; exports.shannonEntropy = shannonEntropy;
3142
+ //# sourceMappingURL=index.cjs.map