@effect/tsgo 0.36.5 → 0.38.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.
package/README.md CHANGED
@@ -38,12 +38,12 @@ When running in dedicated diagnostics mode, the Effect diagnostics can be emitte
38
38
  <!-- supported-components:start -->
39
39
  ## Supported Package Versions
40
40
 
41
- The following target package versions are supported by `@effect/tsgo@0.36.5`:
41
+ The following target package versions are supported by `@effect/tsgo@0.38.0`:
42
42
 
43
43
  | Component | Supported versions |
44
44
  |---|---|
45
- | TypeScript | `7.0.2`, `7.1.0-dev.20260813.1` |
46
- | Oxlint | `1.77.0`, `1.78.0` |
45
+ | TypeScript | `7.0.2`, `7.1.0-dev.20260826.1` |
46
+ | Oxlint | `1.79.0`, `1.80.0` |
47
47
  | oxlint-tsgolint | `7.0.2001` |
48
48
  <!-- supported-components:end -->
49
49
 
@@ -121,8 +121,11 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
121
121
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/process-env-in-effect.md"><code>processEnvInEffect</code></a></td><td>Warns when reading process.env inside Effect generators instead of using Effect Config</td></tr>
122
122
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/unsafe-effect-type-assertion.md"><code>unsafeEffectTypeAssertion</code></a></td><td>Detects unsafe type assertions that narrow Effect, Stream, or Layer error or requirements channels</td></tr>
123
123
  <tr><td colspan="2"><strong>Style</strong> <em>Cleanup, consistency, and idiomatic Effect code.</em></td></tr>
124
+ <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/all-of-map-to-for-each.md"><code>allOfMapToForEach</code></a></td><td>Suggests using Effect.forEach instead of Effect.all over an effectful Array#map</td></tr>
124
125
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-all-to-map-error.md"><code>catchAllToMapError</code></a></td><td>Suggests using Effect.mapError instead of Effect.catch + Effect.fail</td></tr>
125
126
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-chain-to-first-success-of.md"><code>catchChainToFirstSuccessOf</code></a></td><td>Suggests Effect.firstSuccessOf for consecutive error-independent Effect.catch fallbacks when the error type is preserved</td></tr>
127
+ <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-conditional-refail-to-catch-if.md"><code>catchConditionalRefailToCatchIf</code></a></td><td>Suggests Effect.catchIf, Effect.catchCauseIf, or Effect.catchTag for conditional catch handlers that re-fail their untouched input</td></tr>
128
+ <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-die-to-or-die.md"><code>catchDieToOrDie</code></a></td><td>Suggests using Effect.orDie instead of Effect.catch or Effect.catchAll with an identity-forwarding Effect.die handler</td></tr>
126
129
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-tag-to-catch-reason.md"><code>catchTagToCatchReason</code></a></td><td>Suggests Effect.catchReason or Effect.catchReasons for handlers that re-fail unmatched reason._tag branches</td></tr>
127
130
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-to-ignore.md"><code>catchToIgnore</code></a></td><td>Suggests using Effect.ignore or Effect.ignoreCause instead of Effect.catch/catchCause returning Effect.void</td></tr>
128
131
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-to-or-else-succeed.md"><code>catchToOrElseSucceed</code></a></td><td>Suggests using Effect.orElseSucceed instead of Effect.catch + Effect.succeed</td></tr>
@@ -133,6 +136,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
133
136
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/effect-map-void.md"><code>effectMapVoid</code></a></td><td>Suggests using Effect.asVoid instead of Effect.map(() =&gt; void 0), Effect.map(() =&gt; undefined), or Effect.map(() =&gt; {})</td></tr>
134
137
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/effect-succeed-with-void.md"><code>effectSucceedWithVoid</code></a></td><td>Suggests using Effect.void instead of Effect.succeed(undefined) or Effect.succeed(void 0)</td></tr>
135
138
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/flat-map-to-map.md"><code>flatMapToMap</code></a></td><td>Suggests using Effect.map instead of Effect.flatMap when the callback only wraps its result with Effect.succeed</td></tr>
139
+ <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/map-some-to-as-some.md"><code>mapSomeToAsSome</code></a></td><td>Suggests using Effect.asSome instead of Effect.map when the mapper only wraps the success value with Option.some</td></tr>
136
140
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/missed-pipeable-opportunity.md"><code>missedPipeableOpportunity</code></a></td><td>Suggests using .pipe() for nested function calls</td></tr>
137
141
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/missing-effect-service-dependency.md"><code>missingEffectServiceDependency</code></a></td><td>Checks that Effect.Service dependencies satisfy all required layer inputs</td></tr>
138
142
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/missing-pipeable-signature.md"><code>missingPipeableSignature</code></a></td><td>Reports exported fixed-arity functions whose call signatures have no corresponding pipeable overload</td></tr>
@@ -48900,7 +48900,7 @@ const runWith = (command, config) => {
48900
48900
  //#endregion
48901
48901
  //#region package.json
48902
48902
  var name = "@effect/tsgo";
48903
- var version = "0.36.5";
48903
+ var version = "0.38.0";
48904
48904
 
48905
48905
  //#endregion
48906
48906
  //#region src/metadata.json
@@ -49071,7 +49071,7 @@ var rules = [
49071
49071
  "description": "Prevents services with type parameters that cannot be discriminated at runtime",
49072
49072
  "defaultSeverity": "warning",
49073
49073
  "fixable": false,
49074
- "supportedEffect": ["v3", "v4"],
49074
+ "supportedEffect": ["v3"],
49075
49075
  "codes": [377043],
49076
49076
  "preview": {
49077
49077
  "sourceText": "import { Effect } from \"effect\"\n\nexport class Preview<_A> extends Effect.Service<Preview<any>>()(\"Preview\", {\n succeed: {}\n}) {}\n",
@@ -49546,7 +49546,7 @@ var rules = [
49546
49546
  "description": "Suggests using Effect-based Schema methods instead of sync methods inside Effect generators",
49547
49547
  "defaultSeverity": "suggestion",
49548
49548
  "fixable": false,
49549
- "supportedEffect": ["v3"],
49549
+ "supportedEffect": ["v3", "v4"],
49550
49550
  "codes": [377037],
49551
49551
  "preview": {
49552
49552
  "sourceText": "import * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\n\nconst Person = Schema.Struct({ name: Schema.String, age: Schema.Finite })\n\nexport const preview = Effect.gen(function*() {\n const input = yield* Effect.succeed({ name: \"Ada\", age: 1 })\n return Schema.decodeSync(Person)(input)\n})\n",
@@ -49999,6 +49999,23 @@ var rules = [
49999
49999
  }]
50000
50000
  }
50001
50001
  },
50002
+ {
50003
+ "name": "allOfMapToForEach",
50004
+ "group": "style",
50005
+ "description": "Suggests using Effect.forEach instead of Effect.all over an effectful Array#map",
50006
+ "defaultSeverity": "suggestion",
50007
+ "fixable": true,
50008
+ "supportedEffect": ["v3", "v4"],
50009
+ "codes": [377113],
50010
+ "preview": {
50011
+ "sourceText": "import { Effect } from \"effect\"\n\ndeclare const values: ReadonlyArray<number>\n\nexport const program = Effect.all(\n values.map((value) => Effect.succeed(value + 1))\n)\n",
50012
+ "diagnostics": [{
50013
+ "start": 101,
50014
+ "end": 111,
50015
+ "text": "`Effect.forEach` expresses this effectful array mapping more directly than `Effect.all` over `Array#map`. effect(allOfMapToForEach)"
50016
+ }]
50017
+ }
50018
+ },
50002
50019
  {
50003
50020
  "name": "catchAllToMapError",
50004
50021
  "group": "style",
@@ -50033,6 +50050,40 @@ var rules = [
50033
50050
  }]
50034
50051
  }
50035
50052
  },
