@nebutra/next-unicorn-skill 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.md +48 -12
- package/SKILL.md +87 -256
- package/dist/analyzer/pattern-catalog.d.ts +11 -8
- package/dist/analyzer/pattern-catalog.d.ts.map +1 -1
- package/dist/analyzer/pattern-catalog.js +273 -67
- package/dist/analyzer/pattern-catalog.js.map +1 -1
- package/dist/analyzer/scanner.d.ts +0 -1
- package/dist/analyzer/scanner.d.ts.map +1 -1
- package/dist/analyzer/scanner.js +70 -61
- package/dist/analyzer/scanner.js.map +1 -1
- package/dist/auditor/ux-auditor.d.ts +4 -1
- package/dist/auditor/ux-auditor.d.ts.map +1 -1
- package/dist/auditor/ux-auditor.js +25 -47
- package/dist/auditor/ux-auditor.js.map +1 -1
- package/dist/index.d.ts +40 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -24
- package/dist/index.js.map +1 -1
- package/dist/planner/migration-planner.d.ts +7 -2
- package/dist/planner/migration-planner.d.ts.map +1 -1
- package/dist/planner/migration-planner.js +16 -4
- package/dist/planner/migration-planner.js.map +1 -1
- package/dist/pr-creator/pr-description-builder.js +1 -1
- package/dist/pr-creator/pr-description-builder.js.map +1 -1
- package/dist/scorer/impact-scorer.d.ts +28 -2
- package/dist/scorer/impact-scorer.d.ts.map +1 -1
- package/dist/scorer/impact-scorer.js +46 -111
- package/dist/scorer/impact-scorer.js.map +1 -1
- package/dist/verifier/context7.d.ts +15 -4
- package/dist/verifier/context7.d.ts.map +1 -1
- package/dist/verifier/context7.js +12 -9
- package/dist/verifier/context7.js.map +1 -1
- package/package.json +12 -14
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns the full pattern catalog covering
|
|
3
|
-
* Each domain has
|
|
2
|
+
* Returns the full pattern catalog covering Vibe Coding domains.
|
|
3
|
+
* Each covered domain has 2–3 patterns for hand-rolled code detection.
|
|
4
|
+
*
|
|
5
|
+
* The catalog defines WHAT to detect, not WHAT to recommend.
|
|
6
|
+
* Library recommendations are generated dynamically by the AI agent.
|
|
4
7
|
*/
|
|
5
8
|
export function getPatternCatalog() {
|
|
6
9
|
return [
|
|
@@ -16,9 +19,6 @@ export function getPatternCatalog() {
|
|
|
16
19
|
/count\s*[=!]==?\s*1\s*\?\s*['"`].*['"`]\s*:\s*['"`].*['"`]/,
|
|
17
20
|
/\.length\s*[=!]==?\s*1\s*\?\s*['"`].*['"`]\s*:\s*['"`].*['"`]/,
|
|
18
21
|
],
|
|
19
|
-
suggestedLibrary: 'i18next',
|
|
20
|
-
suggestedVersion: '^23.0.0',
|
|
21
|
-
license: 'MIT',
|
|
22
22
|
confidenceBase: 0.7,
|
|
23
23
|
},
|
|
24
24
|
{
|
|
@@ -31,9 +31,6 @@ export function getPatternCatalog() {
|
|
|
31
31
|
/accept-language/i,
|
|
32
32
|
/toLocaleDateString\s*\(/,
|
|
33
33
|
],
|
|
34
|
-
suggestedLibrary: 'react-i18next',
|
|
35
|
-
suggestedVersion: '^14.0.0',
|
|
36
|
-
license: 'MIT',
|
|
37
34
|
confidenceBase: 0.65,
|
|
38
35
|
},
|
|
39
36
|
// -----------------------------------------------------------------------
|
|
@@ -49,9 +46,6 @@ export function getPatternCatalog() {
|
|
|
49
46
|
/document\s*\.\s*head\s*\.\s*appendChild/,
|
|
50
47
|
/document\s*\.\s*querySelector\s*\(\s*['"`]meta\[/,
|
|
51
48
|
],
|
|
52
|
-
suggestedLibrary: 'next-seo',
|
|
53
|
-
suggestedVersion: '^6.0.0',
|
|
54
|
-
license: 'MIT',
|
|
55
49
|
confidenceBase: 0.75,
|
|
56
50
|
},
|
|
57
51
|
{
|
|
@@ -64,13 +58,10 @@ export function getPatternCatalog() {
|
|
|
64
58
|
/<urlset\s+xmlns/,
|
|
65
59
|
/writeFileSync\s*\(.*sitemap/i,
|
|
66
60
|
],
|
|
67
|
-
suggestedLibrary: 'next-sitemap',
|
|
68
|
-
suggestedVersion: '^4.0.0',
|
|
69
|
-
license: 'MIT',
|
|
70
61
|
confidenceBase: 0.8,
|
|
71
62
|
},
|
|
72
63
|
// -----------------------------------------------------------------------
|
|
73
|
-
// growth-hacking — A/B Testing, Analytics, Feature Flags
|
|
64
|
+
// growth-hacking — A/B Testing, Analytics, Feature Flags
|
|
74
65
|
// -----------------------------------------------------------------------
|
|
75
66
|
{
|
|
76
67
|
id: 'growth-manual-ab-test',
|
|
@@ -82,9 +73,6 @@ export function getPatternCatalog() {
|
|
|
82
73
|
/variant\s*=\s*['"`][AB]['"`]/i,
|
|
83
74
|
/experiment\s*[=:]\s*.*random/i,
|
|
84
75
|
],
|
|
85
|
-
suggestedLibrary: 'posthog-js',
|
|
86
|
-
suggestedVersion: '^1.100.0',
|
|
87
|
-
license: 'MIT',
|
|
88
76
|
confidenceBase: 0.7,
|
|
89
77
|
},
|
|
90
78
|
{
|
|
@@ -97,9 +85,6 @@ export function getPatternCatalog() {
|
|
|
97
85
|
/featureFlags?\s*\[/,
|
|
98
86
|
/isFeatureEnabled\s*\(/,
|
|
99
87
|
],
|
|
100
|
-
suggestedLibrary: 'unleash-client',
|
|
101
|
-
suggestedVersion: '^5.0.0',
|
|
102
|
-
license: 'Apache-2.0',
|
|
103
88
|
confidenceBase: 0.6,
|
|
104
89
|
},
|
|
105
90
|
// -----------------------------------------------------------------------
|
|
@@ -115,9 +100,6 @@ export function getPatternCatalog() {
|
|
|
115
100
|
/f['"].*\{.*\}.*['"].*(?:prompt|model|completion)/i,
|
|
116
101
|
/\.replace\s*\(\s*['"`]\{.*\}['"`]/,
|
|
117
102
|
],
|
|
118
|
-
suggestedLibrary: 'langchain',
|
|
119
|
-
suggestedVersion: '^0.2.0',
|
|
120
|
-
license: 'MIT',
|
|
121
103
|
confidenceBase: 0.65,
|
|
122
104
|
},
|
|
123
105
|
{
|
|
@@ -130,13 +112,10 @@ export function getPatternCatalog() {
|
|
|
130
112
|
/axios\s*\.\s*post\s*\(\s*['"`].*(?:completions|chat|generate)/i,
|
|
131
113
|
/requests\s*\.\s*post\s*\(\s*['"`].*(?:v1\/|api\/)/i,
|
|
132
114
|
],
|
|
133
|
-
suggestedLibrary: 'ai',
|
|
134
|
-
suggestedVersion: '^3.0.0',
|
|
135
|
-
license: 'Apache-2.0',
|
|
136
115
|
confidenceBase: 0.7,
|
|
137
116
|
},
|
|
138
117
|
// -----------------------------------------------------------------------
|
|
139
|
-
// agent-architecture — MCP Integration, Tool Orchestration, Context
|
|
118
|
+
// agent-architecture — MCP Integration, Tool Orchestration, Context
|
|
140
119
|
// -----------------------------------------------------------------------
|
|
141
120
|
{
|
|
142
121
|
id: 'agent-manual-tool-dispatch',
|
|
@@ -148,9 +127,6 @@ export function getPatternCatalog() {
|
|
|
148
127
|
/if\s*\(\s*tool(?:Name|_name)\s*===?\s*['"`]/i,
|
|
149
128
|
/tool_map\s*\[/i,
|
|
150
129
|
],
|
|
151
|
-
suggestedLibrary: '@modelcontextprotocol/sdk',
|
|
152
|
-
suggestedVersion: '^1.0.0',
|
|
153
|
-
license: 'MIT',
|
|
154
130
|
confidenceBase: 0.7,
|
|
155
131
|
},
|
|
156
132
|
{
|
|
@@ -163,9 +139,6 @@ export function getPatternCatalog() {
|
|
|
163
139
|
/truncat(?:e|ion)\s*.*(?:context|message|prompt)/i,
|
|
164
140
|
/maxTokens?\s*[=:]/i,
|
|
165
141
|
],
|
|
166
|
-
suggestedLibrary: 'tiktoken',
|
|
167
|
-
suggestedVersion: '^1.0.0',
|
|
168
|
-
license: 'MIT',
|
|
169
142
|
confidenceBase: 0.6,
|
|
170
143
|
},
|
|
171
144
|
// -----------------------------------------------------------------------
|
|
@@ -181,9 +154,6 @@ export function getPatternCatalog() {
|
|
|
181
154
|
/\.replace\s*\(\s*\/\s*\\\*\\\*/,
|
|
182
155
|
/\.split\s*\(\s*['"`]\\n['"`]\s*\)\s*\.\s*map/,
|
|
183
156
|
],
|
|
184
|
-
suggestedLibrary: 'contentlayer',
|
|
185
|
-
suggestedVersion: '^0.3.0',
|
|
186
|
-
license: 'MIT',
|
|
187
157
|
confidenceBase: 0.65,
|
|
188
158
|
},
|
|
189
159
|
{
|
|
@@ -196,9 +166,6 @@ export function getPatternCatalog() {
|
|
|
196
166
|
/glob\s*\(.*\.mdx?\b/i,
|
|
197
167
|
/frontmatter|gray-matter/i,
|
|
198
168
|
],
|
|
199
|
-
suggestedLibrary: 'next-mdx-remote',
|
|
200
|
-
suggestedVersion: '^4.0.0',
|
|
201
|
-
license: 'MIT',
|
|
202
169
|
confidenceBase: 0.6,
|
|
203
170
|
},
|
|
204
171
|
// -----------------------------------------------------------------------
|
|
@@ -214,9 +181,6 @@ export function getPatternCatalog() {
|
|
|
214
181
|
/payment[_-]?intent/i,
|
|
215
182
|
/charge\s*\.\s*create/i,
|
|
216
183
|
],
|
|
217
|
-
suggestedLibrary: 'stripe',
|
|
218
|
-
suggestedVersion: '^14.0.0',
|
|
219
|
-
license: 'MIT',
|
|
220
184
|
confidenceBase: 0.75,
|
|
221
185
|
},
|
|
222
186
|
{
|
|
@@ -229,13 +193,10 @@ export function getPatternCatalog() {
|
|
|
229
193
|
/vat\s*[=:*]/i,
|
|
230
194
|
/calculateTax\s*\(/i,
|
|
231
195
|
],
|
|
232
|
-
suggestedLibrary: 'taxjar',
|
|
233
|
-
suggestedVersion: '^5.0.0',
|
|
234
|
-
license: 'MIT',
|
|
235
196
|
confidenceBase: 0.65,
|
|
236
197
|
},
|
|
237
198
|
// -----------------------------------------------------------------------
|
|
238
|
-
// observability — Logging, Tracing, Metrics, Error Tracking
|
|
199
|
+
// observability — Logging, Tracing, Metrics, Error Tracking
|
|
239
200
|
// -----------------------------------------------------------------------
|
|
240
201
|
{
|
|
241
202
|
id: 'observability-manual-logging',
|
|
@@ -245,9 +206,6 @@ export function getPatternCatalog() {
|
|
|
245
206
|
codePatterns: [
|
|
246
207
|
/console\s*\.\s*(?:log|error|warn|info)\s*\(/,
|
|
247
208
|
],
|
|
248
|
-
suggestedLibrary: 'pino',
|
|
249
|
-
suggestedVersion: '^9.0.0',
|
|
250
|
-
license: 'MIT',
|
|
251
209
|
confidenceBase: 0.55,
|
|
252
210
|
},
|
|
253
211
|
{
|
|
@@ -260,13 +218,10 @@ export function getPatternCatalog() {
|
|
|
260
218
|
/window\s*\.\s*onerror/,
|
|
261
219
|
/process\s*\.\s*on\s*\(\s*['"`]uncaughtException['"`]/,
|
|
262
220
|
],
|
|
263
|
-
suggestedLibrary: 'sentry',
|
|
264
|
-
suggestedVersion: '^8.0.0',
|
|
265
|
-
license: 'MIT',
|
|
266
221
|
confidenceBase: 0.7,
|
|
267
222
|
},
|
|
268
223
|
// -----------------------------------------------------------------------
|
|
269
|
-
// auth-security — Authentication, Authorization
|
|
224
|
+
// auth-security — Authentication, Authorization, Rate Limiting
|
|
270
225
|
// -----------------------------------------------------------------------
|
|
271
226
|
{
|
|
272
227
|
id: 'auth-manual-jwt-handling',
|
|
@@ -279,9 +234,6 @@ export function getPatternCatalog() {
|
|
|
279
234
|
/jwt\s*\.\s*sign\s*\(/i,
|
|
280
235
|
/createHmac\s*\(/,
|
|
281
236
|
],
|
|
282
|
-
suggestedLibrary: 'jose',
|
|
283
|
-
suggestedVersion: '^5.0.0',
|
|
284
|
-
license: 'MIT',
|
|
285
237
|
confidenceBase: 0.75,
|
|
286
238
|
},
|
|
287
239
|
{
|
|
@@ -294,13 +246,10 @@ export function getPatternCatalog() {
|
|
|
294
246
|
/rateLimi(?:t|ter)/i,
|
|
295
247
|
/new\s+Map\s*\(\s*\).*(?:timestamp|count|window)/i,
|
|
296
248
|
],
|
|
297
|
-
suggestedLibrary: 'rate-limiter-flexible',
|
|
298
|
-
suggestedVersion: '^5.0.0',
|
|
299
|
-
license: 'ISC',
|
|
300
249
|
confidenceBase: 0.65,
|
|
301
250
|
},
|
|
302
251
|
// -----------------------------------------------------------------------
|
|
303
|
-
// ux-completeness —
|
|
252
|
+
// ux-completeness — Forms, Loading States
|
|
304
253
|
// -----------------------------------------------------------------------
|
|
305
254
|
{
|
|
306
255
|
id: 'ux-manual-form-validation',
|
|
@@ -312,9 +261,6 @@ export function getPatternCatalog() {
|
|
|
312
261
|
/errors\s*\[\s*['"`]\w+['"`]\s*\]/,
|
|
313
262
|
/validate\w*\s*=\s*\(\s*\)\s*=>/,
|
|
314
263
|
],
|
|
315
|
-
suggestedLibrary: 'react-hook-form',
|
|
316
|
-
suggestedVersion: '^7.50.0',
|
|
317
|
-
license: 'MIT',
|
|
318
264
|
confidenceBase: 0.7,
|
|
319
265
|
},
|
|
320
266
|
{
|
|
@@ -326,11 +272,271 @@ export function getPatternCatalog() {
|
|
|
326
272
|
/isLoading\s*\?\s*.*(?:Loading|Spinner|\.\.\.)/i,
|
|
327
273
|
/useState\s*<\s*boolean\s*>\s*\(\s*(?:true|false)\s*\).*loading/i,
|
|
328
274
|
],
|
|
329
|
-
suggestedLibrary: 'react-loading-skeleton',
|
|
330
|
-
suggestedVersion: '^3.4.0',
|
|
331
|
-
license: 'MIT',
|
|
332
275
|
confidenceBase: 0.55,
|
|
333
276
|
},
|
|
277
|
+
// -----------------------------------------------------------------------
|
|
278
|
+
// state-management — Manual state chains, Redux boilerplate
|
|
279
|
+
// -----------------------------------------------------------------------
|
|
280
|
+
{
|
|
281
|
+
id: 'state-manual-usestate-chain',
|
|
282
|
+
domain: 'state-management',
|
|
283
|
+
description: 'Multiple related useState hooks that should be a single store',
|
|
284
|
+
filePatterns: ['**/*.tsx', '**/*.jsx'],
|
|
285
|
+
codePatterns: [
|
|
286
|
+
/useState\s*\(.*\);\s*\n\s*const\s*\[.*\]\s*=\s*useState\s*\(.*\);\s*\n\s*const\s*\[.*\]\s*=\s*useState/,
|
|
287
|
+
/const\s*\[\w+,\s*set\w+\]\s*=\s*useState[\s\S]{0,100}const\s*\[\w+,\s*set\w+\]\s*=\s*useState[\s\S]{0,100}const\s*\[\w+,\s*set\w+\]\s*=\s*useState/,
|
|
288
|
+
],
|
|
289
|
+
confidenceBase: 0.6,
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
id: 'state-manual-context-provider',
|
|
293
|
+
domain: 'state-management',
|
|
294
|
+
description: 'Hand-rolled React Context for global state management',
|
|
295
|
+
filePatterns: ['**/*.tsx', '**/*.jsx', '**/*.ts', '**/*.js'],
|
|
296
|
+
codePatterns: [
|
|
297
|
+
/createContext\s*<[\s\S]*>\s*\(/,
|
|
298
|
+
/useReducer\s*\(\s*\w+Reducer/,
|
|
299
|
+
/Provider\s+value\s*=\s*\{[\s\S]*dispatch/,
|
|
300
|
+
],
|
|
301
|
+
confidenceBase: 0.55,
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
id: 'state-manual-redux-boilerplate',
|
|
305
|
+
domain: 'state-management',
|
|
306
|
+
description: 'Redux boilerplate without Redux Toolkit (manual action creators, reducers)',
|
|
307
|
+
filePatterns: ['**/*.ts', '**/*.js'],
|
|
308
|
+
codePatterns: [
|
|
309
|
+
/type\s*:\s*['"`][A-Z_]+['"`]\s*,\s*payload/,
|
|
310
|
+
/switch\s*\(\s*action\s*\.\s*type\s*\)/,
|
|
311
|
+
/const\s+\w+\s*=\s*\(\s*state\s*=\s*initialState\s*,\s*action\s*\)/,
|
|
312
|
+
],
|
|
313
|
+
confidenceBase: 0.75,
|
|
314
|
+
},
|
|
315
|
+
// -----------------------------------------------------------------------
|
|
316
|
+
// data-fetching-caching — Manual fetch + useEffect patterns
|
|
317
|
+
// -----------------------------------------------------------------------
|
|
318
|
+
{
|
|
319
|
+
id: 'data-fetch-useeffect',
|
|
320
|
+
domain: 'data-fetching-caching',
|
|
321
|
+
description: 'Manual data fetching with fetch/axios inside useEffect',
|
|
322
|
+
filePatterns: ['**/*.tsx', '**/*.jsx'],
|
|
323
|
+
codePatterns: [
|
|
324
|
+
/useEffect\s*\(\s*\(\s*\)\s*=>\s*\{[\s\S]{0,200}fetch\s*\(/,
|
|
325
|
+
/useEffect\s*\(\s*\(\s*\)\s*=>\s*\{[\s\S]{0,200}axios\s*\.\s*get/,
|
|
326
|
+
/useEffect\s*\(\s*\(\s*\)\s*=>\s*\{[\s\S]{0,100}setLoading\s*\(\s*true\s*\)/,
|
|
327
|
+
],
|
|
328
|
+
confidenceBase: 0.7,
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
id: 'data-fetch-manual-cache',
|
|
332
|
+
domain: 'data-fetching-caching',
|
|
333
|
+
description: 'Hand-rolled client-side data cache with Map or object',
|
|
334
|
+
filePatterns: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
|
|
335
|
+
codePatterns: [
|
|
336
|
+
/new\s+Map\s*<.*,.*>\s*\(\s*\)[\s\S]{0,200}\.set\s*\([\s\S]{0,100}\.get\s*\(/,
|
|
337
|
+
/cache\s*\[\s*\w+\s*\]\s*=[\s\S]{0,100}cache\s*\[\s*\w+\s*\]/,
|
|
338
|
+
/const\s+cache\s*=\s*(?:new\s+Map|{})/,
|
|
339
|
+
],
|
|
340
|
+
confidenceBase: 0.6,
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: 'data-fetch-manual-retry',
|
|
344
|
+
domain: 'data-fetching-caching',
|
|
345
|
+
description: 'Hand-rolled fetch retry logic with loops or recursion',
|
|
346
|
+
filePatterns: ['**/*.ts', '**/*.js'],
|
|
347
|
+
codePatterns: [
|
|
348
|
+
/retry\s*[<>=]\s*\d+[\s\S]{0,200}fetch\s*\(/i,
|
|
349
|
+
/for\s*\(\s*let\s+\w+\s*=\s*0[\s\S]{0,200}fetch\s*\(/,
|
|
350
|
+
/attempts?\s*[+\-]=\s*1[\s\S]{0,100}(?:fetch|axios)/i,
|
|
351
|
+
],
|
|
352
|
+
confidenceBase: 0.7,
|
|
353
|
+
},
|
|
354
|
+
// -----------------------------------------------------------------------
|
|
355
|
+
// forms-ux — Manual form state and validation
|
|
356
|
+
// -----------------------------------------------------------------------
|
|
357
|
+
{
|
|
358
|
+
id: 'forms-manual-state-tracking',
|
|
359
|
+
domain: 'forms-ux',
|
|
360
|
+
description: 'Multiple useState hooks for individual form fields',
|
|
361
|
+
filePatterns: ['**/*.tsx', '**/*.jsx'],
|
|
362
|
+
codePatterns: [
|
|
363
|
+
/const\s*\[\s*\w+,\s*set\w+\s*\]\s*=\s*useState\s*\(\s*['"`]{2}\s*\)[\s\S]{0,200}onChange/,
|
|
364
|
+
/e\s*\.\s*target\s*\.\s*value[\s\S]{0,50}set\w+\s*\(\s*e\s*\.\s*target\s*\.\s*value\s*\)/,
|
|
365
|
+
],
|
|
366
|
+
confidenceBase: 0.65,
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
id: 'forms-manual-submit-handler',
|
|
370
|
+
domain: 'forms-ux',
|
|
371
|
+
description: 'Hand-rolled form submission with manual preventDefault and state collection',
|
|
372
|
+
filePatterns: ['**/*.tsx', '**/*.jsx'],
|
|
373
|
+
codePatterns: [
|
|
374
|
+
/handleSubmit[\s\S]{0,100}preventDefault\s*\(\s*\)[\s\S]{0,200}fetch\s*\(/,
|
|
375
|
+
/onSubmit[\s\S]{0,100}e\s*\.\s*preventDefault[\s\S]{0,200}(?:setLoading|setError)/,
|
|
376
|
+
],
|
|
377
|
+
confidenceBase: 0.6,
|
|
378
|
+
},
|
|
379
|
+
// -----------------------------------------------------------------------
|
|
380
|
+
// error-handling-resilience — Error boundaries, Result types
|
|
381
|
+
// -----------------------------------------------------------------------
|
|
382
|
+
{
|
|
383
|
+
id: 'error-manual-error-boundary',
|
|
384
|
+
domain: 'error-handling-resilience',
|
|
385
|
+
description: 'Hand-rolled error boundary class component',
|
|
386
|
+
filePatterns: ['**/*.tsx', '**/*.jsx', '**/*.ts', '**/*.js'],
|
|
387
|
+
codePatterns: [
|
|
388
|
+
/componentDidCatch\s*\(/,
|
|
389
|
+
/getDerivedStateFromError\s*\(/,
|
|
390
|
+
/class\s+\w*ErrorBoundary\s+extends\s+(?:React\.)?Component/,
|
|
391
|
+
],
|
|
392
|
+
confidenceBase: 0.8,
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
id: 'error-manual-result-type',
|
|
396
|
+
domain: 'error-handling-resilience',
|
|
397
|
+
description: 'Hand-rolled Result/Either type for error handling',
|
|
398
|
+
filePatterns: ['**/*.ts', '**/*.js'],
|
|
399
|
+
codePatterns: [
|
|
400
|
+
/type\s+Result\s*<[\s\S]*>\s*=\s*\{?\s*(?:success|ok|data|error)/i,
|
|
401
|
+
/interface\s+(?:Result|Either)\s*<[\s\S]*>\s*\{/i,
|
|
402
|
+
/\{\s*ok\s*:\s*true[\s\S]{0,50}data\s*:[\s\S]{0,100}\{\s*ok\s*:\s*false[\s\S]{0,50}error\s*:/,
|
|
403
|
+
],
|
|
404
|
+
confidenceBase: 0.65,
|
|
405
|
+
},
|
|
406
|
+
// -----------------------------------------------------------------------
|
|
407
|
+
// a11y-accessibility — Missing ARIA, keyboard navigation
|
|
408
|
+
// -----------------------------------------------------------------------
|
|
409
|
+
{
|
|
410
|
+
id: 'a11y-manual-click-handler-div',
|
|
411
|
+
domain: 'a11y-accessibility',
|
|
412
|
+
description: 'Clickable div/span without keyboard accessibility',
|
|
413
|
+
filePatterns: ['**/*.tsx', '**/*.jsx'],
|
|
414
|
+
codePatterns: [
|
|
415
|
+
/<div\s[^>]*onClick\s*=\s*\{/,
|
|
416
|
+
/<span\s[^>]*onClick\s*=\s*\{/,
|
|
417
|
+
],
|
|
418
|
+
confidenceBase: 0.6,
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
id: 'a11y-manual-focus-management',
|
|
422
|
+
domain: 'a11y-accessibility',
|
|
423
|
+
description: 'Hand-rolled focus management and keyboard trap',
|
|
424
|
+
filePatterns: ['**/*.tsx', '**/*.jsx', '**/*.ts', '**/*.js'],
|
|
425
|
+
codePatterns: [
|
|
426
|
+
/\.focus\s*\(\s*\)[\s\S]{0,200}(?:tabIndex|keyCode|keyDown)/i,
|
|
427
|
+
/addEventListener\s*\(\s*['"`]keydown['"`][\s\S]{0,200}(?:Tab|Escape|27|9)\b/,
|
|
428
|
+
/document\s*\.\s*activeElement/,
|
|
429
|
+
],
|
|
430
|
+
confidenceBase: 0.55,
|
|
431
|
+
},
|
|
432
|
+
// -----------------------------------------------------------------------
|
|
433
|
+
// file-upload-media — Manual FileReader, drag-and-drop
|
|
434
|
+
// -----------------------------------------------------------------------
|
|
435
|
+
{
|
|
436
|
+
id: 'upload-manual-filereader',
|
|
437
|
+
domain: 'file-upload-media',
|
|
438
|
+
description: 'Hand-rolled file reading with FileReader API',
|
|
439
|
+
filePatterns: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
|
|
440
|
+
codePatterns: [
|
|
441
|
+
/new\s+FileReader\s*\(\s*\)/,
|
|
442
|
+
/readAsDataURL\s*\(/,
|
|
443
|
+
/readAsArrayBuffer\s*\(/,
|
|
444
|
+
],
|
|
445
|
+
confidenceBase: 0.6,
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
id: 'upload-manual-drag-drop',
|
|
449
|
+
domain: 'file-upload-media',
|
|
450
|
+
description: 'Hand-rolled drag-and-drop file upload handling',
|
|
451
|
+
filePatterns: ['**/*.tsx', '**/*.jsx', '**/*.ts', '**/*.js'],
|
|
452
|
+
codePatterns: [
|
|
453
|
+
/addEventListener\s*\(\s*['"`](?:dragover|dragenter|drop)['"`]/,
|
|
454
|
+
/onDrop\s*=\s*\{[\s\S]{0,200}dataTransfer\s*\.\s*files/,
|
|
455
|
+
/e\s*\.\s*dataTransfer\s*\.\s*files/,
|
|
456
|
+
],
|
|
457
|
+
confidenceBase: 0.65,
|
|
458
|
+
},
|
|
459
|
+
// -----------------------------------------------------------------------
|
|
460
|
+
// database-orm-migrations — Raw SQL, manual migrations
|
|
461
|
+
// -----------------------------------------------------------------------
|
|
462
|
+
{
|
|
463
|
+
id: 'db-manual-raw-sql',
|
|
464
|
+
domain: 'database-orm-migrations',
|
|
465
|
+
description: 'Hand-rolled raw SQL queries with string interpolation',
|
|
466
|
+
filePatterns: ['**/*.ts', '**/*.js'],
|
|
467
|
+
codePatterns: [
|
|
468
|
+
/`SELECT\s[\s\S]*FROM\s[\s\S]*\$\{/i,
|
|
469
|
+
/`INSERT\s+INTO\s[\s\S]*\$\{/i,
|
|
470
|
+
/`UPDATE\s[\s\S]*SET\s[\s\S]*\$\{/i,
|
|
471
|
+
/query\s*\(\s*['"`](?:SELECT|INSERT|UPDATE|DELETE)\b/i,
|
|
472
|
+
],
|
|
473
|
+
confidenceBase: 0.7,
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
id: 'db-manual-migration-script',
|
|
477
|
+
domain: 'database-orm-migrations',
|
|
478
|
+
description: 'Hand-rolled database migration with CREATE TABLE / ALTER TABLE',
|
|
479
|
+
filePatterns: ['**/*.ts', '**/*.js', '**/*.sql'],
|
|
480
|
+
codePatterns: [
|
|
481
|
+
/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?\w+/i,
|
|
482
|
+
/ALTER\s+TABLE\s+\w+\s+(?:ADD|DROP|MODIFY)/i,
|
|
483
|
+
/\.exec\s*\(\s*['"`](?:CREATE|ALTER|DROP)\s/i,
|
|
484
|
+
],
|
|
485
|
+
confidenceBase: 0.65,
|
|
486
|
+
},
|
|
487
|
+
// -----------------------------------------------------------------------
|
|
488
|
+
// logging-tracing-metrics — Structured logging, OpenTelemetry
|
|
489
|
+
// -----------------------------------------------------------------------
|
|
490
|
+
{
|
|
491
|
+
id: 'metrics-manual-timing',
|
|
492
|
+
domain: 'logging-tracing-metrics',
|
|
493
|
+
description: 'Hand-rolled performance timing with Date.now() or performance.now()',
|
|
494
|
+
filePatterns: ['**/*.ts', '**/*.js', '**/*.tsx', '**/*.jsx'],
|
|
495
|
+
codePatterns: [
|
|
496
|
+
/const\s+\w*[Ss]tart\w*\s*=\s*(?:Date|performance)\s*\.\s*now\s*\(\s*\)/,
|
|
497
|
+
/(?:Date|performance)\s*\.\s*now\s*\(\s*\)\s*-\s*\w*[Ss]tart/,
|
|
498
|
+
/console\s*\.\s*time\s*\(/,
|
|
499
|
+
],
|
|
500
|
+
confidenceBase: 0.55,
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
id: 'metrics-manual-structured-log',
|
|
504
|
+
domain: 'logging-tracing-metrics',
|
|
505
|
+
description: 'Hand-rolled structured logging with JSON.stringify',
|
|
506
|
+
filePatterns: ['**/*.ts', '**/*.js'],
|
|
507
|
+
codePatterns: [
|
|
508
|
+
/console\s*\.\s*(?:log|info)\s*\(\s*JSON\s*\.\s*stringify\s*\(/,
|
|
509
|
+
/console\s*\.\s*(?:log|info)\s*\(\s*\{[\s\S]{0,200}(?:timestamp|level|message)/i,
|
|
510
|
+
],
|
|
511
|
+
confidenceBase: 0.7,
|
|
512
|
+
},
|
|
513
|
+
// -----------------------------------------------------------------------
|
|
514
|
+
// testing-strategy — Manual test utilities
|
|
515
|
+
// -----------------------------------------------------------------------
|
|
516
|
+
{
|
|
517
|
+
id: 'test-manual-assertions',
|
|
518
|
+
domain: 'testing-strategy',
|
|
519
|
+
description: 'Hand-rolled test assertions without a test framework',
|
|
520
|
+
filePatterns: ['**/*.test.ts', '**/*.test.js', '**/*.spec.ts', '**/*.spec.js'],
|
|
521
|
+
codePatterns: [
|
|
522
|
+
/if\s*\([\s\S]{0,50}!==[\s\S]{0,50}\)\s*throw\s+new\s+Error/,
|
|
523
|
+
/assert\s*\.\s*(?:equal|strictEqual|deepEqual)\s*\(/,
|
|
524
|
+
/console\s*\.\s*assert\s*\(/,
|
|
525
|
+
],
|
|
526
|
+
confidenceBase: 0.7,
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
id: 'test-manual-mocks',
|
|
530
|
+
domain: 'testing-strategy',
|
|
531
|
+
description: 'Hand-rolled mock/stub implementations',
|
|
532
|
+
filePatterns: ['**/*.test.ts', '**/*.test.js', '**/*.spec.ts', '**/*.spec.js'],
|
|
533
|
+
codePatterns: [
|
|
534
|
+
/const\s+mock\w+\s*=\s*\(\s*\)\s*=>\s*(?:Promise\s*\.\s*resolve|{)/i,
|
|
535
|
+
/jest\s*\.\s*fn\s*\(\s*\)/,
|
|
536
|
+
/sinon\s*\.\s*stub\s*\(/,
|
|
537
|
+
],
|
|
538
|
+
confidenceBase: 0.5,
|
|
539
|
+
},
|
|
334
540
|
];
|
|
335
541
|
}
|
|
336
542
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-catalog.js","sourceRoot":"","sources":["../../src/analyzer/pattern-catalog.ts"],"names":[],"mappings":"AA2BA
|
|
1
|
+
{"version":3,"file":"pattern-catalog.js","sourceRoot":"","sources":["../../src/analyzer/pattern-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/analyzer/scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/analyzer/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAO9D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAmQD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8E1E"}
|