@effect/tsgo 0.39.0 → 0.40.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.39.0`:
41
+ The following target package versions are supported by `@effect/tsgo@0.40.0`:
42
42
 
43
43
  | Component | Supported versions |
44
44
  |---|---|
45
- | TypeScript | `7.0.2`, `7.1.0-dev.20260831.1` |
46
- | Oxlint | `1.79.0`, `1.80.0` |
45
+ | TypeScript | `7.0.2`, `7.1.0-dev.20260902.1` |
46
+ | Oxlint | `1.79.0`, `1.81.0` |
47
47
  | oxlint-tsgolint | `7.0.2001` |
48
48
  <!-- supported-components:end -->
49
49
 
@@ -76,6 +76,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
76
76
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/promise-in-effect-success.md"><code>promiseInEffectSuccess</code></a></td><td>Detects Promise types in Effect success channels where they are not awaited</td></tr>
77
77
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/schema-literal-non-finite.md"><code>schemaLiteralNonFinite</code></a></td><td>Reports statically known non-finite numbers passed to Schema literal constructors</td></tr>
78
78
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/schema-opaque-instance-member.md"><code>schemaOpaqueInstanceMember</code></a></td><td>Disallows instance members in classes extending Schema.Opaque</td></tr>
79
+ <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>
79
80
  <tr><td colspan="2"><strong>Anti-pattern</strong> <em>Discouraged patterns that often lead to bugs or confusing behavior.</em></td></tr>
80
81
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/catch-unfailable-effect.md"><code>catchUnfailableEffect</code></a></td><td>Warns when using error handling on Effects that never fail</td></tr>
81
82
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/effect-fn-iife.md"><code>effectFnIife</code></a></td><td>Effect.fn or Effect.fnUntraced is called as an IIFE; use Effect.gen instead</td></tr>
@@ -99,7 +100,6 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
99
100
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/unknown-in-effect-catch.md"><code>unknownInEffectCatch</code></a></td><td>Warns when catch callbacks return unknown instead of typed errors</td></tr>
100
101
  <tr><td colspan="2"><strong>Effect-native</strong> <em>Prefer Effect-native APIs and abstractions when available.</em></td></tr>
101
102
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/abort-controller-in-effect.md"><code>abortControllerInEffect</code></a></td><td>Warns when manually constructing AbortController inside Effect generators instead of using Effect.abortSignal</td></tr>
102
- <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/acquire-release-disposable.md"><code>acquireReleaseDisposable</code></a></td><td>Suggests Effect.acquireDisposable when Effect.acquireRelease only invokes the acquired resource&#39;s disposal protocol</td></tr>
103
103
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/async-function.md"><code>asyncFunction</code></a></td><td>Warns when declaring async functions and suggests using Effect values and Effect.gen for async control flow</td></tr>
104
104
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/crypto-random-uuid.md"><code>cryptoRandomUUID</code></a></td><td>Warns when using crypto.randomUUID() outside Effect generators instead of the Effect Random module, which uses Effect-injected randomness rather than the crypto module behind the scenes</td></tr>
105
105
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/crypto-random-uuid-in-effect.md"><code>cryptoRandomUUIDInEffect</code></a></td><td>Warns when using crypto.randomUUID() inside Effect generators instead of the Effect Random module, which uses Effect-injected randomness rather than the crypto module behind the scenes</td></tr>
@@ -120,8 +120,8 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
120
120
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/prefer-schema-over-json.md"><code>preferSchemaOverJson</code></a></td><td>Suggests using Effect Schema for JSON operations instead of JSON.parse/JSON.stringify</td></tr>
121
121
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/process-env.md"><code>processEnv</code></a></td><td>Warns when reading process.env outside 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/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>
123
- <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>
124
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/acquire-release-disposable.md"><code>acquireReleaseDisposable</code></a></td><td>Suggests Effect.acquireDisposable when Effect.acquireRelease only invokes the acquired resource&#39;s disposal protocol</td></tr>
125
125
  <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>
126
126
  <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>
127
127
  <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>
@@ -149,6 +149,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
149
149
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/prefer-schema-type-property.md"><code>preferSchemaTypeProperty</code></a></td><td>Disallows Schema.Schema.Type&lt;typeof X&gt; in favor of typeof X.Type</td></tr>
150
150
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/prefer-succeed-some-or-none.md"><code>preferSucceedSomeOrNone</code></a></td><td>Suggests using Effect.succeedNone or Effect.succeedSome instead of wrapping Option.none or Option.some with Effect.succeed</td></tr>
151
151
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/prefer-typed-schema-decoder.md"><code>preferTypedSchemaDecoder</code></a></td><td>Suggests typed Schema decoders when the input is assignable to the schema&#39;s Encoded type</td></tr>
152
+ <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/race-first-with-sleep-to-timeout.md"><code>raceFirstWithSleepToTimeout</code></a></td><td>Suggests Effect.timeoutOrElse when Effect.raceFirst has exactly one sleep- or delay-based timer arm</td></tr>
152
153
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/redundant-map-error.md"><code>redundantMapError</code></a></td><td>Suggests hoisting a repeated trailing Effect.mapError from every yield in an Effect generator</td></tr>
153
154
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/redundant-or-die.md"><code>redundantOrDie</code></a></td><td>Suggests hoisting a repeated trailing Effect.orDie from every yield in an Effect generator</td></tr>
154
155
  <tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/redundant-schema-tag-identifier.md"><code>redundantSchemaTagIdentifier</code></a></td><td>Suggests removing redundant identifier argument when it equals the tag value in Schema.TaggedClass/TaggedError/TaggedRequest</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.39.0";
48903
+ var version = "0.40.0";
48904
48904
 
48905
48905
  //#endregion
48906
48906
  //#region src/metadata.json
@@ -48931,7 +48931,6 @@ var presets$1 = [{
48931
48931
  "description": "Enable all Effect-native diagnostics at warning level.",
48932
48932
  "diagnosticSeverity": {
48933
48933
  "abortControllerInEffect": "warning",
48934
- "acquireReleaseDisposable": "warning",
48935
48934
  "asyncFunction": "warning",
48936
48935
  "cryptoRandomUUID": "warning",
48937
48936
  "cryptoRandomUUIDInEffect": "warning",
@@ -48951,8 +48950,7 @@ var presets$1 = [{
48951
48950
  "nodeBuiltinImport": "warning",
48952
48951
  "preferSchemaOverJson": "warning",
48953
48952
  "processEnv": "warning",
48954
- "processEnvInEffect": "warning",
48955
- "unsafeEffectTypeAssertion": "warning"
48953
+ "processEnvInEffect": "warning"
48956
48954
  }
48957
48955
  }];
48958
48956
  var rules = [
@@ -49278,6 +49276,23 @@ var rules = [
49278
49276
  }]
49279
49277
  }
49280
49278
  },
49279
+ {
49280
+ "name": "unsafeEffectTypeAssertion",
49281
+ "group": "correctness",
49282
+ "description": "Detects unsafe type assertions that narrow Effect, Stream, or Layer error or requirements channels",
49283
+ "defaultSeverity": "off",
49284
+ "fixable": true,
49285
+ "supportedEffect": ["v3", "v4"],
49286
+ "codes": [377075],
49287
+ "preview": {
49288
+ "sourceText": "import { Effect } from \"effect\"\n\ndeclare const program: Effect.Effect<string, \"boom\", \"service\">\n\nexport const preview = program as Effect.Effect<string, never, never>\n",
49289
+ "diagnostics": [{
49290
+ "start": 121,
49291
+ "end": 167,
49292
+ "text": "This type assertion unsafely narrows the error or requirements channels. effect(unsafeEffectTypeAssertion)"
49293
+ }]
49294
+ }
49295
+ },
49281
49296
  {
49282
49297
  "name": "catchUnfailableEffect",
49283
49298
  "group": "antipattern",
@@ -49643,23 +49658,6 @@ var rules = [
49643
49658
  }]
49644
49659
  }
49645
49660
  },
49646
- {
49647
- "name": "acquireReleaseDisposable",
49648
- "group": "effectNative",
49649
- "description": "Suggests Effect.acquireDisposable when Effect.acquireRelease only invokes the acquired resource's disposal protocol",
49650
- "defaultSeverity": "suggestion",
49651
- "fixable": true,
49652
- "supportedEffect": ["v4"],
49653
- "codes": [377119],
49654
- "preview": {
49655
- "sourceText": "/// <reference lib=\"esnext.disposable\" />\nimport { Effect } from \"effect\"\n\ndeclare const acquire: Effect.Effect<AsyncDisposable>\n\nexport const resource = Effect.acquireRelease(\n acquire,\n (resource) => Effect.promise(() => resource[Symbol.asyncDispose]())\n)\n",
49656
- "diagnostics": [{
49657
- "start": 154,
49658
- "end": 175,
49659
- "text": "`Effect.acquireDisposable` expresses this disposable resource acquisition more directly than `Effect.acquireRelease` with a manual disposal finalizer. effect(acquireReleaseDisposable)"
49660
- }]
49661
- }
49662
- },
49663
49661
  {
49664
49662
  "name": "asyncFunction",
49665
49663
  "group": "effectNative",
@@ -50001,19 +49999,19 @@ var rules = [
50001
49999
  }
50002
50000
  },
50003
50001
  {
50004
- "name": "unsafeEffectTypeAssertion",
50005
- "group": "effectNative",
50006
- "description": "Detects unsafe type assertions that narrow Effect, Stream, or Layer error or requirements channels",
50007
- "defaultSeverity": "off",
50002
+ "name": "acquireReleaseDisposable",
50003
+ "group": "style",
50004
+ "description": "Suggests Effect.acquireDisposable when Effect.acquireRelease only invokes the acquired resource's disposal protocol",
50005
+ "defaultSeverity": "suggestion",
50008
50006
  "fixable": true,
50009
- "supportedEffect": ["v3", "v4"],
50010
- "codes": [377075],
50007
+ "supportedEffect": ["v4"],
50008
+ "codes": [377119],
50011
50009
  "preview": {
50012
- "sourceText": "import { Effect } from \"effect\"\n\ndeclare const program: Effect.Effect<string, \"boom\", \"service\">\n\nexport const preview = program as Effect.Effect<string, never, never>\n",
50010
+ "sourceText": "/// <reference lib=\"esnext.disposable\" />\nimport { Effect } from \"effect\"\n\ndeclare const acquire: Effect.Effect<AsyncDisposable>\n\nexport const resource = Effect.acquireRelease(\n acquire,\n (resource) => Effect.promise(() => resource[Symbol.asyncDispose]())\n)\n",
50013
50011
  "diagnostics": [{
50014
- "start": 121,
50015
- "end": 167,
50016
- "text": "This type assertion unsafely narrows the error or requirements channels. effect(unsafeEffectTypeAssertion)"
50012
+ "start": 154,
50013
+ "end": 175,
50014
+ "text": "`Effect.acquireDisposable` expresses this disposable resource acquisition more directly than `Effect.acquireRelease` with a manual disposal finalizer. effect(acquireReleaseDisposable)"
50017
50015
  }]
50018
50016
  }
50019
50017
  },
@@ -50492,6 +50490,23 @@ var rules = [
50492
50490
  }]
50493
50491
  }
50494
50492
  },
50493
+ {
50494
+ "name": "raceFirstWithSleepToTimeout",
50495
+ "group": "style",
50496
+ "description": "Suggests Effect.timeoutOrElse when Effect.raceFirst has exactly one sleep- or delay-based timer arm",
50497
+ "defaultSeverity": "suggestion",
50498
+ "fixable": false,
50499
+ "supportedEffect": ["v4"],
50500
+ "codes": [377121],
50501
+ "preview": {
50502
+ "sourceText": "import { Effect } from \"effect\"\n\ndeclare const request: Effect.Effect<string, Error>\n\nexport const result = Effect.raceFirst(\n request,\n Effect.sleep(\"5 seconds\").pipe(\n Effect.andThen(Effect.fail(new Error(\"request timed out\")))\n )\n)\n",
50503
+ "diagnostics": [{
50504
+ "start": 108,
50505
+ "end": 124,
50506
+ "text": "This Effect first-completion race has exactly one sleep- or delay-based timer arm. `Effect.timeoutOrElse` expresses the timeout and fallback directly. effect(raceFirstWithSleepToTimeout)"
50507
+ }]
50508
+ }
50509
+ },
50495
50510
  {
50496
50511
  "name": "redundantMapError",
50497
50512
  "group": "style",
@@ -50552,7 +50567,7 @@ var rules = [
50552
50567
  "supportedEffect": ["v4"],
50553
50568
  "codes": [377098],
50554
50569
  "preview": {
50555
- "sourceText": "\nimport { Schema } from \"effect\"\n\nexport const User = Schema.Struct({\n age: Schema.Number,\n score: Schema.NumberFromString\n})\n",
50570
+ "sourceText": "\nimport { Schema } from \"effect\"\n\nexport const User = Schema.Struct({\n age: Schema.Number,\n score: Schema.NumberFromString,\n integer: Schema.Number.check(Schema.isInt()),\n pipedFinite: Schema.Number.pipe(Schema.check(Schema.isFinite()))\n})\n",
50556
50571
  "diagnostics": [{
50557
50572
  "start": 84,
50558
50573
  "end": 90,
@@ -50767,9 +50782,9 @@ var metadata_default = {
50767
50782
  var tags = {
50768
50783
  "typescript": {
50769
50784
  "latest": "7.0.2",
50770
- "next": "7.1.0-dev.20260831.1"
50785
+ "next": "7.1.0-dev.20260902.1"
50771
50786
  },
50772
- "oxlint": { "latest": "1.80.0" },
50787
+ "oxlint": { "latest": "1.81.0" },
50773
50788
  "oxlint-tsgolint": { "latest": "7.0.2001" }
50774
50789
  };
50775
50790
  var components = {
@@ -50778,8 +50793,8 @@ var components = {
50778
50793
  "gitHead": "2bd066d87f5bafd315be9f40889d0a60b9e58e0b",
50779
50794
  "provider": "typescript-go"
50780
50795
  },
50781
- "7.1.0-dev.20260831.1": {
50782
- "gitHead": "9a8581c393a38961489cc8409ae4dfbe97fc25ec",
50796
+ "7.1.0-dev.20260902.1": {
50797
+ "gitHead": "43a90f4c105bc9db7cb7aa299beddafbabe1d23e",
50783
50798
  "provider": "typescript"
50784
50799
  }
50785
50800
  },
@@ -50789,7 +50804,7 @@ var components = {
50789
50804
  } },
50790
50805
  "oxlint": {
50791
50806
  "1.79.0": { "gitHead": "0db127cc16d28b97d84bac4ebeb302caf1a78c7e" },
50792
- "1.80.0": { "gitHead": "97e99b85483776a72928d675cc05b1cfc1130ba0" }
50807
+ "1.81.0": { "gitHead": "0b4e2e67f4193e7ebfcc64982275eb583ae82c83" }
50793
50808
  }
50794
50809
  };
50795
50810
 
@@ -23,6 +23,7 @@
23
23
  "effecttsgo/overridden-schema-constructor": "warn",
24
24
  "effecttsgo/promise-in-effect-success": "warn",
25
25
  "effecttsgo/schema-literal-non-finite": "warn",
26
- "effecttsgo/schema-opaque-instance-member": "warn"
26
+ "effecttsgo/schema-opaque-instance-member": "warn",
27
+ "effecttsgo/unsafe-effect-type-assertion": "warn"
27
28
  }
28
29
  }
@@ -7,7 +7,6 @@
7
7
  ],
8
8
  "rules": {
9
9
  "effecttsgo/abort-controller-in-effect": "warn",
10
- "effecttsgo/acquire-release-disposable": "warn",
11
10
  "effecttsgo/async-function": "warn",
12
11
  "effecttsgo/crypto-random-uuid": "warn",
13
12
  "effecttsgo/crypto-random-uuid-in-effect": "warn",
@@ -27,7 +26,6 @@
27
26
  "effecttsgo/node-builtin-import": "warn",
28
27
  "effecttsgo/prefer-schema-over-json": "warn",
29
28
  "effecttsgo/process-env": "warn",
30
- "effecttsgo/process-env-in-effect": "warn",
31
- "effecttsgo/unsafe-effect-type-assertion": "warn"
29
+ "effecttsgo/process-env-in-effect": "warn"
32
30
  }
33
31
  }
@@ -56,7 +56,8 @@ export const correctness = {
56
56
  "effecttsgo/overridden-schema-constructor": "warn",
57
57
  "effecttsgo/promise-in-effect-success": "warn",
58
58
  "effecttsgo/schema-literal-non-finite": "warn",
59
- "effecttsgo/schema-opaque-instance-member": "warn"
59
+ "effecttsgo/schema-opaque-instance-member": "warn",
60
+ "effecttsgo/unsafe-effect-type-assertion": "warn"
60
61
  }
61
62
  }
62
63
 
@@ -69,7 +70,6 @@ export const effectNative = {
69
70
  ],
70
71
  "rules": {
71
72
  "effecttsgo/abort-controller-in-effect": "warn",
72
- "effecttsgo/acquire-release-disposable": "warn",
73
73
  "effecttsgo/async-function": "warn",
74
74
  "effecttsgo/crypto-random-uuid": "warn",
75
75
  "effecttsgo/crypto-random-uuid-in-effect": "warn",
@@ -89,8 +89,7 @@ export const effectNative = {
89
89
  "effecttsgo/node-builtin-import": "warn",
90
90
  "effecttsgo/prefer-schema-over-json": "warn",
91
91
  "effecttsgo/process-env": "warn",
92
- "effecttsgo/process-env-in-effect": "warn",
93
- "effecttsgo/unsafe-effect-type-assertion": "warn"
92
+ "effecttsgo/process-env-in-effect": "warn"
94
93
  }
95
94
  }
96
95
 
@@ -128,6 +127,7 @@ export const recommended = {
128
127
  "effecttsgo/effect-map-void": "warn",
129
128
  "effecttsgo/effect-succeed-with-void": "warn",
130
129
  "effecttsgo/extends-native-error": "warn",
130
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": "warn",
131
131
  "effecttsgo/flat-map-to-map": "warn",
132
132
  "effecttsgo/floating-effect": "error",
133
133
  "effecttsgo/floating-effect-in-vitest": "error",
@@ -170,6 +170,7 @@ export const recommended = {
170
170
  "effecttsgo/process-env": "warn",
171
171
  "effecttsgo/process-env-in-effect": "warn",
172
172
  "effecttsgo/promise-in-effect-success": "warn",
173
+ "effecttsgo/race-first-with-sleep-to-timeout": "warn",
173
174
  "effecttsgo/redundant-map-error": "warn",
174
175
  "effecttsgo/redundant-or-die": "warn",
175
176
  "effecttsgo/redundant-schema-tag-identifier": "warn",
@@ -188,8 +189,7 @@ export const recommended = {
188
189
  "effecttsgo/unnecessary-fail-yieldable-error": "warn",
189
190
  "effecttsgo/unnecessary-pipe": "warn",
190
191
  "effecttsgo/unnecessary-pipe-chain": "warn",
191
- "effecttsgo/unnecessary-typeof-type": "warn",
192
- "effecttsgo/unsafe-effect-type-assertion": "warn"
192
+ "effecttsgo/unnecessary-typeof-type": "warn"
193
193
  }
194
194
  }
195
195
 
@@ -201,6 +201,7 @@ export const style = {
201
201
  "effecttsgo"
202
202
  ],
203
203
  "rules": {
204
+ "effecttsgo/acquire-release-disposable": "warn",
204
205
  "effecttsgo/all-of-map-to-for-each": "warn",
205
206
  "effecttsgo/catch-all-to-map-error": "warn",
206
207
  "effecttsgo/catch-chain-to-first-success-of": "warn",
@@ -215,6 +216,7 @@ export const style = {
215
216
  "effecttsgo/effect-map-flatten": "warn",
216
217
  "effecttsgo/effect-map-void": "warn",
217
218
  "effecttsgo/effect-succeed-with-void": "warn",
219
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": "warn",
218
220
  "effecttsgo/flat-map-to-map": "warn",
219
221
  "effecttsgo/map-some-to-as-some": "warn",
220
222
  "effecttsgo/missed-pipeable-opportunity": "warn",
@@ -227,6 +229,7 @@ export const style = {
227
229
  "effecttsgo/prefer-schema-type-property": "warn",
228
230
  "effecttsgo/prefer-succeed-some-or-none": "warn",
229
231
  "effecttsgo/prefer-typed-schema-decoder": "warn",
232
+ "effecttsgo/race-first-with-sleep-to-timeout": "warn",
230
233
  "effecttsgo/redundant-map-error": "warn",
231
234
  "effecttsgo/redundant-or-die": "warn",
232
235
  "effecttsgo/redundant-schema-tag-identifier": "warn",
@@ -32,6 +32,7 @@
32
32
  "effecttsgo/effect-map-void": "warn",
33
33
  "effecttsgo/effect-succeed-with-void": "warn",
34
34
  "effecttsgo/extends-native-error": "warn",
35
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": "warn",
35
36
  "effecttsgo/flat-map-to-map": "warn",
36
37
  "effecttsgo/floating-effect": "error",
37
38
  "effecttsgo/floating-effect-in-vitest": "error",
@@ -74,6 +75,7 @@
74
75
  "effecttsgo/process-env": "warn",
75
76
  "effecttsgo/process-env-in-effect": "warn",
76
77
  "effecttsgo/promise-in-effect-success": "warn",
78
+ "effecttsgo/race-first-with-sleep-to-timeout": "warn",
77
79
  "effecttsgo/redundant-map-error": "warn",
78
80
  "effecttsgo/redundant-or-die": "warn",
79
81
  "effecttsgo/redundant-schema-tag-identifier": "warn",
@@ -92,7 +94,6 @@
92
94
  "effecttsgo/unnecessary-fail-yieldable-error": "warn",
93
95
  "effecttsgo/unnecessary-pipe": "warn",
94
96
  "effecttsgo/unnecessary-pipe-chain": "warn",
95
- "effecttsgo/unnecessary-typeof-type": "warn",
96
- "effecttsgo/unsafe-effect-type-assertion": "warn"
97
+ "effecttsgo/unnecessary-typeof-type": "warn"
97
98
  }
98
99
  }
@@ -6,6 +6,7 @@
6
6
  "effecttsgo"
7
7
  ],
8
8
  "rules": {
9
+ "effecttsgo/acquire-release-disposable": "warn",
9
10
  "effecttsgo/all-of-map-to-for-each": "warn",
10
11
  "effecttsgo/catch-all-to-map-error": "warn",
11
12
  "effecttsgo/catch-chain-to-first-success-of": "warn",
@@ -20,6 +21,7 @@
20
21
  "effecttsgo/effect-map-flatten": "warn",
21
22
  "effecttsgo/effect-map-void": "warn",
22
23
  "effecttsgo/effect-succeed-with-void": "warn",
24
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": "warn",
23
25
  "effecttsgo/flat-map-to-map": "warn",
24
26
  "effecttsgo/map-some-to-as-some": "warn",
25
27
  "effecttsgo/missed-pipeable-opportunity": "warn",
@@ -32,6 +34,7 @@
32
34
  "effecttsgo/prefer-schema-type-property": "warn",
33
35
  "effecttsgo/prefer-succeed-some-or-none": "warn",
34
36
  "effecttsgo/prefer-typed-schema-decoder": "warn",
37
+ "effecttsgo/race-first-with-sleep-to-timeout": "warn",
35
38
  "effecttsgo/redundant-map-error": "warn",
36
39
  "effecttsgo/redundant-or-die": "warn",
37
40
  "effecttsgo/redundant-schema-tag-identifier": "warn",
@@ -2320,6 +2320,9 @@
2320
2320
  "effecttsgo/extends-native-error": {
2321
2321
  "$ref": "#/definitions/RuleNoConfig"
2322
2322
  },
2323
+ "effecttsgo/flat-map-conditional-to-filter-or-fail": {
2324
+ "$ref": "#/definitions/RuleNoConfig"
2325
+ },
2323
2326
  "effecttsgo/flat-map-to-map": {
2324
2327
  "$ref": "#/definitions/RuleNoConfig"
2325
2328
  },
@@ -2464,6 +2467,9 @@
2464
2467
  "effecttsgo/promise-in-effect-success": {
2465
2468
  "$ref": "#/definitions/RuleNoConfig"
2466
2469
  },
2470
+ "effecttsgo/race-first-with-sleep-to-timeout": {
2471
+ "$ref": "#/definitions/RuleNoConfig"
2472
+ },
2467
2473
  "effecttsgo/redundant-map-error": {
2468
2474
  "$ref": "#/definitions/RuleNoConfig"
2469
2475
  },
@@ -19402,8 +19408,8 @@
19402
19408
  "type": "boolean"
19403
19409
  },
19404
19410
  "defaultCaseCommentPattern": {
19405
- "description": "Regular expression pattern that when matched in a default case comment,\nwill suppress the exhaustiveness check.\nExample: `\"@skip-exhaustive-check\"` to allow `default: // @skip-exhaustive-check`",
19406
- "markdownDescription": "Regular expression pattern that when matched in a default case comment,\nwill suppress the exhaustiveness check.\nExample: `\"@skip-exhaustive-check\"` to allow `default: // @skip-exhaustive-check`",
19411
+ "description": "Regular expression pattern for a comment that acts as an omitted `default` case.\nThe comment must appear after the final case and the switch must not have a `default` case.\nFor union types, it suppresses the exhaustiveness check only when\n`considerDefaultExhaustiveForUnions` is enabled.\nExample: `\"^skip default$\"` to allow a switch ending in `// skip default`.",
19412
+ "markdownDescription": "Regular expression pattern for a comment that acts as an omitted `default` case.\nThe comment must appear after the final case and the switch must not have a `default` case.\nFor union types, it suppresses the exhaustiveness check only when\n`considerDefaultExhaustiveForUnions` is enabled.\nExample: `\"^skip default$\"` to allow a switch ending in `// skip default`.",
19407
19413
  "type": "string"
19408
19414
  },
19409
19415
  "requireDefaultForNonUnion": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/tsgo",
3
- "version": "0.39.0",
3
+ "version": "0.40.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.39.0",
45
- "@effect/tsgo-win32-arm64": "0.39.0",
46
- "@effect/tsgo-linux-x64": "0.39.0",
47
- "@effect/tsgo-linux-arm": "0.39.0",
48
- "@effect/tsgo-darwin-x64": "0.39.0",
49
- "@effect/tsgo-linux-arm64": "0.39.0",
50
- "@effect/tsgo-darwin-arm64": "0.39.0"
44
+ "@effect/tsgo-win32-x64": "0.40.0",
45
+ "@effect/tsgo-win32-arm64": "0.40.0",
46
+ "@effect/tsgo-linux-x64": "0.40.0",
47
+ "@effect/tsgo-linux-arm64": "0.40.0",
48
+ "@effect/tsgo-linux-arm": "0.40.0",
49
+ "@effect/tsgo-darwin-x64": "0.40.0",
50
+ "@effect/tsgo-darwin-arm64": "0.40.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@effect/platform-node": "^4.0.0-beta.107",