50053
+ {
50054
+ "name": "catchConditionalRefailToCatchIf",
50055
+ "group": "style",
50056
+ "description": "Suggests Effect.catchIf, Effect.catchCauseIf, or Effect.catchTag for conditional catch handlers that re-fail their untouched input",
50057
+ "defaultSeverity": "suggestion",
50058
+ "fixable": false,
50059
+ "supportedEffect": ["v4"],
50060
+ "codes": [377116],
50061
+ "preview": {
50062
+ "sourceText": "import { Data, Effect } from \"effect\"\n\nclass NotFound extends Data.TaggedError(\"NotFound\")<{}> {}\nclass DatabaseError extends Data.TaggedError(\"DatabaseError\")<{}> {}\n\ndeclare const program: Effect.Effect<string, NotFound | DatabaseError>\n\nexport const recovered = program.pipe(\n Effect.catch((error) =>\n error._tag === \"NotFound\" ? Effect.succeed(\"guest\") : Effect.fail(error)\n )\n)\n",
50063
+ "diagnostics": [{
50064
+ "start": 281,
50065
+ "end": 293,
50066
+ "text": "`Effect.catchTag` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)"
50067
+ }]
50068
+ }
50069
+ },
50070
+ {
50071
+ "name": "catchDieToOrDie",
50072
+ "group": "style",
50073
+ "description": "Suggests using Effect.orDie instead of Effect.catch or Effect.catchAll with an identity-forwarding Effect.die handler",
50074
+ "defaultSeverity": "suggestion",
50075
+ "fixable": true,
50076
+ "supportedEffect": ["v3", "v4"],
50077
+ "codes": [377115],
50078
+ "preview": {
50079
+ "sourceText": "import { Effect } from \"effect\"\n\ndeclare const readConfig: Effect.Effect<string, Error>\n\nexport const program = readConfig.pipe(\n Effect.catch((error) => Effect.die(error))\n)\n",
50080
+ "diagnostics": [{
50081
+ "start": 131,
50082
+ "end": 143,
50083
+ "text": "`Effect.orDie` expresses escalating every typed failure into a defect more directly than `Effect.catch` with an identity-forwarding `Effect.die` handler. effect(catchDieToOrDie)"
50084
+ }]
50085
+ }
50086
+ },
50036
50087
  {
50037
50088
  "name": "catchTagToCatchReason",
50038
50089
  "group": "style",
@@ -50203,6 +50254,35 @@ var rules = [
50203
50254
  }]
50204
50255
  }
50205
50256
  },
