fix: ensure roles and connections are always resolved from defaults in getConnEnvOptions #443
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.
fix: ensure roles and connections are always resolved from defaults in getConnEnvOptions
Summary
Fixes
TypeError: Cannot read properties of undefined (reading 'anonymous')when runningpgpm admin-users bootstrap --yes.The root cause was that
getConnEnvOptions()returnedopts.dbdirectly, which could haverolesorconnectionsasundefinedif a config file or environment explicitly set them toundefined, bypassing deepmerge's default preservation.Changes:
getConnEnvOptionsnow explicitly spreads defaults forrolesandconnections, ensuring they're always definedgenerateCreateBaseRolesSQL,generateCreateUserSQL,generateCreateTestUsersSQL,generateRemoveUserSQL) to throw clear errors if roles/connections are still undefinedReview & Testing Checklist for Human
pgpm admin-users bootstrap --yesin a fresh environment to verify the fix works end-to-endroles: { anonymous: undefined }(per-key undefined), the spread operator will still overwrite defaults withundefined. The validation will catch this, but it's not a complete fix for that pattern.@pgpmjs/corewith old@pgpmjs/env), ensure both packages are released in the same publish cycleappandadminas connection keys. Verify no other connection types exist that would be dropped.Recommended test plan:
Notes
pgpm.config.jsorpgpm.jsonif roles are undefinedjest.config.jstopgpm/envpackage to enable running the new testsLink to Devin run: https://app.devin.ai/sessions/3a8e8acb237e4b08bc1878defcf041f0
Requested by: Dan Lynch (@pyramation)