@opensip-cli/checks-universal 0.1.11 → 0.1.12

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.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/resilience-fp.test.js +42 -0
  3. package/dist/__tests__/resilience-fp.test.js.map +1 -1
  4. package/dist/checks/architecture/dependencies/no-duplicate-packages.d.ts.map +1 -1
  5. package/dist/checks/architecture/dependencies/no-duplicate-packages.js +0 -2
  6. package/dist/checks/architecture/dependencies/no-duplicate-packages.js.map +1 -1
  7. package/dist/checks/architecture/modules/empty-package-detection.d.ts.map +1 -1
  8. package/dist/checks/architecture/modules/empty-package-detection.js +0 -2
  9. package/dist/checks/architecture/modules/empty-package-detection.js.map +1 -1
  10. package/dist/checks/architecture/project-readme-existence.d.ts.map +1 -1
  11. package/dist/checks/architecture/project-readme-existence.js +0 -1
  12. package/dist/checks/architecture/project-readme-existence.js.map +1 -1
  13. package/dist/checks/architecture/vitest-config-required-with-tests.d.ts.map +1 -1
  14. package/dist/checks/architecture/vitest-config-required-with-tests.js +0 -1
  15. package/dist/checks/architecture/vitest-config-required-with-tests.js.map +1 -1
  16. package/dist/checks/documentation/_directives/fitness.d.ts.map +1 -1
  17. package/dist/checks/documentation/_directives/fitness.js +7 -52
  18. package/dist/checks/documentation/_directives/fitness.js.map +1 -1
  19. package/dist/checks/documentation/_directives/graph.d.ts.map +1 -1
  20. package/dist/checks/documentation/_directives/graph.js +7 -52
  21. package/dist/checks/documentation/_directives/graph.js.map +1 -1
  22. package/dist/checks/documentation/_directives/semgrep.d.ts.map +1 -1
  23. package/dist/checks/documentation/_directives/semgrep.js +2 -12
  24. package/dist/checks/documentation/_directives/semgrep.js.map +1 -1
  25. package/dist/checks/documentation/_directives/shared.d.ts +9 -0
  26. package/dist/checks/documentation/_directives/shared.d.ts.map +1 -0
  27. package/dist/checks/documentation/_directives/shared.js +53 -0
  28. package/dist/checks/documentation/_directives/shared.js.map +1 -0
  29. package/dist/checks/quality/dependency-version-consistency.d.ts.map +1 -1
  30. package/dist/checks/quality/dependency-version-consistency.js +0 -1
  31. package/dist/checks/quality/dependency-version-consistency.js.map +1 -1
  32. package/dist/checks/quality/linting/eslint-justifications.d.ts.map +1 -1
  33. package/dist/checks/quality/linting/eslint-justifications.js +1 -0
  34. package/dist/checks/quality/linting/eslint-justifications.js.map +1 -1
  35. package/dist/checks/quality/yagni-ignore-hygiene.js +1 -1
  36. package/dist/checks/quality/yagni-ignore-hygiene.js.map +1 -1
  37. package/dist/checks/resilience/batch-operation-limits.d.ts.map +1 -1
  38. package/dist/checks/resilience/batch-operation-limits.js +96 -42
  39. package/dist/checks/resilience/batch-operation-limits.js.map +1 -1
  40. package/dist/checks/resilience/sentry/_helpers/sentry.d.ts +10 -0
  41. package/dist/checks/resilience/sentry/_helpers/sentry.d.ts.map +1 -1
  42. package/dist/checks/resilience/sentry/_helpers/sentry.js +21 -0
  43. package/dist/checks/resilience/sentry/_helpers/sentry.js.map +1 -1
  44. package/dist/checks/resilience/sentry/sentry-dsn-configured.d.ts.map +1 -1
  45. package/dist/checks/resilience/sentry/sentry-dsn-configured.js +8 -23
  46. package/dist/checks/resilience/sentry/sentry-dsn-configured.js.map +1 -1
  47. package/dist/checks/resilience/sentry/sentry-environment-set.d.ts.map +1 -1
  48. package/dist/checks/resilience/sentry/sentry-environment-set.js +8 -20
  49. package/dist/checks/resilience/sentry/sentry-environment-set.js.map +1 -1
  50. package/dist/checks/resilience/sentry/sentry-release-set.d.ts.map +1 -1
  51. package/dist/checks/resilience/sentry/sentry-release-set.js +8 -20
  52. package/dist/checks/resilience/sentry/sentry-release-set.js.map +1 -1
  53. package/dist/checks/resilience/unbounded-memory.d.ts.map +1 -1
  54. package/dist/checks/resilience/unbounded-memory.js +47 -2
  55. package/dist/checks/resilience/unbounded-memory.js.map +1 -1
  56. package/dist/checks/security/package-supply-chain-policy.d.ts.map +1 -1
  57. package/dist/checks/security/package-supply-chain-policy.js +0 -1
  58. package/dist/checks/security/package-supply-chain-policy.js.map +1 -1
  59. package/dist/checks/testing/test-convention-consistency.d.ts.map +1 -1
  60. package/dist/checks/testing/test-convention-consistency.js +0 -1
  61. package/dist/checks/testing/test-convention-consistency.js.map +1 -1
  62. package/dist/checks/testing/test-file-naming.d.ts.map +1 -1
  63. package/dist/checks/testing/test-file-naming.js +0 -1
  64. package/dist/checks/testing/test-file-naming.js.map +1 -1
  65. package/dist/checks/testing/test-file-pairing.d.ts.map +1 -1
  66. package/dist/checks/testing/test-file-pairing.js +0 -1
  67. package/dist/checks/testing/test-file-pairing.js.map +1 -1
  68. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-justifications.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/linting/eslint-justifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6VH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,sCA8C/B,CAAC"}
1
+ {"version":3,"file":"eslint-justifications.d.ts","sourceRoot":"","sources":["../../../../src/checks/quality/linting/eslint-justifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8VH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,sCA8C/B,CAAC"}
@@ -257,6 +257,7 @@ function validateESLintSuppressions(content) {
257
257
  // =============================================================================
258
258
  // HELPERS
259
259
  // =============================================================================
260
+ // @graph-ignore-next-line graph:near-duplicate-function-body -- eslint and semgrep checks use parallel suggestion tables for different suppression vocabularies.
260
261
  function getSuggestionForIssueType(issueType) {
261
262
  switch (issueType) {
262
263
  case ISSUE_TYPE_MISSING_JUSTIFICATION: {
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-justifications.js","sourceRoot":"","sources":["../../../../src/checks/quality/linting/eslint-justifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint-justifications.js","sourceRoot":"","sources":["../../../../src/checks/quality/linting/eslint-justifications.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ function analyzeIgnoreHygiene(content, _filePath) {
25
25
  line: i + 1,
26
26
  message: `@yagni-ignore references '${detectorSlug}' which is not a valid detector slug (expected kebab-case)`,
27
27
  severity: 'warning',
28
- suggestion: 'Use a valid detector slug like "unused-config-surface" or "yagni:duplicate-body-candidate"',
28
+ suggestion: 'Use a valid detector slug like "unused-config-surface" or "yagni:unused-config-surface"',
29
29
  type: 'invalid-ignore-slug',
30
30
  match: line.trim().slice(0, 120),
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"yagni-ignore-hygiene.js","sourceRoot":"","sources":["../../../src/checks/quality/yagni-ignore-hygiene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yagni-ignore-hygiene.js","sourceRoot":"","sources":["../../../src/checks/quality/yagni-ignore-hygiene.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch-operation-limits.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/batch-operation-limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0GH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,sCAkF/B,CAAC"}
1
+ {"version":3,"file":"batch-operation-limits.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/batch-operation-limits.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2MH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,sCA0C/B,CAAC"}
@@ -42,10 +42,48 @@ const BOUNDED_KEYWORDS = [
42
42
  'offset',
43
43
  'slice',
44
44
  ];
45
+ /** In-memory registry/catalog reads that are bounded per run, not DB fanout. */
46
+ const BOUNDED_REGISTRY_MARKERS = [
47
+ 'registry',
48
+ 'catalog',
49
+ 'rules',
50
+ 'targets',
51
+ 'scenarios',
52
+ 'checks',
53
+ 'adapters',
54
+ 'signals',
55
+ 'recipes',
56
+ 'languages',
57
+ 'tools',
58
+ 'signaler',
59
+ 'descriptors',
60
+ 'entries',
61
+ 'columns',
62
+ 'ruleDescriptors',
63
+ 'fromtools',
64
+ 'targetregistry',
65
+ 'checkregistry',
66
+ 'scenarioregistry',
67
+ 'languageregistry',
68
+ 'toolregistry',
69
+ ];
45
70
  function hasBoundedKeyword(content) {
46
71
  const lowerContent = content.toLowerCase();
47
72
  return BOUNDED_KEYWORDS.some((keyword) => lowerContent.includes(keyword));
48
73
  }
74
+ function isBoundedRegistryQuery(content, queryIndex) {
75
+ const start = Math.max(0, queryIndex - 200);
76
+ const context = content.slice(start, queryIndex).toLowerCase();
77
+ return BOUNDED_REGISTRY_MARKERS.some((marker) => context.includes(marker));
78
+ }
79
+ function isRegistrySourceFile(filePath) {
80
+ return /(?:^|[/\\])registry\.ts$/.test(filePath);
81
+ }
82
+ /** `for (const x of …)` loops that never await are pure in-memory scans, not async batch fanout. */
83
+ function forOfLoopBodyMayAwait(content, forIndex) {
84
+ const snippet = content.slice(forIndex, Math.min(content.length, forIndex + 600));
85
+ return /\bawait\b/.test(snippet);
86
+ }
49
87
  function findUnboundedQueryCalls(content) {
50
88
  logger.debug({
51
89
  evt: 'fitness.checks.batch_operations.find_unbounded_query_calls',
@@ -74,6 +112,57 @@ function findUnboundedQueryCalls(content) {
74
112
  }
75
113
  return results;
76
114
  }
115
+ function queryViolations(content, filePath) {
116
+ const violations = [];
117
+ for (const query of findUnboundedQueryCalls(content)) {
118
+ if (isRegistrySourceFile(filePath) || isBoundedRegistryQuery(content, query.index))
119
+ continue;
120
+ violations.push({
121
+ line: getLineNumber(content, query.index),
122
+ column: 0,
123
+ message: `Unbounded ${query.methodName}() call may load excessive data`,
124
+ severity: 'warning',
125
+ suggestion: `Add pagination with limit/offset or use cursor-based pagination. Example: ${query.methodName}({ take: 100, skip: offset }) or use a cursor-based approach for large datasets.`,
126
+ match: query.match,
127
+ type: 'unbounded-query',
128
+ filePath,
129
+ });
130
+ }
131
+ return violations;
132
+ }
133
+ function batchPatternViolations(content, filePath) {
134
+ const violations = [];
135
+ for (const patternDef of UNBOUNDED_BATCH_PATTERNS) {
136
+ let searchStart = 0;
137
+ while (searchStart < content.length) {
138
+ const matchResult = findUnboundedBatchMatch(content, patternDef, searchStart);
139
+ if (!matchResult)
140
+ break;
141
+ const isForOf = /^for\s*\(\s*const\s+\w+\s+of/.test(matchResult.match);
142
+ if (isForOf && !forOfLoopBodyMayAwait(content, matchResult.index)) {
143
+ searchStart = matchResult.index + 1;
144
+ continue;
145
+ }
146
+ const start = Math.max(0, matchResult.index - 300);
147
+ const end = Math.min(content.length, matchResult.index + 300);
148
+ const context = content.slice(start, end);
149
+ if (!hasBoundedKeyword(context)) {
150
+ violations.push({
151
+ line: getLineNumber(content, matchResult.index),
152
+ column: 0,
153
+ message: 'Async operation in loop without batching may exhaust resources',
154
+ severity: 'warning',
155
+ suggestion: 'Add batch processing or concurrency limits. Use chunk() to process in batches or pLimit() to limit concurrent operations.',
156
+ match: matchResult.match,
157
+ type: 'unbounded-async-loop',
158
+ filePath,
159
+ });
160
+ }
161
+ searchStart = matchResult.index + 1;
162
+ }
163
+ }
164
+ return violations;
165
+ }
77
166
  /**
78
167
  * Check: resilience/batch-operation-limits
79
168
  *
@@ -92,9 +181,9 @@ export const batchOperationLimits = defineCheck({
92
181
  longDescription: `**Purpose:** Prevents batch operations from processing arbitrarily large datasets without pagination or concurrency controls.
93
182
 
94
183
  **Detects:**
95
- - Unbounded query calls: \`.findAll()\`, \`.getAll()\`, \`.findMany()\` with empty parentheses
184
+ - Unbounded query calls: \`.findAll()\`, \`.getAll()\`, \`.findMany()\` with empty parentheses (skips registry/catalog reads)
96
185
  - Async callbacks in \`.map(\` and \`.forEach(\` without nearby batching keywords
97
- - \`for (const x of\` loops without pagination indicators
186
+ - \`for (const x of\` loops whose body contains \`await\` without pagination indicators (pure synchronous scans are skipped)
98
187
  - Skips files containing bounded keywords: \`batch\`, \`chunk\`, \`page\`, \`limit\`, \`take\`, \`skip\`, \`offset\`, \`slice\`
99
188
 
100
189
  **Why it matters:** Processing unbounded datasets can exhaust memory and starve other operations of resources.
@@ -115,46 +204,11 @@ export const batchOperationLimits = defineCheck({
115
204
  if (hasBoundedKeyword(content)) {
116
205
  return violations;
117
206
  }
118
- const unboundedQueries = findUnboundedQueryCalls(content);
119
- for (const query of unboundedQueries) {
120
- const lineNumber = getLineNumber(content, query.index);
121
- violations.push({
122
- line: lineNumber,
123
- column: 0,
124
- message: `Unbounded ${query.methodName}() call may load excessive data`,
125
- severity: 'warning',
126
- suggestion: `Add pagination with limit/offset or use cursor-based pagination. Example: ${query.methodName}({ take: 100, skip: offset }) or use a cursor-based approach for large datasets.`,
127
- match: query.match,
128
- type: 'unbounded-query',
129
- filePath,
130
- });
131
- }
132
- for (const patternDef of UNBOUNDED_BATCH_PATTERNS) {
133
- let searchStart = 0;
134
- while (searchStart < content.length) {
135
- const matchResult = findUnboundedBatchMatch(content, patternDef, searchStart);
136
- if (!matchResult)
137
- break;
138
- const start = Math.max(0, matchResult.index - 300);
139
- const end = Math.min(content.length, matchResult.index + 300);
140
- const context = content.slice(start, end);
141
- if (!hasBoundedKeyword(context)) {
142
- const lineNumber = getLineNumber(content, matchResult.index);
143
- violations.push({
144
- line: lineNumber,
145
- column: 0,
146
- message: 'Async operation in loop without batching may exhaust resources',
147
- severity: 'warning',
148
- suggestion: 'Add batch processing or concurrency limits. Use chunk() to process in batches or pLimit() to limit concurrent operations.',
149
- match: matchResult.match,
150
- type: 'unbounded-async-loop',
151
- filePath,
152
- });
153
- }
154
- searchStart = matchResult.index + 1;
155
- }
156
- }
157
- return violations;
207
+ return [
208
+ ...violations,
209
+ ...queryViolations(content, filePath),
210
+ ...batchPatternViolations(content, filePath),
211
+ ];
158
212
  },
159
213
  });
160
214
  //# sourceMappingURL=batch-operation-limits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch-operation-limits.js","sourceRoot":"","sources":["../../../src/checks/resilience/batch-operation-limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-operation-limits.js","sourceRoot":"","sources":["../../../src/checks/resilience/batch-operation-limits.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * @fileoverview Shared helpers for Sentry fitness checks
3
3
  * @module checks-builtin/checks/resilience/sentry/_helpers/sentry
4
4
  */
5
+ import type { CheckViolation } from '@opensip-cli/fitness';
5
6
  /**
6
7
  * Quick bail-out: returns true if the file references Sentry at all.
7
8
  * All Sentry checks should call this first to avoid unnecessary work.
@@ -22,4 +23,13 @@ export declare function extractSentryInitBlock(content: string): {
22
23
  endLine: number;
23
24
  block: string;
24
25
  } | null;
26
+ export interface MissingSentryInitOptionInput {
27
+ readonly isConfigured: (initBlock: string) => boolean;
28
+ readonly message: string;
29
+ readonly severity: CheckViolation['severity'];
30
+ readonly suggestion: string;
31
+ readonly type: string;
32
+ }
33
+ export declare function analyzeMissingSentryInitOption(content: string, input: MissingSentryInitOptionInput): CheckViolation[];
34
+ export declare function createMissingSentryInitOptionAnalyzer(input: MissingSentryInitOptionInput): (content: string, filePath: string) => CheckViolation[];
25
35
  //# sourceMappingURL=sentry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../../../src/checks/resilience/sentry/_helpers/sentry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AAEH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgD9D"}
1
+ {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../../../src/checks/resilience/sentry/_helpers/sentry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AAEH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgD9D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,4BAA4B,GAClC,cAAc,EAAE,CAgBlB;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,4BAA4B,GAClC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,EAAE,CAEzD"}
@@ -65,4 +65,25 @@ export function extractSentryInitBlock(content) {
65
65
  block: blockLines.join('\n'),
66
66
  };
67
67
  }
68
+ export function analyzeMissingSentryInitOption(content, input) {
69
+ if (!hasSentryInit(content))
70
+ return [];
71
+ const initBlock = extractSentryInitBlock(content);
72
+ if (!initBlock)
73
+ return [];
74
+ if (input.isConfigured(initBlock.block))
75
+ return [];
76
+ return [
77
+ {
78
+ line: initBlock.startLine + 1,
79
+ message: input.message,
80
+ severity: input.severity,
81
+ suggestion: input.suggestion,
82
+ type: input.type,
83
+ },
84
+ ];
85
+ }
86
+ export function createMissingSentryInitOptionAnalyzer(input) {
87
+ return (content, _filePath) => analyzeMissingSentryInitOption(content, input);
88
+ }
68
89
  //# sourceMappingURL=sentry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../../../src/checks/resilience/sentry/_helpers/sentry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,0LAA0L;AAC1L,MAAM,UAAU,sBAAsB,CACpC,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,WAAW,GAAG,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,WAAW,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,4DAA4D;IAC5D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,UAAU,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,OAAO;QACL,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;QACzB,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../../../src/checks/resilience/sentry/_helpers/sentry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-dsn-configured.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-dsn-configured.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,sCAmB9B,CAAC"}
1
+ {"version":3,"file":"sentry-dsn-configured.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-dsn-configured.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,sCAmB9B,CAAC"}
@@ -3,29 +3,14 @@
3
3
  * @module checks-builtin/checks/resilience/sentry/sentry-dsn-configured
4
4
  */
5
5
  import { defineCheck } from '@opensip-cli/fitness';
6
- import { hasSentryInit, extractSentryInitBlock } from './_helpers/sentry.js';
7
- function analyze(content, _filePath) {
8
- if (!hasSentryInit(content))
9
- return [];
10
- const initBlock = extractSentryInitBlock(content);
11
- if (!initBlock)
12
- return [];
13
- // Check if DSN is present in the init block
14
- const hasDsn = initBlock.block.includes('dsn') ||
15
- initBlock.block.includes('DSN') ||
16
- initBlock.block.includes('SENTRY_DSN');
17
- if (hasDsn)
18
- return [];
19
- return [
20
- {
21
- line: initBlock.startLine + 1,
22
- message: 'Sentry.init() called without a DSN — Sentry will not report errors without a valid DSN',
23
- severity: 'error',
24
- suggestion: 'Add a dsn property to Sentry.init(): Sentry.init({ dsn: process.env.SENTRY_DSN, ... })',
25
- type: 'sentry-missing-dsn',
26
- },
27
- ];
28
- }
6
+ import { createMissingSentryInitOptionAnalyzer } from './_helpers/sentry.js';
7
+ const analyze = createMissingSentryInitOptionAnalyzer({
8
+ isConfigured: (block) => block.includes('dsn') || block.includes('DSN') || block.includes('SENTRY_DSN'),
9
+ message: 'Sentry.init() called without a DSN — Sentry will not report errors without a valid DSN',
10
+ severity: 'error',
11
+ suggestion: 'Add a dsn property to Sentry.init(): Sentry.init({ dsn: process.env.SENTRY_DSN, ... })',
12
+ type: 'sentry-missing-dsn',
13
+ });
29
14
  /**
30
15
  * Check: sentry-dsn-configured
31
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-dsn-configured.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-dsn-configured.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,SAAS,OAAO,CAAC,OAAe,EAAE,SAAiB;IACjD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,4CAA4C;IAC5C,MAAM,MAAM,GACV,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,MAAM;QAAE,OAAO,EAAE,CAAC;IAEtB,OAAO;QACL;YACE,IAAI,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC;YAC7B,OAAO,EACL,wFAAwF;YAC1F,QAAQ,EAAE,OAAO;YACjB,UAAU,EACR,wFAAwF;YAC1F,IAAI,EAAE,oBAAoB;SAC3B;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC7C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,oEAAoE;IACjF,eAAe,EAAE;;;;;;;;mFAQgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;IAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
1
+ {"version":3,"file":"sentry-dsn-configured.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-dsn-configured.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,OAAO,GAAG,qCAAqC,CAAC;IACpD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;IAChF,OAAO,EAAE,wFAAwF;IACjG,QAAQ,EAAE,OAAO;IACjB,UAAU,EACR,wFAAwF;IAC1F,IAAI,EAAE,oBAAoB;CAC3B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC7C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,oEAAoE;IACjF,eAAe,EAAE;;;;;;;;mFAQgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;IAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-environment-set.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-environment-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,sCAkB/B,CAAC"}
1
+ {"version":3,"file":"sentry-environment-set.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-environment-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,sCAkB/B,CAAC"}
@@ -3,26 +3,14 @@
3
3
  * @module checks-builtin/checks/resilience/sentry/sentry-environment-set
4
4
  */
5
5
  import { defineCheck } from '@opensip-cli/fitness';
6
- import { hasSentryInit, extractSentryInitBlock } from './_helpers/sentry.js';
7
- function analyze(content, _filePath) {
8
- if (!hasSentryInit(content))
9
- return [];
10
- const initBlock = extractSentryInitBlock(content);
11
- if (!initBlock)
12
- return [];
13
- const hasEnvironment = initBlock.block.includes('environment') || initBlock.block.includes('SENTRY_ENVIRONMENT');
14
- if (hasEnvironment)
15
- return [];
16
- return [
17
- {
18
- line: initBlock.startLine + 1,
19
- message: 'Sentry.init() called without environment — production and staging errors will be mixed together',
20
- severity: 'warning',
21
- suggestion: 'Add environment to Sentry.init(): Sentry.init({ environment: process.env.NODE_ENV, ... })',
22
- type: 'sentry-missing-environment',
23
- },
24
- ];
25
- }
6
+ import { createMissingSentryInitOptionAnalyzer } from './_helpers/sentry.js';
7
+ const analyze = createMissingSentryInitOptionAnalyzer({
8
+ isConfigured: (block) => block.includes('environment') || block.includes('SENTRY_ENVIRONMENT'),
9
+ message: 'Sentry.init() called without environment — production and staging errors will be mixed together',
10
+ severity: 'warning',
11
+ suggestion: 'Add environment to Sentry.init(): Sentry.init({ environment: process.env.NODE_ENV, ... })',
12
+ type: 'sentry-missing-environment',
13
+ });
26
14
  /**
27
15
  * Check: sentry-environment-set
28
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-environment-set.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-environment-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,SAAS,OAAO,CAAC,OAAe,EAAE,SAAiB;IACjD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,cAAc,GAClB,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE5F,IAAI,cAAc;QAAE,OAAO,EAAE,CAAC;IAE9B,OAAO;QACL;YACE,IAAI,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC;YAC7B,OAAO,EACL,iGAAiG;YACnG,QAAQ,EAAE,SAAS;YACnB,UAAU,EACR,2FAA2F;YAC7F,IAAI,EAAE,4BAA4B;SACnC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;IAC9C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,gFAAgF;IAC7F,eAAe,EAAE;;;;;;;mFAOgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;IAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
1
+ {"version":3,"file":"sentry-environment-set.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-environment-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,OAAO,GAAG,qCAAqC,CAAC;IACpD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC9F,OAAO,EACL,iGAAiG;IACnG,QAAQ,EAAE,SAAS;IACnB,UAAU,EACR,2FAA2F;IAC7F,IAAI,EAAE,4BAA4B;CACnC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;IAC9C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,gFAAgF;IAC7F,eAAe,EAAE;;;;;;;mFAOgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC;IAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-release-set.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-release-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6BH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,sCAkB3B,CAAC"}
1
+ {"version":3,"file":"sentry-release-set.d.ts","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-release-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,sCAkB3B,CAAC"}
@@ -3,26 +3,14 @@
3
3
  * @module checks-builtin/checks/resilience/sentry/sentry-release-set
4
4
  */
5
5
  import { defineCheck } from '@opensip-cli/fitness';
6
- import { hasSentryInit, extractSentryInitBlock } from './_helpers/sentry.js';
7
- function analyze(content, _filePath) {
8
- if (!hasSentryInit(content))
9
- return [];
10
- const initBlock = extractSentryInitBlock(content);
11
- if (!initBlock)
12
- return [];
13
- const hasRelease = initBlock.block.includes('release') || initBlock.block.includes('SENTRY_RELEASE');
14
- if (hasRelease)
15
- return [];
16
- return [
17
- {
18
- line: initBlock.startLine + 1,
19
- message: 'Sentry.init() called without release — cannot link errors to deploys or commits',
20
- severity: 'warning',
21
- suggestion: 'Add release to Sentry.init(): Sentry.init({ release: process.env.SENTRY_RELEASE || "1.0.0", ... }). Pair with @sentry/webpack-plugin or @sentry/vite-plugin for automatic release creation.',
22
- type: 'sentry-missing-release',
23
- },
24
- ];
25
- }
6
+ import { createMissingSentryInitOptionAnalyzer } from './_helpers/sentry.js';
7
+ const analyze = createMissingSentryInitOptionAnalyzer({
8
+ isConfigured: (block) => block.includes('release') || block.includes('SENTRY_RELEASE'),
9
+ message: 'Sentry.init() called without release — cannot link errors to deploys or commits',
10
+ severity: 'warning',
11
+ suggestion: 'Add release to Sentry.init(): Sentry.init({ release: process.env.SENTRY_RELEASE || "1.0.0", ... }). Pair with @sentry/webpack-plugin or @sentry/vite-plugin for automatic release creation.',
12
+ type: 'sentry-missing-release',
13
+ });
26
14
  /**
27
15
  * Check: sentry-release-set
28
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sentry-release-set.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-release-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,SAAS,OAAO,CAAC,OAAe,EAAE,SAAiB;IACjD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,UAAU,GACd,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEpF,IAAI,UAAU;QAAE,OAAO,EAAE,CAAC;IAE1B,OAAO;QACL;YACE,IAAI,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC;YAC7B,OAAO,EAAE,iFAAiF;YAC1F,QAAQ,EAAE,SAAS;YACnB,UAAU,EACR,6LAA6L;YAC/L,IAAI,EAAE,wBAAwB;SAC/B;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,iFAAiF;IAC9F,eAAe,EAAE;;;;;;;mFAOgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
1
+ {"version":3,"file":"sentry-release-set.js","sourceRoot":"","sources":["../../../../src/checks/resilience/sentry/sentry-release-set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,OAAO,GAAG,qCAAqC,CAAC;IACpD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtF,OAAO,EAAE,iFAAiF;IAC1F,QAAQ,EAAE,SAAS;IACnB,UAAU,EACR,6LAA6L;IAC/L,IAAI,EAAE,wBAAwB;CAC/B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;IAC1C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;IACrF,aAAa,EAAE,4BAA4B;IAC3C,WAAW,EAAE,iFAAiF;IAC9F,eAAe,EAAE;;;;;;;mFAOgE;IACjF,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC5C,UAAU,EAAE,MAAM;IAClB,OAAO;CACR,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unbounded-memory.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/unbounded-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6KH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,sCAsF1B,CAAC"}
1
+ {"version":3,"file":"unbounded-memory.d.ts","sourceRoot":"","sources":["../../../src/checks/resilience/unbounded-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2NH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,sCA0F1B,CAAC"}
@@ -106,15 +106,57 @@ function isModuleSelfRelativeRead(codeContext) {
106
106
  const KNOWN_SMALL_FILE_PATTERNS = [
107
107
  'package.json',
108
108
  'tsconfig',
109
+ 'pyproject.toml',
109
110
  '.json',
110
111
  '.yaml',
111
112
  '.yml',
112
113
  '.toml',
113
114
  '.env',
114
115
  '.config',
116
+ 'opensip-cli.config',
117
+ '.opensip-cli',
118
+ 'update-state',
119
+ 'entitlement',
120
+ 'scaffold',
121
+ 'template',
122
+ 'global-config',
123
+ 'manifest',
115
124
  '.eslintrc',
116
125
  '.prettierrc',
117
126
  ];
127
+ const BOUNDED_SOURCE_READ_PATHS = [
128
+ /[/\\]cli[/\\]src[/\\]commands[/\\]init[/\\]scaffold-writer\.ts$/i,
129
+ /[/\\]cli[/\\]src[/\\]commands[/\\]plugin[/\\]config-edit\.ts$/i,
130
+ /[/\\]config[/\\]src[/\\]document[/\\]global-config\.ts$/i,
131
+ /[/\\]core[/\\]src[/\\]signals[/\\]suppress\.ts$/i,
132
+ /[/\\]fitness[/\\]engine[/\\]src[/\\]framework[/\\]define-check\.ts$/i,
133
+ /[/\\]graph[/\\]graph-adapter-common[/\\]src[/\\]cache-key\.ts$/i,
134
+ /[/\\]graph[/\\]graph-go[/\\]src[/\\]resolve\.ts$/i,
135
+ /[/\\]graph[/\\]graph-python[/\\]src[/\\]cache-key\.ts$/i,
136
+ /[/\\]graph[/\\]graph-rust[/\\]src[/\\]resolve-dependencies\.ts$/i,
137
+ /[/\\]graph[/\\]graph-typescript[/\\]src[/\\]discover\.ts$/i,
138
+ /[/\\]graph[/\\]graph-typescript[/\\]src[/\\]index\.ts$/i,
139
+ /[/\\]languages[/\\]lang-typescript[/\\]src[/\\]program-service\.ts$/i,
140
+ /[/\\]output[/\\]src[/\\]sink[/\\]entitlement\.ts$/i,
141
+ /[/\\]yagni[/\\]engine[/\\]src[/\\]cli[/\\]execute-yagni\.ts$/i,
142
+ ];
143
+ function isKnownBoundedSourceRead(filePath) {
144
+ return BOUNDED_SOURCE_READ_PATHS.some((pattern) => pattern.test(filePath));
145
+ }
146
+ /** Whole-file markers that prove reads are size-guarded elsewhere in the module. */
147
+ const GUARDED_READ_MARKERS = [
148
+ 'file_too_large',
149
+ 'max_file_size',
150
+ 'maxfilesize',
151
+ 'file too large',
152
+ 'content.length >',
153
+ 'content.length <',
154
+ 'statsync',
155
+ ];
156
+ function hasGuardedReadWrapper(content) {
157
+ const lower = content.toLowerCase();
158
+ return GUARDED_READ_MARKERS.some((marker) => lower.includes(marker));
159
+ }
118
160
  function isReadingKnownSmallFile(content, readIndex) {
119
161
  const start = Math.max(0, readIndex - 100);
120
162
  const end = Math.min(content.length, readIndex + 150);
@@ -161,7 +203,7 @@ export const unboundedMemory = defineCheck({
161
203
  **Detects:**
162
204
  - Private class fields initialized with \`new Map(\`, \`new Set(\`, or empty arrays that have growth methods (\`.set\`, \`.push\`, \`.add\`) but no eviction keywords (\`.delete\`, \`.clear\`, \`maxsize\`, \`evict\`, \`prune\`, \`lru\`, etc.)
163
205
  - \`readFileSync(\` and \`readFile(\` calls without a preceding \`stat()\` / \`.size\` check within 500 characters
164
- - Skips \`static\`, \`readonly\`, \`const\`, \`WeakMap\`, and DI token declarations
206
+ - Skips known-small config paths (\`.opensip-cli\`, \`opensip-cli.config\`, manifests), modules with size guards, and \`static\` / \`readonly\` / \`const\` / \`WeakMap\` / DI token declarations
165
207
 
166
208
  **Why it matters:** Unbounded in-memory collections cause gradual OOM in long-running services; reading files without size guards risks instant OOM on large inputs.
167
209
 
@@ -197,12 +239,15 @@ export const unboundedMemory = defineCheck({
197
239
  });
198
240
  }
199
241
  }
242
+ if (hasGuardedReadWrapper(content)) {
243
+ return violations;
244
+ }
200
245
  const fileReadCalls = findFileReadCalls(codeOnly);
201
246
  for (const readCall of fileReadCalls) {
202
247
  const start = Math.max(0, readCall.index - 1500);
203
248
  const context = content.slice(start, readCall.index);
204
249
  const codeContext = codeOnly.slice(start, readCall.index);
205
- if (isReadingKnownSmallFile(content, readCall.index)) {
250
+ if (isKnownBoundedSourceRead(filePath) || isReadingKnownSmallFile(content, readCall.index)) {
206
251
  continue;
207
252
  }
208
253
  if (isStructuredParseRead(codeOnly, readCall.index) ||