50257
+ {
50258
+ "name": "mapSomeToAsSome",
50259
+ "group": "style",
50260
+ "description": "Suggests using Effect.asSome instead of Effect.map when the mapper only wraps the success value with Option.some",
50261
+ "defaultSeverity": "suggestion",
50262
+ "fixable": true,
50263
+ "supportedEffect": ["v3", "v4"],
50264
+ "codes": [377114],
50265
+ "preview": {
50266
+ "sourceText": "import { Effect, Option } from \"effect\"\n\nconst numberEffect = Effect.succeed(1)\n\nexport const pipeable = numberEffect.pipe(\n Effect.map(Option.some)\n)\n\nexport const etaExpanded = numberEffect.pipe(\n Effect.map((value) => Option.some(value))\n)\n\nexport const dataFirst = Effect.map(numberEffect, Option.some)\n\n",
50267
+ "diagnostics": [
50268
+ {
50269
+ "start": 126,
50270
+ "end": 136,
50271
+ "text": "`Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)"
50272
+ },
50273
+ {
50274
+ "start": 201,
50275
+ "end": 211,
50276
+ "text": "`Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)"
50277
+ },
50278
+ {
50279
+ "start": 271,
50280
+ "end": 281,
50281
+ "text": "`Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)"
50282
+ }
50283
+ ]
50284
+ }
50285
+ },
50206
50286
  {
50207
50287
  "name": "missedPipeableOpportunity",
50208
50288
  "group": "style",
@@ -50614,23 +50694,29 @@ var metadata_default = {
50614
50694
  var tags = {
50615
50695
  "typescript": {
50616
50696
  "latest": "7.0.2",
50617
- "next": "7.1.0-dev.20260813.1"
50697
+ "next": "7.1.0-dev.20260826.1"
50618
50698
  },
50619
- "oxlint": { "latest": "1.78.0" },
50699
+ "oxlint": { "latest": "1.80.0" },
50620
50700
  "oxlint-tsgolint": { "latest": "7.0.2001" }
50621
50701
  };
50622
50702
  var components = {
50623
50703
  "typescript": {
50624
- "7.0.2": { "gitHead": "2bd066d87f5bafd315be9f40889d0a60b9e58e0b" },
50625
- "7.1.0-dev.20260813.1": { "gitHead": "34ffe2a2531a226da0046d213899ae0b721229b0" }
50704
+ "7.0.2": {
50705
+ "gitHead": "2bd066d87f5bafd315be9f40889d0a60b9e58e0b",
50706
+ "provider": "typescript-go"
50707
+ },
50708
+ "7.1.0-dev.20260826.1": {
50709
+ "gitHead": "5739027c9a7df24e27123f453a50c011b37717b6",
50710
+ "provider": "typescript"
50711
+ }
50626
50712
  },
50627
50713
  "oxlint-tsgolint": { "7.0.2001": {
50628
50714
  "gitHead": "482dcf70bffce7ea56f63128c74beb67dec658a2",
50629
50715
  "dependencies": { "typescript": "7.0.2" }
50630
50716
  } },
50631
50717
  "oxlint": {
50632
- "1.77.0": { "gitHead": "9a423f2f485b79c2353c49442c0c7f60f900261d" },
50633
- "1.78.0": { "gitHead": "c42d6397eab5b2d5bb2bd6746c57bc2a9cad21bd" }
50718
+ "1.79.0": { "gitHead": "0db127cc16d28b97d84bac4ebeb302caf1a78c7e" },
50719
+ "1.80.0": { "gitHead": "97e99b85483776a72928d675cc05b1cfc1130ba0" }
50634
50720
  }
50635
50721
  };
50636
50722
 
@@ -200365,8 +200451,9 @@ const diagnosticsCommand = make("diagnostics", {
200365
200451
  strict: boolean("strict").pipe(withDefault(false), withDescription$1("Treat warnings as errors (affects exit code)")),
200366
200452
  severity: string("severity").pipe(optional, withDescription$1("Filter by severity levels (comma-separated: error,warning,message)")),
200367
200453
  progress: boolean("progress").pipe(withDefault(false), withDescription$1("Show progress as files are checked (outputs to stderr)")),
200368
- lspconfig: string("lspconfig").pipe(optional, withDescription$1("An optional inline JSON lsp config that replaces the current project lsp config"))
200369
- }).pipe(withDescription("Gets the Effect language service diagnostics on the given files or project"), withHandler(({ file, format, lspconfig, progress, project, severity, strict }) => gen(function* () {
200454
+ lspconfig: string("lspconfig").pipe(optional, withDescription$1("An optional inline JSON lsp config that replaces the current project lsp config")),
200455
+ listFiles: boolean("list-files").pipe(withDefault(false), withDescription$1("Also emit, per checked file, the detected and supported Effect major versions"))
200456
+ }).pipe(withDescription("Gets the Effect language service diagnostics on the given files or project"), withHandler(({ file, format, listFiles, lspconfig, progress, project, severity, strict }) => gen(function* () {
200370
200457
  const fs = yield* FileSystem;
200371
200458
  const replacement = yield* resolveTypeScriptExecutable;
200372
200459
  yield* fs.chmod(replacement.path, 493).pipe(mapError(() => new ChmodBinaryError({ targetPath: replacement.path })));
@@ -200378,7 +200465,8 @@ const diagnosticsCommand = make("diagnostics", {
200378
200465
  strict,
200379
200466
  severity: getOrUndefined$1(severity),
200380
200467
  progress,
200381
- lspconfig: getOrUndefined$1(lspconfig)
200468
+ lspconfig: getOrUndefined$1(lspconfig),
200469
+ listFiles
200382
200470
  }));
200383
200471
  })));
200384
200472
  make("tsgo").pipe(withSubcommands([
@@ -105,6 +105,7 @@ export const recommended = {
105
105
  "effecttsgo/async-function": "warn",
106
106
  "effecttsgo/catch-all-to-map-error": "warn",
107
107
  "effecttsgo/catch-chain-to-first-success-of": "warn",
108
+ "effecttsgo/catch-conditional-refail-to-catch-if": "warn",
108
109
  "effecttsgo/catch-tag-to-catch-reason": "warn",
109
110
  "effecttsgo/catch-to-ignore": "warn",
110
111
  "effecttsgo/catch-to-or-else-succeed": "warn",
@@ -195,6 +196,7 @@ export const style = {
195
196
  "rules": {
196
197
  "effecttsgo/catch-all-to-map-error": "warn",
197
198
  "effecttsgo/catch-chain-to-first-success-of": "warn",
199
+ "effecttsgo/catch-conditional-refail-to-catch-if": "warn",
198
200
  "effecttsgo/catch-tag-to-catch-reason": "warn",
199
201
  "effecttsgo/catch-to-ignore": "warn",
200
202
  "effecttsgo/catch-to-or-else-succeed": "warn",
@@ -10,6 +10,7 @@
10
10
  "effecttsgo/async-function": "warn",
11
11
  "effecttsgo/catch-all-to-map-error": "warn",
12
12
  "effecttsgo/catch-chain-to-first-success-of": "warn",
13
+ "effecttsgo/catch-conditional-refail-to-catch-if": "warn",
13
14
  "effecttsgo/catch-tag-to-catch-reason": "warn",
14
15
  "effecttsgo/catch-to-ignore": "warn",
15
16
  "effecttsgo/catch-to-or-else-succeed": "warn",
@@ -8,6 +8,7 @@
8
8
  "rules": {
9
9
  "effecttsgo/catch-all-to-map-error": "warn",
10
10
  "effecttsgo/catch-chain-to-first-success-of": "warn",
11
+ "effecttsgo/catch-conditional-refail-to-catch-if": "warn",
11
12
  "effecttsgo/catch-tag-to-catch-reason": "warn",
12
13
  "effecttsgo/catch-to-ignore": "warn",
13
14
  "effecttsgo/catch-to-or-else-succeed": "warn",
@@ -520,6 +520,21 @@
520
520
  },
521
521
  "type": "object"
522
522
  },
523
+ "AnchorHasContentConfig": {
524
+ "additionalProperties": false,
525
+ "properties": {
526
+ "components": {
527
+ "default": [],
528
+ "description": "Additional custom component names to treat as anchor elements.",
529
+ "items": {
530
+ "type": "string"
531
+ },
532
+ "markdownDescription": "Additional custom component names to treat as anchor elements.",
533
+ "type": "array"
534
+ }
535
+ },
536
+ "type": "object"
537
+ },
523
538
  "AnchorIsValidAspect": {
524
539
  "enum": [
525
540
  "noHref",
@@ -1882,6 +1897,15 @@
1882
1897
  },
1883
1898
  "type": "object"
1884
1899
  },
1900
+ "DescriptionFormatConfig": {
1901
+ "additionalProperties": false,
1902
+ "properties": {
1903
+ "descriptionFormat": {
1904
+ "type": "string"
1905
+ }
1906
+ },
1907
+ "type": "object"
1908
+ },
1885
1909
  "Destructure": {
1886
1910
  "oneOf": [
1887
1911
  {
@@ -1939,13 +1963,7 @@
1939
1963
  "$ref": "#/definitions/RequireDescription"
1940
1964
  },
1941
1965
  {
1942
- "additionalProperties": false,
1943
- "properties": {
1944
- "descriptionFormat": {
1945
- "type": "string"
1946
- }
1947
- },
1948
- "type": "object"
1966
+ "$ref": "#/definitions/DescriptionFormatConfig"
1949
1967
  }
1950
1968
  ]
1951
1969
  },
@@ -2218,18 +2236,27 @@
2218
2236
  "effecttsgo/abort-controller-in-effect": {
2219
2237
  "$ref": "#/definitions/RuleNoConfig"
2220
2238
  },
2239
+ "effecttsgo/all-of-map-to-for-each": {
2240
+ "$ref": "#/definitions/RuleNoConfig"
2241
+ },
2221
2242
  "effecttsgo/any-unknown-in-error-context": {
2222
2243
  "$ref": "#/definitions/RuleNoConfig"
2223
2244
  },
2224
2245
  "effecttsgo/async-function": {
2225
2246
  "$ref": "#/definitions/RuleNoConfig"
2226
2247
  },
2248
+ "effecttsgo/catch-die-to-or-die": {
2249
+ "$ref": "#/definitions/RuleNoConfig"
2250
+ },
2227
2251
  "effecttsgo/catch-all-to-map-error": {
2228
2252
  "$ref": "#/definitions/RuleNoConfig"
2229
2253
  },
2230
2254
  "effecttsgo/catch-chain-to-first-success-of": {
2231
2255
  "$ref": "#/definitions/RuleNoConfig"
2232
2256
  },
2257
+ "effecttsgo/catch-conditional-refail-to-catch-if": {
2258
+ "$ref": "#/definitions/RuleNoConfig"
2259
+ },
2233
2260
  "effecttsgo/catch-tag-to-catch-reason": {
2234
2261
  "$ref": "#/definitions/RuleNoConfig"
2235
2262
  },
@@ -2353,6 +2380,9 @@
2353
2380
  "effecttsgo/leaking-requirements": {
2354
2381
  "$ref": "#/definitions/RuleNoConfig"
2355
2382
  },
2383
+ "effecttsgo/map-some-to-as-some": {
2384
+ "$ref": "#/definitions/RuleNoConfig"
2385
+ },
2356
2386
  "effecttsgo/missed-pipeable-opportunity": {
2357
2387
  "$ref": "#/definitions/RuleNoConfig"
2358
2388
  },
@@ -2683,12 +2713,9 @@
2683
2713
  "items": [
2684
2714
  {
2685
2715
  "$ref": "#/definitions/AllowWarnDeny"
2686
- },
2687
- {
2688
- "type": "string"
2689
2716
  }
2690
2717
  ],
2691
- "minItems": 2,
2718
+ "minItems": 1,
2692
2719
  "type": "array",
2693
2720
  "uniqueItems": true
2694
2721
  }
@@ -3699,6 +3726,26 @@
3699
3726
  "jsdoc/implements-on-classes": {
3700
3727
  "$ref": "#/definitions/RuleNoConfig"
3701
3728
  },
3729
+ "jsdoc/no-blank-blocks": {
3730
+ "anyOf": [
3731
+ {
3732
+ "$ref": "#/definitions/RuleNoConfig"
3733
+ },
3734
+ {
3735
+ "items": [
3736
+ {
3737
+ "$ref": "#/definitions/AllowWarnDeny"
3738
+ },
3739
+ {
3740
+ "$ref": "#/definitions/NoBlankBlocks"
3741
+ }
3742
+ ],
3743
+ "maxItems": 2,
3744
+ "minItems": 2,
3745
+ "type": "array"
3746
+ }
3747
+ ]
3748
+ },
3702
3749
  "jsdoc/no-defaults": {
3703
3750
  "anyOf": [
3704
3751
  {
@@ -3893,7 +3940,24 @@
3893
3940
  ]
3894
3941
  },
3895
3942
  "jsx-a11y/anchor-has-content": {
3896
- "$ref": "#/definitions/RuleNoConfig"
3943
+ "anyOf": [
3944
+ {
3945
+ "$ref": "#/definitions/RuleNoConfig"
3946
+ },
3947
+ {
3948
+ "items": [
3949
+ {
3950
+ "$ref": "#/definitions/AllowWarnDeny"
3951
+ },
3952
+ {
3953
+ "$ref": "#/definitions/AnchorHasContentConfig"
3954
+ }
3955
+ ],
3956
+ "maxItems": 2,
3957
+ "minItems": 2,
3958
+ "type": "array"
3959
+ }
3960
+ ]
3897
3961
  },
3898
3962
  "jsx-a11y/anchor-is-valid": {
3899
3963
  "anyOf": [
@@ -5302,12 +5366,9 @@
5302
5366
  "items": [
5303
5367
  {
5304
5368
  "$ref": "#/definitions/AllowWarnDeny"
5305
- },
5306
- {
5307
- "$ref": "#/definitions/NoRestrictedGlobalsConfigEnum"
5308
5369
  }
5309
5370
  ],
5310
- "minItems": 2
5371
+ "minItems": 1
5311
5372
  }
5312
5373
  ]
5313
5374
  },
@@ -5323,12 +5384,9 @@
5323
5384
  "items": [
5324
5385
  {
5325
5386
  "$ref": "#/definitions/AllowWarnDeny"
5326
- },
5327
- {
5328
- "$ref": "#/definitions/NoRestrictedImportsConfigEnum"
5329
5387
  }
5330
5388
  ],
5331
- "minItems": 2
5389
+ "minItems": 1
5332
5390
  }
5333
5391
  ]
5334
5392
  },
@@ -5344,12 +5402,9 @@
5344
5402
  "items": [
5345
5403
  {
5346
5404
  "$ref": "#/definitions/AllowWarnDeny"
5347
- },
5348
- {
5349
- "$ref": "#/definitions/PropertyDetails"
5350
5405
  }
5351
5406
  ],
5352
- "minItems": 2
5407
+ "minItems": 1
5353
5408
  }
5354
5409
  ]
5355
5410
  },
@@ -5986,6 +6041,26 @@
5986
6041
  }
