@fyuld/snitch 1.6.1 → 2.0.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 (194) hide show
  1. package/.snitchconfig.json +25 -135
  2. package/dist/SnitchConfigManager.d.ts +9 -0
  3. package/dist/SnitchConfigManager.d.ts.map +1 -0
  4. package/dist/SnitchConfigManager.js +112 -0
  5. package/dist/SnitchConfigManager.js.map +1 -0
  6. package/dist/commands/dm.d.ts.map +1 -1
  7. package/dist/commands/dm.js.map +1 -1
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/nocomments.d.ts +2 -0
  11. package/dist/commands/nocomments.d.ts.map +1 -0
  12. package/dist/commands/nocomments.js +59 -0
  13. package/dist/commands/nocomments.js.map +1 -0
  14. package/dist/commands/scan-commands.d.ts +7 -0
  15. package/dist/commands/scan-commands.d.ts.map +1 -0
  16. package/dist/commands/scan-commands.js +28 -0
  17. package/dist/commands/scan-commands.js.map +1 -0
  18. package/dist/commands/scan.d.ts +1 -1
  19. package/dist/commands/scan.d.ts.map +1 -1
  20. package/dist/commands/scan.js +170 -103
  21. package/dist/commands/scan.js.map +1 -1
  22. package/dist/commands/vocab.d.ts.map +1 -1
  23. package/dist/commands/vocab.js.map +1 -1
  24. package/dist/common/fs.d.ts +1 -0
  25. package/dist/common/fs.d.ts.map +1 -0
  26. package/dist/common/fs.js +2 -0
  27. package/dist/common/fs.js.map +1 -0
  28. package/dist/common/index.d.ts +2 -0
  29. package/dist/common/index.d.ts.map +1 -0
  30. package/dist/common/index.js +18 -0
  31. package/dist/common/index.js.map +1 -0
  32. package/dist/common/json.d.ts +21 -0
  33. package/dist/common/json.d.ts.map +1 -0
  34. package/dist/common/json.js +41 -0
  35. package/dist/common/json.js.map +1 -0
  36. package/dist/common/strings.d.ts +8 -0
  37. package/dist/common/strings.d.ts.map +1 -0
  38. package/dist/common/strings.js +15 -0
  39. package/dist/common/strings.js.map +1 -0
  40. package/dist/config/policy-loader.d.ts +4 -0
  41. package/dist/config/policy-loader.d.ts.map +1 -0
  42. package/dist/config/policy-loader.js +21 -0
  43. package/dist/config/policy-loader.js.map +1 -0
  44. package/dist/datamodel/commands.d.ts +25 -0
  45. package/dist/datamodel/commands.d.ts.map +1 -0
  46. package/dist/datamodel/commands.js +31 -0
  47. package/dist/datamodel/commands.js.map +1 -0
  48. package/dist/datamodel/common.d.ts +11 -0
  49. package/dist/datamodel/common.d.ts.map +1 -0
  50. package/dist/datamodel/common.js +3 -0
  51. package/dist/datamodel/common.js.map +1 -0
  52. package/dist/datamodel/errors.d.ts +16 -0
  53. package/dist/datamodel/errors.d.ts.map +1 -0
  54. package/dist/datamodel/errors.js +51 -0
  55. package/dist/datamodel/errors.js.map +1 -0
  56. package/dist/datamodel/index.d.ts +9 -0
  57. package/dist/datamodel/index.d.ts.map +1 -0
  58. package/dist/datamodel/index.js +25 -0
  59. package/dist/datamodel/index.js.map +1 -0
  60. package/dist/datamodel/internal-configs.d.ts +14 -0
  61. package/dist/datamodel/internal-configs.d.ts.map +1 -0
  62. package/dist/datamodel/internal-configs.js +3 -0
  63. package/dist/datamodel/internal-configs.js.map +1 -0
  64. package/dist/datamodel/public-configs.d.ts +27 -0
  65. package/dist/datamodel/public-configs.d.ts.map +1 -0
  66. package/dist/datamodel/public-configs.js +3 -0
  67. package/dist/datamodel/public-configs.js.map +1 -0
  68. package/dist/datamodel/snitch-configuration.d.ts +16 -0
  69. package/dist/datamodel/snitch-configuration.d.ts.map +1 -0
  70. package/dist/datamodel/snitch-configuration.js +32 -0
  71. package/dist/datamodel/snitch-configuration.js.map +1 -0
  72. package/dist/datamodel/typeguards.d.ts +3 -0
  73. package/dist/datamodel/typeguards.d.ts.map +1 -0
  74. package/dist/datamodel/typeguards.js +7 -0
  75. package/dist/datamodel/typeguards.js.map +1 -0
  76. package/dist/datamodel/typescript-specific.d.ts +7 -0
  77. package/dist/datamodel/typescript-specific.d.ts.map +1 -0
  78. package/dist/datamodel/typescript-specific.js +11 -0
  79. package/dist/datamodel/typescript-specific.js.map +1 -0
  80. package/dist/index.d.ts +2 -5
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +10 -11
  83. package/dist/index.js.map +1 -1
  84. package/dist/reporting/violation-reporter.d.ts +4 -0
  85. package/dist/reporting/violation-reporter.d.ts.map +1 -0
  86. package/dist/reporting/violation-reporter.js +45 -0
  87. package/dist/reporting/violation-reporter.js.map +1 -0
  88. package/dist/rules/policies/code-should-have-declarations.d.ts +3 -0
  89. package/dist/rules/policies/code-should-have-declarations.d.ts.map +1 -0
  90. package/dist/rules/policies/code-should-have-declarations.js +15 -0
  91. package/dist/rules/policies/code-should-have-declarations.js.map +1 -0
  92. package/dist/rules/policies/keep-tests-clean.d.ts +3 -0
  93. package/dist/rules/policies/keep-tests-clean.d.ts.map +1 -0
  94. package/dist/rules/policies/keep-tests-clean.js +21 -0
  95. package/dist/rules/policies/keep-tests-clean.js.map +1 -0
  96. package/dist/rules/policies/no-vars.d.ts +3 -0
  97. package/dist/rules/policies/no-vars.d.ts.map +1 -0
  98. package/dist/rules/policies/no-vars.js +19 -0
  99. package/dist/rules/policies/no-vars.js.map +1 -0
  100. package/dist/rules/policy-executor.d.ts +5 -0
  101. package/dist/rules/policy-executor.d.ts.map +1 -0
  102. package/dist/rules/policy-executor.js +10 -0
  103. package/dist/rules/policy-executor.js.map +1 -0
  104. package/dist/rules/policy.d.ts +7 -0
  105. package/dist/rules/policy.d.ts.map +1 -0
  106. package/dist/rules/policy.js +3 -0
  107. package/dist/rules/policy.js.map +1 -0
  108. package/dist/rules/provider-executor.d.ts +5 -0
  109. package/dist/rules/provider-executor.d.ts.map +1 -0
  110. package/dist/rules/provider-executor.js +105 -0
  111. package/dist/rules/provider-executor.js.map +1 -0
  112. package/dist/rules/provider.d.ts +26 -0
  113. package/dist/rules/provider.d.ts.map +1 -0
  114. package/dist/rules/provider.js +3 -0
  115. package/dist/rules/provider.js.map +1 -0
  116. package/dist/rules/providers/filter-by-declaration-type-provider.d.ts +8 -0
  117. package/dist/rules/providers/filter-by-declaration-type-provider.d.ts.map +1 -0
  118. package/dist/rules/providers/filter-by-declaration-type-provider.js +15 -0
  119. package/dist/rules/providers/filter-by-declaration-type-provider.js.map +1 -0
  120. package/dist/rules/providers/filter-by-file-provider.d.ts +8 -0
  121. package/dist/rules/providers/filter-by-file-provider.d.ts.map +1 -0
  122. package/dist/rules/providers/filter-by-file-provider.js +16 -0
  123. package/dist/rules/providers/filter-by-file-provider.js.map +1 -0
  124. package/dist/rules/providers/filter-exclude-function-names-provider.d.ts +8 -0
  125. package/dist/rules/providers/filter-exclude-function-names-provider.d.ts.map +1 -0
  126. package/dist/rules/providers/filter-exclude-function-names-provider.js +15 -0
  127. package/dist/rules/providers/filter-exclude-function-names-provider.js.map +1 -0
  128. package/dist/rules/providers/filter-has-literal-arguments-provider.d.ts +8 -0
  129. package/dist/rules/providers/filter-has-literal-arguments-provider.d.ts.map +1 -0
  130. package/dist/rules/providers/filter-has-literal-arguments-provider.js +26 -0
  131. package/dist/rules/providers/filter-has-literal-arguments-provider.js.map +1 -0
  132. package/dist/rules/providers/identity-provider.d.ts +8 -0
  133. package/dist/rules/providers/identity-provider.d.ts.map +1 -0
  134. package/dist/rules/providers/identity-provider.js +30 -0
  135. package/dist/rules/providers/identity-provider.js.map +1 -0
  136. package/dist/rules/violation-rule.d.ts +7 -0
  137. package/dist/rules/violation-rule.d.ts.map +1 -0
  138. package/dist/rules/violation-rule.js +3 -0
  139. package/dist/rules/violation-rule.js.map +1 -0
  140. package/dist/rules/violation.d.ts +12 -0
  141. package/dist/rules/violation.d.ts.map +1 -0
  142. package/dist/rules/violation.js +3 -0
  143. package/dist/rules/violation.js.map +1 -0
  144. package/dist/snitch.js +97 -44
  145. package/dist/snitch.js.map +1 -1
  146. package/dist/snitch.old.d.ts +3 -0
  147. package/dist/snitch.old.d.ts.map +1 -0
  148. package/dist/snitch.old.js +71 -0
  149. package/dist/snitch.old.js.map +1 -0
  150. package/dist/utils/AstAnalysis.d.ts +28 -0
  151. package/dist/utils/AstAnalysis.d.ts.map +1 -0
  152. package/dist/utils/AstAnalysis.js +117 -0
  153. package/dist/utils/AstAnalysis.js.map +1 -0
  154. package/dist/utils/ast-parser.d.ts +68 -0
  155. package/dist/utils/ast-parser.d.ts.map +1 -0
  156. package/dist/utils/ast-parser.js +364 -0
  157. package/dist/utils/ast-parser.js.map +1 -0
  158. package/dist/utils/fs.d.ts +8 -0
  159. package/dist/utils/fs.d.ts.map +1 -0
  160. package/dist/utils/fs.js +93 -0
  161. package/dist/utils/fs.js.map +1 -0
  162. package/dist/utils/pattern-scanner.d.ts +5 -21
  163. package/dist/utils/pattern-scanner.d.ts.map +1 -1
  164. package/dist/utils/pattern-scanner.js +13 -17
  165. package/dist/utils/pattern-scanner.js.map +1 -1
  166. package/dist/utils/ts-parser.d.ts.map +1 -1
  167. package/dist/utils/ts-parser.js +5 -12
  168. package/dist/utils/ts-parser.js.map +1 -1
  169. package/package.json +13 -6
  170. package/snitchconfig.schema.json +107 -51
  171. package/dist/commands/badimports.d.ts +0 -2
  172. package/dist/commands/badimports.d.ts.map +0 -1
  173. package/dist/commands/badimports.js +0 -8
  174. package/dist/commands/badimports.js.map +0 -1
  175. package/dist/commands/dirtydefaults.d.ts +0 -2
  176. package/dist/commands/dirtydefaults.d.ts.map +0 -1
  177. package/dist/commands/dirtydefaults.js +0 -8
  178. package/dist/commands/dirtydefaults.js.map +0 -1
  179. package/dist/commands/enumerate.d.ts +0 -2
  180. package/dist/commands/enumerate.d.ts.map +0 -1
  181. package/dist/commands/enumerate.js +0 -8
  182. package/dist/commands/enumerate.js.map +0 -1
  183. package/dist/commands/expectmagic.d.ts +0 -2
  184. package/dist/commands/expectmagic.d.ts.map +0 -1
  185. package/dist/commands/expectmagic.js +0 -8
  186. package/dist/commands/expectmagic.js.map +0 -1
  187. package/dist/commands/fixtures.d.ts +0 -2
  188. package/dist/commands/fixtures.d.ts.map +0 -1
  189. package/dist/commands/fixtures.js +0 -8
  190. package/dist/commands/fixtures.js.map +0 -1
  191. package/dist/datamodel.d.ts +0 -18
  192. package/dist/datamodel.d.ts.map +0 -1
  193. package/dist/datamodel.js +0 -23
  194. package/dist/datamodel.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/datamodel/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { ErrorTag, FyuldError } from '@fyuld/errors';
2
+ export declare class SnitchConfigError extends FyuldError {
3
+ static configNotLoaded(configName: string): SnitchConfigError;
4
+ static configFileNotFound(configPath: string): SnitchConfigError;
5
+ static unableToParseConfig(configPath: string, causes: string[]): SnitchConfigError;
6
+ static unableToExtend(configName: string, causes: string[]): SnitchConfigError;
7
+ static invalidConfig(causes: string[]): SnitchConfigError;
8
+ static circularExtends(configChain: string[]): SnitchConfigError;
9
+ constructor(message: string, causes?: string[], tags?: ErrorTag[]);
10
+ }
11
+ export declare class ParseError extends FyuldError {
12
+ static jsonParseError(filePath: string, reason: string): ParseError;
13
+ constructor(message: string, causes?: string[], tags?: ErrorTag[]);
14
+ get causes(): string[];
15
+ }
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/datamodel/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEpD,qBAAa,iBAAkB,SAAQ,UAAU;WACjC,eAAe,CAAC,UAAU,EAAE,MAAM;WAQlC,kBAAkB,CAAC,UAAU,EAAE,MAAM;WAQrC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;WAQxD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;WAOnD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;WAI9B,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;gBAOvC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,EAAE,IAAI,GAAE,QAAQ,EAAO;CAG1E;AAED,qBAAa,UAAW,SAAQ,UAAU;WAC1B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;gBAIjD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,EAAE,IAAI,GAAE,QAAQ,EAAO;IAIzE,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;CACF"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParseError = exports.SnitchConfigError = void 0;
4
+ const errors_1 = require("@fyuld/errors");
5
+ class SnitchConfigError extends errors_1.FyuldError {
6
+ static configNotLoaded(configName) {
7
+ return new SnitchConfigError(`Configuration with name "${configName}" is not loaded.`, [], [errors_1.ErrorTag.NotFound, errors_1.ErrorTag.Configuration]);
8
+ }
9
+ static configFileNotFound(configPath) {
10
+ return new SnitchConfigError(`Configuration file not found: ${configPath}`, [], [errors_1.ErrorTag.NotFound, errors_1.ErrorTag.Configuration, errors_1.ErrorTag.FileSystem]);
11
+ }
12
+ static unableToParseConfig(configPath, causes) {
13
+ return new SnitchConfigError(`Unable to parse configuration file: ${configPath}`, causes, [
14
+ errors_1.ErrorTag.Configuration,
15
+ errors_1.ErrorTag.Parsing,
16
+ errors_1.ErrorTag.Json,
17
+ ]);
18
+ }
19
+ static unableToExtend(configName, causes) {
20
+ return new SnitchConfigError(`Unable to extend config "${configName}, encountered validation errors".`, causes, [
21
+ errors_1.ErrorTag.Configuration,
22
+ errors_1.ErrorTag.Validation,
23
+ ]);
24
+ }
25
+ static invalidConfig(causes) {
26
+ return new SnitchConfigError('Invalid configuration', causes, [errors_1.ErrorTag.Configuration, errors_1.ErrorTag.Validation]);
27
+ }
28
+ static circularExtends(configChain) {
29
+ return new SnitchConfigError(`Circular extends detected: ${configChain.join(' → ')}`, configChain, [
30
+ errors_1.ErrorTag.Configuration,
31
+ errors_1.ErrorTag.Validation,
32
+ ]);
33
+ }
34
+ constructor(message, causes = [], tags = []) {
35
+ super(message, causes, tags);
36
+ }
37
+ }
38
+ exports.SnitchConfigError = SnitchConfigError;
39
+ class ParseError extends errors_1.FyuldError {
40
+ static jsonParseError(filePath, reason) {
41
+ return new ParseError(`Failed to parse JSON from ${filePath}`, [reason], [errors_1.ErrorTag.Parsing, errors_1.ErrorTag.Json]);
42
+ }
43
+ constructor(message, causes = [], tags = []) {
44
+ super(message, causes, tags);
45
+ }
46
+ get causes() {
47
+ return this._causes;
48
+ }
49
+ }
50
+ exports.ParseError = ParseError;
51
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/datamodel/errors.ts"],"names":[],"mappings":";;;AAAA,0CAAoD;AAEpD,MAAa,iBAAkB,SAAQ,mBAAU;IACxC,MAAM,CAAC,eAAe,CAAC,UAAkB;QAC9C,OAAO,IAAI,iBAAiB,CAC1B,4BAA4B,UAAU,kBAAkB,EACxD,EAAE,EACF,CAAC,iBAAQ,CAAC,QAAQ,EAAE,iBAAQ,CAAC,aAAa,CAAC,CAC5C,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,UAAkB;QACjD,OAAO,IAAI,iBAAiB,CAC1B,iCAAiC,UAAU,EAAE,EAC7C,EAAE,EACF,CAAC,iBAAQ,CAAC,QAAQ,EAAE,iBAAQ,CAAC,aAAa,EAAE,iBAAQ,CAAC,UAAU,CAAC,CACjE,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,UAAkB,EAAE,MAAgB;QACpE,OAAO,IAAI,iBAAiB,CAAC,uCAAuC,UAAU,EAAE,EAAE,MAAM,EAAE;YACxF,iBAAQ,CAAC,aAAa;YACtB,iBAAQ,CAAC,OAAO;YAChB,iBAAQ,CAAC,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,UAAkB,EAAE,MAAgB;QAC/D,OAAO,IAAI,iBAAiB,CAAC,4BAA4B,UAAU,mCAAmC,EAAE,MAAM,EAAE;YAC9G,iBAAQ,CAAC,aAAa;YACtB,iBAAQ,CAAC,UAAU;SACpB,CAAC,CAAA;IACJ,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,MAAgB;QAC1C,OAAO,IAAI,iBAAiB,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC,iBAAQ,CAAC,aAAa,EAAE,iBAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9G,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,WAAqB;QACjD,OAAO,IAAI,iBAAiB,CAAC,8BAA8B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE;YACjG,iBAAQ,CAAC,aAAa;YACtB,iBAAQ,CAAC,UAAU;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,YAAY,OAAe,EAAE,SAAmB,EAAE,EAAE,OAAmB,EAAE;QACvE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;CACF;AA9CD,8CA8CC;AAED,MAAa,UAAW,SAAQ,mBAAU;IACjC,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,MAAc;QAC3D,OAAO,IAAI,UAAU,CAAC,6BAA6B,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAQ,CAAC,OAAO,EAAE,iBAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7G,CAAC;IAED,YAAY,OAAe,EAAE,SAAmB,EAAE,EAAE,OAAmB,EAAE;QACvE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAZD,gCAYC"}
@@ -0,0 +1,9 @@
1
+ export * from './common';
2
+ export * from './errors';
3
+ export * from './public-configs';
4
+ export * from './internal-configs';
5
+ export * from './typeguards';
6
+ export * from './commands';
7
+ export * from './typescript-specific';
8
+ export * from './snitch-configuration';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datamodel/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common"), exports);
18
+ __exportStar(require("./errors"), exports);
19
+ __exportStar(require("./public-configs"), exports);
20
+ __exportStar(require("./internal-configs"), exports);
21
+ __exportStar(require("./typeguards"), exports);
22
+ __exportStar(require("./commands"), exports);
23
+ __exportStar(require("./typescript-specific"), exports);
24
+ __exportStar(require("./snitch-configuration"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datamodel/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,2CAAwB;AACxB,mDAAgC;AAChC,qDAAkC;AAClC,+CAA4B;AAC5B,6CAA0B;AAC1B,wDAAqC;AACrC,yDAAsC"}
@@ -0,0 +1,14 @@
1
+ export type InternalViolationRule = {
2
+ message: string;
3
+ regexes: string[];
4
+ recommendation?: {
5
+ message: string;
6
+ recommendations: string[];
7
+ };
8
+ };
9
+ export type InternalScanConfig = {
10
+ description: string;
11
+ fileFilter: string;
12
+ violations: InternalViolationRule[];
13
+ };
14
+ //# sourceMappingURL=internal-configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-configs.d.ts","sourceRoot":"","sources":["../../src/datamodel/internal-configs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,EAAE,CAAA;KAC1B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,qBAAqB,EAAE,CAAA;CACpC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=internal-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-configs.js","sourceRoot":"","sources":["../../src/datamodel/internal-configs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ export type DefaultPublicViolationRule = {
2
+ message: string;
3
+ regexes: string[];
4
+ recommendation?: {
5
+ message: string;
6
+ recommendations: string[];
7
+ };
8
+ };
9
+ export type PublicViolationRule = {
10
+ message: string;
11
+ regexes?: string[];
12
+ recommendation?: {
13
+ message: string;
14
+ recommendations: string[];
15
+ };
16
+ };
17
+ export type DefaultPublicScanConfig = {
18
+ description: string;
19
+ fileFilter: string;
20
+ violations: DefaultPublicViolationRule[];
21
+ };
22
+ export type NoCommentsScanConfig = DefaultPublicScanConfig & {
23
+ acceptedApologies: string[];
24
+ };
25
+ export type PublicScanConfig = DefaultPublicScanConfig | NoCommentsScanConfig;
26
+ export type PublicCommandConfig = PublicScanConfig | string[];
27
+ //# sourceMappingURL=public-configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-configs.d.ts","sourceRoot":"","sources":["../../src/datamodel/public-configs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,EAAE,CAAA;KAC1B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,EAAE,CAAA;KAC1B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,0BAA0B,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,GAAG;IAC3D,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,oBAAoB,CAAA;AAE7E,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,MAAM,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=public-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-configs.js","sourceRoot":"","sources":["../../src/datamodel/public-configs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { JsonSchema } from '../common/json';
2
+ import { PublicCommandConfig } from './public-configs';
3
+ import { ViolationRule } from '../rules/violation-rule';
4
+ export type PolicyConfig = {
5
+ title: string;
6
+ violations: ViolationRule[];
7
+ };
8
+ export type SnitchConfiguration = {
9
+ extends?: string;
10
+ sourceDirectory: string;
11
+ testsDirectory: string;
12
+ commands?: Record<string, PublicCommandConfig>;
13
+ policies: Record<string, PolicyConfig>;
14
+ };
15
+ export declare const snitchConfigurationSchema: JsonSchema<SnitchConfiguration>;
16
+ //# sourceMappingURL=snitch-configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snitch-configuration.d.ts","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,aAAa,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,UAAU,CAAC,mBAAmB,CA2BrE,CAAA"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snitchConfigurationSchema = void 0;
4
+ exports.snitchConfigurationSchema = {
5
+ type: 'object',
6
+ properties: {
7
+ extends: {
8
+ type: 'string',
9
+ nullable: true,
10
+ },
11
+ sourceDirectory: {
12
+ type: 'string',
13
+ },
14
+ testsDirectory: {
15
+ type: 'string',
16
+ },
17
+ commands: {
18
+ type: 'object',
19
+ required: [],
20
+ additionalProperties: true,
21
+ nullable: true,
22
+ },
23
+ policies: {
24
+ type: 'object',
25
+ required: [],
26
+ additionalProperties: true,
27
+ },
28
+ },
29
+ required: ['sourceDirectory', 'testsDirectory', 'policies'],
30
+ additionalProperties: false,
31
+ };
32
+ //# sourceMappingURL=snitch-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snitch-configuration.js","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":";;;AAiBa,QAAA,yBAAyB,GAAoC;IACxE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;YAC1B,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,QAAQ,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;IAC3D,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { PublicScanConfig, NoCommentsScanConfig } from './public-configs';
2
+ export declare function isNoCommentsScanConfig(config: PublicScanConfig): config is NoCommentsScanConfig;
3
+ //# sourceMappingURL=typeguards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeguards.d.ts","sourceRoot":"","sources":["../../src/datamodel/typeguards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,oBAAoB,CAE/F"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNoCommentsScanConfig = isNoCommentsScanConfig;
4
+ function isNoCommentsScanConfig(config) {
5
+ return 'acceptedApologies' in config;
6
+ }
7
+ //# sourceMappingURL=typeguards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeguards.js","sourceRoot":"","sources":["../../src/datamodel/typeguards.ts"],"names":[],"mappings":";;AAEA,wDAEC;AAFD,SAAgB,sBAAsB,CAAC,MAAwB;IAC7D,OAAO,mBAAmB,IAAI,MAAM,CAAA;AACtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare enum TypeScriptTypeKind {
2
+ Type = "type",
3
+ Enum = "enum",
4
+ Interface = "interface",
5
+ Class = "class"
6
+ }
7
+ //# sourceMappingURL=typescript-specific.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-specific.d.ts","sourceRoot":"","sources":["../../src/datamodel/typescript-specific.ts"],"names":[],"mappings":"AAAA,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeScriptTypeKind = void 0;
4
+ var TypeScriptTypeKind;
5
+ (function (TypeScriptTypeKind) {
6
+ TypeScriptTypeKind["Type"] = "type";
7
+ TypeScriptTypeKind["Enum"] = "enum";
8
+ TypeScriptTypeKind["Interface"] = "interface";
9
+ TypeScriptTypeKind["Class"] = "class";
10
+ })(TypeScriptTypeKind || (exports.TypeScriptTypeKind = TypeScriptTypeKind = {}));
11
+ //# sourceMappingURL=typescript-specific.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-specific.js","sourceRoot":"","sources":["../../src/datamodel/typescript-specific.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,6CAAuB,CAAA;IACvB,qCAAe,CAAA;AACjB,CAAC,EALW,kBAAkB,kCAAlB,kBAAkB,QAK7B"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,7 @@
1
- export { dirtydefaultsCommand } from './commands/dirtydefaults';
1
+ export { dirtydefaultsCommand, fixturesCommand, expectmagicCommand, enumerateCommand, badimportsCommand, onlyNamedFunsCommand, } from './commands/scan-commands';
2
2
  export { dmCommand } from './commands/dm';
