@sun-asterisk/sunlint 1.0.5

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 (192) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/LICENSE +21 -0
  3. package/README.md +490 -0
  4. package/cli-legacy.js +355 -0
  5. package/cli.js +35 -0
  6. package/config/default.json +22 -0
  7. package/config/presets/beginner.json +36 -0
  8. package/config/presets/ci.json +46 -0
  9. package/config/presets/recommended.json +24 -0
  10. package/config/presets/strict.json +32 -0
  11. package/config/rules-registry.json +681 -0
  12. package/config/sunlint-schema.json +166 -0
  13. package/config/typescript/custom-rules-new.js +0 -0
  14. package/config/typescript/custom-rules.js +9 -0
  15. package/config/typescript/eslint.config.js +110 -0
  16. package/config/typescript/package-lock.json +1585 -0
  17. package/config/typescript/package.json +13 -0
  18. package/config/typescript/security-rules/index.js +90 -0
  19. package/config/typescript/security-rules/s005-no-origin-auth.js +95 -0
  20. package/config/typescript/security-rules/s006-activation-recovery-secret-not-plaintext.js +69 -0
  21. package/config/typescript/security-rules/s008-crypto-agility.js +62 -0
  22. package/config/typescript/security-rules/s009-no-insecure-crypto.js +103 -0
  23. package/config/typescript/security-rules/s010-no-insecure-random-in-sensitive-context.js +123 -0
  24. package/config/typescript/security-rules/s011-no-insecure-uuid.js +66 -0
  25. package/config/typescript/security-rules/s012-hardcode-secret.js +71 -0
  26. package/config/typescript/security-rules/s014-insecure-tls-version.js +50 -0
  27. package/config/typescript/security-rules/s015-insecure-tls-certificate.js +43 -0
  28. package/config/typescript/security-rules/s016-sensitive-query-parameter.js +59 -0
  29. package/config/typescript/security-rules/s017-no-sql-injection.js +193 -0
  30. package/config/typescript/security-rules/s018-positive-input-validation.js +56 -0
  31. package/config/typescript/security-rules/s019-no-raw-user-input-in-email.js +113 -0
  32. package/config/typescript/security-rules/s020-no-eval-dynamic-execution.js +89 -0
  33. package/config/typescript/security-rules/s022-output-encoding.js +78 -0
  34. package/config/typescript/security-rules/s023-no-json-injection.js +300 -0
  35. package/config/typescript/security-rules/s025-server-side-input-validation.js +217 -0
  36. package/config/typescript/security-rules/s026-json-schema-validation.js +68 -0
  37. package/config/typescript/security-rules/s027-no-hardcoded-secrets.js +80 -0
  38. package/config/typescript/security-rules/s029-require-csrf-protection.js +79 -0
  39. package/config/typescript/security-rules/s030-no-directory-browsing.js +78 -0
  40. package/config/typescript/security-rules/s033-require-samesite-cookie.js +80 -0
  41. package/config/typescript/security-rules/s034-require-host-cookie-prefix.js +77 -0
  42. package/config/typescript/security-rules/s035-cookie-specific-path.js +74 -0
  43. package/config/typescript/security-rules/s036-no-unsafe-file-include.js +68 -0
  44. package/config/typescript/security-rules/s037-require-anti-cache-headers.js +70 -0
  45. package/config/typescript/security-rules/s038-no-version-disclosure.js +74 -0
  46. package/config/typescript/security-rules/s039-no-session-token-in-url.js +63 -0
  47. package/config/typescript/security-rules/s041-require-session-invalidate-on-logout.js +211 -0
  48. package/config/typescript/security-rules/s042-require-periodic-reauthentication.js +294 -0
  49. package/config/typescript/security-rules/s043-terminate-sessions-on-password-change.js +254 -0
  50. package/config/typescript/security-rules/s044-require-full-session-for-sensitive-operations.js +292 -0
  51. package/config/typescript/security-rules/s045-anti-automation-controls.js +46 -0
  52. package/config/typescript/security-rules/s046-secure-notification-on-auth-change.js +44 -0
  53. package/config/typescript/security-rules/s048-password-credential-recovery.js +54 -0
  54. package/config/typescript/security-rules/s050-session-token-weak-hash.js +94 -0
  55. package/config/typescript/security-rules/s052-secure-random-authentication-code.js +66 -0
  56. package/config/typescript/security-rules/s054-verification-default-account.js +109 -0
  57. package/config/typescript/security-rules/s057-utc-logging.js +54 -0
  58. package/config/typescript/security-rules/s058-no-ssrf.js +73 -0
  59. package/config/typescript/test-s005-working.ts +22 -0
  60. package/config/typescript/tsconfig.json +29 -0
  61. package/core/ai-analyzer.js +169 -0
  62. package/core/analysis-orchestrator.js +705 -0
  63. package/core/cli-action-handler.js +230 -0
  64. package/core/cli-program.js +106 -0
  65. package/core/config-manager.js +396 -0
  66. package/core/config-merger.js +136 -0
  67. package/core/config-override-processor.js +74 -0
  68. package/core/config-preset-resolver.js +65 -0
  69. package/core/config-source-loader.js +152 -0
  70. package/core/config-validator.js +126 -0
  71. package/core/dependency-manager.js +105 -0
  72. package/core/eslint-engine-service.js +312 -0
  73. package/core/eslint-instance-manager.js +104 -0
  74. package/core/eslint-integration-service.js +363 -0
  75. package/core/git-utils.js +170 -0
  76. package/core/multi-rule-runner.js +239 -0
  77. package/core/output-service.js +250 -0
  78. package/core/report-generator.js +320 -0
  79. package/core/rule-mapping-service.js +309 -0
  80. package/core/rule-selection-service.js +121 -0
  81. package/core/sunlint-engine-service.js +23 -0
  82. package/core/typescript-analyzer.js +262 -0
  83. package/core/typescript-engine.js +313 -0
  84. package/docs/AI.md +163 -0
  85. package/docs/ARCHITECTURE.md +78 -0
  86. package/docs/CI-CD-GUIDE.md +315 -0
  87. package/docs/COMMAND-EXAMPLES.md +256 -0
  88. package/docs/DEBUG.md +86 -0
  89. package/docs/DISTRIBUTION.md +153 -0
  90. package/docs/ESLINT-INTEGRATION-STRATEGY.md +392 -0
  91. package/docs/ESLINT_INTEGRATION.md +238 -0
  92. package/docs/FOLDER_STRUCTURE.md +59 -0
  93. package/docs/HEURISTIC_VS_AI.md +113 -0
  94. package/docs/README.md +32 -0
  95. package/docs/RELEASE_GUIDE.md +230 -0
  96. package/docs/RULE-RESPONSIBILITY-MATRIX.md +204 -0
  97. package/eslint-integration/.eslintrc.js +98 -0
  98. package/eslint-integration/cli.js +35 -0
  99. package/eslint-integration/eslint-plugin-custom/c002-no-duplicate-code.js +204 -0
  100. package/eslint-integration/eslint-plugin-custom/c003-no-vague-abbreviations.js +246 -0
  101. package/eslint-integration/eslint-plugin-custom/c006-function-name-verb-noun.js +207 -0
  102. package/eslint-integration/eslint-plugin-custom/c010-limit-block-nesting.js +90 -0
  103. package/eslint-integration/eslint-plugin-custom/c013-no-dead-code.js +43 -0
  104. package/eslint-integration/eslint-plugin-custom/c014-abstract-dependency-preferred.js +38 -0
  105. package/eslint-integration/eslint-plugin-custom/c017-limit-constructor-logic.js +39 -0
  106. package/eslint-integration/eslint-plugin-custom/c018-no-generic-throw.js +335 -0
  107. package/eslint-integration/eslint-plugin-custom/c023-no-duplicate-variable-name-in-scope.js +142 -0
  108. package/eslint-integration/eslint-plugin-custom/c027-limit-function-nesting.js +50 -0
  109. package/eslint-integration/eslint-plugin-custom/c029-catch-block-logging.js +80 -0
  110. package/eslint-integration/eslint-plugin-custom/c030-use-custom-error-classes.js +294 -0
  111. package/eslint-integration/eslint-plugin-custom/c034-no-implicit-return.js +34 -0
  112. package/eslint-integration/eslint-plugin-custom/c035-no-empty-catch.js +32 -0
  113. package/eslint-integration/eslint-plugin-custom/c041-no-config-inline.js +64 -0
  114. package/eslint-integration/eslint-plugin-custom/c042-boolean-name-prefix.js +406 -0
  115. package/eslint-integration/eslint-plugin-custom/c043-no-console-or-print.js +300 -0
  116. package/eslint-integration/eslint-plugin-custom/c047-no-duplicate-retry-logic.js +239 -0
  117. package/eslint-integration/eslint-plugin-custom/c048-no-var-declaration.js +31 -0
  118. package/eslint-integration/eslint-plugin-custom/c076-one-assert-per-test.js +184 -0
  119. package/eslint-integration/eslint-plugin-custom/index.js +155 -0
  120. package/eslint-integration/eslint-plugin-custom/package.json +13 -0
  121. package/eslint-integration/eslint-plugin-custom/package.json.bak +9 -0
  122. package/eslint-integration/eslint-plugin-custom/s003-no-unvalidated-redirect.js +86 -0
  123. package/eslint-integration/eslint-plugin-custom/s005-no-origin-auth.js +95 -0
  124. package/eslint-integration/eslint-plugin-custom/s006-activation-recovery-secret-not-plaintext.js +69 -0
  125. package/eslint-integration/eslint-plugin-custom/s008-crypto-agility.js +62 -0
  126. package/eslint-integration/eslint-plugin-custom/s009-no-insecure-crypto.js +103 -0
  127. package/eslint-integration/eslint-plugin-custom/s010-no-insecure-random-in-sensitive-context.js +123 -0
  128. package/eslint-integration/eslint-plugin-custom/s011-no-insecure-uuid.js +66 -0
  129. package/eslint-integration/eslint-plugin-custom/s012-hardcode-secret.js +71 -0
  130. package/eslint-integration/eslint-plugin-custom/s014-insecure-tls-version.js +50 -0
  131. package/eslint-integration/eslint-plugin-custom/s015-insecure-tls-certificate.js +43 -0
  132. package/eslint-integration/eslint-plugin-custom/s016-sensitive-query-parameter.js +59 -0
  133. package/eslint-integration/eslint-plugin-custom/s017-no-sql-injection.js +193 -0
  134. package/eslint-integration/eslint-plugin-custom/s018-positive-input-validation.js +56 -0
  135. package/eslint-integration/eslint-plugin-custom/s019-no-raw-user-input-in-email.js +113 -0
  136. package/eslint-integration/eslint-plugin-custom/s020-no-eval-dynamic-execution.js +89 -0
  137. package/eslint-integration/eslint-plugin-custom/s022-output-encoding.js +78 -0
  138. package/eslint-integration/eslint-plugin-custom/s023-no-json-injection.js +300 -0
  139. package/eslint-integration/eslint-plugin-custom/s025-server-side-input-validation.js +217 -0
  140. package/eslint-integration/eslint-plugin-custom/s026-json-schema-validation.js +68 -0
  141. package/eslint-integration/eslint-plugin-custom/s027-no-hardcoded-secrets.js +80 -0
  142. package/eslint-integration/eslint-plugin-custom/s029-require-csrf-protection.js +79 -0
  143. package/eslint-integration/eslint-plugin-custom/s030-no-directory-browsing.js +78 -0
  144. package/eslint-integration/eslint-plugin-custom/s033-require-samesite-cookie.js +80 -0
  145. package/eslint-integration/eslint-plugin-custom/s034-require-host-cookie-prefix.js +77 -0
  146. package/eslint-integration/eslint-plugin-custom/s035-cookie-specific-path.js +74 -0
  147. package/eslint-integration/eslint-plugin-custom/s036-no-unsafe-file-include.js +68 -0
  148. package/eslint-integration/eslint-plugin-custom/s037-require-anti-cache-headers.js +70 -0
  149. package/eslint-integration/eslint-plugin-custom/s038-no-version-disclosure.js +74 -0
  150. package/eslint-integration/eslint-plugin-custom/s039-no-session-token-in-url.js +63 -0
  151. package/eslint-integration/eslint-plugin-custom/s041-require-session-invalidate-on-logout.js +211 -0
  152. package/eslint-integration/eslint-plugin-custom/s042-require-periodic-reauthentication.js +294 -0
  153. package/eslint-integration/eslint-plugin-custom/s043-terminate-sessions-on-password-change.js +254 -0
  154. package/eslint-integration/eslint-plugin-custom/s044-require-full-session-for-sensitive-operations.js +292 -0
  155. package/eslint-integration/eslint-plugin-custom/s045-anti-automation-controls.js +46 -0
  156. package/eslint-integration/eslint-plugin-custom/s046-secure-notification-on-auth-change.js +44 -0
  157. package/eslint-integration/eslint-plugin-custom/s047-secure-random-passwords.js +108 -0
  158. package/eslint-integration/eslint-plugin-custom/s048-password-credential-recovery.js +54 -0
  159. package/eslint-integration/eslint-plugin-custom/s050-session-token-weak-hash.js +94 -0
  160. package/eslint-integration/eslint-plugin-custom/s052-secure-random-authentication-code.js +66 -0
  161. package/eslint-integration/eslint-plugin-custom/s054-verification-default-account.js +109 -0
  162. package/eslint-integration/eslint-plugin-custom/s055-verification-rest-check-the-incoming-content-type.js +143 -0
  163. package/eslint-integration/eslint-plugin-custom/s057-utc-logging.js +54 -0
  164. package/eslint-integration/eslint-plugin-custom/s058-no-ssrf.js +73 -0
  165. package/eslint-integration/eslint-plugin-custom/t002-interface-prefix-i.js +42 -0
  166. package/eslint-integration/eslint-plugin-custom/t003-ts-ignore-reason.js +48 -0
  167. package/eslint-integration/eslint-plugin-custom/t004-interface-public-only.js +160 -0
  168. package/eslint-integration/eslint-plugin-custom/t007-no-fn-in-constructor.js +52 -0
  169. package/eslint-integration/eslint-plugin-custom/t011-no-real-time-dependency.js +175 -0
  170. package/eslint-integration/eslint-plugin-custom/t019-no-empty-type.js +95 -0
  171. package/eslint-integration/eslint-plugin-custom/t025-no-nested-union-tuple.js +48 -0
  172. package/eslint-integration/eslint-plugin-custom/t026-limit-nested-generics.js +377 -0
  173. package/eslint-integration/eslint.config.js +125 -0
  174. package/eslint-integration/eslint.config.simple.js +24 -0
  175. package/eslint-integration/node_modules/eslint-plugin-custom/package.json +0 -0
  176. package/eslint-integration/package.json +23 -0
  177. package/eslint-integration/sample.ts +53 -0
  178. package/eslint-integration/test-s003.js +5 -0
  179. package/eslint-integration/tsconfig.json +27 -0
  180. package/examples/.github/workflows/code-quality.yml +111 -0
  181. package/examples/.sunlint.json +42 -0
  182. package/examples/README.md +47 -0
  183. package/examples/package.json +33 -0
  184. package/package.json +100 -0
  185. package/rules/C006_function_naming/analyzer.js +338 -0
  186. package/rules/C006_function_naming/config.json +86 -0
  187. package/rules/C019_log_level_usage/analyzer.js +359 -0
  188. package/rules/C019_log_level_usage/config.json +121 -0
  189. package/rules/C029_catch_block_logging/analyzer.js +339 -0
  190. package/rules/C029_catch_block_logging/config.json +59 -0
  191. package/rules/C031_validation_separation/README.md +72 -0
  192. package/rules/C031_validation_separation/analyzer.js +186 -0