5987
6042
  ]
5988
6043
  },
6044
+ "one-var": {
6045
+ "anyOf": [
6046
+ {
6047
+ "$ref": "#/definitions/RuleNoConfig"
6048
+ },
6049
+ {
6050
+ "items": [
6051
+ {
6052
+ "$ref": "#/definitions/AllowWarnDeny"
6053
+ },
6054
+ {
6055
+ "$ref": "#/definitions/OneVar"
6056
+ }
6057
+ ],
6058
+ "maxItems": 2,
6059
+ "minItems": 2,
6060
+ "type": "array"
6061
+ }
6062
+ ]
6063
+ },
5989
6064
  "operator-assignment": {
5990
6065
  "anyOf": [
5991
6066
  {
@@ -6623,6 +6698,9 @@
6623
6698
  }
6624
6699
  ]
6625
6700
  },
6701
+ "react/capitalized-calls": {
6702
+ "$ref": "#/definitions/RuleNoConfig"
6703
+ },
6626
6704
  "react/checked-requires-onchange-or-readonly": {
6627
6705
  "anyOf": [
6628
6706
  {
@@ -6663,6 +6741,9 @@
6663
6741
  }
6664
6742
  ]
6665
6743
  },
6744
+ "react/error-boundaries": {
6745
+ "$ref": "#/definitions/RuleNoConfig"
6746
+ },
6666
6747
  "react/exhaustive-deps": {
6667
6748
  "anyOf": [
6668
6749
  {
@@ -6683,6 +6764,9 @@
6683
6764
  }
6684
6765
  ]
6685
6766
  },
