Files
Booster-role/.codegraph/graph.db
T

759 lines
340 KiB
Plaintext
Raw Normal View History

SQLite format 3@ U
.r 
ø ±UÇ!*
Ó
7 
¾ j  ±
ç3
!!„1tablescan_cachescan_cacheCREATE TABLE scan_cache (
path TEXT PRIMARY KEY,
hash TEXT NOT NULL,
mtime REAL NOT NULL,
size REAL,
language TEXT,
scannerVersion TEXT,
nodes TEXT NOT NULL,
localEdges TEXT NOT NULL,
importMapEntries TEXT NOT NULL
)3G!indexsqlite_autoindex_scan_cache_1scan_cacheL )gindexidx_edges_typeedges
CREATE INDEX idx_edges_type ON edges(type)
R -oindexidx_edges_targetedges CREATE INDEX idx_edges_target ON edges(target)
R
-oindexidx_edges_sourceedges CREATE INDEX idx_edges_source ON edges(source)
wƒMtableedgesedges CREATE TABLE edges (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
source TEXT NOT NULL,
target TEXT NOT NULL,
evidence TEXT,
confidence REAL,
resolution TEXT,
candidates TEXT
)) =indexsqlite_autoindex_edges_1edges
L)gindexidx_nodes_typenodesCREATE INDEX idx_nodes_type ON nodes(type)
L)gindexidx_nodes_pathnodesCREATE INDEX idx_nodes_path ON nodes(path)
L)gindexidx_nodes_namenodesCREATE INDEX idx_nodes_name ON nodes(name)
ƒktablenodesnodesCREATE TABLE nodes (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
name TEXT NOT NULL,
path TEXT NOT NULL,
language TEXT,
line INTEGER,
startLine INTEGER,
endLine INTEGER,
summary TEXT
))=indexsqlite_autoindex_nodes_1nodesp3tablemetadatametadataCREATE TABLE metadata (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
)/Cindexsqlite_autoindex_metadata_1metadata
ÝíÜ´yfÚÈk
ÿ
Ý
%/qualityScore0.983206106870229 5relationshipCoverage1P edgeTypes{"imports":47,"exports":79,"depends-on":28,"calls":107,"extends":1}I
nodeTypes{"file":24,"module":32,"function":30,"class":10,"method":39} !edgesCount262!nodesCount135 %ignoredPaths["node_modules",".git","dist","build",".next","vendor",".codegraph/cache",".gradle","generated",".idea","out","captures"]%filesScanned24)languages["typescript"]9root/mnt/code/Booster-role&#=generatedAt2026-06-05T17:38:46.525Zversion0.1.0'schemaVersion3
6`|«Óš¼n6GÊïã%qualityScore
5relationshipCoverage
edgeTypes
nodeTypes
!edgesCount !nodesCount%ignoredPaths%filesScanned
languagesroot#generatedAt version' schemaVersionëUûöñë
½
f
 × ¦ ^ Ã T
í
v
Ô   x ŸJø xâ4¥t"¡útâ' +Y!symbol:src/discord/interactionHandler.test.ts:FakeInteractionclassFakeInteractionsrc/discord/interactionHandler.test.tstypescript&
cAY!file:src/discord/interactionHandler.test.tsfileinteractionHandler.test.tssrc/discord/interactionHandler.test.tstypescript$% ;[!symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdatefunctionhandleGuildMemberUpdatesrc/discord/events/guildMemberUpdate.tstypescript $
e5[!file:src/discord/events/guildMemberUpdate.tsfileguildMemberUpdate.tssrc/discord/events/guildMemberUpdate.tstypescriptP#
A33module:./guildMemberUpdatemodule./guildMemberUpdate./guildMemberUpdate/"
+module:bun:testmodulebun:testbun:test ! e!symbol:src/discord/events/guildMemberUpdate.test.ts:memberfunctionmembersrc/discord/events/guildMemberUpdate.test.tstypescript + 99esymbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoostmethodremoveRoleForLostBoostsrc/discord/events/guildMemberUpdate.test.ts  #e!symbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceclassFakeServicesrc/discord/events/guildMemberUpdate.test.tstypescript

o?e!file:src/discord/events/guildMemberUpdate.test.tsfileguildMemberUpdate.test.tssrc/discord/events/guildMemberUpdate.test.tstypescriptt
_+U!file:src/discord/commands/booster-role.tsfilebooster-role.tssrc/discord/commands/booster-role.tstypescriptw
m37!symbol:src/discord/client.ts:createDiscordClientfunctioncreateDiscordClientsrc/discord/client.tstypescriptP
A7!file:src/discord/client.tsfileclient.tssrc/discord/client.tstypescriptS
C55module:./interactionHandlermodule./interactionHandler./interactionHandlere
OAAmodule:./events/guildMemberUpdatemodule./events/guildMemberUpdate./events/guildMemberUpdatez
]OOmodule:../services/discordRoleRepositorymodule../services/discordRoleRepository../services/discordRoleRepository
aSSmodule:../services/drizzleBoosterRoleStoremodule../services/drizzleBoosterRoleStore../services/drizzleBoosterRoleStoreq
WIImodule:../services/boosterRoleServicemodule../services/boosterRoleService../services/boosterRoleService&
%module:../dbmodule../db../db2
-module:../configmodule../config../config5
/!!module:discord.jsmodulediscord.jsdiscord.jsi
_+1!symbol:src/discord/bot.ts:botRolePositionfunctionbotRolePositionsrc/discord/bot.tstypescript>>>u
k71!symbol:src/discord/bot.ts:resolveAnchorPositionfunctionresolveAnchorPositionsrc/discord/bot.tstypescript777e
['1!symbol:src/discord/bot.ts:memberHasRolefunctionmemberHasRolesrc/discord/bot.tstypescript''5m
c/1!symbol:src/discord/bot.ts:attachBotHandlersfunctionattachBotHandlerssrc/discord/bot.tstypescript
%G
;1!file:src/discord/bot.tsfilebot.tssrc/discord/bot.tstypescriptP
A33module:drizzle-orm/pg-coremoduledrizzle-orm/pg-coredrizzle-orm/pg-coreF
7-!file:src/db/schema.tsfileschema.tssrc/db/schema.tstypescript/
+module:./schemamodule./schema./schema/
+module:postgresmodulepostgrespostgres\
I;;module:drizzle-orm/postgres-jsmoduledrizzle-orm/postgres-jsdrizzle-orm/postgres-jsU
K+!symbol:src/db/index.ts:createDbfunctioncreateDbsrc/db/index.tstypescriptC
5+!file:src/db/index.tsfileindex.tssrc/db/index.tstypescript]
I)?!file:src/config/permissions.tsfilepermissions.tssrc/config/permissions.tstypescripta
W!3!symbol:src/config/index.ts:requireEnvfunctionrequireEnvsrc/config/index.tstypescripta
W!3!symbol:src/config/index.ts:loadConfigfunctionloadConfigsrc/config/index.tstypescript
K
=3!file:src/config/index.tsfileindex.tssrc/config/index.tstypescript8
1##module:drizzle-kitmoduledrizzle-kitdrizzle-kitP
9//!file:drizzle.config.tsfiledrizzle.config.tsdrizzl?<i:G$'¼&¼"^ y  à
a7lIà¦Û
uñ
de
: Þ
q¼Ç® ¸
Ì ˜È³
ë
ŠÏzÛLj^þ.
 
Î D ?
ÿ
O Ü † =ÿŒ!lÖ!zí¤´i0à÷³*ß*ìh¯Dz5module:./discord/botS+module:./configR/file:src/index.tsQ Emodule:../config/permissionsP1gsymbol:src/domain/roleGuards.ts:normalizeNameO5osymbol:src/domain/roleGuards.ts:normalizeHexColorN4msymbol:src/domain/roleGuards.ts:validateRoleNameM<}symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeL=symbol:src/domain/roleGuards.ts:assertCosmeticPermissionsK=symbol:src/domain/roleGuards.ts:assertCanManageStoredRoleJ=symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableI!Gfile:src/domain/roleGuards.tsH3module:./roleGuardsG&Qfile:src/domain/roleGuards.test.tsFAsymbol:src/domain/boostEligibility.ts:assertBoostEligibilityE'Sfile:src/domain/boostEligibility.tsD?module:./boostEligibilityC,]file:src/domain/boostEligibility.test.tsB"Imodule:./commands/booster-roleAJsymbol:src/discord/registerCommands.ts:registerGuildCommandsWithToken@Asymbol:src/discord/registerCommands.ts:registerGuildCommands?(Ufile:src/discord/registerCommands.ts>?module:./registerCommands=C symbol:src/discord/registerCommands.test.ts:FakeRestClient.put<?symbol:src/discord/registerCommands.test.ts:FakeRestClient;-_file:src/discord/registerCommands.test.ts:-module:../logger99wsymbol:src/discord/interactionHandler.ts:optionalIcon88usymbol:src/discord/interactionHandler.ts:requireIcon7Bsymbol:src/discord/interactionHandler.ts:requireAdministrator68usymbol:src/discord/interactionHandler.ts:requireUser5:ysymbol:src/discord/interactionHandler.ts:requireString4;{symbol:src/discord/interactionHandler.ts:requireGuildId3@symbol:src/discord/interactionHandler.ts:toUserErrorMessage2?symbol:src/discord/interactionHandler.ts:handleInteraction1*Yfile:src/discord/interactionHandler.ts0Isymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRole/Jsymbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon.Jsymbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole-Isymbol:src/discord/interactionHandler.test.ts:FakeService.renameRole,Hsymbol:src/discord/interactionHandler.test.ts:FakeService.claimRole+=symbol:src/discord/interactionHandler.test.ts:FakeService*Hsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply)U-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand(Bsymbol:src/discord/interactionHandler.test.ts:FakeInteraction'/cfile:src/discord/interactionHandler.test.ts&Ksymbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate%0efile:src/discord/events/guildMemberUpdate.ts$Amodule:./guildMemberUpdate#+module:bun:test"?symbol:src/discord/events/guildMemberUpdate.test.ts:member![9symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost D symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService5ofile:src/discord/events/guildMemberUpdate.test.ts-_file:src/discord/commands/booster-role.ts4msymbol:src/discord/client.ts:createDiscordClientAfile:src/discord/client.tsCmodule:./interactionHandler%Omodule:./events/guildMemberUpdate,]module:../services/discordRoleRepository.amodule:../services/drizzleBoosterRoleStore)Wmodule:../services/boosterRoleService%module:../db-module:../config/module:discord.js-_symbol:src/discord/bot.ts:botRolePosition3ksymbol:src/discord/bot.ts:resolveAnchorPosition+[symbol:src/discord/bot.ts:memberHasRole/csymbol:src/discord/bot.ts:attachBotHandlers;file:src/discord/bot.tsAmodule:drizzle-orm/pg-core
7file:src/db/schema.ts +module:./schema +module:postgres
"Imodule:drizzle-orm/postgres-js #Ksymbol:src/db/index.ts:createDb5file:src/db/index.ts"Ifile:src/config/permissions.ts)Wsymbol:src/config/index.ts:requireEnv)Wsymbol:src/config/index.ts:loadConfig=file:s%?symbol:src/discord/registerCommands.test.ts:FakeRestClient;
m© kŸmÕ¼ š|.T
¦Ý
Ú Q ? * 
C
öþ K
KM¬¸q Û jO
Ž ª±
s ý ß
 ÂJ
½
Ž
¼ÅÃÆ
[ œž
èfœƒ
Ð2hŒ ^ö`,·ŸÛ'gëÕ
¢¨
ž
*
 .ôÎ ^ ï D ÄAw¿ð