@@ -0,0 +1,166 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Sunlint Configuration",
4
+ "description": "Configuration file for Sun Lint - Coding Standards Checker",
5
+ "type": "object",
6
+ "properties": {
7
+ "extends": {
8
+ "description": "Extend from a base configuration",
9
+ "oneOf": [
10
+ {
11
+ "type": "string",
12
+ "enum": [
13
+ "@sun/sunlint/recommended",
14
+ "@sun/sunlint/strict",
15
+ "@sun/sunlint/beginner"
16
+ ]
17
+ },
18
+ {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "string"
22
+ }
23
+ }
24
+ ]
25
+ },
26
+ "rules": {
27
+ "description": "Rule-specific configuration",
28
+ "type": "object",
29
+ "patternProperties": {
30
+ "^C\\d{3}$": {
31
+ "oneOf": [
32
+ {
33
+ "type": "string",
34
+ "enum": ["error", "warning", "info", "off"]
35
+ },
36
+ {
37
+ "type": "array",
38
+ "items": [
39
+ {
40
+ "type": "string",
41
+ "enum": ["error", "warning", "info", "off"]
42
+ },
43
+ {
44
+ "type": "object"
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ }
50
+ },
51
+ "additionalProperties": false
52
+ },
53
+ "categories": {
54
+ "description": "Category-based rule configuration",
55
+ "type": "object",
56
+ "properties": {
57
+ "quality": {
58
+ "type": "string",
59
+ "enum": ["error", "warning", "info", "off"]
60
+ },
61
+ "security": {
62
+ "type": "string",
63
+ "enum": ["error", "warning", "info", "off"]
64
+ },
65
+ "logging": {
66
+ "type": "string",
67
+ "enum": ["error", "warning", "info", "off"]
68
+ },
69
+ "naming": {
70
+ "type": "string",
71
+ "enum": ["error", "warning", "info", "off"]
72
+ },
73
+ "validation": {
74
+ "type": "string",
75
+ "enum": ["error", "warning", "info", "off"]
76
+ }
77
+ },
78
+ "additionalProperties": false
79
+ },
80
+ "languages": {
81
+ "description": "Languages to analyze",
82
+ "type": "array",
83
+ "items": {
84
+ "type": "string",
85
+ "enum": ["typescript", "dart", "kotlin", "javascript"]
86
+ },
87
+ "uniqueItems": true
88
+ },
89
+ "include": {
90
+ "description": "File patterns to include",
91
+ "type": "array",
92
+ "items": {
93
+ "type": "string"
94
+ }
95
+ },
96
+ "exclude": {
97
+ "description": "File patterns to exclude",
98
+ "type": "array",
99
+ "items": {
100
+ "type": "string"
101
+ }
102
+ },
103
+ "ignorePatterns": {
104
+ "description": "Patterns to ignore (alias for exclude)",
105
+ "type": "array",
106
+ "items": {
107
+ "type": "string"
108
+ }
109
+ },
110
+ "maxConcurrent": {
111
+ "description": "Maximum number of concurrent rule executions",
112
+ "type": "integer",
113
+ "minimum": 1,
114
+ "maximum": 20,
115
+ "default": 5
116
+ },
117
+ "timeout": {
118
+ "description": "Timeout for rule execution in milliseconds",
119
+ "type": "integer",
120
+ "minimum": 1000,
121
+ "maximum": 60000,
122
+ "default": 30000
123
+ },
124
+ "reportFormat": {
125
+ "description": "Default output format",
126
+ "type": "string",
127
+ "enum": ["summary", "json", "eslint", "github", "table"]
128
+ },
129
+ "severity": {
130
+ "description": "Global severity configuration",
131
+ "type": "object",
132
+ "properties": {
133
+ "error": {
134
+ "type": "boolean",
135
+ "description": "Include error-level violations"
136
+ },
137
+ "warning": {
138
+ "type": "boolean",
139
+ "description": "Include warning-level violations"
140
+ },
141
+ "info": {
142
+ "type": "boolean",
143
+ "description": "Include info-level violations"
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "additionalProperties": false,
149
+ "examples": [
150
+ {
151
+ "extends": "@sun/sunlint/recommended",
152
+ "rules": {
153
+ "C019": "warning",
154
+ "C006": "error",
155
+ "C029": "error"
156
+ },
157
+ "categories": {
158
+ "quality": "warning",
159
+ "security": "error"
160
+ },
161
+ "languages": ["typescript", "dart"],
162
+ "include": ["src/**/*.ts", "lib/**/*.dart"],
163
+ "exclude": ["**/node_modules/**", "**/build/**"]
164
+ }
165
+ ]
166
+ }
File without changes
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Custom ESLint Rules for SunLint Integration
3
+ * Now redirects to the actual eslint-plugin-custom with all rules
4
+ */
5
+
6
+ // Import the actual plugin with all rules (quality + security)
7
+ const eslintPluginCustom = require('../../eslint-integration/eslint-plugin-custom');
8
+
9
+ module.exports = eslintPluginCustom;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * ESLint Configuration for SunLint TypeScript Integration
3
+ * Simple config focusing on existing custom rules
4
+ */
5
+
6
+ const customRules = require('./custom-rules');
7
+
8
+ module.exports = [
9
+ {
10
+ files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
11
+ languageOptions: {
12
+ parser: require('@typescript-eslint/parser'),
13
+ parserOptions: {
14
+ ecmaVersion: 2020,
15
+ sourceType: 'module'
16
+ },
17
+ globals: {
18
+ console: 'readonly',
19
+ process: 'readonly',
20
+ Buffer: 'readonly',
21
+ __dirname: 'readonly',
22
+ __filename: 'readonly',
23
+ exports: 'writable',
24
+ module: 'writable',
25
+ require: 'readonly',
26
+ global: 'readonly'
27
+ }
28
+ },
29
+ plugins: {
30
+ '@typescript-eslint': require('@typescript-eslint/eslint-plugin'),
31
+ 'custom': customRules
32
+ },
33
+ rules: {
34
+ // Enable all quality rules
35
+ 'custom/c002': 'warn',
36
+ 'custom/c003': 'warn',
37
+ 'custom/c006': 'warn',
38
+ 'custom/c010': 'warn',
39
+ 'custom/c013': 'warn',
40
+ 'custom/c014': 'warn',
41
+ 'custom/c017': 'warn',
42
+ 'custom/c018': 'warn',
43
+ 'custom/c023': 'warn',
44
+ 'custom/c027': 'warn',
45
+ 'custom/c029': 'warn',
46
+ 'custom/c030': 'warn',
47
+ 'custom/c034': 'warn',
48
+ 'custom/c035': 'warn',
49
+ 'custom/c041': 'warn',
50
+ 'custom/c042': 'warn',
51
+ 'custom/c043': 'warn',
52
+ 'custom/c047': 'warn',
53
+ 'custom/c048': 'warn',
54
+ 'custom/c076': 'warn',
55
+ 'custom/t002': 'warn',
56
+ 'custom/t003': 'warn',
57
+ 'custom/t004': 'warn',
58
+ 'custom/t007': 'warn',
59
+ 'custom/t011': 'warn',
60
+ 'custom/t019': 'warn',
61
+ 'custom/t025': 'warn',
62
+ 'custom/t026': 'warn',
63
+
64
+ // Enable all security rules as warnings by default
65
+ 'custom/typescript_s003': 'warn',
66
+ 'custom/typescript_s005': 'warn',
67
+ 'custom/typescript_s006': 'warn',
68
+ 'custom/typescript_s008': 'warn',
69
+ 'custom/typescript_s009': 'warn',
70
+ 'custom/typescript_s010': 'warn',
71
+ 'custom/typescript_s011': 'warn',
72
+ 'custom/typescript_s012': 'warn',
73
+ 'custom/typescript_s014': 'warn',
74
+ 'custom/typescript_s015': 'warn',
75
+ 'custom/typescript_s016': 'warn',
76
+ 'custom/typescript_s017': 'warn',
77
+ 'custom/typescript_s018': 'warn',
78
+ 'custom/typescript_s019': 'warn',
79
+ 'custom/typescript_s020': 'warn',
80
+ 'custom/typescript_s022': 'warn',
81
+ 'custom/typescript_s023': 'warn',
82
+ 'custom/typescript_s025': 'warn',
83
+ 'custom/typescript_s026': 'warn',
84
+ 'custom/typescript_s027': 'warn',
85
+ 'custom/typescript_s029': 'warn',
86
+ 'custom/typescript_s030': 'warn',
87
+ 'custom/typescript_s033': 'warn',
88
+ 'custom/typescript_s034': 'warn',
89
+ 'custom/typescript_s035': 'warn',
90
+ 'custom/typescript_s036': 'warn',
91
+ 'custom/typescript_s037': 'warn',
92
+ 'custom/typescript_s038': 'warn',
93
+ 'custom/typescript_s039': 'warn',
94
+ 'custom/typescript_s041': 'warn',
95
+ 'custom/typescript_s042': 'warn',
96
+ 'custom/typescript_s043': 'warn',
97
+ 'custom/typescript_s044': 'warn',
98
+ 'custom/typescript_s045': 'warn',
99
+ 'custom/typescript_s046': 'warn',
100
+ 'custom/typescript_s047': 'warn',
101
+ 'custom/typescript_s048': 'warn',
102
+ 'custom/typescript_s050': 'warn',
103
+ 'custom/typescript_s052': 'warn',
104
+ 'custom/typescript_s054': 'warn',
105
+ 'custom/typescript_s055': 'warn',
106
+ 'custom/typescript_s057': 'warn',
107
+ 'custom/typescript_s058': 'warn'
108
+ }
109
+ }
110
+ ];