3
- export { fixturesCommand } from './commands/fixtures';
4
- export { expectmagicCommand } from './commands/expectmagic';
5
3
  export { scanCommand } from './commands/scan';
6
4
  export { initCommand } from './commands/init';
7
- export { enumerateCommand } from './commands/enumerate';
8
- export { badimportsCommand } from './commands/badimports';
9
5
  export { vocabCommand } from './commands/vocab';
6
+ export { noCommentCommand } from './commands/nocomments';
10
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -1,23 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vocabCommand = exports.badimportsCommand = exports.enumerateCommand = exports.initCommand = exports.scanCommand = exports.expectmagicCommand = exports.fixturesCommand = exports.dmCommand = exports.dirtydefaultsCommand = void 0;
3
+ exports.noCommentCommand = exports.vocabCommand = exports.initCommand = exports.scanCommand = exports.dmCommand = exports.onlyNamedFunsCommand = exports.badimportsCommand = exports.enumerateCommand = exports.expectmagicCommand = exports.fixturesCommand = exports.dirtydefaultsCommand = void 0;
4
4
  // Export all commands for programmatic use
5
- var dirtydefaults_1 = require("./commands/dirtydefaults");
6
- Object.defineProperty(exports, "dirtydefaultsCommand", { enumerable: true, get: function () { return dirtydefaults_1.dirtydefaultsCommand; } });
5
+ var scan_commands_1 = require("./commands/scan-commands");
6
+ Object.defineProperty(exports, "dirtydefaultsCommand", { enumerable: true, get: function () { return scan_commands_1.dirtydefaultsCommand; } });
7
+ Object.defineProperty(exports, "fixturesCommand", { enumerable: true, get: function () { return scan_commands_1.fixturesCommand; } });
8
+ Object.defineProperty(exports, "expectmagicCommand", { enumerable: true, get: function () { return scan_commands_1.expectmagicCommand; } });
9
+ Object.defineProperty(exports, "enumerateCommand", { enumerable: true, get: function () { return scan_commands_1.enumerateCommand; } });
10
+ Object.defineProperty(exports, "badimportsCommand", { enumerable: true, get: function () { return scan_commands_1.badimportsCommand; } });
11
+ Object.defineProperty(exports, "onlyNamedFunsCommand", { enumerable: true, get: function () { return scan_commands_1.onlyNamedFunsCommand; } });
7
12
  var dm_1 = require("./commands/dm");