6767
+ "react/exhaustive-effect-dependencies": {
6768
+ "$ref": "#/definitions/RuleNoConfig"
6769
+ },
6686
6770
  "react/forbid-component-props": {
6687
6771
  "anyOf": [
6688
6772
  {
@@ -6766,6 +6850,9 @@
6766
6850
  }
6767
6851
  ]
6768
6852
  },
6853
+ "react/globals": {
6854
+ "$ref": "#/definitions/RuleNoConfig"
6855
+ },
6769
6856
  "react/hook-use-state": {
6770
6857
  "anyOf": [
6771
6858
  {
@@ -6786,9 +6873,21 @@
6786
6873
  }
6787
6874
  ]
6788
6875
  },
6876
+ "react/hooks": {
6877
+ "$ref": "#/definitions/RuleNoConfig"
6878
+ },
6789
6879
  "react/iframe-missing-sandbox": {
6790
6880
  "$ref": "#/definitions/RuleNoConfig"
6791
6881
  },
6882
+ "react/immutability": {
6883
+ "$ref": "#/definitions/RuleNoConfig"
6884
+ },
6885
+ "react/incompatible-library": {
6886
+ "$ref": "#/definitions/RuleNoConfig"
6887
+ },
6888
+ "react/invariant": {
6889
+ "$ref": "#/definitions/RuleNoConfig"
6890
+ },
6792
6891
  "react/jsx-boolean-value": {
6793
6892
  "anyOf": [
6794
6893
  {
@@ -7090,6 +7189,9 @@
7090
7189
  }
7091
7190
  ]
7092
7191
  },
7192
+ "react/memo-dependencies": {
7193
+ "$ref": "#/definitions/RuleNoConfig"
7194
+ },
7093
7195
  "react/no-array-index-key": {
7094
7196
  "$ref": "#/definitions/RuleNoConfig"
7095
7197
  },
@@ -7105,6 +7207,9 @@
7105
7207
  "react/no-danger-with-children": {
7106
7208
  "$ref": "#/definitions/RuleNoConfig"
7107
7209
  },
7210
+ "react/no-deriving-state-in-effects": {
7211
+ "$ref": "#/definitions/RuleNoConfig"
7212
+ },
7108
7213
  "react/no-did-mount-set-state": {
7109
7214
  "anyOf": [
7110
7215
  {
@@ -7358,32 +7463,24 @@
7358
7463
  }
7359
7464
  ]
7360
7465
  },
7361
- "react/react-compiler": {
7362
- "anyOf": [
7363
- {
7364
- "$ref": "#/definitions/RuleNoConfig"
7365
- },
7366
- {
7367
- "items": [
7368
- {
7369
- "$ref": "#/definitions/AllowWarnDeny"
7370
- },
7371
- {
7372
- "$ref": "#/definitions/ReactCompilerConfig"
7373
- }
7374
- ],
7375
- "maxItems": 2,
7376
- "minItems": 2,
7377
- "type": "array"
7378
- }
7379
- ]
7466
+ "react/preserve-manual-memoization": {
7467
+ "$ref": "#/definitions/RuleNoConfig"
7468
+ },
7469
+ "react/purity": {
7470
+ "$ref": "#/definitions/RuleNoConfig"
7380
7471
  },
7381
7472
  "react/react-in-jsx-scope": {
7382
7473
  "$ref": "#/definitions/RuleNoConfig"
7383
7474
  },
7475
+ "react/refs": {
7476
+ "$ref": "#/definitions/RuleNoConfig"
7477
+ },
7384
7478
  "react/require-render-return": {
7385
7479
  "$ref": "#/definitions/RuleNoConfig"
7386
7480
  },
7481
+ "react/rule-suppression": {
7482
+ "$ref": "#/definitions/RuleNoConfig"
7483
+ },
7387
7484
  "react/rules-of-hooks": {
7388
7485
  "$ref": "#/definitions/RuleNoConfig"
7389
7486
  },
@@ -7407,6 +7504,12 @@
7407
7504
  }
