@next-secure-check/rules 0.1.0 → 0.2.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.
@@ -0,0 +1,17 @@
1
+ import type { Severity, SourceFile } from "@next-secure-check/core";
2
+ export type AstMatch = {
3
+ line: number;
4
+ column: number;
5
+ evidence: string;
6
+ sourceLine: string;
7
+ };
8
+ export type DangerouslySetInnerHtmlMatch = AstMatch & {
9
+ severity: Extract<Severity, "LOW" | "MEDIUM">;
10
+ };
11
+ export declare function findCommandExecutionMatches(file: SourceFile): AstMatch[];
12
+ export declare function findRawSqlConcatMatches(file: SourceFile): AstMatch[];
13
+ export declare function findDangerouslySetInnerHtmlMatches(file: SourceFile): DangerouslySetInnerHtmlMatch[];
14
+ export declare function findPasswordHandlingMatches(file: SourceFile): AstMatch[];
15
+ export declare function findRouteHandlerExports(file: SourceFile): AstMatch[];
16
+ export declare function findUploadRouteHandlerMatches(file: SourceFile): AstMatch[];
17
+ //# sourceMappingURL=ast-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.d.ts","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGpE,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;CAC/C,CAAC;AAQF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAsBxE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAmBpE;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,GAAG,4BAA4B,EAAE,CAqBnG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAexE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAYpE;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,CAqB1E"}
@@ -0,0 +1,417 @@
1
+ import ts from "typescript";
2
+ const COMMAND_EXECUTION_NAMES = new Set(["exec", "execSync", "spawn", "spawnSync"]);
3
+ const ROUTE_HANDLER_NAMES = new Set(["GET", "POST", "PUT", "DELETE", "PATCH"]);
4
+ const SQL_QUERY_METHOD_NAMES = new Set(["query", "execute"]);
5
+ const SQL_RAW_TAG_NAMES = new Set(["$queryRaw", "$executeRaw"]);
6
+ const SQL_KEYWORD_PATTERN = /\b(SELECT|INSERT|UPDATE|DELETE)\b/i;
7
+ export function findCommandExecutionMatches(file) {
8
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
9
+ const commandIdentifiers = new Set();
10
+ const childProcessNamespaces = new Set();
11
+ const declarationNodes = [];
12
+ visit(sourceFile, (node) => {
13
+ collectChildProcessImports(node, commandIdentifiers, childProcessNamespaces, declarationNodes);
14
+ collectChildProcessRequires(node, commandIdentifiers, childProcessNamespaces, declarationNodes);
15
+ });
16
+ const matches = declarationNodes.map((node) => matchFromNode(file, sourceFile, node));
17
+ visit(sourceFile, (node) => {
18
+ if (!ts.isCallExpression(node) || !isCommandExecutionCall(node.expression, commandIdentifiers, childProcessNamespaces)) {
19
+ return;
20
+ }
21
+ matches.push(matchFromNode(file, sourceFile, node));
22
+ });
23
+ return dedupeMatches(matches);
24
+ }
25
+ export function findRawSqlConcatMatches(file) {
26
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
27
+ const matches = [];
28
+ visit(sourceFile, (node) => {
29
+ if (ts.isCallExpression(node) && isSqlQuerySinkCall(node)) {
30
+ const [firstArgument] = node.arguments;
31
+ if (isInterpolatedSqlTemplate(firstArgument)) {
32
+ matches.push(matchFromNode(file, sourceFile, node));
33
+ }
34
+ return;
35
+ }
36
+ if (ts.isTaggedTemplateExpression(node) && isRawSqlTaggedTemplate(node) && isInterpolatedSqlTemplate(node.template)) {
37
+ matches.push(matchFromNode(file, sourceFile, node));
38
+ }
39
+ });
40
+ return dedupeMatches(matches);
41
+ }
42
+ export function findDangerouslySetInnerHtmlMatches(file) {
43
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
44
+ const matches = [];
45
+ visit(sourceFile, (node) => {
46
+ if (!ts.isJsxAttribute(node) || !ts.isIdentifier(node.name) || node.name.text !== "dangerouslySetInnerHTML") {
47
+ return;
48
+ }
49
+ const severity = dangerouslySetInnerHtmlSeverity(node.initializer);
50
+ if (!severity) {
51
+ return;
52
+ }
53
+ matches.push({
54
+ ...matchFromNode(file, sourceFile, node),
55
+ severity
56
+ });
57
+ });
58
+ return dedupeMatches(matches);
59
+ }
60
+ export function findPasswordHandlingMatches(file) {
61
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
62
+ const matches = [];
63
+ if (hasPasswordHashingCall(sourceFile)) {
64
+ return matches;
65
+ }
66
+ visit(sourceFile, (node) => {
67
+ if (isPasswordHandlingNode(node)) {
68
+ matches.push(matchFromNode(file, sourceFile, node));
69
+ }
70
+ });
71
+ return dedupeMatches(matches);
72
+ }
73
+ export function findRouteHandlerExports(file) {
74
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
75
+ const matches = [];
76
+ visit(sourceFile, (node) => {
77
+ const name = exportedRouteHandlerName(node);
78
+ if (name && (name === "DEFAULT" || ROUTE_HANDLER_NAMES.has(name))) {
79
+ matches.push(matchFromNode(file, sourceFile, node));
80
+ }
81
+ });
82
+ return dedupeMatches(matches);
83
+ }
84
+ export function findUploadRouteHandlerMatches(file) {
85
+ if (!isApiRouteFilePath(file.path)) {
86
+ return [];
87
+ }
88
+ const sourceFile = ts.createSourceFile(file.path, file.content, ts.ScriptTarget.Latest, true, scriptKindForPath(file.path));
89
+ const routeHandlerMatches = [];
90
+ let hasUploadHandling = false;
91
+ visit(sourceFile, (node) => {
92
+ const name = exportedRouteHandlerName(node);
93
+ if (name && (name === "DEFAULT" || name === "POST" || name === "PUT" || name === "PATCH")) {
94
+ routeHandlerMatches.push(matchFromNode(file, sourceFile, node));
95
+ }
96
+ if (!hasUploadHandling && isUploadHandlingNode(node)) {
97
+ hasUploadHandling = true;
98
+ }
99
+ });
100
+ return hasUploadHandling ? dedupeMatches(routeHandlerMatches) : [];
101
+ }
102
+ function collectChildProcessImports(node, commandIdentifiers, childProcessNamespaces, declarationNodes) {
103
+ if (!ts.isImportDeclaration(node) || !isChildProcessSpecifier(node.moduleSpecifier)) {
104
+ return;
105
+ }
106
+ const importClause = node.importClause;
107
+ if (!importClause) {
108
+ return;
109
+ }
110
+ if (importClause.name) {
111
+ childProcessNamespaces.add(importClause.name.text);
112
+ }
113
+ const namedBindings = importClause.namedBindings;
114
+ if (namedBindings && ts.isNamespaceImport(namedBindings)) {
115
+ childProcessNamespaces.add(namedBindings.name.text);
116
+ return;
117
+ }
118
+ if (!namedBindings || !ts.isNamedImports(namedBindings)) {
119
+ return;
120
+ }
121
+ for (const importSpecifier of namedBindings.elements) {
122
+ const importedName = importSpecifier.propertyName?.text ?? importSpecifier.name.text;
123
+ if (!COMMAND_EXECUTION_NAMES.has(importedName)) {
124
+ continue;
125
+ }
126
+ commandIdentifiers.add(importSpecifier.name.text);
127
+ declarationNodes.push(importSpecifier);
128
+ }
129
+ }
130
+ function collectChildProcessRequires(node, commandIdentifiers, childProcessNamespaces, declarationNodes) {
131
+ if (!ts.isVariableDeclaration(node) || !node.initializer) {
132
+ return;
133
+ }
134
+ if (isRequireChildProcessCall(node.initializer)) {
135
+ if (ts.isIdentifier(node.name)) {
136
+ childProcessNamespaces.add(node.name.text);
137
+ return;
138
+ }
139
+ if (ts.isObjectBindingPattern(node.name)) {
140
+ for (const element of node.name.elements) {
141
+ const importedName = bindingElementName(element);
142
+ const localName = bindingElementLocalName(element);
143
+ if (!importedName || !localName || !COMMAND_EXECUTION_NAMES.has(importedName)) {
144
+ continue;
145
+ }
146
+ commandIdentifiers.add(localName);
147
+ declarationNodes.push(element);
148
+ }
149
+ }
150
+ return;
151
+ }
152
+ if (ts.isPropertyAccessExpression(node.initializer) && isRequireChildProcessCall(node.initializer.expression)) {
153
+ const importedName = node.initializer.name.text;
154
+ if (ts.isIdentifier(node.name) && COMMAND_EXECUTION_NAMES.has(importedName)) {
155
+ commandIdentifiers.add(node.name.text);
156
+ declarationNodes.push(node);
157
+ }
158
+ }
159
+ }
160
+ function isCommandExecutionCall(expression, commandIdentifiers, childProcessNamespaces) {
161
+ if (ts.isIdentifier(expression)) {
162
+ return commandIdentifiers.has(expression.text);
163
+ }
164
+ if (!ts.isPropertyAccessExpression(expression) || !COMMAND_EXECUTION_NAMES.has(expression.name.text)) {
165
+ return false;
166
+ }
167
+ return ts.isIdentifier(expression.expression) && childProcessNamespaces.has(expression.expression.text);
168
+ }
169
+ function isSqlQuerySinkCall(node) {
170
+ const expression = node.expression;
171
+ return ts.isPropertyAccessExpression(expression) && SQL_QUERY_METHOD_NAMES.has(expression.name.text);
172
+ }
173
+ function isRawSqlTaggedTemplate(node) {
174
+ const tag = node.tag;
175
+ return ts.isPropertyAccessExpression(tag) && SQL_RAW_TAG_NAMES.has(tag.name.text);
176
+ }
177
+ function isInterpolatedSqlTemplate(node) {
178
+ return node !== undefined && ts.isTemplateExpression(node) && SQL_KEYWORD_PATTERN.test(node.getText());
179
+ }
180
+ function dangerouslySetInnerHtmlSeverity(initializer) {
181
+ if (!initializer || ts.isStringLiteral(initializer)) {
182
+ return undefined;
183
+ }
184
+ if (!ts.isJsxExpression(initializer) || !initializer.expression) {
185
+ return undefined;
186
+ }
187
+ const expression = initializer.expression;
188
+ if (!ts.isObjectLiteralExpression(expression)) {
189
+ return "LOW";
190
+ }
191
+ const htmlExpression = expression.properties
192
+ .filter(ts.isPropertyAssignment)
193
+ .find((property) => propertyNameText(property.name) === "__html")?.initializer;
194
+ if (!htmlExpression || isStaticHtmlExpression(htmlExpression) || isSanitizedHtmlExpression(htmlExpression)) {
195
+ return undefined;
196
+ }
197
+ return "MEDIUM";
198
+ }
199
+ function propertyNameText(name) {
200
+ if (ts.isIdentifier(name) || ts.isStringLiteralLike(name) || ts.isNumericLiteral(name)) {
201
+ return name.text;
202
+ }
203
+ return undefined;
204
+ }
205
+ function isStaticHtmlExpression(expression) {
206
+ return ts.isStringLiteralLike(expression) || ts.isNoSubstitutionTemplateLiteral(expression);
207
+ }
208
+ function isSanitizedHtmlExpression(expression) {
209
+ if (!ts.isCallExpression(expression)) {
210
+ return false;
211
+ }
212
+ const sanitizerName = callExpressionName(expression.expression);
213
+ return sanitizerName !== undefined && /^(?:sanitize|sanitizeHtml|sanitizeMarkdown)$/i.test(sanitizerName);
214
+ }
215
+ function callExpressionName(expression) {
216
+ if (ts.isIdentifier(expression)) {
217
+ return expression.text;
218
+ }
219
+ if (ts.isPropertyAccessExpression(expression)) {
220
+ return expression.name.text;
221
+ }
222
+ return undefined;
223
+ }
224
+ function hasPasswordHashingCall(sourceFile) {
225
+ let hasHashingCall = false;
226
+ visit(sourceFile, (node) => {
227
+ if (hasHashingCall || !ts.isCallExpression(node)) {
228
+ return;
229
+ }
230
+ hasHashingCall = isPasswordHashingCall(node);
231
+ });
232
+ return hasHashingCall;
233
+ }
234
+ function isPasswordHashingCall(node) {
235
+ const expression = node.expression;
236
+ if (ts.isIdentifier(expression)) {
237
+ return /^scrypt(?:Sync)?$/i.test(expression.text);
238
+ }
239
+ if (!ts.isPropertyAccessExpression(expression)) {
240
+ return false;
241
+ }
242
+ const methodName = expression.name.text;
243
+ const targetName = expressionNameText(expression.expression);
244
+ if (/^scrypt(?:Sync)?$/i.test(methodName) && targetName === "crypto") {
245
+ return true;
246
+ }
247
+ return methodName === "hash" && (targetName === "bcrypt" || targetName === "argon2");
248
+ }
249
+ function isPasswordHandlingNode(node) {
250
+ if (ts.isVariableDeclaration(node)) {
251
+ return isPasswordVariableDeclaration(node);
252
+ }
253
+ return (ts.isPropertyAccessExpression(node) &&
254
+ node.name.text === "password" &&
255
+ isRequestBodyExpression(node.expression) &&
256
+ !isVariableDeclarationInitializer(node));
257
+ }
258
+ function isPasswordVariableDeclaration(node) {
259
+ if (!node.initializer) {
260
+ return false;
261
+ }
262
+ if (ts.isIdentifier(node.name) && node.name.text === "password") {
263
+ return isPasswordSourceExpression(node.initializer);
264
+ }
265
+ if (!ts.isObjectBindingPattern(node.name)) {
266
+ return false;
267
+ }
268
+ return node.name.elements.some((element) => bindingElementName(element) === "password") && isCredentialJsonExpression(node.initializer);
269
+ }
270
+ function isPasswordSourceExpression(expression) {
271
+ return isPasswordPropertyAccess(expression) || isPasswordFormDataGetCall(expression);
272
+ }
273
+ function isPasswordPropertyAccess(expression) {
274
+ return ts.isPropertyAccessExpression(expression) && expression.name.text === "password" && isCredentialContainerExpression(expression.expression);
275
+ }
276
+ function isPasswordFormDataGetCall(expression) {
277
+ if (!ts.isCallExpression(expression) || !ts.isPropertyAccessExpression(expression.expression) || expression.expression.name.text !== "get") {
278
+ return false;
279
+ }
280
+ const [fieldName] = expression.arguments;
281
+ return fieldName !== undefined && ts.isStringLiteralLike(fieldName) && fieldName.text === "password";
282
+ }
283
+ function isVariableDeclarationInitializer(expression) {
284
+ return ts.isVariableDeclaration(expression.parent) && expression.parent.initializer === expression;
285
+ }
286
+ function isCredentialContainerExpression(expression) {
287
+ return isRequestBodyExpression(expression) || isCredentialLikeIdentifier(expression);
288
+ }
289
+ function isRequestBodyExpression(expression) {
290
+ return ((ts.isIdentifier(expression) && /^(body|credentials|credential|data|payload|formData)$/i.test(expression.text)) ||
291
+ (ts.isPropertyAccessExpression(expression) &&
292
+ expression.name.text === "body" &&
293
+ ts.isIdentifier(expression.expression) &&
294
+ /^(req|request)$/i.test(expression.expression.text)));
295
+ }
296
+ function isCredentialJsonExpression(expression) {
297
+ const unwrappedExpression = ts.isAwaitExpression(expression) ? expression.expression : expression;
298
+ return (ts.isCallExpression(unwrappedExpression) &&
299
+ ts.isPropertyAccessExpression(unwrappedExpression.expression) &&
300
+ unwrappedExpression.expression.name.text === "json" &&
301
+ ts.isIdentifier(unwrappedExpression.expression.expression) &&
302
+ /^(request|req)$/i.test(unwrappedExpression.expression.expression.text));
303
+ }
304
+ function isCredentialLikeIdentifier(expression) {
305
+ return ts.isIdentifier(expression) && /^(credentials?|user|account)$/i.test(expression.text);
306
+ }
307
+ function expressionNameText(expression) {
308
+ return ts.isIdentifier(expression) ? expression.text : undefined;
309
+ }
310
+ function exportedRouteHandlerName(node) {
311
+ if (ts.isFunctionDeclaration(node) && hasDefaultExportModifier(node)) {
312
+ return "DEFAULT";
313
+ }
314
+ if (ts.isFunctionDeclaration(node) && hasExportModifier(node) && node.name) {
315
+ return node.name.text;
316
+ }
317
+ if (!ts.isVariableStatement(node) || !hasExportModifier(node)) {
318
+ return undefined;
319
+ }
320
+ const [declaration] = node.declarationList.declarations;
321
+ return declaration && ts.isIdentifier(declaration.name) ? declaration.name.text : undefined;
322
+ }
323
+ function hasExportModifier(node) {
324
+ return ts.canHaveModifiers(node) && (ts.getModifiers(node) ?? []).some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
325
+ }
326
+ function hasDefaultExportModifier(node) {
327
+ const modifiers = ts.canHaveModifiers(node) ? (ts.getModifiers(node) ?? []) : [];
328
+ return (modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) &&
329
+ modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword));
330
+ }
331
+ function isApiRouteFilePath(filePath) {
332
+ const normalizedPath = filePath.replace(/\\/g, "/");
333
+ return (/^app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
334
+ /^src\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
335
+ /^pages\/api\/.*\.([tj]s)$/i.test(normalizedPath) ||
336
+ /^apps\/[^/]+\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
337
+ /^apps\/[^/]+\/src\/app\/api\/.*\/route\.[tj]s$/i.test(normalizedPath) ||
338
+ /^apps\/[^/]+\/pages\/api\/.*\.([tj]s)$/i.test(normalizedPath));
339
+ }
340
+ function isUploadHandlingNode(node) {
341
+ if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)) {
342
+ const methodName = node.expression.name.text;
343
+ if (methodName === "formData") {
344
+ return true;
345
+ }
346
+ if (methodName === "get") {
347
+ const [fieldName] = node.arguments;
348
+ return fieldName !== undefined && ts.isStringLiteralLike(fieldName) && /^(file|files|blob|image|avatar|media)$/i.test(fieldName.text);
349
+ }
350
+ }
351
+ if (ts.isIdentifier(node)) {
352
+ return /^(file|files|blob|formData)$/i.test(node.text);
353
+ }
354
+ if (ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName)) {
355
+ return /^(File|Blob|FormData)$/i.test(node.typeName.text);
356
+ }
357
+ return false;
358
+ }
359
+ function isRequireChildProcessCall(node) {
360
+ if (!ts.isCallExpression(node) || !ts.isIdentifier(node.expression) || node.expression.text !== "require") {
361
+ return false;
362
+ }
363
+ const [specifier] = node.arguments;
364
+ return isChildProcessSpecifier(specifier);
365
+ }
366
+ function isChildProcessSpecifier(node) {
367
+ return node !== undefined && ts.isStringLiteralLike(node) && /^(?:node:)?child_process$/.test(node.text);
368
+ }
369
+ function bindingElementName(element) {
370
+ if (element.propertyName) {
371
+ return ts.isIdentifier(element.propertyName) || ts.isStringLiteralLike(element.propertyName) ? element.propertyName.text : undefined;
372
+ }
373
+ return ts.isIdentifier(element.name) ? element.name.text : undefined;
374
+ }
375
+ function bindingElementLocalName(element) {
376
+ return ts.isIdentifier(element.name) ? element.name.text : undefined;
377
+ }
378
+ function matchFromNode(file, sourceFile, node) {
379
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
380
+ const sourceLine = file.lines[position.line] ?? "";
381
+ return {
382
+ line: position.line + 1,
383
+ column: position.character + 1,
384
+ evidence: sourceLine.trim(),
385
+ sourceLine
386
+ };
387
+ }
388
+ function dedupeMatches(matches) {
389
+ const seen = new Set();
390
+ const uniqueMatches = [];
391
+ for (const match of matches) {
392
+ const key = `${match.line}:${match.column}:${match.evidence}`;
393
+ if (seen.has(key)) {
394
+ continue;
395
+ }
396
+ seen.add(key);
397
+ uniqueMatches.push(match);
398
+ }
399
+ return uniqueMatches.sort((left, right) => left.line - right.line || left.column - right.column);
400
+ }
401
+ function scriptKindForPath(filePath) {
402
+ if (/\.tsx$/i.test(filePath)) {
403
+ return ts.ScriptKind.TSX;
404
+ }
405
+ if (/\.jsx$/i.test(filePath)) {
406
+ return ts.ScriptKind.JSX;
407
+ }
408
+ if (/\.ts$/i.test(filePath)) {
409
+ return ts.ScriptKind.TS;
410
+ }
411
+ return ts.ScriptKind.JS;
412
+ }
413
+ function visit(node, callback) {
414
+ callback(node);
415
+ ts.forEachChild(node, (child) => visit(child, callback));
416
+ }
417
+ //# sourceMappingURL=ast-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"security-rules.d.ts","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,eAAO,MAAM,oBAAoB,EAAE,IAmBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IAuDjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAgC/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,IAuBxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IA2BzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAuBtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAqBvC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,IAsB1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAsBxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAyB9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IA+BxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAyBlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAuB/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IA8B7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAwBtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAsBvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,IAyB7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAiCrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAAI,EAqBtC,CAAC"}
1
+ {"version":3,"file":"security-rules.d.ts","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAWpD,eAAO,MAAM,oBAAoB,EAAE,IAmBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,IAuDjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAgC/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,IAuBxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,IAwBzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IAuBtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IAqBvC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,IAsB1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IAyBxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAqB9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,IA+BxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAyBlC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IAuB/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,IAqB7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IA0B3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,IA0BtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,IAyB3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,IA+BvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,IAyB7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,IAmCrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,IAAI,EAqBtC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { findCommandExecutionMatches, findDangerouslySetInnerHtmlMatches, findPasswordHandlingMatches, findRawSqlConcatMatches, findRouteHandlerExports, findUploadRouteHandlerMatches } from "./ast-utils.js";
1
2
  import { codeFiles, configFiles, createFinding, findMatches, hasDependency, projectContains } from "./rule-utils.js";
2
3
  export const envFileCommittedRule = {
3
4
  id: "secrets/env-file-committed",
@@ -119,13 +120,10 @@ export const dangerouslySetInnerHtmlRule = {
119
120
  category: "xss",
120
121
  confidence: "HIGH",
121
122
  scan(context) {
122
- return codeFiles(context).flatMap((file) => findMatches(file, /dangerouslySetInnerHTML/)
123
- .filter((match) => !isInsideQuotedLiteral(match.evidence, match.column))
124
- .filter((match) => !isRegexLiteralLine(match.evidence))
125
- .map((match) => createFinding({
123
+ return codeFiles(context).flatMap((file) => findDangerouslySetInnerHtmlMatches(file).map((match) => createFinding({
126
124
  rule: {
127
125
  ...dangerouslySetInnerHtmlRule,
128
- severity: getDangerouslySetInnerHtmlSeverity(match.sourceLine)
126
+ severity: match.severity
129
127
  },
130
128
  file,
131
129
  line: match.line,
@@ -203,14 +201,15 @@ export const passwordWithoutHashingRule = {
203
201
  if (hasDependency(context, ["bcrypt", "bcryptjs", "argon2"])) {
204
202
  return [];
205
203
  }
206
- return codeFiles(context)
207
- .filter((file) => hasPasswordHandlingContext(file.path, file.content))
208
- .map((file) => createFinding({
204
+ return codeFiles(context).flatMap((file) => findPasswordHandlingMatches(file).map((match) => createFinding({
209
205
  rule: passwordWithoutHashingRule,
210
206
  file,
207
+ line: match.line,
208
+ column: match.column,
209
+ evidence: match.evidence,
211
210
  description: "Password-related code exists, but bcrypt/argon2 dependency usage was not detected.",
212
211
  recommendation: "Hash passwords with argon2 or bcrypt and avoid storing or comparing plaintext passwords."
213
- }));
212
+ })));
214
213
  }
215
214
  };
216
215
  export const rawSqlConcatRule = {
@@ -220,10 +219,7 @@ export const rawSqlConcatRule = {
220
219
  category: "injection",
221
220
  confidence: "MEDIUM",
222
221
  scan(context) {
223
- const pattern = /`[^`]*(SELECT|INSERT|UPDATE|DELETE)[^`]*\$\{[^}]+}[^`]*`|["'][^"']*(SELECT|INSERT|UPDATE|DELETE)[^"']*["']\s*\+/i;
224
- return codeFiles(context).flatMap((file) => findMatches(file, pattern)
225
- .filter((match) => !isLowRiskSqlStringContext(match.sourceLine, match.column))
226
- .map((match) => createFinding({
222
+ return codeFiles(context).flatMap((file) => findRawSqlConcatMatches(file).map((match) => createFinding({
227
223
  rule: rawSqlConcatRule,
228
224
  file,
229
225
  line: match.line,
@@ -308,14 +304,7 @@ export const commandExecRule = {
308
304
  category: "injection",
309
305
  confidence: "MEDIUM",
310
306
  scan(context) {
311
- const commandCallPattern = /\b(exec|execSync|spawn|spawnSync)\s*\(/;
312
- const childProcessImportPattern = /\bfrom\s+["'](?:node:)?child_process["']|require\(\s*["'](?:node:)?child_process["']\s*\)/;
313
- return codeFiles(context).flatMap((file) => [
314
- ...findMatches(file, commandCallPattern)
315
- .filter((match) => !isMethodCall(match.sourceLine, match.column))
316
- .filter((match) => !isInsideQuotedLiteral(match.sourceLine, match.column)),
317
- ...findMatches(file, childProcessImportPattern)
318
- ].map((match) => createFinding({
307
+ return codeFiles(context).flatMap((file) => findCommandExecutionMatches(file).map((match) => createFinding({
319
308
  rule: commandExecRule,
320
309
  file,
321
310
  line: match.line,
@@ -333,18 +322,20 @@ export const missingFileTypeValidationRule = {
333
322
  category: "upload",
334
323
  confidence: "MEDIUM",
335
324
  scan(context) {
336
- const pathSignals = /\b(upload|avatar|media|file|image)\b/i;
337
- const contentSignals = /\b(formData|File|Blob|multer|formidable|busboy)\b/i;
338
- const validationSignals = /\b(mimetype|fileType|allowedTypes|allowedMimeTypes)\b|\.type\b|\.mime\b|content-type|includes\(|startsWith\(["']image\//i;
339
- return codeFiles(context)
340
- .filter((file) => pathSignals.test(file.path) && contentSignals.test(file.content))
341
- .filter((file) => !validationSignals.test(file.content))
342
- .map((file) => createFinding({
343
- rule: missingFileTypeValidationRule,
344
- file,
345
- description: "Upload endpoints should validate file types before accepting user-controlled files.",
346
- recommendation: "Validate MIME type and file extension with an allowlist before storing or processing uploaded files."
347
- }));
325
+ return codeFiles(context).flatMap((file) => {
326
+ if (hasFileTypeValidationSignal(file.content)) {
327
+ return [];
328
+ }
329
+ return findUploadRouteHandlerMatches(file).map((match) => createFinding({
330
+ rule: missingFileTypeValidationRule,
331
+ file,
332
+ line: match.line,
333
+ column: match.column,
334
+ evidence: match.evidence,
335
+ description: "Upload endpoints should validate file types before accepting user-controlled files.",
336
+ recommendation: "Validate MIME type and file extension with an allowlist before storing or processing uploaded files."
337
+ }));
338
+ });
348
339
  }
349
340
  };
350
341
  export const missingFileSizeLimitRule = {
@@ -354,18 +345,20 @@ export const missingFileSizeLimitRule = {
354
345
  category: "upload",
355
346
  confidence: "MEDIUM",
356
347
  scan(context) {
357
- const pathSignals = /\b(upload|avatar|media|file|image)\b/i;
358
- const contentSignals = /\b(formData|File|Blob|multer|formidable|busboy)\b/i;
359
- const sizeLimitSignals = /\b(maxSize|maxFileSize|fileSize|MAX_FILE_SIZE)\b|limit\s*[:=]|\.limit\b|\.size\s*[><=]/i;
360
- return codeFiles(context)
361
- .filter((file) => pathSignals.test(file.path) && contentSignals.test(file.content))
362
- .filter((file) => !sizeLimitSignals.test(file.content))
363
- .map((file) => createFinding({
364
- rule: missingFileSizeLimitRule,
365
- file,
366
- description: "Upload endpoints should enforce file size limits to reduce abuse and resource exhaustion risk.",
367
- recommendation: "Add a strict maximum file size and reject files that exceed it before storage or further processing."
368
- }));
348
+ return codeFiles(context).flatMap((file) => {
349
+ if (hasFileSizeLimitSignal(file.content)) {
350
+ return [];
351
+ }
352
+ return findUploadRouteHandlerMatches(file).map((match) => createFinding({
353
+ rule: missingFileSizeLimitRule,
354
+ file,
355
+ line: match.line,
356
+ column: match.column,
357
+ evidence: match.evidence,
358
+ description: "Upload endpoints should enforce file size limits to reduce abuse and resource exhaustion risk.",
359
+ recommendation: "Add a strict maximum file size and reject files that exceed it before storage or further processing."
360
+ }));
361
+ });
369
362
  }
370
363
  };
371
364
  export const apiRouteWithoutValidationRule = {
@@ -397,17 +390,27 @@ export const adminRouteWithoutAuthRule = {
397
390
  category: "auth",
398
391
  confidence: "MEDIUM",
399
392
  scan(context) {
400
- const pathSignals = /\b(admin|dashboard|manage)\b/i;
401
- const authSignals = /\b(auth\(|getServerSession|currentUser|clerk|requireAuth|middleware|session|jwt\.verify|verifyToken|isAdmin|role)\b/i;
402
- return codeFiles(context)
403
- .filter((file) => pathSignals.test(file.path))
404
- .filter((file) => !authSignals.test(file.content))
405
- .map((file) => createFinding({
406
- rule: adminRouteWithoutAuthRule,
407
- file,
408
- description: "Admin routes should include authentication and authorization checks.",
409
- recommendation: "Protect admin routes with authentication and role/permission checks before returning sensitive data."
410
- }));
393
+ return codeFiles(context).flatMap((file) => {
394
+ if (!isAdminApiRoutePath(file.path) || hasAdminAuthSignal(file.content)) {
395
+ return [];
396
+ }
397
+ const routeHandlers = findRouteHandlerExports(file);
398
+ const [match] = routeHandlers;
399
+ if (!match) {
400
+ return [];
401
+ }
402
+ return [
403
+ createFinding({
404
+ rule: adminRouteWithoutAuthRule,
405
+ file,
406
+ line: match.line,
407
+ column: match.column,
408
+ evidence: match.evidence,
409
+ description: "Admin routes should include authentication and authorization checks.",
410
+ recommendation: "Protect admin routes with authentication and role/permission checks before returning sensitive data."
411
+ })
412
+ ];
413
+ });
411
414
  }
412
415
  };
413
416
  export const productionBrowserSourceMapsRule = {
@@ -442,7 +445,9 @@ export const nextPoweredByHeaderRule = {
442
445
  if (context.project.framework !== "nextjs") {
443
446
  return [];
444
447
  }
445
- const nextConfigFiles = configFiles(context).filter((file) => /next\.config\.(js|mjs|cjs|ts)$/.test(file.path));
448
+ const nextConfigFiles = configFiles(context)
449
+ .filter((file) => /next\.config\.(js|mjs|cjs|ts)$/.test(file.path))
450
+ .filter((file) => shouldCheckPoweredByHeaderConfig(file.path, context.files));
446
451
  if (nextConfigFiles.length === 0) {
447
452
  return [];
448
453
  }
@@ -482,6 +487,48 @@ export const builtInSecurityRules = [
482
487
  productionBrowserSourceMapsRule,
483
488
  nextPoweredByHeaderRule
484
489
  ];
490
+ function shouldCheckPoweredByHeaderConfig(configPath, files) {
491
+ const normalizedPath = normalizeRulePath(configPath);
492
+ if (isLowSignalNextConfigPath(normalizedPath)) {
493
+ return false;
494
+ }
495
+ const configRoot = normalizedPath.replace(/(^|\/)next\.config\.(js|mjs|cjs|ts)$/, "").replace(/\/$/, "");
496
+ if (configRoot === normalizedPath) {
497
+ return false;
498
+ }
499
+ if (configRoot === "") {
500
+ return true;
501
+ }
502
+ return hasNextAppIndicator(configRoot, files);
503
+ }
504
+ function isLowSignalNextConfigPath(filePath) {
505
+ return (filePath.startsWith("examples/") ||
506
+ filePath.includes("/examples/") ||
507
+ filePath.startsWith("templates/") ||
508
+ filePath.includes("/templates/") ||
509
+ filePath.startsWith("fixtures/") ||
510
+ filePath.includes("/fixtures/") ||
511
+ filePath.startsWith("docs/") ||
512
+ filePath.includes("/docs/") ||
513
+ filePath.includes("/__tests__/") ||
514
+ filePath.includes("/test/") ||
515
+ filePath.includes("/tests/"));
516
+ }
517
+ function hasNextAppIndicator(configRoot, files) {
518
+ const appIndicators = ["app/", "src/app/", "pages/", "src/pages/"];
519
+ const normalizedRoot = configRoot === "" ? "" : `${configRoot}/`;
520
+ return files.some((file) => {
521
+ const filePath = normalizeRulePath(file.path);
522
+ if (!filePath.startsWith(normalizedRoot) || filePath === `${normalizedRoot}next.config.js`) {
523
+ return false;
524
+ }
525
+ const relativePath = filePath.slice(normalizedRoot.length);
526
+ return appIndicators.some((indicator) => relativePath.startsWith(indicator));
527
+ });
528
+ }
529
+ function normalizeRulePath(filePath) {
530
+ return filePath.replace(/\\/g, "/").replace(/^\.\//, "");
531
+ }
485
532
  function isInsideQuotedLiteral(line, column) {
486
533
  const beforeMatch = line.slice(0, Math.max(0, column - 1));
487
534
  let quote;
@@ -511,33 +558,6 @@ function isMethodCall(line, column) {
511
558
  const beforeMatch = line.slice(0, Math.max(0, column - 1));
512
559
  return /\.\s*$/.test(beforeMatch);
513
560
  }
514
- function isRegexLiteralLine(line) {
515
- return /\/[^/\n]*dangerouslySetInnerHTML[^/\n]*\/[a-z]*/.test(line);
516
- }
517
- function getDangerouslySetInnerHtmlSeverity(line) {
518
- const htmlValue = /__html\s*:\s*([^}\n]+)/.exec(line)?.[1]?.trim();
519
- if (!htmlValue) {
520
- return "LOW";
521
- }
522
- if (isStaticHtmlLiteral(htmlValue)) {
523
- return "LOW";
524
- }
525
- if (/(userInput|html|content|body|params|searchParams|query|req|request|props|children|markdown)/i.test(htmlValue)) {
526
- return "MEDIUM";
527
- }
528
- return "LOW";
529
- }
530
- function isStaticHtmlLiteral(value) {
531
- const trimmed = value.replace(/[,;]+$/, "").trim();
532
- if (/^["'][\s\S]*["']$/.test(trimmed)) {
533
- return true;
534
- }
535
- return /^`[\s\S]*`$/.test(trimmed) && !trimmed.includes("${");
536
- }
537
- function isLowRiskSqlStringContext(line, column) {
538
- const beforeMatch = line.slice(0, Math.max(0, column - 1));
539
- return /(?:^|[^\w$.])(?:console\.(?:log|debug|info|warn|error)|logger\.(?:debug|info)|throw\s+new\s+Error)\s*\(\s*$/.test(beforeMatch);
540
- }
541
561
  function isCommittedEnvFileName(fileName) {
542
562
  return /^\.env(?:\.(?:local|production|production\.local|development|development\.local|test|test\.local|staging|staging\.local))?$/.test(fileName);
543
563
  }
@@ -589,6 +609,24 @@ function isLowSignalSecretSample(value) {
589
609
  }
590
610
  return false;
591
611
  }
612
+ function isAdminApiRoutePath(filePath) {
613
+ const normalizedPath = filePath.replace(/\\/g, "/");
614
+ return (/^app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
615
+ /^src\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
616
+ /^pages\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/|$).*\.([tj]s)$/i.test(normalizedPath) ||
617
+ /^apps\/[^/]+\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
618
+ /^apps\/[^/]+\/src\/app\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/.*)?\/route\.[tj]s$/i.test(normalizedPath) ||
619
+ /^apps\/[^/]+\/pages\/api\/(?:.*\/)?(?:admin|dashboard|manage)(?:\/|$).*\.([tj]s)$/i.test(normalizedPath));
620
+ }
621
+ function hasAdminAuthSignal(content) {
622
+ return /\b(auth\(|getServerSession|currentUser|clerk|getUser|requireAuth|middleware|withAuth|session|jwt\.verify|verifyToken|isAdmin|role|permission)\b/i.test(content);
623
+ }
624
+ function hasFileTypeValidationSignal(content) {
625
+ return /\b(mimetype|mimeType|fileType|allowedTypes|allowedMimeTypes|allowedExtensions|extension|extname|accept)\b|\.type\b|\.mime\b|content-type|includes\(\s*file\.type|startsWith\(["']image\//i.test(content);
626
+ }
627
+ function hasFileSizeLimitSignal(content) {
628
+ return /\b(maxSize|maxFileSize|sizeLimit|fileSize|MAX_FILE_SIZE)\b|limit\s*[:=]|\.limit\b|\.size\s*[><=]/i.test(content);
629
+ }
592
630
  function countCharacterClasses(value) {
593
631
  return [
594
632
  /[a-z]/.test(value),
@@ -597,15 +635,4 @@ function countCharacterClasses(value) {
597
635
  /[^A-Za-z0-9]/.test(value)
598
636
  ].filter(Boolean).length;
599
637
  }
600
- function hasPasswordHandlingContext(filePath, content) {
601
- if (!/\bpassword\b/i.test(content)) {
602
- return false;
603
- }
604
- const pathSignals = /\b(login|signin|sign-in|register|signup|sign-up|auth|account|user|credentials?)\b/i;
605
- if (pathSignals.test(filePath)) {
606
- return true;
607
- }
608
- const contentSignals = /(\b(body|req\.body|credentials?|user|account)\.password\b|\bpassword\b\s*[:=]\s*(body|req|credentials?|user|account)\b)/i;
609
- return contentSignals.test(content);
610
- }
611
638
  //# sourceMappingURL=security-rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security-rules.js","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-rules.js","sourceRoot":"","sources":["../src/security-rules.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErH,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,4BAA4B;IAChC,KAAK,EAAE,4BAA4B;IACnC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,OAAO,OAAO,CAAC,KAAK;aACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC3E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,aAAa,CAAC;YACZ,IAAI,EAAE,oBAAoB;YAC1B,IAAI;YACJ,WAAW,EAAE,oEAAoE;YACjF,cAAc,EAAE,0GAA0G;YAC1H,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CACH,CAAC;IACN,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,EAAE,EAAE,0BAA0B;IAC9B,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,uBAAuB,GAC3B,yIAAyI,CAAC;QAC5I,MAAM,kBAAkB,GAAG,qEAAqE,CAAC;QAEjG,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE,CAAC;gBAC/D,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;gBACjC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5C,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,YAAY,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC1D,SAAS;gBACX,CAAC;gBAED,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC;oBACZ,IAAI,EAAE,mBAAmB;oBACzB,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,WAAW,EAAE,4DAA4D;oBACzE,cAAc,EAAE,oGAAoG;iBACrH,CAAC,CACH,CAAC;YACJ,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC;oBACZ,IAAI,EAAE,mBAAmB;oBACzB,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,WAAW,EAAE,qDAAqD;oBAClE,cAAc,EAAE,iEAAiE;oBACjF,UAAU,EAAE,MAAM;iBACnB,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,EAAE,EAAE,yBAAyB;IAC7B,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;QACrH,MAAM,OAAO,GAAG,yDAAyD,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;gBACtG,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/C,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC;wBACZ,IAAI,EAAE,iBAAiB;wBACvB,IAAI;wBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,WAAW,EAAE,iEAAiE;wBAC9E,cAAc,EAAE,gFAAgF;qBACjG,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,uBAAuB;IAC9B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;aAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aACvE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,aAAa,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,mEAAmE;YAChF,cAAc,EAAE,oFAAoF;SACrG,CAAC,CACH,CACJ,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAS;IAC/C,EAAE,EAAE,gCAAgC;IACpC,KAAK,EAAE,wCAAwC;IAC/C,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,kCAAkC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACrD,aAAa,CAAC;YACZ,IAAI,EAAE;gBACJ,GAAG,2BAA2B;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB;YACD,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,yEAAyE;YACtF,cAAc,EAAE,8EAA8E;SAC/F,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,+BAA+B;IACtC,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,MAAM,OAAO,GAAG,iFAAiF,CAAC;QAElG,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,aAAa,CAAC;YACZ,IAAI,EAAE,wBAAwB;YAC9B,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,yDAAyD;YACtE,cAAc,EAAE,uFAAuF;SACxG,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAS;IAC7C,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,6CAA6C;IACpD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,MAAM,gBAAgB,GAAG,qEAAqE,CAAC;QAE/F,OAAO,SAAS,CAAC,OAAO,CAAC;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;aACrG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,aAAa,CAAC;YACZ,IAAI,EAAE,yBAAyB;YAC/B,IAAI;YACJ,WAAW,EAAE,qFAAqF;YAClG,cAAc,EAAE,mEAAmE;SACpF,CAAC,CACH,CAAC;IACN,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAChD,EAAE,EAAE,kCAAkC;IACtC,KAAK,EAAE,gDAAgD;IACvD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,MAAM,gBAAgB,GAAG,qEAAqE,CAAC;QAE/F,OAAO,SAAS,CAAC,OAAO,CAAC;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;aACrG,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,aAAa,CAAC;YACZ,IAAI,EAAE,4BAA4B;YAClC,IAAI;YACJ,WAAW,EACT,yHAAyH;YAC3H,cAAc,EAAE,4EAA4E;SAC7F,CAAC,CACH,CAAC;IACN,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAS;IAC9C,EAAE,EAAE,uCAAuC;IAC3C,KAAK,EAAE,qDAAqD;IAC5D,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,aAAa,CAAC;YACZ,IAAI,EAAE,0BAA0B;YAChC,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,oFAAoF;YACjG,cAAc,EAAE,0FAA0F;SAC3G,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,EAAE,EAAE,0BAA0B;IAC9B,KAAK,EAAE,gDAAgD;IACvD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1C,aAAa,CAAC;YACZ,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,iFAAiF;YAC9F,cAAc,EAAE,8EAA8E;SAC/F,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAS;IAC9C,EAAE,EAAE,kCAAkC;IACtC,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,IAAI,CAAC,OAAO;QACV,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpH,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL,aAAa,CAAC;gBACZ,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,iDAAiD,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACrG,cAAc,EACZ,uHAAuH;aAC1H,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,4BAA4B;IAChC,KAAK,EAAE,2CAA2C;IAClD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,MAAM,OAAO,GAAG,iHAAiH,CAAC;QAElI,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACpC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,aAAa,CAAC;YACZ,IAAI,EAAE,oBAAoB;YAC1B,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EACT,sIAAsI;YACxI,cAAc,EACZ,qIAAqI;SACxI,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,EAAE,EAAE,2BAA2B;IAC/B,KAAK,EAAE,+BAA+B;IACtC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,WAAW,CAAC,IAAI,EAAE,uBAAuB,CAAC;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;aACvE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,aAAa,CAAC;YACZ,IAAI,EAAE,iBAAiB;YACvB,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,6GAA6G;YAC1H,cAAc,EAAE,mHAAmH;SACpI,CAAC,CACH,CACJ,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,EAAE,EAAE,wBAAwB;IAC5B,KAAK,EAAE,kCAAkC;IACzC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,aAAa,CAAC;YACZ,IAAI,EAAE,eAAe;YACrB,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,uGAAuG;YACpH,cAAc,EAAE,4IAA4I;SAC7J,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAS;IACjD,EAAE,EAAE,qCAAqC;IACzC,KAAK,EAAE,qDAAqD;IAC5D,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvD,aAAa,CAAC;gBACZ,IAAI,EAAE,6BAA6B;gBACnC,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,qFAAqF;gBAClG,cAAc,EACZ,sGAAsG;aACzG,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,EAAE,EAAE,gCAAgC;IACpC,KAAK,EAAE,gDAAgD;IACvD,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvD,aAAa,CAAC;gBACZ,IAAI,EAAE,wBAAwB;gBAC9B,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,gGAAgG;gBAC7G,cAAc,EACZ,sGAAsG;aACzG,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAS;IACjD,EAAE,EAAE,yCAAyC;IAC7C,KAAK,EAAE,2CAA2C;IAClD,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,MAAM,WAAW,GAAG,4BAA4B,CAAC;QACjD,MAAM,cAAc,GAAG,sHAAsH,CAAC;QAC9I,MAAM,iBAAiB,GACrB,yJAAyJ,CAAC;QAE5J,OAAO,SAAS,CAAC,OAAO,CAAC;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,aAAa,CAAC;YACZ,IAAI,EAAE,6BAA6B;YACnC,IAAI;YACJ,WAAW,EAAE,+EAA+E;YAC5F,cAAc,EAAE,uGAAuG;SACxH,CAAC,CACH,CAAC;IACN,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAS;IAC7C,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO;gBACL,aAAa,CAAC;oBACZ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI;oBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,WAAW,EAAE,sEAAsE;oBACnF,cAAc,EAAE,sGAAsG;iBACvH,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAS;IACnD,EAAE,EAAE,uCAAuC;IAC3C,KAAK,EAAE,+CAA+C;IACtD,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,OAAO;QACV,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChH,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpE,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC;oBACZ,IAAI,EAAE,+BAA+B;oBACrC,IAAI;oBACJ,WAAW,EAAE,8GAA8G;oBAC3H,cAAc,EAAE,kGAAkG;iBACnH,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAS;IAC3C,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,IAAI,CAAC,OAAO;QACV,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,QAAQ,CAAC,IAAI,CACX,aAAa,CAAC;oBACZ,IAAI,EAAE,uBAAuB;oBAC7B,IAAI;oBACJ,WAAW,EAAE,wGAAwG;oBACrH,cAAc,EAAE,kFAAkF;iBACnG,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,UAAU;IACV,iBAAiB;IACjB,eAAe;IACf,2BAA2B;IAC3B,wBAAwB;IACxB,yBAAyB;IACzB,0BAA0B;IAC1B,gBAAgB;IAChB,0BAA0B;IAC1B,oBAAoB;IACpB,4BAA4B;IAC5B,6BAA6B;IAC7B,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;IACzB,+BAA+B;IAC/B,uBAAuB;CACxB,CAAC;AAEF,SAAS,gCAAgC,CAAC,UAAkB,EAAE,KAA8B;IAC1F,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzG,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB;IACjD,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB,EAAE,KAA8B;IAC7E,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;IAEjE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,QAAQ,KAAK,GAAG,cAAc,gBAAgB,EAAE,CAAC;YAC3F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAAc;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,KAAmC,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;YAChB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClD,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,MAAc;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,OAAO,6HAA6H,CAAC,IAAI,CACvI,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAe;IACnD,MAAM,eAAe,GAAG;QACtB;YACE,IAAI,EAAE,yBAAyB;YAC/B,QAAQ,EAAE,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;SACnD;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC/E;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;SAClD;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3C;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9C;KACF,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAE7G,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,oDAAoD,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,IAAI,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,CACL,yEAAyE,CAAC,IAAI,CAAC,cAAc,CAAC;QAC9F,8EAA8E,CAAC,IAAI,CAAC,cAAc,CAAC;QACnG,uEAAuE,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5F,sFAAsF,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3G,2FAA2F,CAAC,IAAI,CAAC,cAAc,CAAC;QAChH,oFAAoF,CAAC,IAAI,CAAC,cAAc,CAAC,CAC1G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,kJAAkJ,CAAC,IAAI,CAC5J,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAe;IAClD,OAAO,2LAA2L,CAAC,IAAI,CACrM,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,mGAAmG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3H,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO;QACL,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAChB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;KAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-secure-check/rules",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Security rules for next-secure-check",
5
5
  "keywords": [
6
6
  "nextjs",
@@ -33,7 +33,8 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@next-secure-check/core": "0.1.0"
36
+ "typescript": "^5.9.0",
37
+ "@next-secure-check/core": "0.2.0"
37
38
  },
38
39
  "scripts": {
39
40
  "build": "tsc -p tsconfig.json",