8
13
  Object.defineProperty(exports, "dmCommand", { enumerable: true, get: function () { return dm_1.dmCommand; } });
9
- var fixtures_1 = require("./commands/fixtures");
10
- Object.defineProperty(exports, "fixturesCommand", { enumerable: true, get: function () { return fixtures_1.fixturesCommand; } });
11
- var expectmagic_1 = require("./commands/expectmagic");
12
- Object.defineProperty(exports, "expectmagicCommand", { enumerable: true, get: function () { return expectmagic_1.expectmagicCommand; } });
13
14
  var scan_1 = require("./commands/scan");
14
15
  Object.defineProperty(exports, "scanCommand", { enumerable: true, get: function () { return scan_1.scanCommand; } });
15
16
  var init_1 = require("./commands/init");
16
17
  Object.defineProperty(exports, "initCommand", { enumerable: true, get: function () { return init_1.initCommand; } });
17
- var enumerate_1 = require("./commands/enumerate");
18
- Object.defineProperty(exports, "enumerateCommand", { enumerable: true, get: function () { return enumerate_1.enumerateCommand; } });
19
- var badimports_1 = require("./commands/badimports");
20
- Object.defineProperty(exports, "badimportsCommand", { enumerable: true, get: function () { return badimports_1.badimportsCommand; } });
21
18
  var vocab_1 = require("./commands/vocab");
