Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/update-effect-beta-79.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@effect/tsgo": patch
---

Update Effect v4 package references and embedded test fixtures to `4.0.0-beta.83`.
4 changes: 2 additions & 2 deletions .specs/tsgo-cli-only.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Define `@effect/tsgo` as a CLI-only package, with command-driven usage and no li
3. The package must not define or maintain a `/lib` distribution contract for consumers.
4. Consumers must not be expected to import exported helper functions from `@effect/tsgo`.
5. Any behavior currently accessible by exported functions must be available through CLI commands instead.
6. The CLI package dependency on `effect` must use this exact package version target: `4.0.0-beta.11`.
7. The CLI package dependency on `@effect/platform-node` must use this exact package version target: `4.0.0-beta.11`.
6. The CLI package dependency on `effect` must use this exact package version target: `4.0.0-beta.83`.
7. The CLI package dependency on `@effect/platform-node` must use this exact package version target: `4.0.0-beta.83`.
8. CLI builds must use a coherent Effect pre-release dependency graph: resolved `@effect/*` packages consumed by the CLI must be mutually compatible with the pinned `effect` target and must not mix incompatible beta lines.
9. CI and release workflows that build the CLI must use lockfile-immutable dependency installation so dependency resolution does not drift between local and CI runs.
10. Any intentional dependency graph update for CLI runtime packages must be accompanied by lockfile updates and successful CLI build validation in the same change.
Expand Down
6 changes: 3 additions & 3 deletions _packages/tsgo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@
"@effect/tsgo-darwin-arm64": "workspace:*"
},
"devDependencies": {
"@effect/platform-node": "^4.0.0-beta.66",
"@effect/platform-node-shared": "^4.0.0-beta.66",
"@effect/platform-node": "^4.0.0-beta.83",
"@effect/platform-node-shared": "^4.0.0-beta.83",
"@types/node": "^24.3.0",
"tsdown": "^0.20.1",
"typescript": "^5.9.2",
"effect": "^4.0.0-beta.66",
"effect": "^4.0.0-beta.83",
"vitest": "^3.2.1"
}
}
1 change: 1 addition & 0 deletions go.work.sum
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=
Expand Down
6 changes: 4 additions & 2 deletions internal/typeparser/effect_model_type.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ func isEffectModelTypeSourceFile(_ *TypeParser, c *checker.Checker, sf *ast.Sour
if c.TryGetMemberInModuleExportsAndProperties("Class", moduleSym) == nil {
return false
}
// Generated is unique to Model, not present in Schema
if c.TryGetMemberInModuleExportsAndProperties("Generated", moduleSym) == nil {
// Generated was split into GeneratedByDb / GeneratedByApp in newer v4 betas.
if c.TryGetMemberInModuleExportsAndProperties("Generated", moduleSym) == nil &&
c.TryGetMemberInModuleExportsAndProperties("GeneratedByDb", moduleSym) == nil &&
c.TryGetMemberInModuleExportsAndProperties("GeneratedByApp", moduleSym) == nil {
return false
}
// FieldOption is unique to v4 Model
Expand Down
134 changes: 67 additions & 67 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions testdata/baselines/reference/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
<tr><td><code>unsafeEffectTypeAssertion</code></td><td>➖</td><td>🔧</td><td>Detects unsafe type assertions that narrow Effect, Stream, or Layer error or requirements channels</td><td>✓</td><td>✓</td></tr>
<tr><td colspan="6"><strong>Style</strong> <em>Cleanup, consistency, and idiomatic Effect code.</em></td></tr>
<tr><td><code>catchAllToMapError</code></td><td>💡</td><td>🔧</td><td>Suggests using Effect.mapError instead of Effect.catch + Effect.fail</td><td>✓</td><td>✓</td></tr>
<tr><td><code>catchToOrElseSucceed</code></td><td>💡</td><td>🔧</td><td>Suggests using Effect.orElseSucceed instead of Effect.catch + Effect.succeed</td><td>✓</td><td>✓</td></tr>
<tr><td><code>deterministicKeys</code></td><td>➖</td><td>🔧</td><td>Enforces deterministic naming for service/tag/error identifiers based on class names</td><td>✓</td><td>✓</td></tr>
<tr><td><code>effectDoNotation</code></td><td>➖</td><td></td><td>Suggests using Effect.gen or Effect.fn instead of the Effect.Do notation helpers</td><td>✓</td><td>✓</td></tr>
<tr><td><code>effectFnOpportunity</code></td><td>💡</td><td>🔧</td><td>Suggests using Effect.fn for functions that return an Effect</td><td>✓</td><td>✓</td></tr>
Expand All @@ -103,8 +104,11 @@ Some diagnostics are off by default or have a default severity of suggestion, bu
<tr><td><code>missingEffectServiceDependency</code></td><td>➖</td><td></td><td>Checks that Effect.Service dependencies satisfy all required layer inputs</td><td>✓</td><td></td></tr>
<tr><td><code>multipleCatchTag</code></td><td>💡</td><td></td><td>Suggests collapsing consecutive Effect.catchTag transformations into a single Effect.catchTags call when semantics stay equivalent</td><td></td><td>✓</td></tr>
<tr><td><code>nestedEffectGenYield</code></td><td>➖</td><td></td><td>Warns when yielding a nested bare Effect.gen inside an existing Effect generator context</td><td>✓</td><td>✓</td></tr>
<tr><td><code>newSchemaClass</code></td><td>➖</td><td>🔧</td><td>Suggests using Schema make instead of new for Schema classes</td><td></td><td>✓</td></tr>
<tr><td><code>redundantMapError</code></td><td>💡</td><td></td><td>Suggests hoisting a repeated trailing Effect.mapError from every yield in an Effect generator</td><td>✓</td><td>✓</td></tr>
<tr><td><code>redundantOrDie</code></td><td>💡</td><td></td><td>Suggests hoisting a repeated trailing Effect.orDie from every yield in an Effect generator</td><td>✓</td><td>✓</td></tr>
<tr><td><code>redundantSchemaTagIdentifier</code></td><td>💡</td><td>🔧</td><td>Suggests removing redundant identifier argument when it equals the tag value in Schema.TaggedClass/TaggedError/TaggedRequest</td><td>✓</td><td>✓</td></tr>
<tr><td><code>schemaNumber</code></td><td>💡</td><td>🔧</td><td>Suggests Schema.Finite and Schema.FiniteFromString instead of Schema.Number APIs when describing domain numbers</td><td></td><td>✓</td></tr>
<tr><td><code>schemaStructWithTag</code></td><td>💡</td><td>🔧</td><td>Suggests using Schema.TaggedStruct instead of Schema.Struct with _tag field</td><td>✓</td><td>✓</td></tr>
<tr><td><code>schemaUnionOfLiterals</code></td><td>➖</td><td>🔧</td><td>Suggests combining multiple Schema.Literal calls in Schema.Union into a single Schema.Literal</td><td>✓</td><td></td></tr>
<tr><td><code>serviceNotAsClass</code></td><td>➖</td><td>🔧</td><td>Warns when Context.Service is used as a variable instead of a class declaration</td><td></td><td>✓</td></tr>
Expand Down
Loading
Loading