hô — … ¨Z b } } 3 
ö;
sE  º ɰ  ¹ ò âÚ
\
93? moõ #Y ­ä%../db/schema#drizzle-orm delete create!findByUserƒ;DrizzleBoosterRoleStoreAdrizzleBoosterRoleStore.ts+toDiscordColors
fetchRole+resolvePosition~!deleteRole}!removeRole|!assignRole{!updateRolez!createRoley
listRolesx7DiscordRoleRepositoryw=discordRoleRepository.tsv5../domain/roleGuardsuA../domain/boostEligibilityt3ignoreRollbackErrors'getUserRecordr-validateRoleIconq'rollbackClaimp9removeRoleForLostBoosto!deleteRolen#setRoleIconm#recolorRolel!renameRolek
claimRolej1BoosterRoleServicei7boosterRoleService.tsh5./boosterRoleServiceg!deleteRolef!removeRolee!assignRoled!updateRolec!createRoleb
listRolesa1FakeRoleRepository`
create_9FailingCreateRoleStore^
delete]
create\!findByUser[+MemoryRoleStoreZAboosterRoleService.test.tsY winstonX
logger.tsW ./loggerVA./discord/registerCommandsU-./discord/clientT'./discord/botS ./configR index.tsQ7../config/permissionsP'normalizeNameO/normalizeHexColorN-validateRoleNameM=assertRolePositionIsSafeL?assertCosmeticPermissionsK?assertCanManageStoredRoleJ?assertRoleNameIsAvailableI'roleGuards.tsH%./roleGuardsG1roleGuards.test.tsF9assertBoostEligibilityE3boostEligibility.tsD1./boostEligibilityC=boostEligibility.test.tsB;./commands/booster-roleA"IregisterGuildCommandsWithToken@7registerGuildCommands?3registerCommands.ts>1./registerCommands=put<)FakeRestClient;=registerCommands.test.ts:
../logger9%optionalIcon8#requireIcon75requireAdministrator6#requireUser5'requireString4)requireGuildId31toUserErrorMessage2/handleInteraction17interactionHandler.ts0!deleteRole/#setRoleIcon.#recolorRole-!renameRole,
claimRole+#FakeService* reply)1isChatInputCommand(+FakeInteraction'AinteractionHandler.test.ts&;handleGuildMemberUpdate%5guildMemberUpdate.ts$3./guildMemberUpdate# bun:test"
member!9removeRoleForLostBoost #FakeService?guildMemberUpdate.test.ts+booster-role.ts3createDiscordClient
client.ts5./interactionHandlerA./events/guildMemberUpdate%O../services/discordRoleRepository'S../services/drizzleBoosterRoleStore"I../services/boosterRoleService ../db
../config!discord.js+botRolePosition7resolveAnchorPosition'memberHasRole/attachBotHandlers
bot.ts3drizzle-orm/pg-core
schema.ts ./schema postgres
;drizzle-orm/postgres-js createDb index.ts)permissions.ts!requireEnv!loadConfig index.ts#drizzle-kit/ drizzle.config.tsÖ(Ö ÷-
ßžÝóÞ¿
À a
§²e% yhÛê1ë$ëuaMÓ¼¥Žw
s
J
 è · 5 Þ ³ ˆ ] 2 
Ü
±
[
5
 é à w Q + Î¥|Aùµ{X6ëαwZ= h<丌`4ܰX,ìÅžwP)Û´f?5../domain/roleGuardsuA../domain/boostEligibilityt&Qsrc/services/boosterRoleService.tss&Qsrc/services/boosterRoleService.tsr&Qsrc/services/boosterRoleService.tsq&Qsrc/services/boosterRoleService.tsp&Qsrc/services/boosterRoleService.tso&Qsrc/services/boosterRoleService.tsn&Qsrc/services/boosterRoleService.tsm&Qsrc/services/boosterRoleService.tsl&Qsrc/services/boosterRoleService.tsk&Qsrc/services/boosterRoleService.tsj&Qsrc/services/boosterRoleService.tsi&Qsrc/services/boosterRoleService.tsh5./boosterRoleServiceg+[src/services/boosterRoleService.test.tsf+[src/services/boosterRoleService.test.tse+[src/services/boosterRoleService.test.tsd+[src/services/boosterRoleService.test.tsc+[src/services/boosterRoleService.test.tsb+[src/services/boosterRoleService.test.tsa+[src/services/boosterRoleService.test.ts`+[src/services/boosterRoleService.test.ts_+[src/services/boosterRoleService.test.ts^+[src/services/boosterRoleService.test.ts]+[src/services/boosterRoleService.test.ts\+[src/services/boosterRoleService.test.ts[+[src/services/boosterRoleService.test.tsZ+[src/services/boosterRoleService.test.tsY winstonX'src/logger.tsW ./loggerVA./discord/registerCommandsU-./discord/clientT'./discord/botS ./configR%src/index.tsQ7../config/permissionsP=src/domain/roleGuards.tsO=src/domain/roleGuards.tsN=src/domain/roleGuards.tsM=src/domain/roleGuards.tsL=src/domain/roleGuards.tsK=src/domain/roleGuards.tsJ=src/domain/roleGuards.tsI=src/domain/roleGuards.tsH%./roleGuardsG!Gsrc/domain/roleGuards.test.tsF"Isrc/domain/boostEligibility.tsE"Isrc/domain/boostEligibility.tsD1./boostEligibilityC'Ssrc/domain/boostEligibility.test.tsB;./commands/booster-roleA#Ksrc/discord/registerCommands.ts@#Ksrc/discord/registerCommands.ts?#Ksrc/discord/registerCommands.ts>1./registerCommands=(Usrc/discord/registerCommands.test.ts<(Usrc/discord/registerCommands.test.ts;(Usrc/discord/registerCommands.test.ts:
../logger9%Osrc/discord/interactionHandler.ts8%Osrc/discord/interactionHandler.ts7%Osrc/discord/interactionHandler.ts6%Osrc/discord/interactionHandler.ts5%Osrc/discord/interactionHandler.ts4%Osrc/discord/interactionHandler.ts3%Osrc/discord/interactionHandler.ts2%Osrc/discord/interactionHandler.ts1%Osrc/discord/interactionHandler.ts0*Ysrc/discord/interactionHandler.test.ts/*Ysrc/discord/interactionHandler.test.ts.*Ysrc/discord/interactionHandler.test.ts-*Ysrc/discord/interactionHandler.test.ts,*Ysrc/discord/interactionHandler.test.ts+*Ysrc/discord/interactionHandler.test.ts**Ysrc/discord/interactionHandler.test.ts)*Ysrc/discord/interactionHandler.test.ts(*Ysrc/discord/interactionHandler.test.ts'*Ysrc/discord/interactionHandler.test.ts&+[src/discord/events/guildMemberUpdate.ts%+[src/discord/events/guildMemberUpdate.ts$3./guildMemberUpdate# bun:test"0esrc/discord/events/guildMemberUpdate.test.ts!0esrc/discord/events/guildMemberUpdate.test.ts 0esrc/discord/events/guildMemberUpdate.test.ts0esrc/discord/events/guildMemberUpdate.test.ts(Usrc/discord/commands/booster-role.ts7src/discord/client.ts7src/discord/client.ts5./interactionHandlerA./events/guildMemberUpdate%O../services/discordRoleRepository'S../services/drizzleBoosterRoleStore"I../services/boosterRoleService ../db
../config!discord.js1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts3drizzle-orm/pg-core
-src/db/schema.ts ./schema postgres
;drizzle-orm/postgres-js +src/db/index.ts+src/db/index.ts?src/config/permissions.ts3src/config/index.ts3src/config/index.ts3src/config/inde'%Osrc/discord/interactionHandler.ts4
*¯X8
r  ï Ú z
á
føäÁ¸mØÂ¹xb
ø
|
S
%
 û ç x 8 $
ë
q×Ê«`SF9Ëk
ë
Þ
Ñ
Ä
·
ª
F
9
 Ú Í À ³ ¦ Œ
{¤MB-" 
g   ù ä Ï Ä ¹ ® £ ˜ o d Y N C 8 - " 
Ö
Ë
À
µ
ª
Ÿ
Z
N
Bí Šv.#
÷ìáŒ
\
.
 ð m b W L A -
ÿ
ô
6
* module module method method methodƒ
class file
function
method
method~
method}
method|
method{
methodz
methody
methodx classwfilev
moduleu
modulet functions
methodr
methodq
methodp
methodo
methodn
methodm
methodl
methodk
methodj classifileh
moduleg
methodf
methode
methodd
methodc
methodb
methoda class`
method_ class^
method]
method\
method[ classZfileY
moduleXfileW
moduleV
moduleU
moduleT
moduleS
moduleRfileQ
moduleP functionO functionN functionM functionL functionK functionJ functionIfileH
moduleGfileF functionEfileD
moduleCfileB
moduleA function@ function?file>
module=
method< class;file:
module9 function8 function7 function6 function5 function4 function3 function2 function1file0
method/
method.
method-
method,
method+ class*
method)
method( class'file& function%file$
module#
module" function!
method classfilefile functionfile
module
module
module
module
module
module
module
module function function function functionfile
module
file
module
module
module functionfilefile function functionfile
module fileˆLûöñìçâÜÖÐÊľ¸²¬¦ šŽˆO o #exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceexportsfile:src/discord/events/guildMemberUpdate.test.tssymbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceFakeService
_/!imports:file:src/discord/commands/booster-role.ts->module:discord.jsimportsfile:src/discord/commands/booster-role.tsmodule:discord.jsdiscord.jsz wA/!imports:file:src/discord/client.ts->module:discord.jsimportsfile:src/discord/client.tsmodule:discord.jsdiscord.jsB
5Am3exports:file:src/discord/client.ts->symbol:src/discord/client.ts:createDiscordClientexportsfile:src/discord/client.tssymbol:src/discord/client.ts:createDiscordClientcreateDiscordClient
;C5imports:file:src/discord/bot.ts->module:./interactionHandlerimportsfile:src/discord/bot.tsmodule:./interactionHandler./interactionHandler%
;OAimports:file:src/discord/bot.ts->module:./events/guildMemberUpdateimportsfile:src/discord/bot.tsmodule:./events/guildMemberUpdate./events/guildMemberUpdate:
;]Oimports:file:src/discord/bot.ts->module:../services/discordRoleRepositoryimportsfile:src/discord/bot.tsmodule:../services/discordRoleRepository../services/discordRoleRepository@
#;aSimports:file:src/discord/bot.ts->module:../services/drizzleBoosterRoleStoreimportsfile:src/discord/bot.tsmodule:../services/drizzleBoosterRoleStore../services/drizzleBoosterRoleStore1
;WIimports:file:src/discord/bot.ts->module:../services/boosterRoleServiceimportsfile:src/discord/bot.tsmodule:../services/boosterRoleService../services/boosterRoleServicee g;%imports:file:src/discord/bot.ts->module:../dbimportsfile:src/discord/bot.tsmodule:../db../dbq o;-imports:file:src/discord/bot.ts->module:../configimportsfile:src/discord/bot.tsmodule:../config../configt
q;/!imports:file:src/discord/bot.ts->module:discord.jsimportsfile:src/discord/bot.tsmodule:discord.jsdiscord.js*
!;_+exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:botRolePositionexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:botRolePositionbotRolePosition<
-;k7exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:resolveAnchorPositionexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:resolveAnchorPositionresolveAnchorPosition$
;['exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:memberHasRoleexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:memberHasRolememberHasRole0
%;c/exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:attachBotHandlersexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:attachBotHandlersattachBotHandlers  7A3imports:file:src/db/schema.ts->module:drizzle-orm/pg-coreimportsfile:src/db/schema.tsmodule:drizzle-orm/pg-coredrizzle-orm/pg-coreh g5+imports:file:src/db/index.ts->module:./schemaimportsfile:src/db/index.tsmodule:./schema./schemah g5+imports:file:src/db/index.ts->module:postgresimportsfile:src/db/index.tsmodule:postgrespostgres
5I;imports:file:src/db/index.ts->module:drizzle-orm/postgres-jsimportsfile:src/db/index.tsmodule:drizzle-orm/postgres-jsdrizzle-orm/postgres-js 
5Kexports:file:src/db/index.ts->symbol:src/db/index.ts:createDbexportsfile:src/db/index.tssymbol:src/db/index.ts:createDbcreateDb
=W!exports:file:src/config/index.ts->symbol:src/config/index.ts:requireEnvexportsfile:src/config/index.tssymbol:src/config/index.ts:requireEnvrequireEnv
=W!exports:file:src/config/index.ts->symbol:src/config/index.ts:loadConfigexportsfile:src/config/index.tssymbol:src/config/index.ts:loadConfigloadConfiGTzOtJmPgR_IW@P=HD>E5K-M$Q3So7`NQ/;5() ÷
ò2 í F
Ÿ ò
7 ƒœ
© œAcÐÊG«y V $ Ø 8
ð
® Œ
 Ðí±Ql[exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireGuildId,pcexports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:toUserErrorMessage+oaexports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:handleInteraction*U-imports:file:src/discord/interactionHandler.test.ts->module:./interactionHandler)Iimports:file:src/discord/interactionHandler.test.ts->module:bun:test(Kimports:file:src/discord/interactionHandler.test.ts->module:discord.js'~exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService.deleteRole&exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon%exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole$~exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService.renameRole#}}exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService.claimRole"siexports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeService!}}exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply
exports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandwqexports:file:src/discord/interactionHandler.test.ts->symbol:src/discord/interactionHandler.test.ts:FakeInteractionexports:file:src/discord/events/guildMemberUpdate.ts->symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdateZ7imports:file:src/discord/events/guildMemberUpdate.test.ts->module:./guildMemberUpdateO!imports:file:src/discord/events/guildMemberUpdate.test.ts->module:bun:testzwexports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:member/exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoostexports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceIimports:file:src/discord/comm.'Ocalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.fetchRole#!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRoleÝ+!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRoleÑ*!calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole±Foaexports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:handleInteraction*@calls:symbol:src/disc.padepAdIdepends-on:fAO!exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:botRolePosition 8 exports:file:src/services/discordRoleRepository.ts->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.resolvePositionsý+exports:file:src/discord/events/g+U.O!exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:botRolePosition 4O!imports:file:src/discord/events/guildMemberUpdate.test.ts->module:bun:testŒ
+9}}exports:file:src/services/boosterRoleService.ts->symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRoledl[exports>\;exports:file:src/domain/roleGuards.ts->symbol:src/domain/roleGuards.ts:validateRoleNameFon0ACÙAaH.öÚ¾¢jN2
ú
Þ
¿
 
r
<
 Ð š d 3  Ó £ s C 
ã
³
ƒ
S
# ó È r G ñÆpEì¾b9ç¾d<î̪ˆfD"ÞȲœpY(÷Æd3Ñ o>
Ü«zN"ö+[file:src/services/boosterRoleService.tsa+[file:src/services/boosterRoleService.ts`+[file:src/services/boosterRoleService.ts_0efile:src/services/boosterRoleService.test.ts^0efile:src/services/boosterRoleService.test.ts]0efile:src/services/boosterRoleService.test.ts\0efile:src/services/boosterRoleService.test.ts[0efile:src/services/boosterRoleService.test.tsZ0efile:src/services/boosterRoleService.test.tsY0efile:src/services/boosterRoleService.test.tsX0efile:src/services/boosterRoleService.test.tsW0efile:src/services/boosterRoleService.test.tsV0efile:src/services/boosterRoleService.test.tsU0efile:src/services/boosterRoleService.test.tsT0efile:src/services/boosterRoleService.test.tsS0efile:src/services/boosterRoleService.test.tsR0efile:src/services/boosterRoleService.test.tsQ0efile:src/services/boosterRoleService.test.tsP1file:src/logger.tsO/file:src/index.tsN/file:src/index.tsM/file:src/index.tsL/file:src/index.tsK/file:src/index.tsJ!Gfile:src/domain/roleGuards.tsI!Gfile:src/domain/roleGuards.tsH!Gfile:src/domain/roleGuards.tsG!Gfile:src/domain/roleGuards.tsF!Gfile:src/domain/roleGuards.tsE!Gfile:src/domain/roleGuards.tsD!Gfile:src/domain/roleGuards.tsC!Gfile:src/domain/roleGuards.tsB&Qfile:src/domain/roleGuards.test.tsA&Qfile:src/domain/roleGuards.test.ts@'Sfile:src/domain/boostEligibility.ts?,]file:src/domain/boostEligibility.test.ts>,]file:src/domain/boostEligibility.test.ts=(Ufile:src/discord/registerCommands.ts<(Ufile:src/discord/registerCommands.ts;(Ufile:src/discord/registerCommands.ts:(Ufile:src/discord/registerCommands.ts9-_file:src/discord/registerCommands.test.ts8-_file:src/discord/registerCommands.test.ts7-_file:src/discord/registerCommands.test.ts6-_file:src/discord/registerCommands.test.ts5*Yfile:src/discord/interactionHandler.ts4*Yfile:src/discord/interactionHandler.ts3*Yfile:src/discord/interactionHandler.ts2*Yfile:src/discord/interactionHandler.ts1*Yfile:src/discord/interactionHandler.ts0*Yfile:src/discord/interactionHandler.ts/*Yfile:src/discord/interactionHandler.ts.*Yfile:src/discord/interactionHandler.ts-*Yfile:src/discord/interactionHandler.ts,*Yfile:src/discord/interactionHandler.ts+*Yfile:src/discord/interactionHandler.ts*/cfile:src/discord/interactionHandler.test.ts)/cfile:src/discord/interactionHandler.test.ts(/cfile:src/discord/interactionHandler.test.ts'/cfile:src/discord/interactionHandler.test.ts&/cfile:src/discord/interactionHandler.test.ts%/cfile:src/discord/interactionHandler.test.ts$/cfile:src/discord/interactionHandler.test.ts#/cfile:src/discord/interactionHandler.test.ts"/cfile:src/discord/interactionHandler.test.ts!/cfile:src/discord/interactionHandler.test.ts /cfile:src/discord/interactionHandler.test.ts/cfile:src/discord/interactionHandler.test.ts0efile:src/discord/events/guildMemberUpdate.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts-_file:src/discord/commands/booster-role.tsAfile:src/discord/client.tsAfile:src/discord/client.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts
;file:src/discord/bot.ts ;file:src/discord/bot.ts ;file:src/discord/bot.ts
;file:src/discord/bot.ts 7file:src/db/sch;Nsymbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRoleß1@symbol:src/discord/interactionHandler.ts:handleInteractionª0"Gfile:src/domain/roleGuards.tsÇH¦oÇ
ˆ
µºìƒjN(
b Í
B¤²L' ìÄÐØd4 ÷ áØ§êO;ÀrØJ¬x
œ @ >
è
Ÿ
a
î ƒ Î 8d½0ç÷¬s#(äp%xÐUê¸ ½#ØnJsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.deleteSJsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.createRNsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.findByUserQC symbol:src/services/boosterRoleService.test.ts:MemoryRoleStoreP)module:winstonO+module:./loggerN%Omodule:./discord/registerCommandsM;module:./discord/clientL5module:./discord/botK+module:./configJ Emodule:../config/permissionsI1gsymbol:src/domain/roleGuards.ts:normalizeNameH5osymbol:src/domain/roleGuards.ts:normalizeHexColorG4msymbol:src/domain/roleGuards.ts:validateRoleNameF<}symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeE=symbol:src/domain/roleGuards.ts:assertCosmeticPermissionsD=symbol:src/domain/roleGuards.ts:assertCanManageStoredRoleC=symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableB3module:./roleGuardsA+module:bun:test@Asymbol:src/domain/boostEligibility.ts:assertBoostEligibility??module:./boostEligibility>+module:bun:test="Imodule:./commands/booster-role</module:discord.js;Jsymbol:src/discord/registerCommands.ts:registerGuildCommandsWithToken:Asymbol:src/discord/registerCommands.ts:registerGuildCommands9?module:./registerCommands8+module:bun:test7C symbol:src/discord/registerCommands.test.ts:FakeRestClient.put6?symbol:src/discord/registerCommands.test.ts:FakeRestClient5)Wmodule:../services/boosterRoleService4-module:../logger3/module:discord.js29wsymbol:src/discord/interactionHandler.ts:optionalIcon18usymbol:src/discord/interactionHandler.ts:requireIcon0Bsymbol:src/discord/interactionHandler.ts:requireAdministrator/8usymbol:src/discord/interactionHandler.ts:requireUser.:ysymbol:src/discord/interactionHandler.ts:requireString-;{symbol:src/discord/interactionHandler.ts:requireGuildId,@symbol:src/discord/interactionHandler.ts:toUserErrorMessage+?symbol:src/discord/interactionHandler.ts:handleInteraction*Cmodule:./interactionHandler)+module:bun:test(/module:discord.js'Isymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRole&Jsymbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon%Jsymbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole$Isymbol:src/discord/interactionHandler.test.ts:FakeService.renameRole#Hsymbol:src/discord/interactionHandler.test.ts:FakeService.claimRole"=symbol:src/discord/interactionHandler.test.ts:FakeService!Hsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply U-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandBsymbol:src/discord/interactionHandler.test.ts:FakeInteractionKsymbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdateAmodule:./guildMemberUpdate+module:bun:test?symbol:src/discord/events/guildMemberUpdate.test.ts:member[9symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoostD symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService/module:discord.js/module:discord.js4msymbol:src/discord/client.ts:createDiscordClientCmodule:./interactionHandler%Omodule:./events/guildMemberUpdate,]module:../services/discordRoleRepository.amodule:../services/drizzleBoosterRoleStore)Wmodule:../services/boosterRoleService%module:../db-module:../config/module:discord.js
-_symbol:src/discord/bot.ts:botRolePosition 3ksymbol:src/discord/bot.ts:resolveAnchorPosition +[symbol:src/discord/bot.BR'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.removeRoleq6Lsymbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRoled-2gsymbol:src/domain/roleGuards.ts:normalizeName¿,U-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand
´OD9.#
÷ìáÖËÀµªŸ~sh]RG<1&úïäÙÎø­¢Šti^SH=2'ûðåÚÏĹ®£˜wlaVK@5* þóèÝÒǼ±¦zodYNC8-" öëàÕÊ¿´
ú ê Ú Ê º ª š Š z j Z J : * 
úêÚʺªšŠzjZéÝÑ}qáÕÉ¥ui]QE9
ý
ñ
å
Ù
Í
Á
µ
y
U
I
é Ý Ñ Å ¹ ­ ¡ A 5 )    ù í á Õ É ½ ± u i ] Q E 9 - ! 
ñ
å
Ù
Í
Á
µ
©
a
U
I
=õŹ­¡eYMA5)ùí½±-!
©
m
a
=
1
%

 õ } q e Y M ¥
ý
y
m
1
%

calls
calls
calls
calls
calls
calls
calls
callsÿ
callsþ
callsý
callsü
callsû
callsú
callsù
callsø
calls÷
callsö
callsõ
callsô
callsó
callsò
callsñ
callsð
callsï
callsî
callsí
callsì
callsë
callsê
callsé
callsè
callsç
callsæ
callså
callsä
callsã
callsâ
callsá
callsà
callsß
callsÞ
callsÝ
callsÜ
callsÛ
callsÚ
callsÙ
callsØ
calls×
callsÖ
callsÕ
callsÔ
callsÓ
callsÒ
callsÑ
callsÐ
callsÏ
callsÎ
callsÍ
callsÌ
callsË
callsÊ
callsÉ
callsÈ
callsÇ
callsÆ
callsÅ
callsÄ extendsÃ
callsÂ
callsÁ
callsÀ
calls¿
calls¾
calls½
calls¼
calls»
callsº
calls¹
calls¸
calls·
calls
callsµ
calls´
calls³
calls²
calls±
calls°
calls¯
calls®
calls­
calls¬
calls«
callsª
calls©
calls¨
calls§
calls¦
calls¥
calls¤
calls£
calls¢
calls¡
calls 
callsŸ
callsž
calls
callsœ
calls!depends-onš!depends-on!depends-on˜!depends-on!depends-on!depends-on!depends-on!depends-on!depends-on!depends-on!depends-on!depends-on!depends-onŽ!depends-on!depends-onŒ!depends-on!depends-onŠ!depends-on!depends-onˆ!depends-on!depends-on!depends-on!depends-on!depends-onƒ!depends-on!depends-on!depends-on!depends-on imports~ imports} imports| exports{ exportsz exportsy exportsx importsw importsv exportsu exportst exportss exportsr exportsq exportsp exportso exportsn exportsm exportsl importsk importsj exportsi exportsh exportsg exportsf exportse exportsd exportsc exportsb exportsa exports` exports_ imports^ imports] exports\ exports[ exportsZ exportsY exportsX exportsW exportsV exportsU exportsT exportsS exportsR exportsQ exportsP importsO importsN importsM importsL importsK importsJ importsI exportsH exportsG exportsF exportsE exportsD exportsC exportsB importsA imports@ exports? imports> imports= imports< imports; exports: exports9 imports8 imports7 exports6 exports5 imports4 imports3 imports2 exports1 exports0 exports/ exports. exports- exports, exports+ exports* imports) imports( imports' exports& exports% exports$ exports# exports" exports! exports exports exports exports imports imports exports exports exports imports imports exports imports imports imports imports imports imports imports imports
exports exports exports
exports imports imports imports imports exports exports exports
 imports ÄûöñìçâÝØÓÎÉÄ-
!ƒOƒsrc/db/schema.tsf7371559dcbcabe1d31dafd89e2742be7b97638448791190f8a75f2c8d00679eByäšÿ£ñÑ)typescript3[{"id":"file:src/db/schema.ts","type":"file","name":"schema.ts","path":"src/db/schema.ts","language":"typescript"},{"id":"module:drizzle-orm/pg-core","type":"module","name":"drizzle-orm/pg-core","path":"drizzle-orm/pg-core"}][{"id":"imports:file:src/db/schema.ts->module:drizzle-orm/pg-core","type":"imports","source":"file:src/db/schema.ts","target":"module:drizzle-orm/pg-core","evidence":"drizzle-orm/pg-core"}][["bigint","drizzle-orm/pg-core"],["pgTable","drizzle-orm/pg-core"],["text","drizzle-orm/pg-core"],["uniqueIndex","drizzle-orm/pg-core"]]+
!ˆWŠqsrc/db/index.ts604988f16fe6f47de551f6d63dadbc4a9eeb280540856701a59ef2a3b6c5651bBy䘯o:_+typescript3[{"id":"file:src/db/index.ts","type":"file","name":"index.ts","path":"src/db/index.ts","language":"typescript"},{"id":"symbol:src/db/index.ts:createDb","type":"function","name":"createDb","path":"src/db/index.ts","language":"typescript","line":5,"startLine":5,"endLine":8},{"id":"module:drizzle-orm/postgres-js","type":"module","name":"drizzle-orm/postgres-js","path":"drizzle-orm/postgres-js"},{"id":"module:postgres","type":"module","name":"postgres","path":"postgres"},{"id":"module:./schema","type":"module","name":"./schema","path":"./schema"}][{"id":"exports:file:src/db/index.ts->symbol:src/db/index.ts:createDb","type":"exports","source":"file:src/db/index.ts","target":"symbol:src/db/index.ts:createDb","evidence":"createDb"},{"id":"imports:file:src/db/index.ts->module:drizzle-orm/postgres-js","type":"imports","source":"file:src/db/index.ts","target":"module:drizzle-orm/postgres-js","evidence":"drizzle-orm/postgres-js"},{"id":"imports:file:src/db/index.ts->module:postgres","type":"imports","source":"file:src/db/index.ts","target":"module:postgres","evidence":"postgres"},{"id":"imports:file:src/db/index.ts->module:./schema","type":"imports","source":"file:src/db/index.ts","target":"module:./schema","evidence":"./schema"}][["drizzle","drizzle-orm/postgres-js"],["schema","./schema"]] ?
!!src/config/permissions.tsce5874fb76928927fa0ea9c27eaed271fbc6e830c42adeea2318549847fed5beByâÅ–Â@_þtypescript3[{"id":"file:src/config/permissions.ts","type":"file","name":"permissions.ts","path":"src/config/permissions.ts","language":"typescript"}][][]‡n
3
!‡=†Ksrc/config/index.ts76a4b85dad2cefdab92a0930bce60403b384841a40706b78aa427273846fc210Byäš æ!Õ±typescript3[{"id":"file:src/config/index.ts","type":"file","name":"index.ts","path":"src/config/index.ts","language":"typescript"},{"id":"symbol:src/config/index.ts:loadConfig","type":"function","name":"loadConfig","path":"src/config/index.ts","language":"typescript","line":10,"startLine":10,"endLine":19},{"id":"symbol:src/config/index.ts:requireEnv","type":"function","name":"requireEnv","path":"src/config/index.ts","language":"typescript","line":21,"startLine":21,"endLine":27}][{"id":"exports:file:src/config/index.ts->symbol:src/config/index.ts:loadConfig","type":"exports","source":"file:src/config/index.ts","target":"symbol:src/config/index.ts:loadConfig","evidence":"loadConfig"},{"id":"exports:file:src/config/index.ts->symbol:src/config/index.ts:requireEnv","type":"exports","source":"file:src/config/index.ts","target":"symbol:src/config/index.ts:requireEnv","evidence":"requireEnv"}][]„

/
!ƒ3[Mdrizzle.config.ts1d8eadf163d27fe85c9a2b8a6421eeca6c0244f6c93a8048dcad658ccbe6c00aBy䘰ϕ·'typescript3[{"id":"file:drizzle.config.ts","type":"file","name":"drizzle.config.ts","path":"drizzle.config.ts","language":"typescript"},{"id":"module:drizzle-kit","type":"module","name":"drizzle-kit","path":"drizzle-kit"}][{"id":"imports:file:drizzle.config.ts->module:drizzle-kit","type":"imports","source":"file:drizzle.config.ts","target":"module:drizzle-kit!

"
 áëÓµ¡Œu[2Õª[7
ì
Ê
­
œ
Š
^
7
á+[src/services/drizzleBoosterRoleStore.ts)Wsrc/services/discordRoleRepository.ts&Qsrc/services/boosterRoleService.ts+[src/services/boosterRoleService.test.ts'src/logger.ts%src/index.ts=src/domain/roleGuards.ts!Gsrc/domain/roleGuards.test.ts"Isrc/domain/boostEligibility.ts'Ssrc/domain/boostEligibility.test.ts#Ksrc/discord/registerCommands.ts(Usrc/discord/registerCommands.test.ts
%Osrc/discord/interactionHandler.ts *Ysrc/discord/interactionHandler.test.ts +[src/discord/events/guildMemberUpdate.ts
0esrc/discord/events/guildMemberUpdate.test.ts (Usrc/discord/commands/booster-role.ts7src/discord/client.ts1src/discord/bot.ts-src/db/schema.ts+src/db/index.ts?src/config/permissions.ts3src/config/index.ts/ drizzle.config.tsition","type":"function","name":"resolveAnchorPosition","path":"src/discord/bot.ts","language":"typescript","line":55,"startLine":55,"endLine":55},{"id":"symbol:src/discord/bot.ts:botRolePosition","type":"function","name":"botRolePosition","path":"src/discord/bot.ts","language":"typescript","line":62,"startLine":62,"endLine":62},{"id":"module:discord.js","type":"module","name":"discord.js","path":"discord.js"},{"id":"module:../config","type":"module","name":"../config","path":"../config"},{"id":"module:../db","type":"module","name":"../db","path":"../db"},{"id":"module:../services/boosterRoleService","type":"module","name":"../services/boosterRoleService","path":"../services/boosterRoleService"},{"id":"module:../services/drizzleBoosterRoleStore","type":"module","name":"../services/drizzleBoosterRoleStore","path":"../services/drizzleBoosterRoleStore"},{"id":"module:../services/discordRoleRepository","type":"module","name":"../services/discordRoleRepository","path":"../services/discordRoleRepository"},{"id":"module:./events/guildMemberUpdate","type":"module","name":"./events/guildMemberUpdate","path":"./events/guildMemberUpdate"},{"id":"module:./interactionHandler","type":"module","name":"./interactionHandler","path":"./interactionHandler"}][{"id":"exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:attachBotHandlers","type":"exports","source":"file:src/discord/bot.ts","target":"symbol:src/discord/bot.ts:attachBotHandlers","evidence":"attachBotHandlers"},{"id":"exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:memberHasRole","type":"exports","source":"file:src/discord/bot.ts","target":"symbol:src/discord/bot.ts:memberHasRole","evidence":"memberHasRole"},{"id":"exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:resolveAnchorPosition","type":"exports","source":"file:src/discord/bot.ts","target":"symbol:src/discord/bot.ts:resolveAnchorPosition","evidence":"resolveAnchorPosition"},{"id":"exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:botRolePosition","type":"exports","source":"file:src/discord/bot.ts","target":"symbol:src/discord/bot.ts:botRolePosition","evidence":"botRolePosition"},{"id":"imports:file:src/discord/bot.ts->module:discord.js","type":"imports","source":"file:src/discord/bot.ts","target":"module:discord.js","evidence":"discord.js"},{"id":"imports:file:src/discord/bot.ts->module:../config","type":"imports","source":"file:src/discord/bot.ts","target":"module:../config","evidence":"../config"},{"id":"imports:file:src/discord/bot.ts->module:../db","type":"imports","source":"file:src/discord/bot.ts","target":"module:../db","evidence":"../db"},{"id":"imports:file:src/discord/bot.ts->module:../services/boosterRoleService","type":"imports","source":"file:src/discord/bot.ts","target":"module:../services/boosterRoleService","evidence":"../services/boosterRoleService"},{"id":"imports:file:src/discord/bot.ts->module:../services/drizzleBoosterRoleStore","type":"imports","source":"file:src/discord/bot.ts","target":"module:../services/drizzleBoosterRoleStore","evidence":"../services/drizzleBoosterRoleStore"},{"id":"imports:file:src/discord/bot.ts->module:../services/discordRoleRepository","type":"imports","source":"file:src/discord/bot.ts","target":"module:../services/discordRoleRepository","evidence":"../services/discordRoleRepository"},{"id":"imports:file:src/discord/bot.ts->module:./events/guildMemberUpdate","type":"imports","source":"file:src/discord/bot.ts","target":"module:./events/guildMemberUpdate","evidence":"./events/guildMemberUpdate"},{"id":"imports:file:src/discord/bot.ts->module:./interactionHandler","type":"imports","source":"file:src/discord/bot.ts","target":"module:./interactionHandler","evidence":"./interactionHandler"}][["Client","discord.js"],["AppConfig","../config"],["createDb","../db"],["BoosterRoleService","../serv
[
!†I…src/discord/events/guildMemberUpdate.ts7086911d5a6848135f58be3f6d45aae530a693e0293eb7b571f8868da76c6cd4Byäš)¨²ìtypescript3[{"id":"file:src/discord/events/guildMemberUpdate.ts","type":"file","name":"guildMemberUpdate.ts","path":"src/discord/events/guildMemberUpdate.ts","language":"typescript"},{"id":"symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate","type":"function","name":"handleGuildMemberUpdate","path":"src/discord/events/guildMemberUpdate.ts","language":"typescript","line":11,"startLine":16,"endLine":23}][{"id":"exports:file:src/discord/events/guildMemberUpdate.ts->symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate","type":"exports","source":"file:src/discord/events/guildMemberUpdate.ts","target":"symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate","evidence":"handleGuildMemberUpdate"}][]•' e
!+5wsrc/discord/events/guildMemberUpdate.test.ts63fa308091936d3628750b3af8e6f84b9c5c36447c8fdda2d1bd688fb25e0893Byäš8,Wtypescript3[{"id":"file:src/discord/events/guildMemberUpdate.test.ts","type":"file","name":"guildMemberUpdate.test.ts","path":"src/discord/events/guildMemberUpdate.test.ts","language":"typescript"},{"id":"symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService","type":"class","name":"FakeService","path":"src/discord/events/guildMemberUpdate.test.ts","language":"typescript","line":4,"startLine":4,"endLine":10},{"id":"symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost","type":"method","name":"removeRoleForLostBoost","path":"src/discord/events/guildMemberUpdate.test.ts","startLine":7,"endLine":9},{"id":"symbol:src/discord/events/guildMemberUpdate.test.ts:member","type":"function","name":"member","path":"src/discord/events/guildMemberUpdate.test.ts","language":"typescript","line":12,"startLine":12,"endLine":18},{"id":"module:bun:test","type":"module","name":"bun:test","path":"bun:test"},{"id":"module:./guildMemberUpdate","type":"module","name":"./guildMemberUpdate","path":"./guildMemberUpdate"}][{"id":"exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService","type":"exports","source":"file:src/discord/events/guildMemberUpdate.test.ts","target":"symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService","evidence":"FakeService"},{"id":"exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost","type":"exports","source":"file:src/discord/events/guildMemberUpdate.test.ts","target":"symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost","evidence":"removeRoleForLostBoost"},{"id":"exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:member","type":"exports","source":"file:src/discord/events/guildMemberUpdate.test.ts","target":"symbol:src/discord/events/guildMemberUpdate.test.ts:member","evidence":"member"},{"id":"imports:file:src/discord/events/guildMemberUpdate.test.ts->module:bun:test","type":"imports","source":"file:src/discord/events/guildMemberUpdate.test.ts","target":"module:bun:test","evidence":"bun:test"},{"id":"imports:file:src/discord/events/guildMemberUpdate.test.ts->module:./guildMemberUpdate","type":"imports","source":"file:src/discord/events/guildMemberUpdate.test.ts","target":"module:./guildMemberUpdate","evidence":"./guildMemberUpdate"}][["describe","bun:test"],["expect","bun:test"],["test","bun:test"],["handleGuildMemberUpdate","./guildMemberUpdate"]]
XX
typescript3[{"id":"file:src/discord/bot.ts","type":"file","name":"bot.ts","path":"src/discord/bot.ts","language":"typescript"},{"id":"symbol:src/discord/bot.ts:attachBotHandlers","type":"function","name":"attachBotHandlers","path":"src/discord/bot.ts","language":"typescript","line":10,"startLine":10,"endLine":37},{"id":"symbol:src/discord/bot.ts:memberHasRole","type":"function","name":"memberHasRole","path":"src/discord/bot.ts","language":"typescript","line":39,"startLine":39,"endLine":53},{"id":"symbol:src/discord/bot.ts:resolveAnchorPos
ò]
y Õ 2
þ
Z ¸ l½i¿_«òO®?calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordØ!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRoleÝ Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.listRolesÛ calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/domain/roleGuards.ts:validateRoleNameÙcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableÚ2ecalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.findByUserë.]calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.deleteñ.]calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRoleï(Qcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRoleî*Ucalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.findByUserê&Mcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.deleteð-[calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRoleí%Kcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost->symbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleì#Gcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRoleá Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordß"Ecalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRoleàcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole->symbol:src/domain/roleGuards.ts:normalizeHexColorâ)Scalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecord->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.findByUserü!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecord->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.findByUserû"Ecalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.deleteé?calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordç5calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.deleteè%Kcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.findByUserÆ!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.createÖ
'â®t'Äa
½
f
í
v
Ô   x ŸJø xâ4¥t"¡útâG
3%%module:./roleGuardsmodule./roleGuards./roleGuardsiF
Q1G!file:src/domain/roleGuards.test.tsfileroleGuards.test.tssrc/domain/r' +Y!symbol:src/discord/interactionHandler.test.ts:FakeInteractionclassFakeInteractionsrc/discord/interactionHandler.test.tstypescript&
cAY!file:src/discord/interactionHandler.test.tsfileinteractionHandler.test.tssrc/discord/interactionHandler.test.tstypescript$% ;[!symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdatefunctionhandleGuildMemberUpdatesrc/discord/events/guildMemberUpdate.tstypescript $
e5[!file:src/discord/events/guildMemberUpdate.tsfileguildMemberUpdate.tssrc/discord/events/guildMemberUpdate.tstypescriptP#
A33module:./guildMemberUpdatemodule./guildMemberUpdate./guildMemberUpdate/"
+module:bun:testmodulebun:testbun:test ! e!symbol:src/discord/events/guildMemberUpdate.test.ts:memberfunctionmembersrc/discord/events/guildMemberUpdate.test.tstypescript + 99esymbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoostmethodremoveRoleForLostBoostsrc/discord/events/guildMemberUpdate.test.ts  #e!symbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceclassFakeServicesrc/discord/events/guildMemberUpdate.test.tstypescript

o?e!file:src/discord/events/guildMemberUpdate.test.tsfileguildMemberUpdate.test.tssrc/discord/events/guildMemberUpdate.test.tstypescriptt
_+U!file:src/discord/commands/booster-role.tsfilebooster-role.tssrc/discord/commands/booster-role.tstypescriptw
m37!symbol:src/discord/client.ts:createDiscordClientfunctioncreateDiscordClientsrc/discord/client.tstypescriptP
A7!file:src/discord/client.tsfileclient.tssrc/discord/client.tstypescriptS
C55module:./interactionHandlermodule./interactionHandler./interactionHandlere
OAAmodule:./events/guildMemberUpdatemodule./events/guildMemberUpdate./events/guildMemberUpdatez
]OOmodule:../services/discordRoleRepositorymodule../services/discordRoleRepository../services/discordRoleRepository
aSSmodule:../services/drizzleBoosterRoleStoremodule../services/drizzleBoosterRoleStore../services/drizzleBoosterRoleStoreq
WIImodule:../services/boosterRoleServicemodule../services/boosterRoleService../services/boosterRoleService&
%module:../dbmodule../db../db2
-module:../configmodule../config../config5
/!!module:discord.jsmodulediscord.jsdiscord.jsi
_+1!symbol:src/discord/bot.ts:botRolePositionfunctionbotRolePositionsrc/discord/bot.tstypescript>>>u
k71!symbol:src/discord/bot.ts:resolveAnchorPositionfunctionresolveAnchorPositionsrc/discord/bot.tstypescript777e
['1!symbol:src/discord/bot.ts:memberHasRolefunctionmemberHasRolesrc/discord/bot.tstypescript''5m
c/1!symbol:src/discord/bot.ts:attachBotHandlersfunctionattachBotHandlerssrc/discord/bot.tstypescript
%G
;1!file:src/discord/bot.tsfilebot.tssrc/discord/bot.tstypescriptP
A33module:drizzle-orm/pg-coremoduledrizzle-orm/pg-coredrizzle-orm/pg-coreF
7-!file:src/db/schema.tsfileschema.tssrc/db/schema.tstypescript/
+module:./schemamodule./schema./schema/
+module:postgresmodulepostgrespostgres\
I;;module:drizzle-orm/postgres-jsmoduledrizzle-orm/postgres-jsdrizzle-orm/postgres-jsU
K+!symbol:src/db/index.ts:createDbfunctioncreateDbsrc/db/index.tstypescriptC
5+!file:src/db/index.tsfileindex.tssrc/db/index.tstypescript]
I)?!file:src/config/permissions.tsfilepermissions.tssrc/config/permissions.tstypescripta
W!3!symbol:src/config/index.ts:requireEnvfunctionrequireEnvsrc/config/index.tstypescripta
W!3!symbol:src/config/index.ts:loadConfigfunctionloadConfigsrc/config/index.tstypescript
K
=3!file:src/config/index.tsfileindex.tssrc/config/index.tstypescript8
1##module:drizzle-kitmoduledrizzle-kitdrizzle-kitP
9//!file:drizzle.config.tsfiledrizzle.config.tsdrizzle.config.tstypescript
UÀæÉ¦sW8
Ô£sH
ñ
Ä
œ
u
S
=
& õ É š h S 2 !À û Û Æ œ o @ " 
ß
Ë
²
p
J
+
÷ Ù Á ­ ™ ƒ lÙ M *  Ù¯[-͘S÷·k(ÒK¸m#ؘ^ߦk2ñ3module:../db/schema1module:drizzle-orm†@symbol:src/discord/interactionHandler.ts:toUserErrorMessage28usymbol:src/discord/interactionHandler.ts:requireUser5:ysymbol:src/discord/interactionHandler.ts:requireString48usymbol:src/discord/interactionHandler.ts:requireIcon7;{symbol:src/discord/interactionHandler.ts:requireGuildId3Bsymbol:src/discord/interactionHandler.ts:requireAdministrator69wsymbol:src/discord/interactionHandler.ts:optionalIcon8?symbol:src/discord/interactionHandler.ts:handleInteraction1Jsymbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon.Isymbol:src/discord/interactionHandler.test.ts:FakeService.renameRole,Jsymbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole-Isymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRole/Hsymbol:src/discord/interactionHandler.test.ts:FakeService.claimRole+=symbol:src/discord/interactionHandler.test.ts:FakeService*Hsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply)U-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand(Bsymbol:src/discord/interactionHandler.test.ts:FakeInteraction'Ksymbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate%?symbol:src/discord/events/guildMemberUpdate.test.ts:member![9symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost D symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService4msymbol:src/discord/client.ts:createDiscordClient3ksymbol:src/discord/bot.ts:resolveAnchorPosition+[symbol:src/discord/bot.ts:memberHasRole-_symbol:src/discord/bot.ts:botRolePosition/csymbol:src/discord/bot.ts:attachBotHandlers#Ksymbol:src/db/index.ts:createDb)Wsymbol:src/config/index.ts:requireEnv)Wsymbol:src/config/index.ts:loadConfig)module:winstonX+module:postgres
"Imodule:drizzle-orm/postgres-js Amodule:drizzle-orm/pg-core
1module:drizzle-kit/module:discord.js+module:bun:test"+module:./schema 3module:./roleGuardsG?module:./registerCommands=+module:./loggerVCmodule:./interactionHandlerAmodule:./guildMemberUpdate#%Omodule:./events/guildMemberUpdate%Omodule:./discord/registerCommandsU;module:./discord/clientT5module:./discord/botS+module:./configR"Imodule:./commands/booster-roleACmodule:./boosterRoleServiceg?module:./boostEligibilityC.amodule:../services/drizzleBoosterRoleStore,]module:../services/discordRoleRepository)Wmodule:../services/boosterRoleService-module:../logger9Cmodule:../domain/roleGuardsu%Omodule:../domain/boostEligibilityt%module:../db Emodule:../config/permissionsP-module:../config1efile:src/services/drizzleBoosterRoleStore.ts.afile:src/services/discordRoleRepository.tsv+[file:src/services/boosterRoleService.tsh0efile:src/services/boosterRoleService.test.tsY1file:src/logger.tsW/file:src/index.tsQ!Gfile:src/domain/roleGuards.tsH&Qfile:src/domain/roleGuards.test.tsF'Sfile:src/domain/boostEligibility.tsD,]file:src/domain/boostEligibility.test.tsB(Ufile:src/discord/registerCommands.ts>-_file:src/discord/registerCommands.test.ts:*Yfile:src/discord/interactionHandler.ts0/cfile:src/discord/interactionHandler.test.ts&0efile:src/discord/events/guildMemberUpdate.ts$5ofile:src/discord/events/guildMemberUpdate.test.ts-_file:src/discord/commands/booster-role.tsAfile:src/discord/client.ts;file:src/discord/bot.ts7file:src/db/schema.ts 5file:src/db/index.ts"Ifile:src/config/permissions.ts=file:src/config/index.ts9 file:drizzle.config.ts
(1
ä
¢
W
 × ™ [ è
»t-Ñ#Û=£XîGûÅy`l®É6îµ[
e®b
·
" Õ -W/symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.findByUserƒGsymbol:src/services/discordRoleRepository.ts:DiscordRoleRepositorywBsymbol:src/services/boosterRoleService.ts:ignoreRollbackErrorsO!symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordrR'symbol:src/services/boosterRoleService.ts:BoosterRoleService.validateRoleIconqO!symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaimpX3symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoostoLsymbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRolenMsymbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIconmMsymbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRolelLsymbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRolekKsymbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRolejAsymbol:src/services/boosterRoleService.ts:BoosterRoleServiceiQ%symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRolefQ%symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.removeRoleeQ%symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.assignRoledQ%symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRolecQ%symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.createRolebP#symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.listRolesaFsymbol:src/services/boosterRoleService.test.ts:FakeRoleRepository`Q%symbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStore.create_Jsymbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStore^Jsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.delete]Jsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.create\Nsymbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.findByUser[C symbol:src/services/boosterRoleService.test.ts:MemoryRoleStoreZ4msymbol:src/domain/roleGuards.ts:validateRoleNameM1gsymbol:src/domain/roleGuards.ts:normalizeNameO5osymbol:src/domain/roleGuards.ts:normalizeHexColorN<}symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeL=symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableI=symbol:src/domain/roleGuards.ts:assertCosmeticPermissionsK=symbol:src/domain/roleGuards.ts:assertCanManageStoredRoleJAsymbol:src/domain/boostEligibility.ts:assertBoostEligibilityEJsymbol:src/discord/registerCommands.ts:registerGuildCommandsWithToken@Asymbol:src/discord/registerCommands.ts:registerGuildCommands?C symbol:src/discord/registerCommands.test.ts:FakeRestClient.put<symbol:src/discord/registerCommands.test.ts:FakeRestClient;@symbol:src/discord/interactionHandler.ts:toUserErrorMessage28usymbol:src/discord/interactionHandler.ts:requireUser5:ysymbol:src/discord/interactionHandler.ts:requireString48usymbol:src/dS'symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.delete…S'symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.create„Lsymbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStoreBsymbol:src/services/discordRoleRepository.ts:toDiscordColors€Q%symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.fetchRoleW1symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.resolvePosition~R'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRole}R'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.removeRole|R'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.assignRole{R'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRolezR'symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRoleyQ%symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.listRolesx
?CZ#Pð ÷-
ßžÝóÞ¿
À a
§²e% yhÛê1ë$ëuaMÓ¼¥Žw
s
J
 è · 5 Þ ³ ˆ ] 2 
Ü
±
[
5
 é à Q + Î¥|Aùµ{X6ëαwZ= h<丌`4ܰX,ìÅžwP)Û´f?symbol:src/services/5../domain/roleGuardsuA../domain/boostEligibilityt,±src/services/boosterRoleService.tss&Qsrc/services/boosterRoleService.tsr&Qsrc/services/boosterRoleService.tsq&Qsrc/services/boosterRoleService.tsp&Qsrc/services/boosterRoleService.tso&Qsrc/services/boosterRoleService.tsn&Qsrc/services/boosterRoleService.tsm&Qsrc/services/boosterRoleService.tsl&Qsrc/services/boosterRoleService.tsk&Qsrc/services/boosterRoleService.tsj&Qsrc/services/boosterRoleService.tsi&Q%../db/schema#drizzle-orm5./boosterRoleServiceg†src/services/boosterRoleService.test.tsf+[src/services/boosterRoleService.test.tse+[src/services/boosterRoleService.test.tsd+[src/services/boosterRoleService.test.tsc+[src/services/boosterRoleService.test.tsb+[src/services/boosterRoleService.test.tsa+[src/services/boosterRoleService.test.ts`+[src/services/boosterRoleService.test.ts_+[src/services/boosterRoleService.test.ts^+[src/services/boosterRoleService.test.ts]+[src/services/boosterRoleService.test.ts\+[src/services/boosterRoleService.test.ts[+[src/services/boosterRoleService.test.tsZ+[src/services/boosterRoleService.test.tsYwinstonX'src/logger.tsW ./loggerVA./discord/registerCommandsU-./discord/clientT'./discord/botS ./configR=src/index.tsQ7../config/permissionsP6èsrc/domain/roleGuards.tsO=src/domain/roleGuards.tsN=src/domain/roleGuards.tsM=src/domain/roleGuards.tsL=src/domain/roleGuards.tsK=src/domain/roleGuards.tsJ=src/domain/roleGuards.tsI=src/domain/roleGuards.tsH%./roleGuardsGµhsrc/domain/roleGuards.test.tsF"Isrc/domain/boostEligibility.tsE"Isrc/domain/boostEligibility.tsD1./boostEligibilityCù(src/domain/boostEligibility.test.tsB;./commands/booster-roleA|lsrc/discord/registerCommands.ts@#Ksrc/discord/registerCommands.ts?#Ksrc/discord/registerCommands.ts>1./registerCommands= {src/discord/registerCommands.test.ts<(Usrc/discord/registerCommands.test.ts;(Usrc/discord/registerCommands.test.ts:
../logger9¾src/discord/interactionHandler.ts8%Osrc/discord/interactionHandler.ts7%Osrc/discord/interactionHandler.ts6%Osrc/discord/interactionHandler.ts5%Osrc/discord/interactionHandler.ts4%Osrc/discord/interactionHandler.ts3%Osrc/discord/interactionHandler.ts2%Osrc/discord/interactionHandler.ts1%Osrc/discord/interactionHandler.ts0*Ysrc/discord/interactionHandler.test.ts/*Ysrc/discord/interactionHandler.test.ts.*Ysrc/discord/interactionHandler.test.ts-*Ysrc/discord/interactionHandler.test.ts,*Ysrc/discord/interactionHandler.test.ts+*Ysrc/discord/interactionHandler.test.ts**Ysrc/discord/interactionHandler.test.ts)*Ysrc/discord/interactionHandler.test.ts(*Ysrc/discord/interactionHandler.test.ts'*Ysrc/discord/interactionHandler.test.ts&+[src/discord/events/guildMemberUpdate.ts%+[src/discord/events/guildMemberUpdate.ts$3./guildMemberUpdate# bun:test"0esrc/discord/events/guildMemberUpdate.test.ts!0esrc/discord/events/guildMemberUpdate.test.ts 0esrc/discord/events/guildMemberUpdate.test.ts0esrc/discord/events/guildMemberUpdate.test.ts(Usrc/discord/commands/booster-role.ts7src/discord/client.ts7src/discord/client.ts5./interactionHandlerA./events/guildMemberUpdate%O../services/discordRoleRepository'S../services/drizzleBoosterRoleStore"I../services/boosterRoleService ../db
../config!discord.js1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts1src/discord/bot.ts3drizzle-orm/pg-core
-src/db/schema.ts ./schema postgres
;drizzle-orm/postgres-js +src/db/index.ts+src/db/index.ts?src/config/permissions.ts3src/config/index.ts3src/config/index.ts3src/config/index.ts#drizzle-kit/ drizzle.config.ts
CîÚ´Žh?íÉ¥Y6
ñ
Ô
·
š
}
`
C
&
ø æ º Ž b 6
Þ ² Z . 
Ö
ª
~
W
0
â » ” m F øÑªJ öÌ¢xN$úÏ¢uHîts/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.deletemethoddeletesrc/services/drizzleBoosterRoleStore.ts&*
 '[symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.createmethodcreatesrc/services/drizzleBoosterRoleStore.ts"$ /![symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.findByUsermethodfindByUsersrc/services/drizzleBoosterRoleStore.ts ! ;[!symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStoreclassDrizzleBoosterRoleStoresrc/services/drizzleBoosterRoleStore.tstypescript+
eA[!file:src/services/drizzleBoosterRoleStore.tsfiledrizzleBoosterRoleStore.tssrc/services/drizzleBoosterRoleStore.tstypescript +W!symbol:src/services/discordRoleRepository.ts:toDiscordColorsfunctiontoDiscordColorssrc/services/discordRoleRepository.tstypescript<<<
 %Wsymbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.fetchRolemethodfetchRolesrc/services/discordRoleRepository.ts59~ 1+Wsymbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.resolvePositionmethodresolvePositionsrc/services/discordRoleRepository.ts13} '!Wsymbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRolemethoddeleteRolesrc/services/discordRoleRepository.ts,/| '!Wsymbol:src/services/discordRoleRepository.ts:DiscordRole,[src/services/drizzleBoosterRoleStore.ts…,[src/services/drizzleBoosterRoleStore.ts„,[src/services/drizzleBoosterRoleStore.tsƒ,[src/services/drizzleBoosterRoleStore.ts,[src/services/drizzleBoosterRoleStore.ts*Wsrc/services/discordRoleRepository.ts€)Wsrc/services/discordRoleRepository.ts)Wsrc/services/discordRoleRepository.ts~)Wsrc/services/discordRoleRepository.ts})Wsrc/services/discordRoleRepository.ts|)Wsrc/services/discordRoleRepository.ts{)Wsrc/services/discordRoleRepository.tsz)Wsrc/services/discordRoleRepository.tsy)Wsrc/services/discordRoleRepository.tsx)Wsrc/services/discordRoleRepository.tsw winstonX)Wsrc/services/discordRoleRepository.tsv&Qsrc/services/boosterRoleService.tss&Qsrc/services/boosterRoleService.tsr&Qsrc/services/boosterRoleService.tsq&Qsrc/services/boosterRoleService.tsp&Qsrc/services/boosterRoleService.tso&Qsrc/services/boosterRoleService.tsn&Qsrc/services/boosterRoleService.tsm&Qsrc/services/boosterRoleService.tsl&Qsrc/services/boosterRoleService.tsk&Qsrc/services/boosterRoleService.tsj&Qsrc/services/boosterRoleService.tsi&Qsrc/services/boosterRoleService.tsh+[src/services/boosterRoleService.test.tsf+[src/services/boosterRoleService.test.tse+[src/services/boosterRoleService.test.tsd+[src/services/boosterRoleService.test.tsc+[src/services/boosterRoleService.test.tsb+[src/services/boosterRoleService.test.tsa+[src/services/boosterRoleService.test.ts`+[src/services/boosterRoleService.test.ts_+[src/services/boosterRoleService.test.ts^+[src/services/boosterRoleService.test.ts]+[src/services/boosterRoleService.test.ts\+[src/services/boosterRoleService.test.ts[+[src/services/boosterRoleService.test.tsZ+[src/services/boosterRoleService.test.tsY'src/logger.tsW%src/index.tsQ=src/domain/roleGuards.tsO=src/domain/roleGuards.tsN=src/domain/roleGuards.tsM=src/domain/roleGuards.tsL=src/domain/roleGuards.tsK=src/domain/roleGuards.tsJ=src/domain/roleGuards.tsI=src/domain/roleGuards.tsH!Gsrc/domain/roleGuards.test.tsF"Isrc/domain/boostEligibility.tsE"Isrc/domain/boostEligibility.tsD'Ssrc/domain/boostEligibility.test.tsB#Ksrc/discord/registerCommands.ts@#Ksrc/discord/registerCommands.ts?#Ksrc/discord/registerCommands.ts>(Usrc/discord/registerCommands.test.ts<(Usrc/discord/registerCommands.test.ts;(Usrc/discord/registerCommands.test.ts:%Osrc/discord/interactionHandler.ts8%Osrc/discord/interactionHandler.ts7%Osrc/discord/interactionHandler.ts6%Osrc/discord/interactionHandler.ts5
OçE
¹
L ¾
d ¥ø¨ô1tÌ6qõYO yhÛê1ë$ëuaMÓ¼¥Žw
s
J
 è · 5 Þ ³ ˆ ] 2 
Ü
±
[
5
 é à Q + Î¥|Aùµ{X6ëαwZ= h<丌`4ܰX,ìÅžwP)Û´f?5../domain/roleGuardsuA../domain/boostEligibilityt,±src/services o #exports:file:src/discord/events/guildMemberUpdate.test.ts->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceexportsfile:src/discord/events/guildMemberUpdate.test.tssymbol:src/discord/events/guildMemberUpdate.test.ts:FakeServiceFakeService
_/!imports:file:src/discord/commands/booster-role.ts->module:discord.jsimportsfile:src/discord/commands/booster-role.tsmodule:discord.jsdiscord.jsz wA/!imports:file:src/discord/client.ts->module:discord.jsimportsfile:src/discord/client.tsmodule:discord.jsdiscord.jsB
5Am3exports:file:src/discord/client.ts->symbol:src/discord/client.ts:createDiscordClientexportsfile:src/discord/client.tssymbol:src/discord/client.ts:createDiscordClientcreateDiscordClient
;C5imports:file:src/discord/bot.ts->module:./interactionHandlerimportsfile:src/discord/bot.tsmodule:./interactionHandler./interactionHandler%
;OAimports:file:src/discord/bot.ts->module:./events/guildMemberUpdateimportsfile:src/discord/bot.tsmodule:./events/guildMemberUpdate./events/guildMemberUpdate:
;]Oimports:file:src/discord/bot.ts->module:../services/discordRoleRepositoryimportsfile:src/discord/bot.tsmodule:../services/discordRoleRepository../services/discordRoleRepository@
#;aSimports:file:src/discord/bot.ts->module:../services/drizzleBoosterRoleStoreimportsfile:src/discord/bot.tsmodule:../services/drizzleBoosterRoleStore../services/drizzleBoosterRoleStore1
;WIimports:file:src/discord/bot.ts->module:../services/boosterRoleServiceimportsfile:src/discord/bot.tsmodule:../services/boosterRoleService../services/boosterRoleServicee g;%imports:file:src/discord/bot.ts->module:../dbimportsfile:src/discord/bot.tsmodule:../db../dbq o;-imports:file:src/discord/bot.ts->module:../configimportsfile:src/discord/bot.tsmodule:../config../configt
q;/!imports:file:src/discord/bot.ts->module:discord.jsimportsfile:src/discord/bot.tsmodule:discord.jsdiscord.js*
!;_+exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:botRolePositionexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:botRolePositionbotRolePosition<
-;k7exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:resolveAnchorPositionexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:resolveAnchorPositionresolveAnchorPosition$
;['exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:memberHasRoleexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:memberHasRolememberHasRole0
%;c/exports:file:src/discord/bot.ts->symbol:src/discord/bot.ts:attachBotHandlersexportsfile:src/discord/bot.tssymbol:src/discord/bot.ts:attachBotHandlersattachBotHandlers  7A3imports:file:src/db/schema.ts->module:drizzle-orm/pg-coreimportsfile:src/db/schema.tsmodule:drizzle-orm/pg-coredrizzle-orm/pg-coreh g5+imports:file:src/db/index.ts->module:./schemaimportsfile:src/db/index.tsmodule:./schema./schemah g5+imports:file:src/db/index.ts->module:postgresimportsfile:src/db/index.tsmodule:postgrespostgres
5I;imports:file:src/db/index.ts->module:drizzle-orm/postgres-jsimportsfile:src/db/index.tsmodule:drizzle-orm/postgres-jsdrizzle-orm/postgres-js 
5Kexports:file:src/db/index.ts->symbol:src/db/index.ts:createDbexportsfile:src/db/index.tssymbol:src/db/index.ts:createDbcreateDb
=W!exports:file:src/config/index.ts->symbol:src/config/index.ts:requireEnvexportsfile:src/config/index.tssymbol:src/config/index.ts:requireEnvrequireEnv
=W!exports:file:src/config/index.ts->symbol:src/config/index.ts:loadConfigexportsfile:src/config/index.tssymbol:src/config/index.ts:loadConfigloadConfigu q91#imports:file:drizzle.config.ts->module:drizzle-kitimportsfile:drizzle.config.tsmodule:drizzle-kitdrizzle-kit
§Ní
y
 
ç
> ¤ ŠümßPÒKËNÏRÍ7§0callscalls:s!calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.recolorRole±calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRole·calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRoleª)calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRolecalls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:toUserErrorMessage»|ycalls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:requireUserº~}calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:requireString«|ycalls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:requireIcon´calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:requireGuildId¨ calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:requireAdministrator¹}{calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.ts:optionalIcon¬
calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon² calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeService.renameRole®
calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole° calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleµ calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeService.claimRole© calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply­1calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand§'Ocalls:symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate->symbol:src/services/boosterRoleService.ts:BoosterRoleService.removeRoleForLostBoost¦*Ucalls:symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate->symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost¥calls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore{wcalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository ukcalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/services/boosterRoleService.ts:BoosterRoleServiceŸsgcalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/discord/interactionHandler.ts:handleInteraction¢ calls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandžcalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate¤hQcalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/discord/bot.ts:resolveAnchorPosition¡`Acalls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/discord/bot.ts:memberHasRole£X1calls:symbol:src/discord/bot.ts:attachBotHandlers->symbol:src/db/index.ts:createDbœX1calls:symbol:src/config/index.ts:loadConfig->symbol:src/config/index.ts:requireEnv
>oÝF
Î
D ³ > Ò 1
ˆ ö gÙRÌ*ˆæE£iÉ&ƒà> Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.listRolesË!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRoleÎ!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.assignRoleÓ!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.validateRoleIconÏ=calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim×;calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.findByUserÅ3calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.createÔ Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRoleÐ?calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.listRolesÊ Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.createRoleÍ Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.assignRoleÒ Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStore.createÕ calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/domain/roleGuards.ts:validateRoleNameÇ calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/domain/roleGuards.ts:normalizeHexColorÈ calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeÌ
calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableÉ!calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.claimRole->symbol:src/domain/boostEligibility.ts:assertBoostEligibilityÄ'Ocalls:symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.deleteÂ?calls:symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.deleteÁkWcalls:symbol:src/domain/roleGuards.ts:validateRoleName->symbol:src/domain/roleGuards.ts:normalizeNameÀticalls:symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailable->symbol:src/domain/roleGuards.ts:normalizeName¿calls:symbol:src/discord/registerCommands.ts:registerGuildCommandsWithToken->symbol:src/discord/registerCommands.ts:registerGuildCommands¾calls:symbol:src/discord/registerCommands.ts:registerGuildCommands->symbol:src/discord/registerCommands.test.ts:FakeRestClient.put½wocalls:symbol:src/discord/interactionHandler.ts:requireIcon->symbol:src/discord/interactionHandler.ts:optionalIcon¼+calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRole¸!calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIcon³calls:symbol:src/discord/interactionHandler.ts:handleInteraction->symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole¯
é^ÎâÄ lÎO/ΜpD
ð
Ç
ž
{
X
@
( û Î ¡ t D  ý Ü Ë ³ m X . 
×
¨
Š
j
J
*
 ó Ú ¾ ˜ r S 3 ÿáɵ¡yeQ='ûåϹ£vW4 
ã¹iDe7 â×¢]Á9ì©Sü¥\7file:src/db/schema.tsÀsymbol:src/discord/interactionHandlerIsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply­Hsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply V-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand§V-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandžU-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandBsymbol:src/discord/interactionHandler.test.ts:FakeInteractionLsymbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate¤Ksymbol:src/discord/events/guildMemberUpdate.ts:handleGuildMemberUpdate\9symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoost¥,[symbol:src/discord/bot.ts:memberHasRole£4ksymbol:src/discord/bot.ts:resolveAnchorPosition¡$Ksymbol:src/db/index.ts:createDbœ*Wsymbol:src/config/index.ts:requireEnv,[file:src/services/boosterRoleService.tsš?symbol:src/discord/events/guildMemberUpdate.test.ts:member[9symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService.removeRoleForLostBoostD symbol:src/discord/events/guildMemberUpdate.test.ts:FakeService4msymbol:src/discord/client.ts:createDiscordClient3ksymbol:src/discord/bot.ts:resolveAnchorPosition +[symbol:src/discord/bot.ts:memberHasRole
-_symbol:src/discord/bot.ts:botRolePosition /csymbol:src/discord/bot.ts:attachBotHandlers #Ksymbol:src/db/index.ts:createDb)Wsymbol:src/config/index.ts:requireEnv)Wsymbol:src/config/index.ts:loadConfig)module:winstonO+module:postgres"Imodule:drizzle-orm/postgres-jsAmodule:drizzle-orm/pg-core1module:drizzle-orm|1 module:drizzle-kit/module:discord.jsv/module:discord.js;/module:discord.js2/module:discord.js'/module:discord.js/module:discord.js/module:discord.js
+module:bun:test]+module:bun:test@+module:bun:test=+module:bun:test7+module:bun:test(+module:bun:test+module:./schema3module:./roleGuardsA?module:./registerCommands8+module:./loggerNCmodule:./interactionHandler)Cmodule:./interactionHandlerAmodule:./guildMemberUpdate%Omodule:./events/guildMemberUpdate%Omodule:./discord/registerCommandsM;module:./discord/clientL5module:./discord/botK+module:./configJ"Imodule:./commands/booster-role<Cmodule:./boosterRoleService~Cmodule:./boosterRoleServicewCmodule:./boosterRoleService^?module:./boostEligibility>.amodule:../services/drizzleBoosterRoleStore,]module:../services/discordRoleRepository)Wmodule:../services/boosterRoleService4)Wmodule:../services/boosterRoleService-module:../logger3Cmodule:../domain/roleGuardsk%Omodule:../domain/boostEligibilityj3module:../db/schema}%module:../db Emodule:../config/permissionsI-module:../config1efile:src/services/drizzleBoosterRoleStore.tsƒ/afile:src/services/discordRoleRepository.ts„,[file:src/services/boosterRoleService.ts˜,[file:src/services/boosterRoleService.ts•,[file:src/services/boosterRoleService.tsŠ,[file:src/services/boosterRoleService.ts1file:src/logger.ts1file:src/logger.ts‰"Gfile:src/domain/roleGuards.ts—"Gfile:src/domain/roleGuards.tsŽ(Sfile:src/domain/boostEligibility.ts(Sfile:src/domain/boostEligibility.ts)Ufile:src/discord/registerCommands.ts“)Ufile:src/discord/registerCommands.ts+Yfile:src/discord/interactionHandler.tsˆ+Yfile:src/discord/interactionHandler.ts†1efile:src/discord/events/guildMemberUpdate.ts‡1efile:src/discord/events/guildMemberUpdate.ts…._file:src/discord/commands/booster-role.tsŒAfile:src/discord/client.ts;file:src/discord/bot.ts7file:src/db/schema.ts5file:src/db/index.ts#Ifile:src/config/permissions.ts=file:src/config/index.ts=file:src/config/index.ts
85­áŠA÷¹·m#Øø­A
÷
¬
a
 Õ Z  ä ¡ ] !
ä
«
q
6 ú Á ‡ F Ä;ùk)æ¨j,íz°r<CÓ m8wAö¤R%symbol:src/servicesQ%symbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStore.createUJsymbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStoreT5msymbol:src/domain/roleGuards.ts:validateRoleNameÙ5msymbol:src/domain/roleGuards.ts:validateRoleNameÇJsymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleõJsymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleì6osymbol:src/domain/roleGuards.ts:normalizeHexColorâ>symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableÚ=symbol:src/discord/interactionHandler.test.ts:FakeService!Isymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply­Hsymbol:src/discord/interactionHandler.test.ts:FakeInteraction.reply V-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommand§V-symbol:src/discord/interactionHandler.test.ts:FakeInteraction.isChatInputCommandžsymbol:src/domain/roleGuards.ts:validateRoleNameF2gsymbol:src/domain/roleGuards.ts:normalizeNameÀ2gsymbol:src/domain/roleGuards.ts:normalizeName¿1gsymbol:src/domain/roleGuards.ts:normalizeNameH6osymbol:src/domain/roleGuards.ts:normalizeHexColorÈ5osymbol:src/domain/roleGuards.ts:normalizeHexColorG=}symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeÌ<}symbol:src/domain/roleGuards.ts:assertRolePositionIsSafeE>symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableÉ=symbol:src/domain/roleGuards.ts:assertRoleNameIsAvailableB=symbol:src/domain/roleGuards.ts:assertCosmeticPermissionsD=symbol:src/domain/roleGuards.ts:assertCanManageStoredRoleCBsymbol:src/domain/boostEligibility.ts:assertBoostEligibilityÄAsymbol:src/domain/boostEligibility.ts:assertBoostEligibility?Jsymbol:src/discord/registerCommands.ts:registerGuildCommandsWithToken:Bsymbol:src/discord/registerCommands.ts:registerGuildCommands¾Asymbol:src/discord/registerCommands.ts:registerGuildCommands9D symbol:src/discord/registerCommands.test.ts:FakeRestClient.put½C symbol:src/discord/registerCommands.test.ts:FakeRestClient.put6?symbol:src/discord/registerCommands.test.ts:FakeRestClient5Asymbol:src/discord/interactionHandler.ts:toUserErrorMessage»@symbol:src/discord/interactionHandler.ts:toUserErrorMessage+9usymbol:src/discord/interactionHandler.ts:requireUserº8usymbol:src/discord/interactionHandler.ts:requireUser.;ysymbol:src/discord/interactionHandler.ts:requireString«:ysymbol:src/discord/interactionHandler.ts:requireString-9usymbol:src/discord/interactionHandler.ts:requireIcon´8usymbol:src/discord/interactionHandler.ts:requireIcon0<{symbol:src/discord/interactionHandler.ts:requireGuildId¨;{symbol:src/discord/interactionHandler.ts:requireGuildId,Csymbol:src/discord/interactionHandler.ts:requireAdministrator¹Bsymbol:src/discord/interactionHandler.ts:requireAdministrator/:wsymbol:src/discord/interactionHandler.ts:optionalIcon¼:wsymbol:src/discord/interactionHandler.ts:optionalIcon¬9wsymbol:src/discord/interactionHandler.ts:optionalIcon1@symbol:src/discord/interactionHandler.ts:handleInteraction¢?symbol:src/discord/interactionHandler.ts:handleInteraction*Ksymbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon²Jsymbol:src/discord/interactionHandler.test.ts:FakeService.setRoleIcon%Jsymbol:src/discord/interactionHandler.test.ts:FakeService.renameRole®Isymbol:src/discord/interactionHandler.test.ts:FakeService.renameRole#Ksymbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole°Jsymbol:src/discord/interactionHandler.test.ts:FakeService.recolorRole$Jsymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleµIsymbol:src/discord/interactionHandler.test.ts:FakeService.deleteRole&Isymbol:src/discord/interactionHandler.test.ts:FakeService.claimRole©Hsymbol:src/discord/interactionHandler.test.ts:FakeService.claimRole"
 8\¾
r Ó 2
ô
M ¦ `»m˃ÙJì u#Îw{'Ocalls:symbol:src/services/discordRoleRepository.ts:DiscordRol(Qcalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.delete Acalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.delete'Ocalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.fetchRole!Ccalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.listRolesÜ?calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordØ(Qcalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRole->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.createÿ/calls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRole->symbol:src/services/discordRoleRepository.ts:toDiscordColors-[calls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.resolvePosition Acalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRole->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.createý'Ocalls:symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.createRole->symbol:src/services/boosterRoleService.test.ts:FailingCreateRoleStore.createþ#Gcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIcon->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRoleæ#Gcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIcon->symbol:src/services/boosterRoleService.ts:BoosterRoleService.validateRoleIconä Acalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIcon->symbol:src/services/boosterRoleService.ts:BoosterRoleService.getUserRecordã"Ecalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.setRoleIcon->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.updateRoleå%Kcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/drizzleBoosterRoleStore.ts:DrizzleBoosterRoleStore.deleteú%Kcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.removeRoleô%Kcalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.deleteRoleø+calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/boosterRoleService.ts:ignoreRollbackErrorò?calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/boosterRoleService.ts:BoosterRoleService.deleteRole÷;calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/boosterRoleService.test.ts:MemoryRoleStore.deleteù$Icalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.removeRoleó$Icalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/services/boosterRoleService.test.ts:FakeRoleRepository.deleteRoleö9calls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.rollbackClaim->symbol:src/discord/interactionHandler.test.ts:FakeService.deleteRoleõ"Ecalls:symbol:src/services/boosterRoleService.ts:BoosterRoleService.renameRole->symbol:src/services/discordRoleRepository.ts:DiscordRoleRepository.updateRoleÞ
FBR
_ y
¹ ÀãmÚ%ÛçØFÒKËNÏRÍ7§0;
U/!imports:file:src/discord/registerCommands.ts->module:discord.jsimportsfile:src/discord/registerCommands.tsmodule:discord.jsdiscord.js : sUIexports:file:src/discord/registerCommands.ts->symbol:src/discord/registerCommands.ts:registerGuildCommandsWithTokenexportsfile:src/discord/registerCommands.tssymbol:src/discord/registerCommands.ts:registerGuildCommandsWithTokenregisterGuildCommandsWithTokenq9 aU7exports:file:src/discord/registerCommands.ts->symbol:src/discord/registerCommands.ts:registerGuildCommandsexportsfile:src/discord/registerCommands.tssymbol:src/discord/registerCommands.ts:registerGuildCommandsregisterGuildCommands18
%_?1imports:file:src/discord/registerCommands.test.ts->module:./registerCommandsimportsfile:src/discord/registerCommands.test.tsmodule:./registerCommands./registerCommands7
_+imports:file:src/discord/registerCommands.test.ts->module:bun:testimportsfile:src/discord/registerCommands.test.tsmodule:bun:testbun:testm6 o_ exports:file:src/discord/registerCommands.test.ts->symbol:src/discord/registerCommands.test.ts:FakeRestClient.putexportsfile:src/discord/registerCommands.test.tssymbol:src/discord/registerCommands.test.ts:FakeRestClient.putputp5 g_)exports:file:src/discord/registerCommands.test.ts->symbol:src/discord/registerCommands.test.ts:FakeRestClientexportsfile:src/discord/registerCommands.test.tssymbol:src/discord/registerCommands.test.ts:FakeRestClientFakeRestClientO4
7YWIimports:file:src/discord/interactionHandler.ts->module:../services/boosterRoleServiceimportsfile:src/discord/interactionHandler.tsmodule:../services/boosterRoleService../services/boosterRoleService3
Y-imports:file:src/discord/interactionHandler.ts->module:../loggerimportsfile:src/discord/interactionHandler.tsmodule:../logger../logger2
Y/!imports:file:src/discord/interactionHandler.ts->module:discord.jsimportsfile:src/discord/interactionHandler.tsmodule:discord.jsdiscord.js]1
WYw%exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:optionalIconexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:optionalIconoptionalIconZ0
UYu#exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireIconexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:requireIconrequireIconv/ gY5exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireAdministratorexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:requireAdministratorrequireAdministratorZ.
UYu#exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireUserexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:requireUserrequireUser`-
YYy'exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireStringexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:requireStringrequireStringc,
[Y{)exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:requireGuildIdexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:requireGuildIdrequireGuildIdp+ cY1exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:toUserErrorMessageexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:toUserErrorMessagetoUserErrorMessagem* aY/exports:file:src/discord/interactionHandler.ts->symbol:src/discord/interactionHandler.ts:handleInteractionexportsfile:src/discord/interactionHandler.tssymbol:src/discord/interactionHandler.ts:handleInteractionhandleInteraction;)
-cC5imports:file:src/discord/interactionHandler.test.ts->module:./interactionHandlerimportsfile:src/discord/interactionHandler.test.tsmodule:./interactionHandler./interactionHandler
YæÉ¬zaHW.öÚ¾¢jN2
ú
Þ:ãÆ©Œ
¿
 
r
<
 Ð š dU 3  Ó £ s C 
ã
³
ƒ
S
# ó$ È r G ñÆpù΢vHì¾f=ëÁg9êÃyW5ñÏ­hR<&úã̵žp?ÝtRole0efile:src/services/boosterRoleService.test.tsR0efile:src/services/boosterRoleService.test.tsQ0efile:src/services/boosterRoleService.test.tsP1file:src/logger.tsO/file:src/index.ts/file:src/index.ts/file:src/index.ts/file:src/index.ts/file:src/index.ts/file:src/index.tsN/file:src/index.tsM/file:src/index.tsL/file:src/index.tsK/file:src/index.tsJ"Gfile:src/domain/roleGuards.ts!Gfile:src/domain/roleGuards.tsI!Gfile:src/domain/roleGuards.tsH!Gfile:src/domain/roleGuards.tsG!Gfile:src/domain/roleGuards.tsF!Gfile:src/domain/roleGuards.tsE!Gfile:src/domain/roleGuards.tsD!Gfile:src/domain/roleGuards.tsC!Gfile:src/domain/roleGuards.tsB'Qfile:src/domain/roleGuards.test.tsŽ&Qfile:src/domain/roleGuards.test.tsA&Qfile:src/domain/roleGuards.test.ts@'Sfile:src/domain/boostEligibility.ts?-]file:src/domain/boostEligibility.test.ts,]file:src/domain/boostEligibility.test.ts>,]file:src/domain/boostEligibility.test.ts=)Ufile:src/discord/registerCommands.tsŒ(Ufile:src/discord/registerCommands.ts<(Ufile:src/discord/registerCommands.ts;(Ufile:src/discord/registerCommands.ts:(Ufile:src/discord/registerCommands.ts9._file:src/discord/registerCommands.test.ts-_file:src/discord/registerCommands.test.ts8-_file:src/discord/registerCommands.test.ts7-_file:src/discord/registerCommands.test.ts6-_file:src/discord/registerCommands.test.ts5+Yfile:src/discord/interactionHandler.tsŠ+Yfile:src/discord/interactionHandler.ts‰*Yfile:src/discord/interactionHandler.ts4*Yfile:src/discord/interactionHandler.ts30cfile:src/discord/interactionHandler.test.tsˆ6ofile:src/discord/events/guildMemberUpdate.test.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.tsƒ;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts5file:src/db/index.ts*Yfile:src/discord/interactionHandler.ts2*Yfile:src/discord/interactionHandler.ts1*Yfile:src/discord/interactionHandler.ts0*Yfile:src/discord/interactionHandler.ts/*Yfile:src/discord/interactionHandler.ts.*Yfile:src/discord/interactionHandler.ts-*Yfile:src/discord/interactionHandler.ts,*Yfile:src/discord/interactionHandler.ts+*Yfile:src/discord/interactionHandler.ts*/cfile:src/discord/interactionHandler.test.ts)/cfile:src/discord/interactionHandler.test.ts(/cfile:src/discord/interactionHandler.test.ts'/cfile:src/discord/interactionHandler.test.ts&/cfile:src/discord/interactionHandler.test.ts%/cfile:src/discord/interactionHandler.test.ts$/cfile:src/discord/interactionHandler.test.ts#/cfile:src/discord/interactionHandler.test.ts"/cfile:src/discord/interactionHandler.test.ts!/cfile:src/discord/interactionHandler.test.ts /cfile:src/discord/interactionHandler.test.ts/cfile:src/discord/interactionHandler.test.ts0efile:src/discord/events/guildMemberUpdate.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts5ofile:src/discord/events/guildMemberUpdate.test.ts-_file:src/discord/commands/booster-role.tsAfile:src/discord/client.tsAfile:src/discord/client.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts;file:src/discord/bot.ts