7408
7505
  ]
7409
7506
  },
7507
+ "react/set-state-in-effect": {
7508
+ "$ref": "#/definitions/RuleNoConfig"
7509
+ },
7510
+ "react/set-state-in-render": {
7511
+ "$ref": "#/definitions/RuleNoConfig"
7512
+ },
7410
7513
  "react/state-in-constructor": {
7411
7514
  "anyOf": [
7412
7515
  {
@@ -7427,6 +7530,9 @@
7427
7530
  }
7428
7531
  ]
7429
7532
  },
7533
+ "react/static-components": {
7534
+ "$ref": "#/definitions/RuleNoConfig"
7535
+ },
7430
7536
  "react/style-prop-object": {
7431
7537
  "anyOf": [
7432
7538
  {
@@ -7447,9 +7553,24 @@
7447
7553
  }
7448
7554
  ]
7449
7555
  },
7556
+ "react/syntax": {
7557
+ "$ref": "#/definitions/RuleNoConfig"
7558
+ },
7559
+ "react/todo": {
7560
+ "$ref": "#/definitions/RuleNoConfig"
7561
+ },
7562
+ "react/unsupported-syntax": {
7563
+ "$ref": "#/definitions/RuleNoConfig"
7564
+ },
7565
+ "react/use-memo": {
7566
+ "$ref": "#/definitions/RuleNoConfig"
7567
+ },
7450
7568
  "react/void-dom-elements-no-children": {
7451
7569
  "$ref": "#/definitions/RuleNoConfig"
7452
7570
  },
7571
+ "react/void-use-memo": {
7572
+ "$ref": "#/definitions/RuleNoConfig"
7573
+ },
7453
7574
  "require-await": {
7454
7575
  "$ref": "#/definitions/RuleNoConfig"
7455
7576
  },
@@ -13849,6 +13970,18 @@
13849
13970
  },
13850
13971
  "type": "object"
13851
13972
  },