22
19
  Object.defineProperty(exports, "vocabCommand", { enumerable: true, get: function () { return vocab_1.vocabCommand; } });
20
+ var nocomments_1 = require("./commands/nocomments");
21
+ Object.defineProperty(exports, "noCommentCommand", { enumerable: true, get: function () { return nocomments_1.noCommentCommand; } });
23
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,0DAA+D;AAAtD,qHAAA,oBAAoB,OAAA;AAC7B,oCAAyC;AAAhC,+FAAA,SAAS,OAAA;AAClB,gDAAqD;AAA5C,2GAAA,eAAe,OAAA;AACxB,sDAA2D;AAAlD,iHAAA,kBAAkB,OAAA;AAC3B,wCAA6C;AAApC,mGAAA,WAAW,OAAA;AACpB,wCAA6C;AAApC,mGAAA,WAAW,OAAA;AACpB,kDAAuD;AAA9C,6GAAA,gBAAgB,OAAA;AACzB,oDAAyD;AAAhD,+GAAA,iBAAiB,OAAA;AAC1B,0CAA+C;AAAtC,qGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,0DAOiC;AAN/B,qHAAA,oBAAoB,OAAA;AACpB,gHAAA,eAAe,OAAA;AACf,mHAAA,kBAAkB,OAAA;AAClB,iHAAA,gBAAgB,OAAA;AAChB,kHAAA,iBAAiB,OAAA;AACjB,qHAAA,oBAAoB,OAAA;AAEtB,oCAAyC;AAAhC,+FAAA,SAAS,OAAA;AAClB,wCAA6C;AAApC,mGAAA,WAAW,OAAA;AACpB,wCAA6C;AAApC,mGAAA,WAAW,OAAA;AACpB,0CAA+C;AAAtC,qGAAA,YAAY,OAAA;AACrB,oDAAwD;AAA/C,8GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { ViolationReport } from '../rules/violation';
2
+ export declare function reportViolations(violations: ViolationReport[]): void;
3
+ export declare function getViolationSummary(violations: ViolationReport[]): string;
4
+ //# sourceMappingURL=violation-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"violation-reporter.d.ts","sourceRoot":"","sources":["../../src/reporting/violation-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,IAAI,CA0CpE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAIzE"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reportViolations = reportViolations;
4
+ exports.getViolationSummary = getViolationSummary;
5
+ function reportViolations(violations) {
6
+ if (violations.length === 0) {
7
+ console.log('\n✓ No violations found\n');
8
+ return;
9
+ }
10
+ // Group violations by file
11
+ const byFile = new Map();
12
+ for (const violation of violations) {
13
+ if (!byFile.has(violation.file)) {
14
+ byFile.set(violation.file, []);
15
+ }
16
+ byFile.get(violation.file).push(violation);
17
+ }
18
+ // Print violations grouped by file
19
+ console.log('\n✗ Violations found:\n');
20
+ for (const [file, fileViolations] of byFile) {
21
+ console.log(`${file}`);
22
+ for (const violation of fileViolations) {
23
+ const lineInfo = violation.line ? `:${violation.line}` : '';
24
+ console.log(` ${lineInfo} [${violation.policyName}] ${violation.message}`);
25
+ console.log(` Culprit: ${violation.cause.culprit}`);
26
+ if (violation.cause.snippet) {
27
+ console.log(` Snippet:\n${violation.cause.snippet
28
+ .split('\n')
29
+ .map((l) => ` ${l}`)
30
+ .join('\n')}`);
31
+ }
32
+ }
33
+ console.log('');
34
+ }
35
+ // Summary
36
+ const fileCount = byFile.size;
37
+ const violationCount = violations.length;
38
+ console.log(`Found ${violationCount} violation${violationCount === 1 ? '' : 's'} across ${fileCount} file${fileCount === 1 ? '' : 's'}\n`);
39
+ }
40
+ function getViolationSummary(violations) {
41
+ const fileCount = new Set(violations.map((v) => v.file)).size;
42
+ const violationCount = violations.length;
43
+ return `Found ${violationCount} violation${violationCount === 1 ? '' : 's'} across ${fileCount} file${fileCount === 1 ? '' : 's'}`;
44
+ }
45
+ //# sourceMappingURL=violation-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"violation-reporter.js","sourceRoot":"","sources":["../../src/reporting/violation-reporter.ts"],"names":[],"mappings":";;AAEA,4CA0CC;AAED,kDAIC;AAhDD,SAAgB,gBAAgB,CAAC,UAA6B;IAC5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAM;IACR,CAAC;IAED,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAA;IACnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC7C,CAAC;IAED,mCAAmC;IACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IAEtC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QACtB,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,KAAK,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;YAC3E,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACtD,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CACT,iBAAiB,SAAS,CAAC,KAAK,CAAC,OAAO;qBACrC,KAAK,CAAC,IAAI,CAAC;qBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;qBACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAED,UAAU;IACV,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAA;IAC7B,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAA;IACxC,OAAO,CAAC,GAAG,CACT,SAAS,cAAc,aAAa,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAC9H,CAAA;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,UAA6B;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAA;IACxC,OAAO,SAAS,cAAc,aAAa,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AACpI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Policy } from '../policy';
2
+ export declare const codeShouldHaveDeclarationsPolicy: Policy;
3
+ //# sourceMappingURL=code-should-have-declarations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-should-have-declarations.d.ts","sourceRoot":"","sources":["../../../src/rules/policies/code-should-have-declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,eAAO,MAAM,gCAAgC,EAAE,MAU9C,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codeShouldHaveDeclarationsPolicy = void 0;
4
+ exports.codeShouldHaveDeclarationsPolicy = {
5
+ id: 'code-should-have-declarations',
6
+ title: 'Code Should Have Declarations',
7
+ violations: [
8
+ {
9
+ message: 'No declarations found in code',
10
+ cause: 'empty file or no type/function/variable declarations',
11
+ providers: [{ type: 'identity', source: 'declarations' }],
12
+ },
13
+ ],
14
+ };
15
+ //# sourceMappingURL=code-should-have-declarations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-should-have-declarations.js","sourceRoot":"","sources":["../../../src/rules/policies/code-should-have-declarations.ts"],"names":[],"mappings":";;;AAEa,QAAA,gCAAgC,GAAW;IACtD,EAAE,EAAE,+BAA+B;IACnC,KAAK,EAAE,+BAA+B;IACtC,UAAU,EAAE;QACV;YACE,OAAO,EAAE,+BAA+B;YACxC,KAAK,EAAE,sDAAsD;YAC7D,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;SAC1D;KACF;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Policy } from '../policy';
2
+ export declare const keepTestsCleanPolicy: Policy;
3
+ //# sourceMappingURL=keep-tests-clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-tests-clean.d.ts","sourceRoot":"","sources":["../../../src/rules/policies/keep-tests-clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,eAAO,MAAM,oBAAoB,EAAE,MAelC,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keepTestsCleanPolicy = void 0;
4
+ const ast_parser_1 = require("../../utils/ast-parser");
5
+ exports.keepTestsCleanPolicy = {
6
+ id: 'keep-tests-clean',
7
+ title: 'Keep Tests Clean',
8
+ violations: [
9
+ {
10
+ message: 'Found literal in function call: {functionName}',
11
+ cause: '{literalValue}',
12
+ providers: [
13
+ { type: 'identity', source: 'functionInvocations' },
14
+ { type: 'filter-by-file', patterns: ['test/**/*.ts', '**/*.test.ts', '**/*.spec.ts'] },
15
+ { type: 'filter-exclude-function-names', names: ['test', 'given', 'when', 'then', 'describe', 'it'] },
16
+ { type: 'filter-has-literal-arguments', literalKinds: [ast_parser_1.LiteralKind.String, ast_parser_1.LiteralKind.Number] },
17
+ ],
18
+ },
19
+ ],
20
+ };
21
+ //# sourceMappingURL=keep-tests-clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keep-tests-clean.js","sourceRoot":"","sources":["../../../src/rules/policies/keep-tests-clean.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEvC,QAAA,oBAAoB,GAAW;IAC1C,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE;QACV;YACE,OAAO,EAAE,gDAAgD;YACzD,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE;gBACT,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE;gBACnD,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE;gBACtF,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;gBACrG,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC,wBAAW,CAAC,MAAM,EAAE,wBAAW,CAAC,MAAM,CAAC,EAAE;aACjG;SACF;KACF;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Policy } from '../policy';
2
+ export declare const noVarsPolicy: Policy;
3
+ //# sourceMappingURL=no-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-vars.d.ts","sourceRoot":"","sources":["../../../src/rules/policies/no-vars.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,eAAO,MAAM,YAAY,EAAE,MAa1B,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.noVarsPolicy = void 0;
4
+ const ast_parser_1 = require("../../utils/ast-parser");
5
+ exports.noVarsPolicy = {
6
+ id: 'no-vars',
7
+ title: 'No Var Declarations',
8
+ violations: [
9
+ {
10
+ message: 'Found var declaration: {declarationName}',
11
+ cause: '{definition}',
12
+ providers: [
13
+ { type: 'identity', source: 'declarations' },
14
+ { type: 'filter-by-declaration-type', declarationTypes: [ast_parser_1.DeclarationType.Var] },
15
+ ],
16
+ },
17
+ ],
18
+ };
19
+ //# sourceMappingURL=no-vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-vars.js","sourceRoot":"","sources":["../../../src/rules/policies/no-vars.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAG3C,QAAA,YAAY,GAAW;IAClC,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,qBAAqB;IAC5B,UAAU,EAAE;QACV;YACE,OAAO,EAAE,0CAA0C;YACnD,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE;gBACT,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE;gBAC5C,EAAE,IAAI,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,CAAC,4BAAe,CAAC,GAAG,CAAC,EAAE;aAChF;SACF;KACF;CACF,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { AstAnalysis } from '../utils/AstAnalysis';
2
+ import { Policy } from './policy';
3
+ import { ViolationReport } from './violation';
4
+ export declare function executePolicy(analysis: AstAnalysis, policy: Policy): Promise<ViolationReport[]>;
5
+ //# sourceMappingURL=policy-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-executor.d.ts","sourceRoot":"","sources":["../../src/rules/policy-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,wBAAsB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAMrG"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executePolicy = executePolicy;
4
+ const provider_executor_1 = require("./provider-executor");
5
+ async function executePolicy(analysis, policy) {
6
+ const violationsPerRule = await Promise.all(policy.violations.map((violationRule) => (0, provider_executor_1.executeViolationRule)(analysis, violationRule, policy.id)));
7
+ const allViolations = violationsPerRule.flat();
8
+ return allViolations;
9
+ }
10
+ //# sourceMappingURL=policy-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-executor.js","sourceRoot":"","sources":["../../src/rules/policy-executor.ts"],"names":[],"mappings":";;AAKA,sCAMC;AARD,2DAA0D;AAEnD,KAAK,UAAU,aAAa,CAAC,QAAqB,EAAE,MAAc;IACvE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAA,wCAAoB,EAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CACnG,CAAA;IACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAA;IAC9C,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ViolationRule } from './violation-rule';
2
+ export type Policy = {
3
+ id: string;
4
+ title: string;
5
+ violations: ViolationRule[];
6
+ };
7
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/rules/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,aAAa,EAAE,CAAA;CAC5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/rules/policy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { AstAnalysis } from '../utils/AstAnalysis';
2
+ import { ViolationReport } from './violation';
3
+ import { ViolationRule } from './violation-rule';
4
+ export declare function executeViolationRule(analysis: AstAnalysis, violationRule: ViolationRule, policyId: string): Promise<ViolationReport[]>;
5
+ //# sourceMappingURL=provider-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-executor.d.ts","sourceRoot":"","sources":["../../src/rules/provider-executor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAOhD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAQ5B"}