@deslop/coding-standards 0.1.1243 → 0.1.1245

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @deslop/coding-standards
2
2
 
3
- A Vite+ lint preset, a strict TypeScript configuration with Effect diagnostics, and the `lint-companion`, `pull-requests` and `review` skills for Claude Code and Codex.
3
+ A Vite+ lint preset that runs the Effect rules and TypeScript diagnostics in Oxlint on tsrs, a strict TypeScript configuration, and the `lint-companion`, `pull-requests` and `review` skills for Claude Code and Codex.
4
4
 
5
5
  ```bash
6
6
  vpx @deslop/coding-standards@latest # installs the skills
@@ -20,13 +20,14 @@ export default defineConfig({lint: {extends: [lint]}})
20
20
  // package.json
21
21
  {
22
22
  "scripts": {
23
- "prepare": "effect-tsgo patch --no-typescript --tsrs",
24
- "typecheck": "tsrs --checkerAssignment go --pretty false",
25
- "check": "vp check && vp run typecheck"
23
+ "prepare": "effect-tsgo patch --no-typescript --tsrs --oxlint",
24
+ "check": "effect-tsgo --tsrs-lint vp lint --type-aware --type-check"
26
25
  }
27
26
  }
28
27
  ```
29
28
 
29
+ The preset leaves type-aware lint and type checking off, so a syntax-only pass stays possible; the two flags turn them on, and `--tsrs-lint` runs them on tsrs instead of Oxlint's tsgolint backend.
30
+
30
31
  ```jsonc
31
32
  // tsconfig.json
32
33
  {"extends": "@deslop/coding-standards/tsconfig.json"}
package/dist/install.js CHANGED
@@ -27604,7 +27604,7 @@ const runWith = (command, config) => {
27604
27604
  }, ({ error, userMessage }) => andThen(showUserError(error, userMessage), fail$3(error))), catchFilter((e) => isQuitError(e) ? succeed$6(e) : fail$8(e), (_) => interrupt$1));
27605
27605
  };
27606
27606
  // package.json
27607
- var version = "0.1.1243";
27607
+ var version = "0.1.1245";
27608
27608
  // src/install.ts
27609
27609
  const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
27610
27610
  const fs = yield* FileSystem;
package/dist/lint.js CHANGED
@@ -2929,7 +2929,7 @@ const noPipeMethod = defineRule({
2929
2929
  });
2930
2930
  return;
2931
2931
  }
2932
- if (call.parent?.type === "MemberExpression" && isNotNullish(call.parent.parent) && pipeCall(call.parent.parent)) {
2932
+ if (call.parent.type === "MemberExpression" && isNotNullish(call.parent.parent) && pipeCall(call.parent.parent)) {
2933
2933
  context.report({
2934
2934
  message: MESSAGE$5,
2935
2935
  node
@@ -4146,12 +4146,7 @@ function skips(context, node) {
4146
4146
  context,
4147
4147
  node: chain.root,
4148
4148
  source: TEST_RUNNERS
4149
- }) || !contains([
4150
- "describe",
4151
- "it",
4152
- "suite",
4153
- "test"
4154
- ], chain.root.name) || hasEffectMember(chain.members));
4149
+ }) || hasEffectMember(chain.members));
4155
4150
  }));
4156
4151
  }
4157
4152
  const noSkippedTest = defineRule({
@@ -5299,12 +5294,15 @@ const lint = {
5299
5294
  {
5300
5295
  files: ["**/*.tsx"],
5301
5296
  rules: {
5297
+ "effecttsgo/async-function": "off",
5302
5298
  "eslint/require-await": "error",
5299
+ "typescript/strict-void-return": "off",
5303
5300
  "unicorn/no-null": "off"
5304
5301
  }
5305
5302
  }
5306
5303
  ],
5307
5304
  plugins: [
5305
+ "effecttsgo",
5308
5306
  "eslint",
5309
5307
  "typescript",
5310
5308
  "oxc",
@@ -5316,6 +5314,123 @@ const lint = {
5316
5314
  ],
5317
5315
  rules: {
5318
5316
  ...mapEntries(RULES, (_, name) => [`@deslop/coding-standards/${name}`, "error"]),
5317
+ "effecttsgo/any-unknown-in-error-context": "error",
5318
+ "effecttsgo/class-self-mismatch": "error",
5319
+ "effecttsgo/duplicate-package": "error",
5320
+ "effecttsgo/effect-fn-implicit-any": "error",
5321
+ "effecttsgo/error-payload-shadows-name": "error",
5322
+ "effecttsgo/floating-effect": "error",
5323
+ "effecttsgo/floating-effect-in-vitest": "error",
5324
+ "effecttsgo/missing-effect-context": "error",
5325
+ "effecttsgo/missing-effect-error": "error",
5326
+ "effecttsgo/missing-layer-context": "error",
5327
+ "effecttsgo/missing-return-yield-star": "error",
5328
+ "effecttsgo/missing-star-in-yield-effect-gen": "error",
5329
+ "effecttsgo/obsolete-match-import": "error",
5330
+ "effecttsgo/obsolete-schema-import": "error",
5331
+ "effecttsgo/outdated-api": "error",
5332
+ "effecttsgo/overridden-schema-constructor": "error",
5333
+ "effecttsgo/promise-in-effect-success": "error",
5334
+ "effecttsgo/schema-class-object-literal": "error",
5335
+ "effecttsgo/schema-literal-non-finite": "error",
5336
+ "effecttsgo/unsafe-effect-type-assertion": "error",
5337
+ "effecttsgo/catch-unfailable-effect": "error",
5338
+ "effecttsgo/effect-fn-iife": "error",
5339
+ "effecttsgo/effect-gen-uses-adapter": "error",
5340
+ "effecttsgo/effect-in-failure": "error",
5341
+ "effecttsgo/effect-in-void-success": "error",
5342
+ "effecttsgo/effect-try-without-catch": "error",
5343
+ "effecttsgo/global-error-in-effect-catch": "error",
5344
+ "effecttsgo/global-error-in-effect-failure": "error",
5345
+ "effecttsgo/layer-merge-all-with-dependencies": "error",
5346
+ "effecttsgo/lazy-effect": "error",
5347
+ "effecttsgo/lazy-promise-in-effect-sync": "error",
5348
+ "effecttsgo/leaking-requirements": "error",
5349
+ "effecttsgo/multiple-effect-provide": "error",
5350
+ "effecttsgo/return-effect-in-gen": "error",
5351
+ "effecttsgo/schema-sync-in-effect": "error",
5352
+ "effecttsgo/strict-effect-provide": "error",
5353
+ "effecttsgo/try-catch-in-effect-gen": "error",
5354
+ "effecttsgo/async-function": "error",
5355
+ "effecttsgo/global-console": "error",
5356
+ "effecttsgo/global-console-in-effect": "error",
5357
+ "effecttsgo/global-date": "error",
5358
+ "effecttsgo/global-date-in-effect": "error",
5359
+ "effecttsgo/global-fetch": "error",
5360
+ "effecttsgo/global-fetch-in-effect": "error",
5361
+ "effecttsgo/global-json": "error",
5362
+ "effecttsgo/global-json-in-effect": "error",
5363
+ "effecttsgo/global-random": "error",
5364
+ "effecttsgo/global-random-in-effect": "error",
5365
+ "effecttsgo/global-timers": "error",
5366
+ "effecttsgo/global-timers-in-effect": "error",
5367
+ "effecttsgo/instance-of-schema": "error",
5368
+ "effecttsgo/node-builtin-import": "error",
5369
+ "effecttsgo/prefer-effect-array": "error",
5370
+ "effecttsgo/prefer-effect-record": "error",
5371
+ "effecttsgo/prefer-effect-string": "error",
5372
+ "effecttsgo/process-env": "error",
5373
+ "effecttsgo/process-env-in-effect": "error",
5374
+ "effecttsgo/acquire-release-disposable": "error",
5375
+ "effecttsgo/all-of-map-to-for-each": "error",
5376
+ "effecttsgo/catch-all-tag-dispatch-to-catch-tag": "error",
5377
+ "effecttsgo/catch-all-to-map-error": "error",
5378
+ "effecttsgo/catch-chain-to-first-success-of": "error",
5379
+ "effecttsgo/catch-conditional-refail-to-catch-if": "error",
5380
+ "effecttsgo/catch-if-tag-to-catch-tag": "error",
5381
+ "effecttsgo/catch-refail-to-tap-error": "error",
5382
+ "effecttsgo/catch-tag-to-catch-reason": "error",
5383
+ "effecttsgo/catch-to-or-else-succeed": "error",
5384
+ "effecttsgo/deterministic-keys": "error",
5385
+ "effecttsgo/effect-do-notation": "error",
5386
+ "effecttsgo/effect-fn-opportunity": "error",
5387
+ "effecttsgo/effect-map-flatten": "error",
5388
+ "effecttsgo/effect-map-void": "error",
5389
+ "effecttsgo/effect-sleep-zero-to-yield-now": "error",
5390
+ "effecttsgo/effect-succeed-with-undefined": "error",
5391
+ "effecttsgo/effect-succeed-with-void": "error",
5392
+ "effecttsgo/fail-cause-to-constructor": "error",
5393
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": "error",
5394
+ "effecttsgo/flat-map-identity-to-flatten": "error",
5395
+ "effecttsgo/flat-map-ignored-param-to-and-then": "error",
5396
+ "effecttsgo/flat-map-to-map": "error",
5397
+ "effecttsgo/flat-map-to-tap": "error",
5398
+ "effecttsgo/manual-metric-tap-to-track": "error",
5399
+ "effecttsgo/map-const-to-as": "error",
5400
+ "effecttsgo/map-map-error-to-map-both": "error",
5401
+ "effecttsgo/map-some-catch-no-such-element": "error",
5402
+ "effecttsgo/map-some-to-as-some": "error",
5403
+ "effecttsgo/match-boolean-to-is-success": "error",
5404
+ "effecttsgo/match-effect-to-map-both": "error",
5405
+ "effecttsgo/match-effect-to-match": "error",
5406
+ "effecttsgo/match-to-result-or-option": "error",
5407
+ "effecttsgo/multiple-catch-tag": "error",
5408
+ "effecttsgo/nested-effect-gen-yield": "error",
5409
+ "effecttsgo/new-schema-class": "error",
5410
+ "effecttsgo/option-match-to-from-option": "error",
5411
+ "effecttsgo/prefer-schema-type-property": "error",
5412
+ "effecttsgo/prefer-succeed-some-or-none": "error",
5413
+ "effecttsgo/prefer-typed-schema-decoder": "error",
5414
+ "effecttsgo/provide-layer-succeed-to-provide-service": "error",
5415
+ "effecttsgo/provide-merge-all-to-array": "error",
5416
+ "effecttsgo/race-first-with-sleep-to-timeout": "error",
5417
+ "effecttsgo/redundant-map-error": "error",
5418
+ "effecttsgo/redundant-or-die": "error",
5419
+ "effecttsgo/redundant-schema-tag-identifier": "error",
5420
+ "effecttsgo/result-match-to-from-result": "error",
5421
+ "effecttsgo/run-of-exit-to-run-exit": "error",
5422
+ "effecttsgo/schema-number": "error",
5423
+ "effecttsgo/schema-struct-with-tag": "error",
5424
+ "effecttsgo/service-not-as-class": "error",
5425
+ "effecttsgo/suspend-fail-to-fail-sync": "error",
5426
+ "effecttsgo/sync-to-succeed": "error",
5427
+ "effecttsgo/timeout-catch-tag-to-timeout-or-else": "error",
5428
+ "effecttsgo/type-union-to-schema-union": "error",
5429
+ "effecttsgo/unnecessary-effect-gen": "error",
5430
+ "effecttsgo/unnecessary-fail-yieldable-error": "error",
5431
+ "effecttsgo/unnecessary-pipe": "error",
5432
+ "effecttsgo/unnecessary-pipe-chain": "error",
5433
+ "effecttsgo/unnecessary-typeof-type": "error",
5319
5434
  "eslint/arrow-body-style": ["error", "as-needed"],
5320
5435
  "eslint/constructor-super": "error",
5321
5436
  "eslint/curly": [
@@ -5736,7 +5851,6 @@ const lint = {
5736
5851
  "eslint/no-with": "error",
5737
5852
  "eslint/object-shorthand": "error",
5738
5853
  "eslint/prefer-arrow-callback": "error",
5739
- "eslint/prefer-const": ["error", { destructuring: "all" }],
5740
5854
  "eslint/prefer-template": "error",
5741
5855
  "eslint/preserve-caught-error": "error",
5742
5856
  "eslint/require-yield": "error",
@@ -5948,7 +6062,7 @@ const lint = {
5948
6062
  "typescript/no-explicit-any": "error",
5949
6063
  "typescript/no-extraneous-class": "error",
5950
6064
  "typescript/no-import-type-side-effects": "error",
5951
- "typescript/no-inferrable-types": "error",
6065
+ "typescript/no-inferrable-types": ["error", { ignoreParameters: true }],
5952
6066
  "typescript/no-misused-new": "error",
5953
6067
  "typescript/no-namespace": ["error", { allowDeclarations: true }],
5954
6068
  "typescript/no-non-null-assertion": "error",
@@ -5975,6 +6089,47 @@ const lint = {
5975
6089
  "typescript/prefer-function-type": "error",
5976
6090
  "typescript/triple-slash-reference": "error",
5977
6091
  "typescript/unified-signatures": "error",
6092
+ "typescript/await-thenable": "error",
6093
+ "typescript/consistent-type-exports": "error",
6094
+ "typescript/dot-notation": "error",
6095
+ "typescript/no-array-delete": "error",
6096
+ "typescript/no-base-to-string": "error",
6097
+ "typescript/no-confusing-void-expression": ["error", { ignoreVoidReturningFunctions: true }],
6098
+ "typescript/no-deprecated": "error",
6099
+ "typescript/no-duplicate-type-constituents": "error",
6100
+ "typescript/no-floating-promises": "error",
6101
+ "typescript/no-for-in-array": "error",
6102
+ "typescript/no-generated-empty-object-type": "error",
6103
+ "typescript/no-misused-promises": ["error", { checksVoidReturn: { attributes: false } }],
6104
+ "typescript/no-misused-spread": "error",
6105
+ "typescript/no-redundant-type-constituents": "error",
6106
+ "typescript/no-unnecessary-boolean-literal-compare": "error",
6107
+ "typescript/no-unnecessary-condition": "error",
6108
+ "typescript/no-unnecessary-qualifier": "error",
6109
+ "typescript/no-unnecessary-template-expression": "error",
6110
+ "typescript/no-unnecessary-type-arguments": "error",
6111
+ "typescript/no-unnecessary-type-assertion": "error",
6112
+ "typescript/no-unnecessary-type-conversion": "error",
6113
+ "typescript/no-unnecessary-type-parameters": "error",
6114
+ "typescript/no-unsafe-argument": "error",
6115
+ "typescript/no-unsafe-assignment": "error",
6116
+ "typescript/no-unsafe-call": "error",
6117
+ "typescript/no-unsafe-member-access": "error",
6118
+ "typescript/no-unsafe-return": "error",
6119
+ "typescript/no-unsafe-unary-minus": "error",
6120
+ "typescript/no-useless-default-assignment": "error",
6121
+ "typescript/prefer-nullish-coalescing": ["error", { ignoreTernaryTests: true }],
6122
+ "typescript/prefer-optional-chain": "error",
6123
+ "typescript/restrict-plus-operands": "error",
6124
+ "typescript/restrict-template-expressions": "error",
6125
+ "typescript/strict-boolean-expressions": ["error", {
6126
+ allowNullableObject: false,
6127
+ allowNullableString: true,
6128
+ allowNumber: false,
6129
+ allowString: true
6130
+ }],
6131
+ "typescript/strict-void-return": "error",
6132
+ "typescript/unbound-method": "error",
5978
6133
  "unicorn/consistent-function-scoping": "error",
5979
6134
  "unicorn/filename-case": "error",
5980
6135
  "unicorn/no-abusive-eslint-disable": "error",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deslop/coding-standards",
3
- "version": "0.1.1243",
3
+ "version": "0.1.1245",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/MP281X/deslop.git",
@@ -36,11 +36,11 @@
36
36
  "oxlint-plugin-react-doctor": "latest"
37
37
  },
38
38
  "peerDependencies": {
39
+ "@effect/tsgo": ">=0.67",
39
40
  "vite-plus": "^1.3"
40
41
  },
41
42
  "scripts": {
42
43
  "build": "vp pack",
43
- "test": "vp test --config ../../vite.config.ts",
44
- "typecheck": "tsrs --checkerAssignment go --pretty false"
44
+ "test": "vp test --config ../../vite.config.ts"
45
45
  }
46
46
  }
package/tsconfig.json CHANGED
@@ -24,190 +24,6 @@
24
24
  "noUncheckedSideEffectImports": true,
25
25
  "noEmit": true,
26
26
  "incremental": false,
27
- "plugins": [
28
- {
29
- "name": "@effect/language-service",
30
- "effectFn": ["span", "untraced"],
31
- "diagnosticSeverity": {
32
- "abortControllerInEffect": "off",
33
- "acquireReleaseDisposable": "error",
34
- "allOfMapToForEach": "error",
35
- "anyUnknownInErrorContext": "error",
36
- "apiStabilityLeak": "off",
37
- "asyncFunction": "error",
38
- "catchAllTagDispatchToCatchTag": "error",
39
- "catchAllToMapError": "error",
40
- "catchChainToFirstSuccessOf": "error",
41
- "catchConditionalRefailToCatchIf": "error",
42
- "catchDieToOrDie": "off",
43
- "catchIfTagToCatchTag": "error",
44
- "catchRefailToTapError": "error",
45
- "catchTagToCatchReason": "error",
46
- "catchToIgnore": "off",
47
- "catchToOrElseSucceed": "error",
48
- "catchUnfailableEffect": "error",
49
- "classSelfMismatch": "error",
50
- "cryptoRandomUUID": "off",
51
- "cryptoRandomUUIDInEffect": "off",
52
- "deterministicKeys": "error",
53
- "duplicatePackage": "error",
54
- "effectDoNotation": "error",
55
- "effectFnIife": "error",
56
- "effectFnImplicitAny": "error",
57
- "effectFnOpportunity": "error",
58
- "effectGenUsesAdapter": "error",
59
- "effectInFailure": "error",
60
- "effectInVoidSuccess": "error",
61
- "effectMapFlatten": "error",
62
- "effectMapVoid": "error",
63
- "effectSleepZeroToYieldNow": "error",
64
- "effectSucceedWithUndefined": "error",
65
- "effectSucceedWithVoid": "error",
66
- "effectTryWithoutCatch": "error",
67
- "errorPayloadShadowsName": "error",
68
- "experimentalApiUsage": "off",
69
- "extendsNativeError": "off",
70
- "failCauseToConstructor": "error",
71
- "flatMapConditionalToFilterOrFail": "error",
72
- "flatMapIdentityToFlatten": "error",
73
- "flatMapIgnoredParamToAndThen": "error",
74
- "flatMapToMap": "error",
75
- "flatMapToTap": "error",
76
- "floatingEffect": "error",
77
- "floatingEffectInVitest": "error",
78
- "globalConsole": "error",
79
- "globalConsoleInEffect": "error",
80
- "globalDate": "error",
81
- "globalDateInEffect": "error",
82
- "globalErrorInEffectCatch": "error",
83
- "globalErrorInEffectFailure": "error",
84
- "globalFetch": "error",
85
- "globalFetchInEffect": "error",
86
- "globalJson": "error",
87
- "globalJsonInEffect": "error",
88
- "globalRandom": "error",
89
- "globalRandomInEffect": "error",
90
- "globalTimers": "error",
91
- "globalTimersInEffect": "error",
92
- "instanceOfSchema": "error",
93
- "layerMergeAllWithDependencies": "error",
94
- "lazyEffect": "error",
95
- "lazyPromiseInEffectSync": "error",
96
- "leakingRequirements": "error",
97
- "manualMetricTapToTrack": "error",
98
- "mapConstToAs": "error",
99
- "mapMapErrorToMapBoth": "error",
100
- "mapSomeCatchNoSuchElement": "error",
101
- "mapSomeToAsSome": "error",
102
- "matchBooleanToIsSuccess": "error",
103
- "matchEffectToMapBoth": "error",
104
- "matchEffectToMatch": "error",
105
- "missedPipeableOpportunity": "off",
106
- "missingEffectContext": "error",
107
- "missingEffectError": "error",
108
- "missingLayerContext": "error",
109
- "missingPipeableSignature": "off",
110
- "missingReturnYieldStar": "error",
111
- "missingStarInYieldEffectGen": "error",
112
- "multipleCatchTag": "error",
113
- "multipleEffectProvide": "error",
114
- "nestedEffectGenYield": "error",
115
- "newPromise": "off",
116
- "newSchemaClass": "error",
117
- "nodeBuiltinImport": "error",
118
- "obsoleteMatchImport": "error",
119
- "obsoleteSchemaImport": "error",
120
- "optionMatchToFromOption": "error",
121
- "outdatedApi": "error",
122
- "overriddenSchemaConstructor": "error",
123
- "preferBarrelImport": "off",
124
- "preferEffectArray": "error",
125
- "preferEffectRecord": "error",
126
- "preferEffectString": "error",
127
- "preferNamespaceImport": "off",
128
- "preferSchemaTaggedError": "off",
129
- "preferSchemaTypeProperty": "error",
130
- "preferSucceedSomeOrNone": "error",
131
- "preferTypedSchemaDecoder": "error",
132
- "preferUnsafeConstructor": "off",
133
- "processEnv": "error",
134
- "processEnvInEffect": "error",
135
- "promiseInEffectSuccess": "error",
136
- "provideLayerSucceedToProvideService": "error",
137
- "provideMergeAllToArray": "error",
138
- "raceFirstWithSleepToTimeout": "error",
139
- "redundantMapError": "error",
140
- "redundantOrDie": "error",
141
- "redundantSchemaTagIdentifier": "error",
142
- "resultMatchToFromResult": "error",
143
- "returnEffectInGen": "error",
144
- "runEffectInsideEffect": "off",
145
- "runOfExitToRunExit": "error",
146
- "schemaClassMissingBrand": "off",
147
- "schemaClassObjectLiteral": "error",
148
- "schemaLiteralNonFinite": "error",
149
- "schemaNumber": "error",
150
- "schemaOpaqueInstanceMember": "off",
151
- "schemaStructWithTag": "error",
152
- "schemaSync": "off",
153
- "schemaSyncInEffect": "error",
154
- "serviceNotAsClass": "error",
155
- "strictBooleanExpressions": "error",
156
- "strictEffectProvide": "error",
157
- "suspendFailToFailSync": "error",
158
- "syncToSucceed": "error",
159
- "timeoutCatchTagToTimeoutOrElse": "error",
160
- "tryCatchInEffectGen": "error",
161
- "typeUnionToSchemaUnion": "error",
162
- "unknownInEffectCatch": "off",
163
- "unnecessaryArrowBlock": "off",
164
- "unnecessaryEffectGen": "error",
165
- "unnecessaryFailYieldableError": "error",
166
- "unnecessaryPipe": "error",
167
- "unnecessaryPipeChain": "error",
168
- "unnecessaryTypeofType": "error",
169
- "unsafeEffectTypeAssertion": "error",
170
- "unstableApiUsage": "off",
171
- "unusedDirective": "error",
172
- // no-single-use-value inlines a single-use yield into its call instead.
173
- "yieldInCallArgument": "off"
174
- },
175
- "ignoreEffectErrorsInTscExitCode": false,
176
- "ignoreEffectWarningsInTscExitCode": false,
177
- "ignoreEffectSuggestionsInTscExitCode": false,
178
- "overrides": [
179
- {
180
- // Absolute globs survive extends; the explicit dot component also covers hidden worktrees.
181
- "include": ["/**/*.tsx", "/**/.*/**/*.tsx"],
182
- "options": {"diagnosticSeverity": {"asyncFunction": "off"}}
183
- },
184
- {
185
- // shadcn's components stay exactly what its CLI writes, so Effect's style checks do not apply to them.
186
- "include": [
187
- "/**/components-web/src/ui/**/*.ts",
188
- "/**/components-web/src/ui/**/*.tsx",
189
- "/**/.*/**/components-web/src/ui/**/*.ts",
190
- "/**/.*/**/components-web/src/ui/**/*.tsx"
191
- ],
192
- "options": {
193
- "diagnosticSeverity": {
194
- "globalRandom": "off",
195
- "globalTimers": "off",
196
- "preferEffectArray": "off",
197
- "preferEffectRecord": "off",
198
- "preferEffectString": "off",
199
- "strictBooleanExpressions": "off"
200
- }
201
- }
202
- },
203
- {
204
- // The directive scan reads string literals too, and test fixtures hold source text with directives.
205
- "include": ["/**/*.test.ts", "/**/.*/**/*.test.ts"],
206
- "options": {"diagnosticSeverity": {"unusedDirective": "off"}}
207
- }
208
- ]
209
- }
210
- ],
211
27
  "noUnusedLocals": true,
212
28
  "noUnusedParameters": true
213
29
  },