13973
+ "NoBlankBlocks": {
13974
+ "additionalProperties": false,
13975
+ "properties": {
13976
+ "enableFixer": {
13977
+ "default": false,
13978
+ "description": "Whether to automatically remove blank JSDoc blocks.",
13979
+ "markdownDescription": "Whether to automatically remove blank JSDoc blocks.",
13980
+ "type": "boolean"
13981
+ }
13982
+ },
13983
+ "type": "object"
13984
+ },
13852
13985
  "NoCallbackInPromiseConfig": {
13853
13986
  "additionalProperties": false,
13854
13987
  "properties": {
@@ -14263,7 +14396,7 @@
14263
14396
  "additionalProperties": false,
14264
14397
  "properties": {
14265
14398
  "allowIndirect": {
14266
- "default": true,
14399
+ "default": false,
14267
14400
  "description": "This `allowIndirect` option allows indirect `eval()` calls.\n\nIndirect calls to `eval`(e.g., `window['eval']`) are less dangerous\nthan direct calls because they cannot dynamically change the scope.\nIndirect `eval()` calls also typically have less impact on performance\ncompared to direct calls, as they do not invoke JavaScript's scope chain.",
14268
14401
  "markdownDescription": "This `allowIndirect` option allows indirect `eval()` calls.\n\nIndirect calls to `eval`(e.g., `window['eval']`) are less dangerous\nthan direct calls because they cannot dynamically change the scope.\nIndirect `eval()` calls also typically have less impact on performance\ncompared to direct calls, as they do not invoke JavaScript's scope chain.",
14269
14402
  "type": "boolean"
@@ -14694,7 +14827,7 @@
14694
14827
  "additionalProperties": false,
14695
14828
  "properties": {
14696
14829
  "skipComments": {
14697
- "default": true,
14830
+ "default": false,
14698
14831
  "description": "Whether to skip irregular whitespace in comments.",
14699
14832
  "markdownDescription": "Whether to skip irregular whitespace in comments.",
14700
14833
  "type": "boolean"
@@ -14755,12 +14888,12 @@
14755
14888
  "type": "array"
14756
14889
  },
14757
14890
  "default": {},
14758
- "description": "A map of snapshot file paths to arrays of snapshot names that are allowed to exceed the size limit.\nSnapshot names can be specified as regular expressions.",
14759
- "markdownDescription": "A map of snapshot file paths to arrays of snapshot names that are allowed to exceed the size limit.\nSnapshot names can be specified as regular expressions.",
14891
+ "description": "A map of snapshot file paths to arrays of snapshot names that are allowed to exceed the size limit.\nEach snapshot name is interpreted as a Rust regular expression. If it is not a valid regular\nexpression, it is matched as an exact literal string instead.",
14892
+ "markdownDescription": "A map of snapshot file paths to arrays of snapshot names that are allowed to exceed the size limit.\nEach snapshot name is interpreted as a Rust regular expression. If it is not a valid regular\nexpression, it is matched as an exact literal string instead.",
14760
14893
  "type": "object"
14761
14894
  },
14762
14895
  "inlineMaxSize": {
14763
- "default": 50,
14896
+ "default": null,
14764
14897
  "description": "Maximum number of lines allowed for inline snapshots.",
14765
14898
  "format": "uint32",
14766
14899
  "markdownDescription": "Maximum number of lines allowed for inline snapshots.",
@@ -16180,8 +16313,8 @@
16180
16313
  "$ref": "#/definitions/IgnorePattern_for_String"
16181
16314
  }
16182
16315
  ],
16183
- "description": "Specifies exceptions to this rule for unused arguments. Arguments whose\nnames match this pattern will be ignored.\n\nBy default, this pattern is `^_` unless options are configured with an\nobject. In this case it will default to [`None`]. Note that this\nbehavior deviates from both ESLint and TypeScript-ESLint, which never\nprovide a default pattern.\n\n#### Example\n\nExamples of **correct** code for this option when the pattern is `^_`:\n\n```javascript\nfunction foo(_a, b) {\nconsole.log(b);\n}\nfoo(1, 2);\n```",
16184
- "markdownDescription": "Specifies exceptions to this rule for unused arguments. Arguments whose\nnames match this pattern will be ignored.\n\nBy default, this pattern is `^_` unless options are configured with an\nobject. In this case it will default to [`None`]. Note that this\nbehavior deviates from both ESLint and TypeScript-ESLint, which never\nprovide a default pattern.\n\n#### Example\n\nExamples of **correct** code for this option when the pattern is `^_`:\n\n```javascript\nfunction foo(_a, b) {\nconsole.log(b);\n}\nfoo(1, 2);\n```"
16316
+ "description": "Specifies exceptions to this rule for unused arguments. Arguments whose\nnames match this pattern will be ignored.\n\nBy default, names starting with `_` are ignored, except for the bare `_`\nparameter. If options are configured with an object, this will default\nto [`None`]. Note that this behavior deviates from both ESLint and\nTypeScript-ESLint, which never provide a default pattern.\n\n#### Example\n\nExamples of **correct** code for this option when the pattern is `^_`:\n\n```javascript\nfunction foo(_a, b) {\nconsole.log(b);\n}\nfoo(1, 2);\n```",
16317
+ "markdownDescription": "Specifies exceptions to this rule for unused arguments. Arguments whose\nnames match this pattern will be ignored.\n\nBy default, names starting with `_` are ignored, except for the bare `_`\nparameter. If options are configured with an object, this will default\nto [`None`]. Note that this behavior deviates from both ESLint and\nTypeScript-ESLint, which never provide a default pattern.\n\n#### Example\n\nExamples of **correct** code for this option when the pattern is `^_`:\n\n```javascript\nfunction foo(_a, b) {\nconsole.log(b);\n}\nfoo(1, 2);\n```"
16185
16318
  },
16186
16319
  "caughtErrors": {
16187
16320
  "allOf": [
@@ -16718,6 +16851,153 @@
16718
16851
  }
16719
16852
  ]
16720
16853
  },
16854
+ "OneVar": {
16855
+ "allOf": [
16856
+ {
16857
+ "$ref": "#/definitions/OneVarConfig"
16858
+ }
16859
+ ],
16860
+ "description": "Enforces consistent grouping of variable declarations.",
16861
+ "markdownDescription": "Enforces consistent grouping of variable declarations."
16862
+ },
16863
+ "OneVarConfig": {
16864
+ "anyOf": [
16865
+ {
16866
+ "allOf": [
16867
+ {
16868
+ "$ref": "#/definitions/OneVarMode"
16869
+ }
16870
+ ],
16871
+ "description": "Applies one grouping mode to every declaration kind and initialization state.",
16872
+ "markdownDescription": "Applies one grouping mode to every declaration kind and initialization state."
16873
+ },
16874
+ {
16875
+ "allOf": [
16876
+ {
16877
+ "$ref": "#/definitions/OneVarOptions"
16878
+ }
16879
+ ],
16880
+ "description": "Configures grouping by declaration kind or initialization state.",
16881
+ "markdownDescription": "Configures grouping by declaration kind or initialization state."
16882
+ }
16883
+ ],
16884
+ "description": "Configuration accepted by the `one-var` rule.",
16885
+ "markdownDescription": "Configuration accepted by the `one-var` rule."
16886
+ },
16887
+ "OneVarMode": {
16888
+ "description": "Controls how variable declarators are grouped into declarations.",
16889
+ "markdownDescription": "Controls how variable declarators are grouped into declarations.",
16890
+ "oneOf": [
16891
+ {
16892
+ "description": "Requires one declaration per variable kind in each applicable scope.",
16893
+ "enum": [
16894
+ "always"
16895
+ ],
16896
+ "markdownDescription": "Requires one declaration per variable kind in each applicable scope.",
16897
+ "type": "string"
16898
+ },
16899
+ {
16900
+ "description": "Requires each declarator to have its own declaration statement.",
16901
+ "enum": [
16902
+ "never"
16903
+ ],
16904
+ "markdownDescription": "Requires each declarator to have its own declaration statement.",
16905
+ "type": "string"
16906
+ },
16907
+ {
16908
+ "description": "Requires adjacent declarations of the same kind to be combined.",
16909
+ "enum": [
16910
+ "consecutive"
16911
+ ],
16912
+ "markdownDescription": "Requires adjacent declarations of the same kind to be combined.",
16913
+ "type": "string"
16914
+ }
16915
+ ]
16916
+ },
16917
+ "OneVarOptions": {
16918
+ "additionalProperties": false,
16919
+ "description": "Options for configuring declaration grouping by kind or initialization state.\n\n`initialized` and `uninitialized` take precedence over the per-kind option for the\ncorresponding declarators.",
16920
+ "markdownDescription": "Options for configuring declaration grouping by kind or initialization state.\n\n`initialized` and `uninitialized` take precedence over the per-kind option for the\ncorresponding declarators.",
16921
+ "properties": {
16922
+ "awaitUsing": {
16923
+ "allOf": [
16924
+ {
16925
+ "$ref": "#/definitions/OneVarMode"
16926
+ }
16927
+ ],
16928
+ "default": null,
16929
+ "description": "Controls grouping for `await using` declarations.",
16930
+ "markdownDescription": "Controls grouping for `await using` declarations."
16931
+ },
16932
+ "const": {
16933
+ "allOf": [
16934
+ {
16935
+ "$ref": "#/definitions/OneVarMode"
16936
+ }
16937
+ ],
16938
+ "default": null,
16939
+ "description": "Controls grouping for `const` declarations.",
16940
+ "markdownDescription": "Controls grouping for `const` declarations."
16941
+ },
16942
+ "initialized": {
16943
+ "allOf": [
16944
+ {
16945
+ "$ref": "#/definitions/OneVarMode"
16946
+ }
16947
+ ],
16948
+ "default": null,
16949
+ "description": "Controls grouping for initialized declarators, overriding per-kind options.",
16950
+ "markdownDescription": "Controls grouping for initialized declarators, overriding per-kind options."
16951
+ },
16952
+ "let": {
16953
+ "allOf": [
16954
+ {
16955
+ "$ref": "#/definitions/OneVarMode"
16956
+ }
16957
+ ],
16958
+ "default": null,
16959
+ "description": "Controls grouping for `let` declarations.",
16960
+ "markdownDescription": "Controls grouping for `let` declarations."
16961
+ },
16962
+ "separateRequires": {
16963
+ "default": false,
16964
+ "description": "Keeps direct `require(...)` initializers separate from other initialized declarations.",
16965
+ "markdownDescription": "Keeps direct `require(...)` initializers separate from other initialized declarations.",
16966
+ "type": "boolean"
16967
+ },
16968
+ "uninitialized": {
16969
+ "allOf": [
16970
+ {
16971
+ "$ref": "#/definitions/OneVarMode"
16972
+ }
16973
+ ],
16974
+ "default": null,
16975
+ "description": "Controls grouping for uninitialized declarators, overriding per-kind options.",
16976
+ "markdownDescription": "Controls grouping for uninitialized declarators, overriding per-kind options."
16977
+ },
16978
+ "using": {
16979
+ "allOf": [
16980
+ {
16981
+ "$ref": "#/definitions/OneVarMode"
16982
+ }
16983
+ ],
16984
+ "default": null,
16985
+ "description": "Controls grouping for `using` declarations.",
16986
+ "markdownDescription": "Controls grouping for `using` declarations."
16987
+ },
16988
+ "var": {
16989
+ "allOf": [
16990
+ {
16991
+ "$ref": "#/definitions/OneVarMode"
16992
+ }
16993
+ ],
16994
+ "default": null,
16995
+ "description": "Controls grouping for `var` declarations.",
16996
+ "markdownDescription": "Controls grouping for `var` declarations."
16997
+ }
16998
+ },
16999
+ "type": "object"
17000
+ },
16721
17001
  "OnlyExportComponentsConfig": {
16722
17002
  "additionalProperties": false,
16723
17003
  "properties": {
@@ -18124,18 +18404,6 @@
18124
18404
  }
18125
18405
  ]
18126
18406
  },
