a99ef1daae96f2dccc12a976d5cbea8d51e3e5b7
The displayName claim-preference logic (name → preferred_username → email → sub fallback) was duplicated verbatim in me.ts and events.ts resolveUserId. Extract it to auth/user.ts as deriveDisplayName and use it in both call sites, so the rule has one definition. Update the events.test.ts user.js mock to keep the real helper (spread importActual) while stubbing only upsertUser.
The file is empty.
Languages
TypeScript
97.3%
JavaScript
1.6%
CSS
0.9%
Dockerfile
0.1%