@effect/tsgo 0.38.0 → 0.39.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 +6 -2
- package/dist/effect-tsgo.cjs +77 -4
- package/oxlint-presets/effect-native.json +1 -0
- package/oxlint-presets/index.js +12 -0
- package/oxlint-presets/recommended.json +6 -0
- package/oxlint-presets/style.json +5 -0
- package/oxlint-schema.json +12 -3
- package/package.json +8 -8
- package/schema.json +20 -5
package/README.md
CHANGED
|
@@ -38,11 +38,11 @@ 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.
|
|
41
|
+
The following target package versions are supported by `@effect/tsgo@0.39.0`:
|
|
42
42
|
|
|
43
43
|
| Component | Supported versions |
|
|
44
44
|
|---|---|
|
|
45
|
-
| TypeScript | `7.0.2`, `7.1.0-dev.
|
|
45
|
+
| TypeScript | `7.0.2`, `7.1.0-dev.20260831.1` |
|
|
46
46
|
| Oxlint | `1.79.0`, `1.80.0` |
|
|
47
47
|
| oxlint-tsgolint | `7.0.2001` |
|
|
48
48
|
<!-- supported-components:end -->
|
|
@@ -99,6 +99,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
|
|
|
99
99
|
<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
100
|
<tr><td colspan="2"><strong>Effect-native</strong> <em>Prefer Effect-native APIs and abstractions when available.</em></td></tr>
|
|
101
101
|
<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's disposal protocol</td></tr>
|
|
102
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>
|
|
103
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>
|
|
104
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>
|
|
@@ -135,6 +136,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
|
|
|
135
136
|
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/effect-map-flatten.md"><code>effectMapFlatten</code></a></td><td>Suggests using Effect.flatMap instead of Effect.map followed by Effect.flatten in piping flows</td></tr>
|
|
136
137
|
<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(() => void 0), Effect.map(() => undefined), or Effect.map(() => {})</td></tr>
|
|
137
138
|
<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>
|
|
139
|
+
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/flat-map-conditional-to-filter-or-fail.md"><code>flatMapConditionalToFilterOrFail</code></a></td><td>Suggests Effect.filterOrFail or Effect.filterOrElse when Effect.flatMap conditionally passes its input through with Effect.succeed</td></tr>
|
|
138
140
|
<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
141
|
<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>
|
|
140
142
|
<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>
|
|
@@ -143,7 +145,9 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
|
|
|
143
145
|
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/multiple-catch-tag.md"><code>multipleCatchTag</code></a></td><td>Suggests collapsing consecutive Effect.catchTag transformations into a single Effect.catchTags call when semantics stay equivalent</td></tr>
|
|
144
146
|
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/nested-effect-gen-yield.md"><code>nestedEffectGenYield</code></a></td><td>Warns when yielding a nested bare Effect.gen inside an existing Effect generator context</td></tr>
|
|
145
147
|
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/new-schema-class.md"><code>newSchemaClass</code></a></td><td>Suggests using Schema make instead of new for Schema classes</td></tr>
|
|
148
|
+
<tr><td><a href="https://github.com/Effect-TS/tsgo/blob/main/docs/rules/option-match-to-from-option.md"><code>optionMatchToFromOption</code></a></td><td>Suggests Effect.fromOption when Option.match or an Option tag conditional only converts Some to Effect.succeed and None to Effect.fail</td></tr>
|
|
146
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<typeof X> in favor of typeof X.Type</td></tr>
|
|
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>
|
|
147
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's Encoded type</td></tr>
|
|
148
152
|
<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>
|
|
149
153
|
<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>
|
package/dist/effect-tsgo.cjs
CHANGED
|
@@ -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.
|
|
48903
|
+
var version = "0.39.0";
|
|
48904
48904
|
|
|
48905
48905
|
//#endregion
|
|
48906
48906
|
//#region src/metadata.json
|
|
@@ -48931,6 +48931,7 @@ var presets$1 = [{
|
|
|
48931
48931
|
"description": "Enable all Effect-native diagnostics at warning level.",
|
|
48932
48932
|
"diagnosticSeverity": {
|
|
48933
48933
|
"abortControllerInEffect": "warning",
|
|
48934
|
+
"acquireReleaseDisposable": "warning",
|
|
48934
48935
|
"asyncFunction": "warning",
|
|
48935
48936
|
"cryptoRandomUUID": "warning",
|
|
48936
48937
|
"cryptoRandomUUIDInEffect": "warning",
|
|
@@ -49642,6 +49643,23 @@ var rules = [
|
|
|
49642
49643
|
}]
|
|
49643
49644
|
}
|
|
49644
49645
|
},
|
|
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
|
+
},
|
|
49645
49663
|
{
|
|
49646
49664
|
"name": "asyncFunction",
|
|
49647
49665
|
"group": "effectNative",
|
|
@@ -50237,6 +50255,23 @@ var rules = [
|
|
|
50237
50255
|
}]
|
|
50238
50256
|
}
|
|
50239
50257
|
},
|
|
50258
|
+
{
|
|
50259
|
+
"name": "flatMapConditionalToFilterOrFail",
|
|
50260
|
+
"group": "style",
|
|
50261
|
+
"description": "Suggests Effect.filterOrFail or Effect.filterOrElse when Effect.flatMap conditionally passes its input through with Effect.succeed",
|
|
50262
|
+
"defaultSeverity": "suggestion",
|
|
50263
|
+
"fixable": true,
|
|
50264
|
+
"supportedEffect": ["v3", "v4"],
|
|
50265
|
+
"codes": [377120],
|
|
50266
|
+
"preview": {
|
|
50267
|
+
"sourceText": "import { Effect } from \"effect\"\n\ndeclare const program: Effect.Effect<number>\n\nprogram.pipe(\n Effect.flatMap((value) =>\n value > 0 ? Effect.succeed(value) : Effect.fail(\"non-positive\")\n )\n)\n",
|
|
50268
|
+
"diagnostics": [{
|
|
50269
|
+
"start": 95,
|
|
50270
|
+
"end": 109,
|
|
50271
|
+
"text": "`Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)"
|
|
50272
|
+
}]
|
|
50273
|
+
}
|
|
50274
|
+
},
|
|
50240
50275
|
{
|
|
50241
50276
|
"name": "flatMapToMap",
|
|
50242
50277
|
"group": "style",
|
|
@@ -50385,6 +50420,23 @@ var rules = [
|
|
|
50385
50420
|
}]
|
|
50386
50421
|
}
|
|
50387
50422
|
},
|
|
50423
|
+
{
|
|
50424
|
+
"name": "optionMatchToFromOption",
|
|
50425
|
+
"group": "style",
|
|
50426
|
+
"description": "Suggests Effect.fromOption when Option.match or an Option tag conditional only converts Some to Effect.succeed and None to Effect.fail",
|
|
50427
|
+
"defaultSeverity": "suggestion",
|
|
50428
|
+
"fixable": true,
|
|
50429
|
+
"supportedEffect": ["v4"],
|
|
50430
|
+
"codes": [377118],
|
|
50431
|
+
"preview": {
|
|
50432
|
+
"sourceText": "import { Data, Effect, Option } from \"effect\"\n\nclass UserNotFound extends Data.TaggedError(\"UserNotFound\")<{\n readonly id: string\n}> {}\n\ndeclare const findUser: (id: string) => Option.Option<{ readonly name: string }>\n\nexport const getUser = (id: string) =>\n Option.match(findUser(id), {\n onNone: () => Effect.fail(new UserNotFound({ id })),\n onSome: (user) => Effect.succeed(user)\n })\n",
|
|
50433
|
+
"diagnostics": [{
|
|
50434
|
+
"start": 261,
|
|
50435
|
+
"end": 273,
|
|
50436
|
+
"text": "`Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)"
|
|
50437
|
+
}]
|
|
50438
|
+
}
|
|
50439
|
+
},
|
|
50388
50440
|
{
|
|
50389
50441
|
"name": "preferSchemaTypeProperty",
|
|
50390
50442
|
"group": "style",
|
|
@@ -50402,6 +50454,27 @@ var rules = [
|
|
|
50402
50454
|
}]
|
|
50403
50455
|
}
|
|
50404
50456
|
},
|
|
50457
|
+
{
|
|
50458
|
+
"name": "preferSucceedSomeOrNone",
|
|
50459
|
+
"group": "style",
|
|
50460
|
+
"description": "Suggests using Effect.succeedNone or Effect.succeedSome instead of wrapping Option.none or Option.some with Effect.succeed",
|
|
50461
|
+
"defaultSeverity": "suggestion",
|
|
50462
|
+
"fixable": true,
|
|
50463
|
+
"supportedEffect": ["v3", "v4"],
|
|
50464
|
+
"codes": [377117],
|
|
50465
|
+
"preview": {
|
|
50466
|
+
"sourceText": "import { Effect, Option } from \"effect\"\n\nexport const none = Effect.succeed(Option.none())\nexport const some = Effect.succeed(Option.some(1))\n",
|
|
50467
|
+
"diagnostics": [{
|
|
50468
|
+
"start": 61,
|
|
50469
|
+
"end": 75,
|
|
50470
|
+
"text": "`Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)"
|
|
50471
|
+
}, {
|
|
50472
|
+
"start": 111,
|
|
50473
|
+
"end": 125,
|
|
50474
|
+
"text": "`Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)"
|
|
50475
|
+
}]
|
|
50476
|
+
}
|
|
50477
|
+
},
|
|
50405
50478
|
{
|
|
50406
50479
|
"name": "preferTypedSchemaDecoder",
|
|
50407
50480
|
"group": "style",
|
|
@@ -50694,7 +50767,7 @@ var metadata_default = {
|
|
|
50694
50767
|
var tags = {
|
|
50695
50768
|
"typescript": {
|
|
50696
50769
|
"latest": "7.0.2",
|
|
50697
|
-
"next": "7.1.0-dev.
|
|
50770
|
+
"next": "7.1.0-dev.20260831.1"
|
|
50698
50771
|
},
|
|
50699
50772
|
"oxlint": { "latest": "1.80.0" },
|
|
50700
50773
|
"oxlint-tsgolint": { "latest": "7.0.2001" }
|
|
@@ -50705,8 +50778,8 @@ var components = {
|
|
|
50705
50778
|
"gitHead": "2bd066d87f5bafd315be9f40889d0a60b9e58e0b",
|
|
50706
50779
|
"provider": "typescript-go"
|
|
50707
50780
|
},
|
|
50708
|
-
"7.1.0-dev.
|
|
50709
|
-
"gitHead": "
|
|
50781
|
+
"7.1.0-dev.20260831.1": {
|
|
50782
|
+
"gitHead": "9a8581c393a38961489cc8409ae4dfbe97fc25ec",
|
|
50710
50783
|
"provider": "typescript"
|
|
50711
50784
|
}
|
|
50712
50785
|
},
|
package/oxlint-presets/index.js
CHANGED
|
@@ -69,6 +69,7 @@ export const effectNative = {
|
|
|
69
69
|
],
|
|
70
70
|
"rules": {
|
|
71
71
|
"effecttsgo/abort-controller-in-effect": "warn",
|
|
72
|
+
"effecttsgo/acquire-release-disposable": "warn",
|
|
72
73
|
"effecttsgo/async-function": "warn",
|
|
73
74
|
"effecttsgo/crypto-random-uuid": "warn",
|
|
74
75
|
"effecttsgo/crypto-random-uuid-in-effect": "warn",
|
|
@@ -102,10 +103,13 @@ export const recommended = {
|
|
|
102
103
|
],
|
|
103
104
|
"rules": {
|
|
104
105
|
"effecttsgo/abort-controller-in-effect": "warn",
|
|
106
|
+
"effecttsgo/acquire-release-disposable": "warn",
|
|
107
|
+
"effecttsgo/all-of-map-to-for-each": "warn",
|
|
105
108
|
"effecttsgo/async-function": "warn",
|
|
106
109
|
"effecttsgo/catch-all-to-map-error": "warn",
|
|
107
110
|
"effecttsgo/catch-chain-to-first-success-of": "warn",
|
|
108
111
|
"effecttsgo/catch-conditional-refail-to-catch-if": "warn",
|
|
112
|
+
"effecttsgo/catch-die-to-or-die": "warn",
|
|
109
113
|
"effecttsgo/catch-tag-to-catch-reason": "warn",
|
|
110
114
|
"effecttsgo/catch-to-ignore": "warn",
|
|
111
115
|
"effecttsgo/catch-to-or-else-succeed": "warn",
|
|
@@ -145,6 +149,7 @@ export const recommended = {
|
|
|
145
149
|
"effecttsgo/lazy-effect": "warn",
|
|
146
150
|
"effecttsgo/lazy-promise-in-effect-sync": "warn",
|
|
147
151
|
"effecttsgo/leaking-requirements": "warn",
|
|
152
|
+
"effecttsgo/map-some-to-as-some": "warn",
|
|
148
153
|
"effecttsgo/missing-effect-context": "error",
|
|
149
154
|
"effecttsgo/missing-effect-error": "error",
|
|
150
155
|
"effecttsgo/missing-layer-context": "error",
|
|
@@ -155,9 +160,11 @@ export const recommended = {
|
|
|
155
160
|
"effecttsgo/new-promise": "warn",
|
|
156
161
|
"effecttsgo/node-builtin-import": "warn",
|
|
157
162
|
"effecttsgo/non-object-effect-service-type": "error",
|
|
163
|
+
"effecttsgo/option-match-to-from-option": "warn",
|
|
158
164
|
"effecttsgo/outdated-api": "warn",
|
|
159
165
|
"effecttsgo/overridden-schema-constructor": "error",
|
|
160
166
|
"effecttsgo/prefer-schema-over-json": "warn",
|
|
167
|
+
"effecttsgo/prefer-succeed-some-or-none": "warn",
|
|
161
168
|
"effecttsgo/prefer-typed-schema-decoder": "warn",
|
|
162
169
|
"effecttsgo/prefer-unsafe-constructor": "warn",
|
|
163
170
|
"effecttsgo/process-env": "warn",
|
|
@@ -194,9 +201,11 @@ export const style = {
|
|
|
194
201
|
"effecttsgo"
|
|
195
202
|
],
|
|
196
203
|
"rules": {
|
|
204
|
+
"effecttsgo/all-of-map-to-for-each": "warn",
|
|
197
205
|
"effecttsgo/catch-all-to-map-error": "warn",
|
|
198
206
|
"effecttsgo/catch-chain-to-first-success-of": "warn",
|
|
199
207
|
"effecttsgo/catch-conditional-refail-to-catch-if": "warn",
|
|
208
|
+
"effecttsgo/catch-die-to-or-die": "warn",
|
|
200
209
|
"effecttsgo/catch-tag-to-catch-reason": "warn",
|
|
201
210
|
"effecttsgo/catch-to-ignore": "warn",
|
|
202
211
|
"effecttsgo/catch-to-or-else-succeed": "warn",
|
|
@@ -207,13 +216,16 @@ export const style = {
|
|
|
207
216
|
"effecttsgo/effect-map-void": "warn",
|
|
208
217
|
"effecttsgo/effect-succeed-with-void": "warn",
|
|
209
218
|
"effecttsgo/flat-map-to-map": "warn",
|
|
219
|
+
"effecttsgo/map-some-to-as-some": "warn",
|
|
210
220
|
"effecttsgo/missed-pipeable-opportunity": "warn",
|
|
211
221
|
"effecttsgo/missing-effect-service-dependency": "warn",
|
|
212
222
|
"effecttsgo/missing-pipeable-signature": "warn",
|
|
213
223
|
"effecttsgo/multiple-catch-tag": "warn",
|
|
214
224
|
"effecttsgo/nested-effect-gen-yield": "warn",
|
|
215
225
|
"effecttsgo/new-schema-class": "warn",
|
|
226
|
+
"effecttsgo/option-match-to-from-option": "warn",
|
|
216
227
|
"effecttsgo/prefer-schema-type-property": "warn",
|
|
228
|
+
"effecttsgo/prefer-succeed-some-or-none": "warn",
|
|
217
229
|
"effecttsgo/prefer-typed-schema-decoder": "warn",
|
|
218
230
|
"effecttsgo/redundant-map-error": "warn",
|
|
219
231
|
"effecttsgo/redundant-or-die": "warn",
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
],
|
|
8
8
|
"rules": {
|
|
9
9
|
"effecttsgo/abort-controller-in-effect": "warn",
|
|
10
|
+
"effecttsgo/acquire-release-disposable": "warn",
|
|
11
|
+
"effecttsgo/all-of-map-to-for-each": "warn",
|
|
10
12
|
"effecttsgo/async-function": "warn",
|
|
11
13
|
"effecttsgo/catch-all-to-map-error": "warn",
|
|
12
14
|
"effecttsgo/catch-chain-to-first-success-of": "warn",
|
|
13
15
|
"effecttsgo/catch-conditional-refail-to-catch-if": "warn",
|
|
16
|
+
"effecttsgo/catch-die-to-or-die": "warn",
|
|
14
17
|
"effecttsgo/catch-tag-to-catch-reason": "warn",
|
|
15
18
|
"effecttsgo/catch-to-ignore": "warn",
|
|
16
19
|
"effecttsgo/catch-to-or-else-succeed": "warn",
|
|
@@ -50,6 +53,7 @@
|
|
|
50
53
|
"effecttsgo/lazy-effect": "warn",
|
|
51
54
|
"effecttsgo/lazy-promise-in-effect-sync": "warn",
|
|
52
55
|
"effecttsgo/leaking-requirements": "warn",
|
|
56
|
+
"effecttsgo/map-some-to-as-some": "warn",
|
|
53
57
|
"effecttsgo/missing-effect-context": "error",
|
|
54
58
|
"effecttsgo/missing-effect-error": "error",
|
|
55
59
|
"effecttsgo/missing-layer-context": "error",
|
|
@@ -60,9 +64,11 @@
|
|
|
60
64
|
"effecttsgo/new-promise": "warn",
|
|
61
65
|
"effecttsgo/node-builtin-import": "warn",
|
|
62
66
|
"effecttsgo/non-object-effect-service-type": "error",
|
|
67
|
+
"effecttsgo/option-match-to-from-option": "warn",
|
|
63
68
|
"effecttsgo/outdated-api": "warn",
|
|
64
69
|
"effecttsgo/overridden-schema-constructor": "error",
|
|
65
70
|
"effecttsgo/prefer-schema-over-json": "warn",
|
|
71
|
+
"effecttsgo/prefer-succeed-some-or-none": "warn",
|
|
66
72
|
"effecttsgo/prefer-typed-schema-decoder": "warn",
|
|
67
73
|
"effecttsgo/prefer-unsafe-constructor": "warn",
|
|
68
74
|
"effecttsgo/process-env": "warn",
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
"effecttsgo"
|
|
7
7
|
],
|
|
8
8
|
"rules": {
|
|
9
|
+
"effecttsgo/all-of-map-to-for-each": "warn",
|
|
9
10
|
"effecttsgo/catch-all-to-map-error": "warn",
|
|
10
11
|
"effecttsgo/catch-chain-to-first-success-of": "warn",
|
|
11
12
|
"effecttsgo/catch-conditional-refail-to-catch-if": "warn",
|
|
13
|
+
"effecttsgo/catch-die-to-or-die": "warn",
|
|
12
14
|
"effecttsgo/catch-tag-to-catch-reason": "warn",
|
|
13
15
|
"effecttsgo/catch-to-ignore": "warn",
|
|
14
16
|
"effecttsgo/catch-to-or-else-succeed": "warn",
|
|
@@ -19,13 +21,16 @@
|
|
|
19
21
|
"effecttsgo/effect-map-void": "warn",
|
|
20
22
|
"effecttsgo/effect-succeed-with-void": "warn",
|
|
21
23
|
"effecttsgo/flat-map-to-map": "warn",
|
|
24
|
+
"effecttsgo/map-some-to-as-some": "warn",
|
|
22
25
|
"effecttsgo/missed-pipeable-opportunity": "warn",
|
|
23
26
|
"effecttsgo/missing-effect-service-dependency": "warn",
|
|
24
27
|
"effecttsgo/missing-pipeable-signature": "warn",
|
|
25
28
|
"effecttsgo/multiple-catch-tag": "warn",
|
|
26
29
|
"effecttsgo/nested-effect-gen-yield": "warn",
|
|
27
30
|
"effecttsgo/new-schema-class": "warn",
|
|
31
|
+
"effecttsgo/option-match-to-from-option": "warn",
|
|
28
32
|
"effecttsgo/prefer-schema-type-property": "warn",
|
|
33
|
+
"effecttsgo/prefer-succeed-some-or-none": "warn",
|
|
29
34
|
"effecttsgo/prefer-typed-schema-decoder": "warn",
|
|
30
35
|
"effecttsgo/redundant-map-error": "warn",
|
|
31
36
|
"effecttsgo/redundant-or-die": "warn",
|
package/oxlint-schema.json
CHANGED
|
@@ -2236,6 +2236,9 @@
|
|
|
2236
2236
|
"effecttsgo/abort-controller-in-effect": {
|
|
2237
2237
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2238
2238
|
},
|
|
2239
|
+
"effecttsgo/acquire-release-disposable": {
|
|
2240
|
+
"$ref": "#/definitions/RuleNoConfig"
|
|
2241
|
+
},
|
|
2239
2242
|
"effecttsgo/all-of-map-to-for-each": {
|
|
2240
2243
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2241
2244
|
},
|
|
@@ -2245,9 +2248,6 @@
|
|
|
2245
2248
|
"effecttsgo/async-function": {
|
|
2246
2249
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2247
2250
|
},
|
|
2248
|
-
"effecttsgo/catch-die-to-or-die": {
|
|
2249
|
-
"$ref": "#/definitions/RuleNoConfig"
|
|
2250
|
-
},
|
|
2251
2251
|
"effecttsgo/catch-all-to-map-error": {
|
|
2252
2252
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2253
2253
|
},
|
|
@@ -2257,6 +2257,9 @@
|
|
|
2257
2257
|
"effecttsgo/catch-conditional-refail-to-catch-if": {
|
|
2258
2258
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2259
2259
|
},
|
|
2260
|
+
"effecttsgo/catch-die-to-or-die": {
|
|
2261
|
+
"$ref": "#/definitions/RuleNoConfig"
|
|
2262
|
+
},
|
|
2260
2263
|
"effecttsgo/catch-tag-to-catch-reason": {
|
|
2261
2264
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2262
2265
|
},
|
|
@@ -2428,6 +2431,9 @@
|
|
|
2428
2431
|
"effecttsgo/non-object-effect-service-type": {
|
|
2429
2432
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2430
2433
|
},
|
|
2434
|
+
"effecttsgo/option-match-to-from-option": {
|
|
2435
|
+
"$ref": "#/definitions/RuleNoConfig"
|
|
2436
|
+
},
|
|
2431
2437
|
"effecttsgo/outdated-api": {
|
|
2432
2438
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2433
2439
|
},
|
|
@@ -2440,6 +2446,9 @@
|
|
|
2440
2446
|
"effecttsgo/prefer-schema-type-property": {
|
|
2441
2447
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2442
2448
|
},
|
|
2449
|
+
"effecttsgo/prefer-succeed-some-or-none": {
|
|
2450
|
+
"$ref": "#/definitions/RuleNoConfig"
|
|
2451
|
+
},
|
|
2443
2452
|
"effecttsgo/prefer-typed-schema-decoder": {
|
|
2444
2453
|
"$ref": "#/definitions/RuleNoConfig"
|
|
2445
2454
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/tsgo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.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.
|
|
45
|
-
"@effect/tsgo-win32-arm64": "0.
|
|
46
|
-
"@effect/tsgo-linux-x64": "0.
|
|
47
|
-
"@effect/tsgo-linux-
|
|
48
|
-
"@effect/tsgo-
|
|
49
|
-
"@effect/tsgo-
|
|
50
|
-
"@effect/tsgo-darwin-arm64": "0.
|
|
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"
|
|
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
|
+
"acquireReleaseDisposable": {
|
|
1819
|
+
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
1820
|
+
"default": "suggestion",
|
|
1821
|
+
"description": "Suggests Effect.acquireDisposable when Effect.acquireRelease only invokes the acquired resource's disposal protocol"
|
|
1822
|
+
},
|
|
1818
1823
|
"allOfMapToForEach": {
|
|
1819
1824
|
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
1820
1825
|
"default": "suggestion",
|
|
@@ -1830,11 +1835,6 @@
|
|
|
1830
1835
|
"default": "off",
|
|
1831
1836
|
"description": "Warns when declaring async functions and suggests using Effect values and Effect.gen for async control flow"
|
|
1832
1837
|
},
|
|
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
|
-
},
|
|
1838
1838
|
"catchAllToMapError": {
|
|
1839
1839
|
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
1840
1840
|
"default": "suggestion",
|
|
@@ -1850,6 +1850,11 @@
|
|
|
1850
1850
|
"default": "suggestion",
|
|
1851
1851
|
"description": "Suggests Effect.catchIf, Effect.catchCauseIf, or Effect.catchTag for conditional catch handlers that re-fail their untouched input"
|
|
1852
1852
|
},
|
|
1853
|
+
"catchDieToOrDie": {
|
|
1854
|
+
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
1855
|
+
"default": "suggestion",
|
|
1856
|
+
"description": "Suggests using Effect.orDie instead of Effect.catch or Effect.catchAll with an identity-forwarding Effect.die handler"
|
|
1857
|
+
},
|
|
1853
1858
|
"catchTagToCatchReason": {
|
|
1854
1859
|
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
1855
1860
|
"default": "suggestion",
|
|
@@ -2135,6 +2140,11 @@
|
|
|
2135
2140
|
"default": "error",
|
|
2136
2141
|
"description": "Ensures Effect.Service types are objects, not primitives"
|
|
2137
2142
|
},
|
|
2143
|
+
"optionMatchToFromOption": {
|
|
2144
|
+
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
2145
|
+
"default": "suggestion",
|
|
2146
|
+
"description": "Suggests Effect.fromOption when Option.match or an Option tag conditional only converts Some to Effect.succeed and None to Effect.fail"
|
|
2147
|
+
},
|
|
2138
2148
|
"outdatedApi": {
|
|
2139
2149
|
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
2140
2150
|
"default": "warning",
|
|
@@ -2155,6 +2165,11 @@
|
|
|
2155
2165
|
"default": "off",
|
|
2156
2166
|
"description": "Disallows Schema.Schema.Type\u003ctypeof X\u003e in favor of typeof X.Type"
|
|
2157
2167
|
},
|
|
2168
|
+
"preferSucceedSomeOrNone": {
|
|
2169
|
+
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
2170
|
+
"default": "suggestion",
|
|
2171
|
+
"description": "Suggests using Effect.succeedNone or Effect.succeedSome instead of wrapping Option.none or Option.some with Effect.succeed"
|
|
2172
|
+
},
|
|
2158
2173
|
"preferTypedSchemaDecoder": {
|
|
2159
2174
|
"$ref": "#/definitions/effectLanguageServicePluginSeverityDefinition",
|
|
2160
2175
|
"default": "suggestion",
|