18127
- "ReactCompilerConfig": {
18128
- "additionalProperties": false,
18129
- "properties": {
18130
- "reportAllBailouts": {
18131
- "default": false,
18132
- "description": "Also report compiler bail-outs — places where React Compiler skipped a\ncomponent or hook (for example because of unsupported syntax) without\nfinding a rule violation. These do not indicate incorrect code, only\ncode that the compiler declined to optimize.",
18133
- "markdownDescription": "Also report compiler bail-outs — places where React Compiler skipped a\ncomponent or hook (for example because of unsupported syntax) without\nfinding a rule violation. These do not indicate incorrect code, only\ncode that the compiler declined to optimize.",
18134
- "type": "boolean"
18135
- }
18136
- },
18137
- "type": "object"
18138
- },
18139
18407
  "ReactPerfConfig": {
18140
18408
  "additionalProperties": false,
18141
18409
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/tsgo",
3
- "version": "0.36.5",
3
+ "version": "0.38.0",
4
4
  "type": "module",
5
5
  "description": "Effect Language Service for TypeScript-Go — Effect-specific diagnostics and hover features.",
6
6
  "license": "MIT",
@@ -41,13 +41,13 @@
41
41
  "schema.json"
42
42
  ],
43
43
  "optionalDependencies": {
44
- "@effect/tsgo-win32-x64": "0.36.5",
45
- "@effect/tsgo-win32-arm64": "0.36.5",
46
- "@effect/tsgo-linux-x64": "0.36.5",
47
- "@effect/tsgo-linux-arm64": "0.36.5",
48
- "@effect/tsgo-linux-arm": "0.36.5",
49
- "@effect/tsgo-darwin-x64": "0.36.5",
50
- "@effect/tsgo-darwin-arm64": "0.36.5"
44
+ "@effect/tsgo-win32-x64": "0.38.0",
45
+ "@effect/tsgo-win32-arm64": "0.38.0",
46
+ "@effect/tsgo-linux-x64": "0.38.0",
47
+ "@effect/tsgo-linux-arm64": "0.38.0",
48
+ "@effect/tsgo-linux-arm": "0.38.0",
49
+ "@effect/tsgo-darwin-x64": "0.38.0",
50
+ "@effect/tsgo-darwin-arm64": "0.38.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@effect/platform-node": "^4.0.0-beta.107",
package/schema.json CHANGED
@@ -1815,6 +1815,11 @@
1815
1815
  "default": "suggestion",
1816
1816
  "description": "Warns when manually constructing AbortController inside Effect generators instead of using Effect.abortSignal"
1817
1817
  },
1818
+ "allOfMapToForEach": {
1819
+ "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1820
+ "default": "suggestion",
1821
+ "description": "Suggests using Effect.forEach instead of Effect.all over an effectful Array#map"
1822
+ },
1818
1823
  "anyUnknownInErrorContext": {
1819
1824
  "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1820
1825
  "default": "off",
@@ -1825,6 +1830,11 @@
1825
1830
  "default": "off",
1826
1831
  "description": "Warns when declaring async functions and suggests using Effect values and Effect.gen for async control flow"
1827
1832
  },
1833
+ "catchDieToOrDie": {
1834
+ "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1835
+ "default": "suggestion",
1836
+ "description": "Suggests using Effect.orDie instead of Effect.catch or Effect.catchAll with an identity-forwarding Effect.die handler"
1837
+ },
1828
1838
  "catchAllToMapError": {
1829
1839
  "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1830
1840
  "default": "suggestion",
@@ -1835,6 +1845,11 @@
1835
1845
  "default": "suggestion",
1836
1846
  "description": "Suggests Effect.firstSuccessOf for consecutive error-independent Effect.catch fallbacks when the error type is preserved"
1837
1847
  },
1848
+ "catchConditionalRefailToCatchIf": {
1849
+ "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1850
+ "default": "suggestion",
1851
+ "description": "Suggests Effect.catchIf, Effect.catchCauseIf, or Effect.catchTag for conditional catch handlers that re-fail their untouched input"
1852
+ },
1838
1853
  "catchTagToCatchReason": {
1839
1854
  "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
1840
1855
  "default": "suggestion",
@@ -2040,6 +2055,11 @@
2040
2055
  "default": "suggestion",
2041
2056
  "description": "Detects implementation services leaked in service methods"
2042
2057
  },
2058
+ "mapSomeToAsSome": {
2059
+ "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
2060
+ "default": "suggestion",
2061
+ "description": "Suggests using Effect.asSome instead of Effect.map when the mapper only wraps the success value with Option.some"
2062
+ },
2043
2063
  "missedPipeableOpportunity": {
2044
2064
  "$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
2045
2065
  "default": "off",