driftdetect 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/bin/drift.d.ts +11 -0
  2. package/dist/bin/drift.d.ts.map +1 -0
  3. package/dist/bin/drift.js +83 -0
  4. package/dist/bin/drift.js.map +1 -0
  5. package/dist/commands/approve.d.ts +18 -0
  6. package/dist/commands/approve.d.ts.map +1 -0
  7. package/dist/commands/approve.js +271 -0
  8. package/dist/commands/approve.js.map +1 -0
  9. package/dist/commands/check.d.ts +39 -0
  10. package/dist/commands/check.d.ts.map +1 -0
  11. package/dist/commands/check.js +268 -0
  12. package/dist/commands/check.js.map +1 -0
  13. package/dist/commands/export.d.ts +14 -0
  14. package/dist/commands/export.d.ts.map +1 -0
  15. package/dist/commands/export.js +109 -0
  16. package/dist/commands/export.js.map +1 -0
  17. package/dist/commands/files.d.ts +13 -0
  18. package/dist/commands/files.d.ts.map +1 -0
  19. package/dist/commands/files.js +88 -0
  20. package/dist/commands/files.js.map +1 -0
  21. package/dist/commands/ignore.d.ts +18 -0
  22. package/dist/commands/ignore.d.ts.map +1 -0
  23. package/dist/commands/ignore.js +200 -0
  24. package/dist/commands/ignore.js.map +1 -0
  25. package/dist/commands/index.d.ts +16 -0
  26. package/dist/commands/index.d.ts.map +1 -0
  27. package/dist/commands/index.js +16 -0
  28. package/dist/commands/index.js.map +1 -0
  29. package/dist/commands/init.d.ts +19 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +320 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/report.d.ts +20 -0
  34. package/dist/commands/report.d.ts.map +1 -0
  35. package/dist/commands/report.js +202 -0
  36. package/dist/commands/report.js.map +1 -0
  37. package/dist/commands/scan.d.ts +27 -0
  38. package/dist/commands/scan.d.ts.map +1 -0
  39. package/dist/commands/scan.js +444 -0
  40. package/dist/commands/scan.js.map +1 -0
  41. package/dist/commands/status.d.ts +18 -0
  42. package/dist/commands/status.d.ts.map +1 -0
  43. package/dist/commands/status.js +199 -0
  44. package/dist/commands/status.js.map +1 -0
  45. package/dist/commands/where.d.ts +13 -0
  46. package/dist/commands/where.d.ts.map +1 -0
  47. package/dist/commands/where.js +80 -0
  48. package/dist/commands/where.js.map +1 -0
  49. package/dist/git/hooks.d.ts +108 -0
  50. package/dist/git/hooks.d.ts.map +1 -0
  51. package/dist/git/hooks.js +389 -0
  52. package/dist/git/hooks.js.map +1 -0
  53. package/dist/git/index.d.ts +6 -0
  54. package/dist/git/index.d.ts.map +1 -0
  55. package/dist/git/index.js +6 -0
  56. package/dist/git/index.js.map +1 -0
  57. package/dist/git/staged-files.d.ts +41 -0
  58. package/dist/git/staged-files.d.ts.map +1 -0
  59. package/dist/git/staged-files.js +118 -0
  60. package/dist/git/staged-files.js.map +1 -0
  61. package/dist/index.d.ts +17 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +21 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/reporters/github-reporter.d.ts +13 -0
  66. package/dist/reporters/github-reporter.d.ts.map +1 -0
  67. package/dist/reporters/github-reporter.js +59 -0
  68. package/dist/reporters/github-reporter.js.map +1 -0
  69. package/dist/reporters/gitlab-reporter.d.ts +16 -0
  70. package/dist/reporters/gitlab-reporter.d.ts.map +1 -0
  71. package/dist/reporters/gitlab-reporter.js +62 -0
  72. package/dist/reporters/gitlab-reporter.js.map +1 -0
  73. package/dist/reporters/index.d.ts +9 -0
  74. package/dist/reporters/index.d.ts.map +1 -0
  75. package/dist/reporters/index.js +9 -0
  76. package/dist/reporters/index.js.map +1 -0
  77. package/dist/reporters/json-reporter.d.ts +13 -0
  78. package/dist/reporters/json-reporter.d.ts.map +1 -0
  79. package/dist/reporters/json-reporter.js +44 -0
  80. package/dist/reporters/json-reporter.js.map +1 -0
  81. package/dist/reporters/text-reporter.d.ts +13 -0
  82. package/dist/reporters/text-reporter.d.ts.map +1 -0
  83. package/dist/reporters/text-reporter.js +96 -0
  84. package/dist/reporters/text-reporter.js.map +1 -0
  85. package/dist/reporters/types.d.ts +42 -0
  86. package/dist/reporters/types.d.ts.map +1 -0
  87. package/dist/reporters/types.js +5 -0
  88. package/dist/reporters/types.js.map +1 -0
  89. package/dist/services/scanner-service.d.ts +166 -0
  90. package/dist/services/scanner-service.d.ts.map +1 -0
  91. package/dist/services/scanner-service.js +453 -0
  92. package/dist/services/scanner-service.js.map +1 -0
  93. package/dist/types/index.d.ts +24 -0
  94. package/dist/types/index.d.ts.map +1 -0
  95. package/dist/types/index.js +5 -0
  96. package/dist/types/index.js.map +1 -0
  97. package/dist/ui/index.d.ts +11 -0
  98. package/dist/ui/index.d.ts.map +1 -0
  99. package/dist/ui/index.js +15 -0
  100. package/dist/ui/index.js.map +1 -0
  101. package/dist/ui/progress.d.ts +115 -0
  102. package/dist/ui/progress.d.ts.map +1 -0
  103. package/dist/ui/progress.js +232 -0
  104. package/dist/ui/progress.js.map +1 -0
  105. package/dist/ui/prompts.d.ts +91 -0
  106. package/dist/ui/prompts.d.ts.map +1 -0
  107. package/dist/ui/prompts.js +160 -0
  108. package/dist/ui/prompts.js.map +1 -0
  109. package/dist/ui/spinner.d.ts +109 -0
  110. package/dist/ui/spinner.d.ts.map +1 -0
  111. package/dist/ui/spinner.js +179 -0
  112. package/dist/ui/spinner.js.map +1 -0
  113. package/dist/ui/table.d.ts +118 -0
  114. package/dist/ui/table.d.ts.map +1 -0
  115. package/dist/ui/table.js +235 -0
  116. package/dist/ui/table.js.map +1 -0
  117. package/package.json +57 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * GitHub Reporter - GitHub Actions annotations
3
+ *
4
+ * @requirements 30.2
5
+ */
6
+ /**
7
+ * Map severity to GitHub annotation level
8
+ */
9
+ function severityToLevel(severity) {
10
+ switch (severity) {
11
+ case 'error':
12
+ return 'error';
13
+ case 'warning':
14
+ return 'warning';
15
+ case 'info':
16
+ case 'hint':
17
+ default:
18
+ return 'notice';
19
+ }
20
+ }
21
+ /**
22
+ * GitHub Actions reporter for CI annotations
23
+ */
24
+ export class GitHubReporter {
25
+ generate(data) {
26
+ const lines = [];
27
+ for (const violation of data.violations) {
28
+ const level = severityToLevel(violation.severity);
29
+ const file = violation.file;
30
+ const line = violation.range.start.line;
31
+ const endLine = violation.range.end.line;
32
+ const col = violation.range.start.character;
33
+ const endCol = violation.range.end.character;
34
+ const title = `Drift: ${violation.patternId}`;
35
+ const message = violation.message;
36
+ lines.push(`::${level} file=${file},line=${line},endLine=${endLine},col=${col},endColumn=${endCol},title=${title}::${message}`);
37
+ }
38
+ if (data.violations.length > 0) {
39
+ const parts = [];
40
+ if (data.summary.errors > 0)
41
+ parts.push(`${data.summary.errors} error(s)`);
42
+ if (data.summary.warnings > 0)
43
+ parts.push(`${data.summary.warnings} warning(s)`);
44
+ if (data.summary.infos > 0)
45
+ parts.push(`${data.summary.infos} info`);
46
+ if (data.summary.hints > 0)
47
+ parts.push(`${data.summary.hints} hint(s)`);
48
+ lines.push(`::notice::Drift found ${data.summary.total} violation(s): ${parts.join(', ')}`);
49
+ }
50
+ else {
51
+ lines.push('::notice::Drift: No violations found');
52
+ }
53
+ lines.push(`::set-output name=violations::${data.summary.total}`);
54
+ lines.push(`::set-output name=errors::${data.summary.errors}`);
55
+ lines.push(`::set-output name=warnings::${data.summary.warnings}`);
56
+ return lines.join('\n');
57
+ }
58
+ }
59
+ //# sourceMappingURL=github-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-reporter.js","sourceRoot":"","sources":["../../src/reporters/github-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,SAAS,eAAe,CAAC,QAAkB;IACzC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,QAAQ,CAAC,IAAgB;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACxC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACzC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAC7C,MAAM,KAAK,GAAG,UAAU,SAAS,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAElC,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,SAAS,IAAI,SAAS,IAAI,YAAY,OAAO,QAAQ,GAAG,cAAc,MAAM,UAAU,KAAK,KAAK,OAAO,EAAE,CACpH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,aAAa,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * GitLab Reporter - GitLab CI code quality format
3
+ *
4
+ * @requirements 30.3
5
+ */
6
+ import type { Reporter, ReportData } from './types.js';
7
+ /**
8
+ * GitLab CI reporter for code quality reports
9
+ *
10
+ * Generates reports in GitLab Code Quality format:
11
+ * https://docs.gitlab.com/ee/ci/testing/code_quality.html
12
+ */
13
+ export declare class GitLabReporter implements Reporter {
14
+ generate(data: ReportData): string;
15
+ }
16
+ //# sourceMappingURL=gitlab-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/gitlab-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4DvD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAgCnC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * GitLab Reporter - GitLab CI code quality format
3
+ *
4
+ * @requirements 30.3
5
+ */
6
+ import * as crypto from 'node:crypto';
7
+ /**
8
+ * Map severity to GitLab Code Quality severity
9
+ */
10
+ function severityToGitLab(severity) {
11
+ switch (severity) {
12
+ case 'error':
13
+ return 'critical';
14
+ case 'warning':
15
+ return 'major';
16
+ case 'info':
17
+ return 'minor';
18
+ case 'hint':
19
+ default:
20
+ return 'info';
21
+ }
22
+ }
23
+ /**
24
+ * Generate a fingerprint for a violation
25
+ */
26
+ function generateFingerprint(patternId, file, line, message) {
27
+ const content = `${patternId}:${file}:${line}:${message}`;
28
+ return crypto.createHash('md5').update(content).digest('hex');
29
+ }
30
+ /**
31
+ * GitLab CI reporter for code quality reports
32
+ *
33
+ * Generates reports in GitLab Code Quality format:
34
+ * https://docs.gitlab.com/ee/ci/testing/code_quality.html
35
+ */
36
+ export class GitLabReporter {
37
+ generate(data) {
38
+ const issues = data.violations.map((violation) => {
39
+ const issue = {
40
+ type: 'issue',
41
+ check_name: `drift/${violation.patternId}`,
42
+ description: violation.message,
43
+ categories: ['Style', 'Consistency'],
44
+ location: {
45
+ path: violation.file,
46
+ lines: {
47
+ begin: violation.range.start.line,
48
+ end: violation.range.end.line,
49
+ },
50
+ },
51
+ severity: severityToGitLab(violation.severity),
52
+ fingerprint: generateFingerprint(violation.patternId, violation.file, violation.range.start.line, violation.message),
53
+ };
54
+ if (violation.explanation) {
55
+ issue.content = { body: violation.explanation };
56
+ }
57
+ return issue;
58
+ });
59
+ return JSON.stringify(issues, null, 2);
60
+ }
61
+ }
62
+ //# sourceMappingURL=gitlab-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-reporter.js","sourceRoot":"","sources":["../../src/reporters/gitlab-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAStC;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAwBD;;GAEG;AACH,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,IAAY,EACZ,IAAY,EACZ,OAAe;IAEf,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;IAC1D,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACzB,QAAQ,CAAC,IAAgB;QACvB,MAAM,MAAM,GAAkB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,SAAS,SAAS,CAAC,SAAS,EAAE;gBAC1C,WAAW,EAAE,SAAS,CAAC,OAAO;gBAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;gBACpC,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE;wBACL,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;wBACjC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;qBAC9B;iBACF;gBACD,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC9C,WAAW,EAAE,mBAAmB,CAC9B,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAC1B,SAAS,CAAC,OAAO,CAClB;aACF,CAAC;YAEF,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1B,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;YAClD,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Reporters module exports
3
+ */
4
+ export * from './types.js';
5
+ export { TextReporter } from './text-reporter.js';
6
+ export { JsonReporter } from './json-reporter.js';
7
+ export { GitHubReporter } from './github-reporter.js';
8
+ export { GitLabReporter } from './gitlab-reporter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Reporters module exports
3
+ */
4
+ export * from './types.js';
5
+ export { TextReporter } from './text-reporter.js';
6
+ export { JsonReporter } from './json-reporter.js';
7
+ export { GitHubReporter } from './github-reporter.js';
8
+ export { GitLabReporter } from './gitlab-reporter.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * JSON Reporter - Machine-readable JSON output
3
+ *
4
+ * @requirements 30.1
5
+ */
6
+ import type { Reporter, ReportData } from './types.js';
7
+ /**
8
+ * JSON reporter for machine-readable output
9
+ */
10
+ export declare class JsonReporter implements Reporter {
11
+ generate(data: ReportData): string;
12
+ }
13
+ //# sourceMappingURL=json-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/json-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAkCnC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * JSON Reporter - Machine-readable JSON output
3
+ *
4
+ * @requirements 30.1
5
+ */
6
+ /**
7
+ * JSON reporter for machine-readable output
8
+ */
9
+ export class JsonReporter {
10
+ generate(data) {
11
+ const output = {
12
+ violations: data.violations.map((v) => ({
13
+ id: v.id,
14
+ patternId: v.patternId,
15
+ severity: v.severity,
16
+ file: v.file,
17
+ line: v.range.start.line,
18
+ column: v.range.start.character,
19
+ endLine: v.range.end.line,
20
+ endColumn: v.range.end.character,
21
+ message: v.message,
22
+ explanation: v.explanation,
23
+ expected: v.expected,
24
+ actual: v.actual,
25
+ })),
26
+ summary: {
27
+ total: data.summary.total,
28
+ errors: data.summary.errors,
29
+ warnings: data.summary.warnings,
30
+ infos: data.summary.infos,
31
+ hints: data.summary.hints,
32
+ },
33
+ patterns: data.patterns.map((p) => ({
34
+ id: p.id,
35
+ name: p.name,
36
+ category: p.category,
37
+ severity: p.severity,
38
+ })),
39
+ timestamp: data.timestamp,
40
+ };
41
+ return JSON.stringify(output, null, 2);
42
+ }
43
+ }
44
+ //# sourceMappingURL=json-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-reporter.js","sourceRoot":"","sources":["../../src/reporters/json-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB,QAAQ,CAAC,IAAgB;QACvB,MAAM,MAAM,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBACxB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;gBACzB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;gBAChC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Text Reporter - Human-readable text output
3
+ *
4
+ * @requirements 29.7
5
+ */
6
+ import type { Reporter, ReportData } from './types.js';
7
+ /**
8
+ * Text reporter for human-readable output
9
+ */
10
+ export declare class TextReporter implements Reporter {
11
+ generate(data: ReportData): string;
12
+ }
13
+ //# sourceMappingURL=text-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/text-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuCvD;;GAEG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CA6DnC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Text Reporter - Human-readable text output
3
+ *
4
+ * @requirements 29.7
5
+ */
6
+ import chalk from 'chalk';
7
+ /**
8
+ * Format severity with color
9
+ */
10
+ function formatSeverity(severity) {
11
+ switch (severity) {
12
+ case 'error':
13
+ return chalk.red('error');
14
+ case 'warning':
15
+ return chalk.yellow('warning');
16
+ case 'info':
17
+ return chalk.blue('info');
18
+ case 'hint':
19
+ return chalk.gray('hint');
20
+ default:
21
+ return severity;
22
+ }
23
+ }
24
+ /**
25
+ * Get severity icon
26
+ */
27
+ function getSeverityIcon(severity) {
28
+ switch (severity) {
29
+ case 'error':
30
+ return chalk.red('✖');
31
+ case 'warning':
32
+ return chalk.yellow('⚠');
33
+ case 'info':
34
+ return chalk.blue('ℹ');
35
+ case 'hint':
36
+ return chalk.gray('○');
37
+ default:
38
+ return ' ';
39
+ }
40
+ }
41
+ /**
42
+ * Text reporter for human-readable output
43
+ */
44
+ export class TextReporter {
45
+ generate(data) {
46
+ const lines = [];
47
+ if (data.violations.length === 0) {
48
+ lines.push(chalk.green('✔ No violations found'));
49
+ return lines.join('\n');
50
+ }
51
+ // Group violations by file
52
+ const byFile = new Map();
53
+ for (const violation of data.violations) {
54
+ const existing = byFile.get(violation.file) ?? [];
55
+ existing.push(violation);
56
+ byFile.set(violation.file, existing);
57
+ }
58
+ // Output violations grouped by file
59
+ for (const [file, violations] of Array.from(byFile.entries())) {
60
+ lines.push('');
61
+ lines.push(chalk.underline(file));
62
+ // Sort by line number
63
+ violations.sort((a, b) => a.range.start.line - b.range.start.line);
64
+ for (const violation of violations) {
65
+ const icon = getSeverityIcon(violation.severity);
66
+ const location = chalk.gray(`${violation.range.start.line}:${violation.range.start.character}`);
67
+ const severity = formatSeverity(violation.severity);
68
+ const message = violation.message;
69
+ const patternId = chalk.gray(`(${violation.patternId})`);
70
+ lines.push(` ${icon} ${location} ${severity} ${message} ${patternId}`);
71
+ if (violation.explanation) {
72
+ lines.push(chalk.gray(` ${violation.explanation}`));
73
+ }
74
+ }
75
+ }
76
+ // Summary
77
+ lines.push('');
78
+ lines.push(chalk.gray('─'.repeat(60)));
79
+ const parts = [];
80
+ if (data.summary.errors > 0) {
81
+ parts.push(chalk.red(`${data.summary.errors} error${data.summary.errors !== 1 ? 's' : ''}`));
82
+ }
83
+ if (data.summary.warnings > 0) {
84
+ parts.push(chalk.yellow(`${data.summary.warnings} warning${data.summary.warnings !== 1 ? 's' : ''}`));
85
+ }
86
+ if (data.summary.infos > 0) {
87
+ parts.push(chalk.blue(`${data.summary.infos} info`));
88
+ }
89
+ if (data.summary.hints > 0) {
90
+ parts.push(chalk.gray(`${data.summary.hints} hint${data.summary.hints !== 1 ? 's' : ''}`));
91
+ }
92
+ lines.push(`${parts.join(', ')} (${data.summary.total} total)`);
93
+ return lines.join('\n');
94
+ }
95
+ }
96
+ //# sourceMappingURL=text-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-reporter.js","sourceRoot":"","sources":["../../src/reporters/text-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Reporter type definitions
3
+ */
4
+ import type { Violation, Pattern } from 'driftdetect-core';
5
+ /**
6
+ * Summary of violations
7
+ */
8
+ export interface ViolationSummary {
9
+ /** Total number of violations */
10
+ total: number;
11
+ /** Number of errors */
12
+ errors: number;
13
+ /** Number of warnings */
14
+ warnings: number;
15
+ /** Number of info violations */
16
+ infos: number;
17
+ /** Number of hints */
18
+ hints: number;
19
+ }
20
+ /**
21
+ * Data passed to reporters
22
+ */
23
+ export interface ReportData {
24
+ /** Violations found */
25
+ violations: Violation[];
26
+ /** Summary statistics */
27
+ summary: ViolationSummary;
28
+ /** Patterns checked */
29
+ patterns: Pattern[];
30
+ /** Timestamp of the report */
31
+ timestamp: string;
32
+ /** Root directory */
33
+ rootDir: string;
34
+ }
35
+ /**
36
+ * Reporter interface
37
+ */
38
+ export interface Reporter {
39
+ /** Generate a report from the data */
40
+ generate(data: ReportData): string;
41
+ }
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reporters/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uBAAuB;IACvB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,uBAAuB;IACvB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;CACpC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Reporter type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reporters/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Scanner Service - Enterprise-grade pattern detection
3
+ *
4
+ * Uses the real detectors from driftdetect-detectors to find
5
+ * high-value architectural patterns and violations.
6
+ *
7
+ * Now includes manifest generation for pattern location discovery.
8
+ */
9
+ import { ManifestStore, type Manifest } from 'driftdetect-core';
10
+ /**
11
+ * Project-wide context for detection
12
+ */
13
+ export interface ProjectContext {
14
+ rootDir: string;
15
+ files: string[];
16
+ config: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Scanner service configuration
20
+ */
21
+ export interface ScannerServiceConfig {
22
+ rootDir: string;
23
+ verbose?: boolean;
24
+ categories?: string[];
25
+ /** Only run critical/high-value detectors */
26
+ criticalOnly?: boolean;
27
+ /** Enable manifest generation */
28
+ generateManifest?: boolean;
29
+ /** Only scan changed files (incremental) */
30
+ incremental?: boolean;
31
+ }
32
+ /**
33
+ * Aggregated pattern match across files
34
+ */
35
+ export interface AggregatedPattern {
36
+ patternId: string;
37
+ detectorId: string;
38
+ category: string;
39
+ subcategory: string;
40
+ name: string;
41
+ description: string;
42
+ locations: Array<{
43
+ file: string;
44
+ line: number;
45
+ column: number;
46
+ }>;
47
+ confidence: number;
48
+ occurrences: number;
49
+ }
50
+ /**
51
+ * Aggregated violation across files
52
+ */
53
+ export interface AggregatedViolation {
54
+ patternId: string;
55
+ detectorId: string;
56
+ category: string;
57
+ severity: 'error' | 'warning' | 'info' | 'hint';
58
+ file: string;
59
+ line: number;
60
+ column: number;
61
+ message: string;
62
+ explanation?: string | undefined;
63
+ suggestedFix?: string | undefined;
64
+ }
65
+ /**
66
+ * Scan result for a single file
67
+ */
68
+ export interface FileScanResult {
69
+ file: string;
70
+ patterns: Array<{
71
+ patternId: string;
72
+ detectorId: string;
73
+ confidence: number;
74
+ location: {
75
+ file: string;
76
+ line: number;
77
+ column: number;
78
+ };
79
+ }>;
80
+ violations: AggregatedViolation[];
81
+ duration: number;
82
+ error?: string;
83
+ }
84
+ /**
85
+ * Overall scan results
86
+ */
87
+ export interface ScanResults {
88
+ files: FileScanResult[];
89
+ patterns: AggregatedPattern[];
90
+ violations: AggregatedViolation[];
91
+ totalPatterns: number;
92
+ totalViolations: number;
93
+ totalFiles: number;
94
+ duration: number;
95
+ errors: string[];
96
+ detectorStats: {
97
+ total: number;
98
+ ran: number;
99
+ skipped: number;
100
+ };
101
+ /** Manifest with semantic locations (if generateManifest is true) */
102
+ manifest?: Manifest;
103
+ }
104
+ /**
105
+ * Scanner Service
106
+ *
107
+ * Orchestrates pattern detection across files using real detectors
108
+ * from driftdetect-detectors package.
109
+ */
110
+ export declare class ScannerService {
111
+ private config;
112
+ private detectors;
113
+ private initialized;
114
+ private manifestStore;
115
+ constructor(config: ScannerServiceConfig);
116
+ /**
117
+ * Initialize the scanner service - loads all detectors
118
+ */
119
+ initialize(): Promise<void>;
120
+ /**
121
+ * Get detector count
122
+ */
123
+ getDetectorCount(): number;
124
+ /**
125
+ * Get detector counts by category
126
+ */
127
+ getDetectorCounts(): {
128
+ api: number;
129
+ auth: number;
130
+ security: number;
131
+ errors: number;
132
+ structural: number;
133
+ components: number;
134
+ styling: number;
135
+ logging: number;
136
+ testing: number;
137
+ dataAccess: number;
138
+ config: number;
139
+ types: number;
140
+ accessibility: number;
141
+ documentation: number;
142
+ performance: number;
143
+ total: number;
144
+ };
145
+ /**
146
+ * Scan files for patterns using real detectors
147
+ */
148
+ scanFiles(files: string[], projectContext: ProjectContext): Promise<ScanResults>;
149
+ /**
150
+ * Create a semantic location from a basic location
151
+ */
152
+ private createSemanticLocation;
153
+ /**
154
+ * Extract semantic information from a line of code
155
+ */
156
+ private extractSemanticInfo;
157
+ /**
158
+ * Get the manifest store (for external access)
159
+ */
160
+ getManifestStore(): ManifestStore | null;
161
+ }
162
+ /**
163
+ * Create a scanner service
164
+ */
165
+ export declare function createScannerService(config: ScannerServiceConfig): ScannerService;
166
+ //# sourceMappingURL=scanner-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-service.d.ts","sourceRoot":"","sources":["../../src/services/scanner-service.ts"],"names":[],"mappings":"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"}