You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I started playing around with #994 and at the time was trying to refactor some of our config parsing, but realized I was fighting Zod most of the time. I didn't realize it until well into refactoring that Zod doesn't carry through strong types (i.e. string literals from const types), so you have to both define the Zod type/validation/parsing and the TS transformation.
This seemed like a lot more than we need right now, especially if we feel good about leaning on TS for most of the validation, so I started a new config parser that is pure TS and carries strong types. It's made up of small composable pieces that should hopefully make it easier to maintain, extend, etc.
I'm sure we can extract some common patterns into a Zod-like interface, but we can figure that out later.
TODO:
figure out why the union of config root-level tables and namespace-level tables don't intersect properly in some cases
figure out what to do about tables with the same name but diff namespaces (this doesn't work well when organizing config output by table key)
prototype plugin system with input/output interfaces
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Closing for now. We added a small incremental improvement in #1826 until we can get to the full config overhaul and will likely start fresh when we get to it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I started playing around with #994 and at the time was trying to refactor some of our config parsing, but realized I was fighting Zod most of the time. I didn't realize it until well into refactoring that Zod doesn't carry through strong types (i.e. string literals from const types), so you have to both define the Zod type/validation/parsing and the TS transformation.
This seemed like a lot more than we need right now, especially if we feel good about leaning on TS for most of the validation, so I started a new config parser that is pure TS and carries strong types. It's made up of small composable pieces that should hopefully make it easier to maintain, extend, etc.
I'm sure we can extract some common patterns into a Zod-like interface, but we can figure that out later.
TODO: