Skip to content

refactor: remove all biome dependencies#677

Merged
psteinroe merged 15 commits intomainfrom
refactor/biome-dependencies
Feb 13, 2026
Merged

refactor: remove all biome dependencies#677
psteinroe merged 15 commits intomainfrom
refactor/biome-dependencies

Conversation

@psteinroe
Copy link
Copy Markdown
Collaborator

@psteinroe psteinroe commented Feb 10, 2026

Summary

Removes all biome_* crate dependencies from the workspace.

biome_string_caseconvert_case

Drop-in replacement. convert_case was already a workspace dependency.

biome_js_factory, biome_js_formatter, biome_js_syntax, biome_rowan → string-based TS codegen

The TS codegen only produces interfaces, type aliases, and one factory function. Building a full JS AST for that was overkill. Raw string templates do the same job with zero new dependencies.

biome_deserialize, biome_deserialize_macrospgls_configuration_macros + inline Merge/StringSet

  • New proc-macro crate pgls_configuration_macros with Merge and Partial derives (vendored from biome, ~250 lines total, pointed at pgls_configuration::Merge instead of biome_deserialize::Merge).
  • Merge trait (49 lines, zero deps) and StringSet wrapper (86 lines, only indexmap) inlined into pgls_configuration::utils.
  • Deserializable derive and DeserializableValidator dropped entirely — never called at runtime.

@psteinroe psteinroe force-pushed the refactor/biome-dependencies branch 2 times, most recently from 7f20bb7 to 85ac796 Compare February 10, 2026 09:20
convert_case splits on digit boundaries (e.g. "Md5" → "md_5") unlike
the old biome_string_case behavior ("Md5" → "md5"). Add a to_snake_case
helper that removes digit boundaries. Also fix clippy uninlined format
args warning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@psteinroe psteinroe force-pushed the refactor/biome-dependencies branch from 85ac796 to 1064021 Compare February 10, 2026 09:33
| "pglinter/base"
| "pglinter/cluster"
| "pglinter/schema";
export type Category = "lint/safety/addSerialColumn" | "lint/safety/addingFieldWithDefault" | "lint/safety/addingForeignKeyConstraint" | "lint/safety/addingNotNullField" | "lint/safety/addingPrimaryKeyConstraint" | "lint/safety/addingRequiredField" | "lint/safety/banCharField" | "lint/safety/banConcurrentIndexCreationInTransaction" | "lint/safety/banDropColumn" | "lint/safety/banDropDatabase" | "lint/safety/banDropNotNull" | "lint/safety/banDropTable" | "lint/safety/banTruncateCascade" | "lint/safety/changingColumnType" | "lint/safety/constraintMissingNotValid" | "lint/safety/creatingEnum" | "lint/safety/disallowUniqueConstraint" | "lint/safety/lockTimeoutWarning" | "lint/safety/multipleAlterTable" | "lint/safety/preferBigInt" | "lint/safety/preferBigintOverInt" | "lint/safety/preferBigintOverSmallint" | "lint/safety/preferIdentity" | "lint/safety/preferJsonb" | "lint/safety/preferRobustStmts" | "lint/safety/preferTextField" | "lint/safety/preferTimestamptz" | "lint/safety/renamingColumn" | "lint/safety/renamingTable" | "lint/safety/requireConcurrentIndexCreation" | "lint/safety/requireConcurrentIndexDeletion" | "lint/safety/runningStatementWhileHoldingAccessExclusive" | "lint/safety/transactionNesting" | "pglinter/extensionNotInstalled" | "pglinter/ruleDisabledInExtension" | "pglinter/base/compositePrimaryKeyTooManyColumns" | "pglinter/base/howManyObjectsWithUppercase" | "pglinter/base/howManyRedudantIndex" | "pglinter/base/howManyTableWithoutIndexOnFk" | "pglinter/base/howManyTableWithoutPrimaryKey" | "pglinter/base/howManyTablesNeverSelected" | "pglinter/base/howManyTablesWithFkMismatch" | "pglinter/base/howManyTablesWithFkOutsideSchema" | "pglinter/base/howManyTablesWithReservedKeywords" | "pglinter/base/howManyTablesWithSameTrigger" | "pglinter/base/howManyUnusedIndex" | "pglinter/base/severalTableOwnerInSchema" | "pglinter/cluster/passwordEncryptionIsMd5" | "pglinter/cluster/pgHbaEntriesWithMethodTrustOrPasswordShouldNotExists" | "pglinter/cluster/pgHbaEntriesWithMethodTrustShouldNotExists" | "pglinter/schema/ownerSchemaIsInternalRole" | "pglinter/schema/schemaOwnerDoNotMatchTableOwner" | "pglinter/schema/schemaPrefixedOrSuffixedWithEnvt" | "pglinter/schema/schemaWithDefaultRoleNotGranted" | "pglinter/schema/unsecuredPublicSchema" | "splinter/performance/authRlsInitplan" | "splinter/performance/duplicateIndex" | "splinter/performance/multiplePermissivePolicies" | "splinter/performance/noPrimaryKey" | "splinter/performance/tableBloat" | "splinter/performance/unindexedForeignKeys" | "splinter/performance/unusedIndex" | "splinter/security/authUsersExposed" | "splinter/security/extensionInPublic" | "splinter/security/extensionVersionsOutdated" | "splinter/security/fkeyToAuthUnique" | "splinter/security/foreignTableInApi" | "splinter/security/functionSearchPathMutable" | "splinter/security/insecureQueueExposedInApi" | "splinter/security/materializedViewInApi" | "splinter/security/policyExistsRlsDisabled" | "splinter/security/rlsDisabledInPublic" | "splinter/security/rlsEnabledNoPolicy" | "splinter/security/rlsReferencesUserMetadata" | "splinter/security/securityDefinerView" | "splinter/security/unsupportedRegTypes" | "stdin" | "check" | "format" | "configuration" | "database/connection" | "internalError/io" | "internalError/runtime" | "internalError/fs" | "flags/invalid" | "project" | "typecheck" | "plpgsql_check" | "internalError/panic" | "syntax" | "dummy" | "lint" | "lint/performance" | "lint/safety" | "splinter" | "splinter/performance" | "splinter/security" | "pglinter" | "pglinter/base" | "pglinter/cluster" | "pglinter/schema";
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

läuft der formatter hier nicht mehr drüber?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol biome war falsch konfiguriert - habs gefixt

impl FromStr for StringSet {
type Err = &'static str;

fn from_str(_s: &str) -> Result<Self, Self::Err> {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wird das genutzt?
wenn ja, sollte hier vermutlich der &str übergeben werden

for item in union_type.types().iter() {
result.push(item.unwrap());
// Flatten nested union types
if item.contains(" | ") {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

site note, ich glaube das splittet literals falsch wenn ein string ein "|" enthält, wie z.B. safety|linting.
aber haben wir ja nicht, deswegen sollte es passen

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jaa, und wenns nicht passt sehen wir es direkt im codegen

@psteinroe psteinroe enabled auto-merge (squash) February 13, 2026 09:58
@psteinroe psteinroe merged commit 6e9c949 into main Feb 13, 2026
9 checks passed
@psteinroe psteinroe deleted the refactor/biome-dependencies branch February 13, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants