yuzuha 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/VERSIONING.md +29 -7
  3. package/dist/commands/context.d.ts.map +1 -1
  4. package/dist/commands/context.js +6 -1
  5. package/dist/commands/context.js.map +1 -1
  6. package/dist/index.d.ts +6 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/infrastructure/fluxer/resources/cache.d.ts +4 -0
  10. package/dist/infrastructure/fluxer/resources/cache.d.ts.map +1 -0
  11. package/dist/infrastructure/fluxer/resources/cache.js +51 -0
  12. package/dist/infrastructure/fluxer/resources/cache.js.map +1 -0
  13. package/dist/infrastructure/fluxer/resources/collectors.d.ts.map +1 -1
  14. package/dist/infrastructure/fluxer/resources/collectors.js +86 -4
  15. package/dist/infrastructure/fluxer/resources/collectors.js.map +1 -1
  16. package/dist/infrastructure/fluxer/resources/gateway.d.ts +4 -0
  17. package/dist/infrastructure/fluxer/resources/gateway.d.ts.map +1 -0
  18. package/dist/infrastructure/fluxer/resources/gateway.js +31 -0
  19. package/dist/infrastructure/fluxer/resources/gateway.js.map +1 -0
  20. package/dist/infrastructure/fluxer/resources/instance.d.ts +4 -0
  21. package/dist/infrastructure/fluxer/resources/instance.d.ts.map +1 -0
  22. package/dist/infrastructure/fluxer/resources/instance.js +96 -0
  23. package/dist/infrastructure/fluxer/resources/instance.js.map +1 -0
  24. package/dist/infrastructure/fluxer/resources/messages.d.ts +3 -1
  25. package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
  26. package/dist/infrastructure/fluxer/resources/messages.js +49 -35
  27. package/dist/infrastructure/fluxer/resources/messages.js.map +1 -1
  28. package/dist/infrastructure/fluxer/resources/self.d.ts +4 -0
  29. package/dist/infrastructure/fluxer/resources/self.d.ts.map +1 -0
  30. package/dist/infrastructure/fluxer/resources/self.js +36 -0
  31. package/dist/infrastructure/fluxer/resources/self.js.map +1 -0
  32. package/dist/infrastructure/fluxer/resources/users.d.ts +4 -2
  33. package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
  34. package/dist/infrastructure/fluxer/resources/users.js +2 -2
  35. package/dist/infrastructure/fluxer/resources/users.js.map +1 -1
  36. package/dist/infrastructure/fluxer/resources.d.ts +4 -0
  37. package/dist/infrastructure/fluxer/resources.d.ts.map +1 -1
  38. package/dist/infrastructure/fluxer/resources.js +12 -0
  39. package/dist/infrastructure/fluxer/resources.js.map +1 -1
  40. package/dist/ports/resources/cache.d.ts +52 -0
  41. package/dist/ports/resources/cache.d.ts.map +1 -0
  42. package/dist/ports/resources/cache.js +2 -0
  43. package/dist/ports/resources/cache.js.map +1 -0
  44. package/dist/ports/resources/collectors.d.ts +18 -0
  45. package/dist/ports/resources/collectors.d.ts.map +1 -1
  46. package/dist/ports/resources/collectors.js.map +1 -1
  47. package/dist/ports/resources/gateway.d.ts +48 -0
  48. package/dist/ports/resources/gateway.d.ts.map +1 -0
  49. package/dist/ports/resources/gateway.js +2 -0
  50. package/dist/ports/resources/gateway.js.map +1 -0
  51. package/dist/ports/resources/instance.d.ts +101 -0
  52. package/dist/ports/resources/instance.d.ts.map +1 -0
  53. package/dist/ports/resources/instance.js +2 -0
  54. package/dist/ports/resources/instance.js.map +1 -0
  55. package/dist/ports/resources/messages.d.ts +20 -0
  56. package/dist/ports/resources/messages.d.ts.map +1 -1
  57. package/dist/ports/resources/messages.js.map +1 -1
  58. package/dist/ports/resources/self.d.ts +30 -0
  59. package/dist/ports/resources/self.d.ts.map +1 -0
  60. package/dist/ports/resources/self.js +2 -0
  61. package/dist/ports/resources/self.js.map +1 -0
  62. package/dist/ports/resources.d.ts +8 -0
  63. package/dist/ports/resources.d.ts.map +1 -1
  64. package/dist/ports/resources.js.map +1 -1
  65. package/dist/sdk/builders.d.ts +2 -0
  66. package/dist/sdk/builders.d.ts.map +1 -0
  67. package/dist/sdk/builders.js +2 -0
  68. package/dist/sdk/builders.js.map +1 -0
  69. package/dist/sdk/client.d.ts +2 -0
  70. package/dist/sdk/client.d.ts.map +1 -0
  71. package/dist/sdk/client.js +2 -0
  72. package/dist/sdk/client.js.map +1 -0
  73. package/dist/sdk/cluster.d.ts +2 -0
  74. package/dist/sdk/cluster.d.ts.map +1 -0
  75. package/dist/sdk/cluster.js +2 -0
  76. package/dist/sdk/cluster.js.map +1 -0
  77. package/dist/sdk/collection.d.ts +2 -0
  78. package/dist/sdk/collection.d.ts.map +1 -0
  79. package/dist/sdk/collection.js +2 -0
  80. package/dist/sdk/collection.js.map +1 -0
  81. package/dist/sdk/errors.d.ts +2 -0
  82. package/dist/sdk/errors.d.ts.map +1 -0
  83. package/dist/sdk/errors.js +2 -0
  84. package/dist/sdk/errors.js.map +1 -0
  85. package/dist/sdk/internal.d.ts +2 -0
  86. package/dist/sdk/internal.d.ts.map +1 -0
  87. package/dist/sdk/internal.js +2 -0
  88. package/dist/sdk/internal.js.map +1 -0
  89. package/dist/sdk/message.d.ts +2 -0
  90. package/dist/sdk/message.d.ts.map +1 -0
  91. package/dist/sdk/message.js +2 -0
  92. package/dist/sdk/message.js.map +1 -0
  93. package/dist/sdk/rest/request-manager.d.ts +2 -0
  94. package/dist/sdk/rest/request-manager.d.ts.map +1 -0
  95. package/dist/sdk/rest/request-manager.js +2 -0
  96. package/dist/sdk/rest/request-manager.js.map +1 -0
  97. package/dist/sdk/rest.d.ts +2 -0
  98. package/dist/sdk/rest.d.ts.map +1 -0
  99. package/dist/sdk/rest.js +2 -0
  100. package/dist/sdk/rest.js.map +1 -0
  101. package/dist/sdk/sharding.d.ts +2 -0
  102. package/dist/sdk/sharding.d.ts.map +1 -0
  103. package/dist/sdk/sharding.js +2 -0
  104. package/dist/sdk/sharding.js.map +1 -0
  105. package/dist/sdk/types/routes.d.ts +2 -0
  106. package/dist/sdk/types/routes.d.ts.map +1 -0
  107. package/dist/sdk/types/routes.js +2 -0
  108. package/dist/sdk/types/routes.js.map +1 -0
  109. package/dist/sdk/types.d.ts +2 -0
  110. package/dist/sdk/types.d.ts.map +1 -0
  111. package/dist/sdk/types.js +2 -0
  112. package/dist/sdk/types.js.map +1 -0
  113. package/dist/sdk/util.d.ts +2 -0
  114. package/dist/sdk/util.d.ts.map +1 -0
  115. package/dist/sdk/util.js +2 -0
  116. package/dist/sdk/util.js.map +1 -0
  117. package/dist/sdk/voice.d.ts +2 -0
  118. package/dist/sdk/voice.d.ts.map +1 -0
  119. package/dist/sdk/voice.js +2 -0
  120. package/dist/sdk/voice.js.map +1 -0
  121. package/dist/sdk/ws.d.ts +2 -0
  122. package/dist/sdk/ws.d.ts.map +1 -0
  123. package/dist/sdk/ws.js +2 -0
  124. package/dist/sdk/ws.js.map +1 -0
  125. package/dist/services/resource-authorization.d.ts.map +1 -1
  126. package/dist/services/resource-authorization.js +2 -1
  127. package/dist/services/resource-authorization.js.map +1 -1
  128. package/dist/testing.d.ts.map +1 -1
  129. package/dist/testing.js +4 -0
  130. package/dist/testing.js.map +1 -1
  131. package/docs/FUNCTION-GAPS.md +8 -3
  132. package/docs/NATIVE.md +32 -5
  133. package/docs/PARITY-MATRIX.md +25 -25
  134. package/docs/PARITY.md +21 -9
  135. package/package.json +22 -1
  136. package/src/commands/context.ts +6 -1
  137. package/src/index.ts +8 -2
  138. package/src/infrastructure/fluxer/resources/cache.ts +52 -0
  139. package/src/infrastructure/fluxer/resources/collectors.ts +87 -4
  140. package/src/infrastructure/fluxer/resources/gateway.ts +33 -0
  141. package/src/infrastructure/fluxer/resources/instance.ts +105 -0
  142. package/src/infrastructure/fluxer/resources/messages.ts +49 -35
  143. package/src/infrastructure/fluxer/resources/self.ts +39 -0
  144. package/src/infrastructure/fluxer/resources/users.ts +2 -2
  145. package/src/infrastructure/fluxer/resources.ts +12 -0
  146. package/src/ports/resources/cache.ts +56 -0
  147. package/src/ports/resources/collectors.ts +20 -0
  148. package/src/ports/resources/gateway.ts +49 -0
  149. package/src/ports/resources/instance.ts +109 -0
  150. package/src/ports/resources/messages.ts +23 -0
  151. package/src/ports/resources/self.ts +30 -0
  152. package/src/ports/resources.ts +8 -0
  153. package/src/sdk/builders.ts +1 -0
  154. package/src/sdk/client.ts +1 -0
  155. package/src/sdk/cluster.ts +1 -0
  156. package/src/sdk/collection.ts +1 -0
  157. package/src/sdk/errors.ts +1 -0
  158. package/src/sdk/internal.ts +1 -0
  159. package/src/sdk/message.ts +1 -0
  160. package/src/sdk/rest/request-manager.ts +1 -0
  161. package/src/sdk/rest.ts +1 -0
  162. package/src/sdk/sharding.ts +1 -0
  163. package/src/sdk/types/routes.ts +1 -0
  164. package/src/sdk/types.ts +1 -0
  165. package/src/sdk/util.ts +1 -0
  166. package/src/sdk/voice.ts +1 -0
  167. package/src/sdk/ws.ts +1 -0
  168. package/src/services/resource-authorization.ts +2 -1
  169. package/src/testing.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/users.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client, Guild, GuildMember, PresenceUpdateOptions, User, ProfilePayload } from '@fluxerjs/core';\nimport type { ActivityInfo, ActivityType, PresenceStatus } from '../../../ports/resources/common.js';\nimport { limitOf } from '../../../ports/resources/common.js';\nimport type {\n AuditLogInfo,\n BanInfo,\n GuildInfo,\n MemberInfo,\n UserInfo,\n UsersResources,\n LiveCountsInput,\n ProfileInfo,\n} from '../../../ports/resources/users.js';\nimport { YuzuhaError } from '../../../errors.js';\n\n/** Época Fluxer (01/01/2015 UTC) para derivar timestamps de snowflakes. */\nconst FLUXER_EPOCH = 1420070400000n;\n\nfunction profileInfo(profile: ProfilePayload | null): ProfileInfo | null {\n if (!profile) return null;\n const fields = profile.userProfile;\n return { pronouns: fields?.pronouns ?? null, bio: fields?.bio ?? null, banner: fields?.banner ?? null,\n accentColor: fields?.accentColor ?? null, bannerColor: fields?.bannerColor ?? null, theme: fields?.theme ?? null,\n mutualGuildIDs: [...new Set([...(profile.mutualGuildIds ?? []), ...(profile.mutualGuilds ?? []).map(guild => guild.id)])],\n connectedAccounts: (profile.connectedAccounts ?? []).map(account => ({ name: account.name ?? null, type: account.type ?? null })) };\n}\n\ntype CountsPayload = { counts: { guildId: string; channelId?: string; memberCount: number; onlineCount: number }[] };\n\nfunction liveCounts<T>(client: Client, event: 'guildCountsUpdate' | 'channelMemberCountsUpdate',\n select: (payload: CountsPayload) => T | undefined, request: () => void, input: LiveCountsInput = {}): Promise<T> {\n const timeout = input.timeout ?? 5000;\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) {\n return Promise.reject(new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.'));\n }\n if (input.signal?.aborted) return Promise.reject(input.signal.reason ?? new YuzuhaError('ABORTED', 'Consulta cancelada.'));\n return new Promise<T>((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timer);\n client.off(event, listener);\n input.signal?.removeEventListener('abort', abort);\n };\n const listener = (payload: CountsPayload) => {\n const result = select(payload);\n if (result !== undefined) { cleanup(); resolve(result); }\n };\n const abort = () => { cleanup(); reject(input.signal?.reason ?? new YuzuhaError('ABORTED', 'Consulta cancelada.')); };\n const timer = setTimeout(() => { cleanup(); reject(new YuzuhaError('COUNTS_TIMEOUT', 'O gateway não respondeu com as contagens no prazo.')); }, timeout);\n client.on(event, listener);\n input.signal?.addEventListener('abort', abort, { once: true });\n try { request(); } catch (error) { cleanup(); reject(error); }\n });\n}\n\n/** Tipos de atividade do contrato para os códigos numéricos do gateway. */\nconst ACTIVITY_NUMBERS: Record<ActivityType, number> = {\n playing: 0,\n listening: 2,\n watching: 3,\n competing: 5,\n custom: 4,\n};\n\nfunction snowflakeTimestamp(id: string): number {\n return Number((BigInt(id) >> 22n) + FLUXER_EPOCH);\n}\n\nfunction toUserInfo(user: User): UserInfo {\n return {\n id: user.id,\n username: user.username,\n displayName: user.globalName ?? user.username,\n bot: user.bot,\n avatarURL: user.avatarURL(),\n bannerURL: user.bannerURL(),\n createdTimestamp: user.createdTimestamp,\n };\n}\n\nfunction toMemberInfo(member: GuildMember): MemberInfo {\n const user = member.user;\n return {\n id: member.id,\n username: user.username,\n displayName: member.displayName,\n bot: user.bot,\n avatarURL: member.displayAvatarURL(),\n bannerURL: member.bannerURL() ?? user.bannerURL(),\n createdTimestamp: user.createdTimestamp,\n nickname: member.nick,\n joinedTimestamp: member.joinedAt.getTime(),\n roles: [...member.roles.roleIds],\n permissions: member.permissions.bitfield.toString(),\n timedOutUntil: member.communicationDisabledUntil?.getTime() ?? null,\n };\n}\n\nfunction toGuildInfo(guild: Guild): GuildInfo {\n return {\n id: guild.id,\n name: guild.name,\n ownerID: guild.ownerId,\n iconURL: guild.iconURL(),\n bannerURL: guild.bannerURL(),\n memberCount: guild.memberCount,\n createdTimestamp: guild.createdTimestamp,\n features: [...guild.features],\n };\n}\n\nexport function createUsersResources(client: Client): UsersResources {\n return {\n async leaveGuild(guildID) {\n if (!client.user) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O client ainda não possui um usuário autenticado.');\n await client.user.leaveGuild(guildID);\n },\n async profile(userID, guildID) {\n const result = await client.users.fetchWithProfile(userID, { guildId: guildID });\n return { user: toUserInfo(result.user), member: result.member ? toMemberInfo(result.member) : null,\n globalProfile: profileInfo(result.globalProfile), serverProfile: profileInfo(result.serverProfile) };\n },\n async guildCounts(guildID, input) {\n return liveCounts(client, 'guildCountsUpdate', payload => {\n const count = payload.counts.find(item => item.guildId === guildID);\n return count ? { guildID, memberCount: count.memberCount, onlineCount: count.onlineCount } : undefined;\n }, () => client.requestGuildCounts({ guildIds: [guildID] }), input);\n },\n async channelCounts(guildID, channelID, input) {\n return liveCounts(client, 'channelMemberCountsUpdate', payload => {\n const count = payload.counts.find(item => item.guildId === guildID && item.channelId === channelID);\n return count ? { guildID, channelID, memberCount: count.memberCount, onlineCount: count.onlineCount } : undefined;\n }, () => client.requestChannelMemberCounts({ guildId: guildID, channelId: channelID }), input);\n },\n async user(id: string): Promise<UserInfo> {\n return toUserInfo(await client.users.fetch(id, { force: true }));\n },\n async member(guildID: string, userID: string): Promise<MemberInfo> {\n const guild = await client.guilds.resolve(guildID);\n return toMemberInfo(await guild.members.fetch(userID, { force: true }));\n },\n async members(guildID: string, limit?: number): Promise<MemberInfo[]> {\n const guild = await client.guilds.resolve(guildID);\n return (await guild.members.fetch({ limit: limitOf(limit, 50, 1000) })).map(toMemberInfo);\n },\n async memberCount(guildID: string): Promise<number> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n if (guild.memberCount !== null) return guild.memberCount;\n return (await guild.members.fetch({ limit: 1000 })).length;\n },\n async guild(guildID: string): Promise<GuildInfo> {\n return toGuildInfo(await client.guilds.fetch(guildID, { force: true }));\n },\n async bans(guildID: string, limit?: number): Promise<BanInfo[]> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n const capped = limitOf(limit, 50, 1000);\n return (await guild.fetchBans()).slice(0, capped)\n .map(ban => ({ userID: ban.user.id, username: ban.user.username, reason: ban.reason }));\n },\n async auditLogs(guildID: string, limit?: number): Promise<AuditLogInfo[]> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n const { entries } = await guild.fetchAuditLogs({ limit: limitOf(limit, 50, 100) });\n return entries.map(entry => ({\n id: entry.id,\n actionType: entry.actionType,\n userID: entry.userId,\n targetID: entry.targetId,\n reason: entry.reason,\n createdTimestamp: snowflakeTimestamp(entry.id),\n }));\n },\n async searchMembers(guildID, query, limit, offset = 0) {\n if (!Number.isSafeInteger(offset) || offset < 0) throw new YuzuhaError('MEMBER_OFFSET', 'Offset deve ser inteiro a partir de 0.');\n const guild = await client.guilds.resolve(guildID);\n const result = await guild.members.search({ query, limit: limitOf(limit, 25, 100), offset });\n return { members: result.members.map(hit => ({ userID: hit.userId, username: hit.username,\n displayName: hit.nickname ?? hit.globalName ?? hit.username, nickname: hit.nickname })),\n total: result.total ?? null, hasMore: result.hasMore ?? false, indexing: result.indexing ?? false };\n },\n async setNickname(guildID, userID, nickname, reason) {\n const guild = await client.guilds.resolve(guildID);\n const member = await guild.members.fetch(userID, { force: true });\n return toMemberInfo(await member.edit({ nick: nickname, reason }));\n },\n async editGuild(guildID, input) {\n const guild = await client.guilds.resolve(guildID);\n const { systemChannelID, afkChannelID, ...fields } = input;\n return toGuildInfo(await guild.edit({ ...fields, systemChannelId: systemChannelID, afkChannelId: afkChannelID }));\n },\n async setPresence(status: PresenceStatus, activity?: ActivityInfo): Promise<void> {\n const self = client.user;\n if (!self) throw new YuzuhaError('NOT_READY', 'O cliente ainda não está pronto para definir presença.');\n let presence: PresenceUpdateOptions = { status };\n if (activity !== undefined) {\n presence = activity.type === 'custom'\n ? { status, customStatus: { text: activity.name } }\n : {\n status,\n activities: [{\n name: activity.name,\n type: ACTIVITY_NUMBERS[activity.type],\n ...(activity.url === undefined ? {} : { url: activity.url }),\n }],\n };\n }\n self.setPresence(presence);\n },\n };\n}\n"]}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/users.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client, Guild, GuildMember, PresenceUpdateOptions, User, ProfilePayload } from '@fluxerjs/core';\nimport type { ActivityInfo, ActivityType, PresenceStatus } from '../../../ports/resources/common.js';\nimport { limitOf } from '../../../ports/resources/common.js';\nimport type {\n AuditLogInfo,\n BanInfo,\n GuildInfo,\n MemberInfo,\n UserInfo,\n UsersResources,\n LiveCountsInput,\n ProfileInfo,\n} from '../../../ports/resources/users.js';\nimport { YuzuhaError } from '../../../errors.js';\n\n/** Época Fluxer (01/01/2015 UTC) para derivar timestamps de snowflakes. */\nconst FLUXER_EPOCH = 1420070400000n;\n\nfunction profileInfo(profile: ProfilePayload | null): ProfileInfo | null {\n if (!profile) return null;\n const fields = profile.userProfile;\n return { pronouns: fields?.pronouns ?? null, bio: fields?.bio ?? null, banner: fields?.banner ?? null,\n accentColor: fields?.accentColor ?? null, bannerColor: fields?.bannerColor ?? null, theme: fields?.theme ?? null,\n mutualGuildIDs: [...new Set([...(profile.mutualGuildIds ?? []), ...(profile.mutualGuilds ?? []).map(guild => guild.id)])],\n connectedAccounts: (profile.connectedAccounts ?? []).map(account => ({ name: account.name ?? null, type: account.type ?? null })) };\n}\n\ntype CountsPayload = { counts: { guildId: string; channelId?: string; memberCount: number; onlineCount: number }[] };\n\nfunction liveCounts<T>(client: Client, event: 'guildCountsUpdate' | 'channelMemberCountsUpdate',\n select: (payload: CountsPayload) => T | undefined, request: () => void, input: LiveCountsInput = {}): Promise<T> {\n const timeout = input.timeout ?? 5000;\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) {\n return Promise.reject(new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.'));\n }\n if (input.signal?.aborted) return Promise.reject(input.signal.reason ?? new YuzuhaError('ABORTED', 'Consulta cancelada.'));\n return new Promise<T>((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timer);\n client.off(event, listener);\n input.signal?.removeEventListener('abort', abort);\n };\n const listener = (payload: CountsPayload) => {\n const result = select(payload);\n if (result !== undefined) { cleanup(); resolve(result); }\n };\n const abort = () => { cleanup(); reject(input.signal?.reason ?? new YuzuhaError('ABORTED', 'Consulta cancelada.')); };\n const timer = setTimeout(() => { cleanup(); reject(new YuzuhaError('COUNTS_TIMEOUT', 'O gateway não respondeu com as contagens no prazo.')); }, timeout);\n client.on(event, listener);\n input.signal?.addEventListener('abort', abort, { once: true });\n try { request(); } catch (error) { cleanup(); reject(error); }\n });\n}\n\n/** Tipos de atividade do contrato para os códigos numéricos do gateway. */\nconst ACTIVITY_NUMBERS: Record<ActivityType, number> = {\n playing: 0,\n listening: 2,\n watching: 3,\n competing: 5,\n custom: 4,\n};\n\nfunction snowflakeTimestamp(id: string): number {\n return Number((BigInt(id) >> 22n) + FLUXER_EPOCH);\n}\n\nexport function toUserInfo(user: User): UserInfo {\n return {\n id: user.id,\n username: user.username,\n displayName: user.globalName ?? user.username,\n bot: user.bot,\n avatarURL: user.avatarURL(),\n bannerURL: user.bannerURL(),\n createdTimestamp: user.createdTimestamp,\n };\n}\n\nexport function toMemberInfo(member: GuildMember): MemberInfo {\n const user = member.user;\n return {\n id: member.id,\n username: user.username,\n displayName: member.displayName,\n bot: user.bot,\n avatarURL: member.displayAvatarURL(),\n bannerURL: member.bannerURL() ?? user.bannerURL(),\n createdTimestamp: user.createdTimestamp,\n nickname: member.nick,\n joinedTimestamp: member.joinedAt.getTime(),\n roles: [...member.roles.roleIds],\n permissions: member.permissions.bitfield.toString(),\n timedOutUntil: member.communicationDisabledUntil?.getTime() ?? null,\n };\n}\n\nfunction toGuildInfo(guild: Guild): GuildInfo {\n return {\n id: guild.id,\n name: guild.name,\n ownerID: guild.ownerId,\n iconURL: guild.iconURL(),\n bannerURL: guild.bannerURL(),\n memberCount: guild.memberCount,\n createdTimestamp: guild.createdTimestamp,\n features: [...guild.features],\n };\n}\n\nexport function createUsersResources(client: Client): UsersResources {\n return {\n async leaveGuild(guildID) {\n if (!client.user) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O client ainda não possui um usuário autenticado.');\n await client.user.leaveGuild(guildID);\n },\n async profile(userID, guildID) {\n const result = await client.users.fetchWithProfile(userID, { guildId: guildID });\n return { user: toUserInfo(result.user), member: result.member ? toMemberInfo(result.member) : null,\n globalProfile: profileInfo(result.globalProfile), serverProfile: profileInfo(result.serverProfile) };\n },\n async guildCounts(guildID, input) {\n return liveCounts(client, 'guildCountsUpdate', payload => {\n const count = payload.counts.find(item => item.guildId === guildID);\n return count ? { guildID, memberCount: count.memberCount, onlineCount: count.onlineCount } : undefined;\n }, () => client.requestGuildCounts({ guildIds: [guildID] }), input);\n },\n async channelCounts(guildID, channelID, input) {\n return liveCounts(client, 'channelMemberCountsUpdate', payload => {\n const count = payload.counts.find(item => item.guildId === guildID && item.channelId === channelID);\n return count ? { guildID, channelID, memberCount: count.memberCount, onlineCount: count.onlineCount } : undefined;\n }, () => client.requestChannelMemberCounts({ guildId: guildID, channelId: channelID }), input);\n },\n async user(id: string): Promise<UserInfo> {\n return toUserInfo(await client.users.fetch(id, { force: true }));\n },\n async member(guildID: string, userID: string): Promise<MemberInfo> {\n const guild = await client.guilds.resolve(guildID);\n return toMemberInfo(await guild.members.fetch(userID, { force: true }));\n },\n async members(guildID: string, limit?: number): Promise<MemberInfo[]> {\n const guild = await client.guilds.resolve(guildID);\n return (await guild.members.fetch({ limit: limitOf(limit, 50, 1000) })).map(toMemberInfo);\n },\n async memberCount(guildID: string): Promise<number> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n if (guild.memberCount !== null) return guild.memberCount;\n return (await guild.members.fetch({ limit: 1000 })).length;\n },\n async guild(guildID: string): Promise<GuildInfo> {\n return toGuildInfo(await client.guilds.fetch(guildID, { force: true }));\n },\n async bans(guildID: string, limit?: number): Promise<BanInfo[]> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n const capped = limitOf(limit, 50, 1000);\n return (await guild.fetchBans()).slice(0, capped)\n .map(ban => ({ userID: ban.user.id, username: ban.user.username, reason: ban.reason }));\n },\n async auditLogs(guildID: string, limit?: number): Promise<AuditLogInfo[]> {\n const guild = await client.guilds.fetch(guildID, { force: true });\n const { entries } = await guild.fetchAuditLogs({ limit: limitOf(limit, 50, 100) });\n return entries.map(entry => ({\n id: entry.id,\n actionType: entry.actionType,\n userID: entry.userId,\n targetID: entry.targetId,\n reason: entry.reason,\n createdTimestamp: snowflakeTimestamp(entry.id),\n }));\n },\n async searchMembers(guildID, query, limit, offset = 0) {\n if (!Number.isSafeInteger(offset) || offset < 0) throw new YuzuhaError('MEMBER_OFFSET', 'Offset deve ser inteiro a partir de 0.');\n const guild = await client.guilds.resolve(guildID);\n const result = await guild.members.search({ query, limit: limitOf(limit, 25, 100), offset });\n return { members: result.members.map(hit => ({ userID: hit.userId, username: hit.username,\n displayName: hit.nickname ?? hit.globalName ?? hit.username, nickname: hit.nickname })),\n total: result.total ?? null, hasMore: result.hasMore ?? false, indexing: result.indexing ?? false };\n },\n async setNickname(guildID, userID, nickname, reason) {\n const guild = await client.guilds.resolve(guildID);\n const member = await guild.members.fetch(userID, { force: true });\n return toMemberInfo(await member.edit({ nick: nickname, reason }));\n },\n async editGuild(guildID, input) {\n const guild = await client.guilds.resolve(guildID);\n const { systemChannelID, afkChannelID, ...fields } = input;\n return toGuildInfo(await guild.edit({ ...fields, systemChannelId: systemChannelID, afkChannelId: afkChannelID }));\n },\n async setPresence(status: PresenceStatus, activity?: ActivityInfo): Promise<void> {\n const self = client.user;\n if (!self) throw new YuzuhaError('NOT_READY', 'O cliente ainda não está pronto para definir presença.');\n let presence: PresenceUpdateOptions = { status };\n if (activity !== undefined) {\n presence = activity.type === 'custom'\n ? { status, customStatus: { text: activity.name } }\n : {\n status,\n activities: [{\n name: activity.name,\n type: ACTIVITY_NUMBERS[activity.type],\n ...(activity.url === undefined ? {} : { url: activity.url }),\n }],\n };\n }\n self.setPresence(presence);\n },\n };\n}\n"]}
@@ -11,6 +11,10 @@ export declare class FluxerResources implements Resources {
11
11
  readonly expressions: import("../../index.js").ExpressionsResources;
12
12
  readonly threads: import("../../index.js").ThreadsResources;
13
13
  readonly invites: import("../../index.js").InvitesResources;
14
+ readonly gateway: import("../../index.js").GatewayResources;
15
+ readonly instance: import("../../index.js").InstanceResources;
16
+ readonly self: import("../../index.js").SelfResources;
17
+ readonly cache: import("../../index.js").CacheResources;
14
18
  constructor(client: Client);
15
19
  }
16
20
  //# sourceMappingURL=resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/fluxer/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAW1D,mEAAmE;AACnE,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,KAAK,0CAAC;IACf,QAAQ,CAAC,KAAK,0CAAC;IACf,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,UAAU,+CAAC;IACpB,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,WAAW,gDAAC;IACrB,QAAQ,CAAC,OAAO,4CAAC;IACjB,QAAQ,CAAC,OAAO,4CAAC;gBAEL,MAAM,EAAE,MAAM;CAW3B"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/fluxer/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAe1D,mEAAmE;AACnE,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,KAAK,0CAAC;IACf,QAAQ,CAAC,KAAK,0CAAC;IACf,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,UAAU,+CAAC;IACpB,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,WAAW,gDAAC;IACrB,QAAQ,CAAC,OAAO,4CAAC;IACjB,QAAQ,CAAC,OAAO,4CAAC;IACjB,QAAQ,CAAC,OAAO,4CAAC;IACjB,QAAQ,CAAC,QAAQ,6CAAC;IAClB,QAAQ,CAAC,IAAI,yCAAC;IACd,QAAQ,CAAC,KAAK,0CAAC;gBAEH,MAAM,EAAE,MAAM;CAe3B"}
@@ -1,9 +1,13 @@
1
+ import { createCacheResources } from './resources/cache.js';
1
2
  import { createChannelsResources } from './resources/channels.js';
2
3
  import { createCollectorsResources } from './resources/collectors.js';
3
4
  import { createExpressionsResources } from './resources/expressions.js';
5
+ import { createGatewayResources } from './resources/gateway.js';
6
+ import { createInstanceResources } from './resources/instance.js';
4
7
  import { createInvitesResources } from './resources/invites.js';
5
8
  import { createMessagesResources } from './resources/messages.js';
6
9
  import { createRolesResources } from './resources/roles.js';
10
+ import { createSelfResources } from './resources/self.js';
7
11
  import { createThreadsResources } from './resources/threads.js';
8
12
  import { createUsersResources } from './resources/users.js';
9
13
  import { createWebhooksResources } from './resources/webhooks.js';
@@ -18,6 +22,10 @@ export class FluxerResources {
18
22
  expressions;
19
23
  threads;
20
24
  invites;
25
+ gateway;
26
+ instance;
27
+ self;
28
+ cache;
21
29
  constructor(client) {
22
30
  this.users = createUsersResources(client);
23
31
  this.roles = createRolesResources(client);
@@ -28,6 +36,10 @@ export class FluxerResources {
28
36
  this.expressions = createExpressionsResources(client);
29
37
  this.threads = createThreadsResources(client);
30
38
  this.invites = createInvitesResources(client);
39
+ this.gateway = createGatewayResources(client);
40
+ this.instance = createInstanceResources(client);
41
+ this.self = createSelfResources(client);
42
+ this.cache = createCacheResources(client);
31
43
  }
32
44
  }
33
45
  //# sourceMappingURL=resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/infrastructure/fluxer/resources.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,mEAAmE;AACnE,MAAM,OAAO,eAAe;IACjB,KAAK,CAAC;IACN,KAAK,CAAC;IACN,QAAQ,CAAC;IACT,QAAQ,CAAC;IACT,UAAU,CAAC;IACX,QAAQ,CAAC;IACT,WAAW,CAAC;IACZ,OAAO,CAAC;IACR,OAAO,CAAC;IAEjB,YAAY,MAAc;QACxB,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import type { Client } from '@fluxerjs/core';\nimport type { Resources } from '../../ports/resources.js';\nimport { createChannelsResources } from './resources/channels.js';\nimport { createCollectorsResources } from './resources/collectors.js';\nimport { createExpressionsResources } from './resources/expressions.js';\nimport { createInvitesResources } from './resources/invites.js';\nimport { createMessagesResources } from './resources/messages.js';\nimport { createRolesResources } from './resources/roles.js';\nimport { createThreadsResources } from './resources/threads.js';\nimport { createUsersResources } from './resources/users.js';\nimport { createWebhooksResources } from './resources/webhooks.js';\n\n/** Implementação dos recursos nativos sobre o SDK do Fluxer.js. */\nexport class FluxerResources implements Resources {\n readonly users;\n readonly roles;\n readonly channels;\n readonly messages;\n readonly collectors;\n readonly webhooks;\n readonly expressions;\n readonly threads;\n readonly invites;\n\n constructor(client: Client) {\n this.users = createUsersResources(client);\n this.roles = createRolesResources(client);\n this.channels = createChannelsResources(client);\n this.messages = createMessagesResources(client);\n this.collectors = createCollectorsResources(client);\n this.webhooks = createWebhooksResources(client);\n this.expressions = createExpressionsResources(client);\n this.threads = createThreadsResources(client);\n this.invites = createInvitesResources(client);\n }\n}\n"]}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/infrastructure/fluxer/resources.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,mEAAmE;AACnE,MAAM,OAAO,eAAe;IACjB,KAAK,CAAC;IACN,KAAK,CAAC;IACN,QAAQ,CAAC;IACT,QAAQ,CAAC;IACT,UAAU,CAAC;IACX,QAAQ,CAAC;IACT,WAAW,CAAC;IACZ,OAAO,CAAC;IACR,OAAO,CAAC;IACR,OAAO,CAAC;IACR,QAAQ,CAAC;IACT,IAAI,CAAC;IACL,KAAK,CAAC;IAEf,YAAY,MAAc;QACxB,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;CACF","sourcesContent":["import type { Client } from '@fluxerjs/core';\nimport type { Resources } from '../../ports/resources.js';\nimport { createCacheResources } from './resources/cache.js';\nimport { createChannelsResources } from './resources/channels.js';\nimport { createCollectorsResources } from './resources/collectors.js';\nimport { createExpressionsResources } from './resources/expressions.js';\nimport { createGatewayResources } from './resources/gateway.js';\nimport { createInstanceResources } from './resources/instance.js';\nimport { createInvitesResources } from './resources/invites.js';\nimport { createMessagesResources } from './resources/messages.js';\nimport { createRolesResources } from './resources/roles.js';\nimport { createSelfResources } from './resources/self.js';\nimport { createThreadsResources } from './resources/threads.js';\nimport { createUsersResources } from './resources/users.js';\nimport { createWebhooksResources } from './resources/webhooks.js';\n\n/** Implementação dos recursos nativos sobre o SDK do Fluxer.js. */\nexport class FluxerResources implements Resources {\n readonly users;\n readonly roles;\n readonly channels;\n readonly messages;\n readonly collectors;\n readonly webhooks;\n readonly expressions;\n readonly threads;\n readonly invites;\n readonly gateway;\n readonly instance;\n readonly self;\n readonly cache;\n\n constructor(client: Client) {\n this.users = createUsersResources(client);\n this.roles = createRolesResources(client);\n this.channels = createChannelsResources(client);\n this.messages = createMessagesResources(client);\n this.collectors = createCollectorsResources(client);\n this.webhooks = createWebhooksResources(client);\n this.expressions = createExpressionsResources(client);\n this.threads = createThreadsResources(client);\n this.invites = createInvitesResources(client);\n this.gateway = createGatewayResources(client);\n this.instance = createInstanceResources(client);\n this.self = createSelfResources(client);\n this.cache = createCacheResources(client);\n }\n}\n"]}
@@ -0,0 +1,52 @@
1
+ import type { MessageInfo } from './messages.js';
2
+ import type { MemberInfo } from './users.js';
3
+ /** Limites resolvidos do cache; `null` indica ilimitado. */
4
+ export interface CacheLimitsInfo {
5
+ guilds: number | null;
6
+ channels: number | null;
7
+ users: number | null;
8
+ members: number | null;
9
+ /** `false` quando o cache de mensagens está desabilitado. */
10
+ messages: number | false | null;
11
+ roles: number | null;
12
+ emojis: number | null;
13
+ stickers: number | null;
14
+ }
15
+ /** Tamanhos atuais dos buckets de cache com os limites aplicados. */
16
+ export interface CacheStatsInfo {
17
+ guilds: number;
18
+ channels: number;
19
+ users: number;
20
+ members: number;
21
+ messages: number;
22
+ messageChannels: number;
23
+ roles: number;
24
+ emojis: number;
25
+ stickers: number;
26
+ limits: CacheLimitsInfo;
27
+ }
28
+ /**
29
+ * Filtro de limpeza do cache de mensagens. Sem `maxAgeMs` nem `keep`,
30
+ * todas as mensagens do escopo são removidas. `keep` retorna verdadeiro
31
+ * para manter a mensagem no cache.
32
+ */
33
+ export interface MessageSweepInput {
34
+ channelID?: string;
35
+ maxAgeMs?: number;
36
+ keep?: (message: MessageInfo, channelID: string) => boolean;
37
+ }
38
+ /**
39
+ * Filtro de limpeza do cache de membros. Sem `keep`, todos os membros
40
+ * do escopo são removidos. `keep` retorna verdadeiro para manter o membro.
41
+ */
42
+ export interface MemberSweepInput {
43
+ guildID?: string;
44
+ keep?: (member: MemberInfo, guildID: string) => boolean;
45
+ }
46
+ /** Inspeção e limpeza dos caches locais do client. */
47
+ export interface CacheResources {
48
+ stats(): Promise<CacheStatsInfo>;
49
+ sweepMessages(input?: MessageSweepInput): Promise<number>;
50
+ sweepMembers(input?: MemberSweepInput): Promise<number>;
51
+ }
52
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CACzD;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,aAAa,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,YAAY,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/ports/resources/cache.ts"],"names":[],"mappings":"","sourcesContent":["import type { MessageInfo } from './messages.js';\nimport type { MemberInfo } from './users.js';\n\n/** Limites resolvidos do cache; `null` indica ilimitado. */\nexport interface CacheLimitsInfo {\n guilds: number | null;\n channels: number | null;\n users: number | null;\n members: number | null;\n /** `false` quando o cache de mensagens está desabilitado. */\n messages: number | false | null;\n roles: number | null;\n emojis: number | null;\n stickers: number | null;\n}\n\n/** Tamanhos atuais dos buckets de cache com os limites aplicados. */\nexport interface CacheStatsInfo {\n guilds: number;\n channels: number;\n users: number;\n members: number;\n messages: number;\n messageChannels: number;\n roles: number;\n emojis: number;\n stickers: number;\n limits: CacheLimitsInfo;\n}\n\n/**\n * Filtro de limpeza do cache de mensagens. Sem `maxAgeMs` nem `keep`,\n * todas as mensagens do escopo são removidas. `keep` retorna verdadeiro\n * para manter a mensagem no cache.\n */\nexport interface MessageSweepInput {\n channelID?: string;\n maxAgeMs?: number;\n keep?: (message: MessageInfo, channelID: string) => boolean;\n}\n\n/**\n * Filtro de limpeza do cache de membros. Sem `keep`, todos os membros\n * do escopo são removidos. `keep` retorna verdadeiro para manter o membro.\n */\nexport interface MemberSweepInput {\n guildID?: string;\n keep?: (member: MemberInfo, guildID: string) => boolean;\n}\n\n/** Inspeção e limpeza dos caches locais do client. */\nexport interface CacheResources {\n stats(): Promise<CacheStatsInfo>;\n sweepMessages(input?: MessageSweepInput): Promise<number>;\n sweepMembers(input?: MemberSweepInput): Promise<number>;\n}\n"]}
@@ -4,6 +4,21 @@ export interface AwaitMessageInput {
4
4
  timeMs: number;
5
5
  signal?: AbortSignal;
6
6
  }
7
+ export interface CollectMessagesInput {
8
+ userID?: string;
9
+ contains?: string;
10
+ timeMs?: number;
11
+ max?: number;
12
+ signal?: AbortSignal;
13
+ }
14
+ export interface CollectReactionsInput {
15
+ messageID: string;
16
+ emojis?: string | string[];
17
+ userID?: string;
18
+ timeMs?: number;
19
+ max?: number;
20
+ signal?: AbortSignal;
21
+ }
7
22
  export interface CollectedMessageInfo {
8
23
  id: string;
9
24
  channelID: string;
@@ -13,9 +28,12 @@ export interface CollectedMessageInfo {
13
28
  export interface ReactionVote {
14
29
  userID: string;
15
30
  emoji: string;
31
+ messageID?: string;
16
32
  }
17
33
  export interface CollectorsResources {
18
34
  awaitMessage(channelID: string, input: AwaitMessageInput): Promise<CollectedMessageInfo | null>;
19
35
  awaitReaction(channelID: string, messageID: string, emojis: string | string[], timeMs: number, userID?: string, signal?: AbortSignal): Promise<ReactionVote | null>;
36
+ collectMessages(channelID: string, input: CollectMessagesInput): AsyncIterable<CollectedMessageInfo>;
37
+ collectReactions(channelID: string, input: CollectReactionsInput): AsyncIterable<ReactionVote>;
20
38
  }
21
39
  //# sourceMappingURL=collectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/collectors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAChG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3E,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACxF"}
1
+ {"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/collectors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAChG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAC3E,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACvF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACrG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;CAChG"}
@@ -1 +1 @@
1
- {"version":3,"file":"collectors.js","sourceRoot":"","sources":["../../../src/ports/resources/collectors.ts"],"names":[],"mappings":"","sourcesContent":["export interface AwaitMessageInput {\n userID?: string;\n contains?: string;\n timeMs: number;\n signal?: AbortSignal;\n}\n\nexport interface CollectedMessageInfo {\n id: string;\n channelID: string;\n authorID: string;\n content: string;\n}\n\nexport interface ReactionVote {\n userID: string;\n emoji: string;\n}\n\nexport interface CollectorsResources {\n awaitMessage(channelID: string, input: AwaitMessageInput): Promise<CollectedMessageInfo | null>;\n awaitReaction(channelID: string, messageID: string, emojis: string | string[],\n timeMs: number, userID?: string, signal?: AbortSignal): Promise<ReactionVote | null>;\n}\n"]}
1
+ {"version":3,"file":"collectors.js","sourceRoot":"","sources":["../../../src/ports/resources/collectors.ts"],"names":[],"mappings":"","sourcesContent":["export interface AwaitMessageInput {\n userID?: string;\n contains?: string;\n timeMs: number;\n signal?: AbortSignal;\n}\n\nexport interface CollectMessagesInput {\n userID?: string;\n contains?: string;\n timeMs?: number;\n max?: number;\n signal?: AbortSignal;\n}\n\nexport interface CollectReactionsInput {\n messageID: string;\n emojis?: string | string[];\n userID?: string;\n timeMs?: number;\n max?: number;\n signal?: AbortSignal;\n}\n\nexport interface CollectedMessageInfo {\n id: string;\n channelID: string;\n authorID: string;\n content: string;\n}\n\nexport interface ReactionVote {\n userID: string;\n emoji: string;\n messageID?: string;\n}\n\nexport interface CollectorsResources {\n awaitMessage(channelID: string, input: AwaitMessageInput): Promise<CollectedMessageInfo | null>;\n awaitReaction(channelID: string, messageID: string, emojis: string | string[],\n timeMs: number, userID?: string, signal?: AbortSignal): Promise<ReactionVote | null>;\n collectMessages(channelID: string, input: CollectMessagesInput): AsyncIterable<CollectedMessageInfo>;\n collectReactions(channelID: string, input: CollectReactionsInput): AsyncIterable<ReactionVote>;\n}\n"]}
@@ -0,0 +1,48 @@
1
+ import type { GatewaySendPayload } from '@fluxerjs/types';
2
+ /** Pedido de membros de servidor pelo gateway (opcode 8). */
3
+ export interface GatewayMembersRequest {
4
+ guildID?: string;
5
+ guildIDs?: string[];
6
+ query?: string;
7
+ limit?: number;
8
+ userIDs?: string[];
9
+ presences?: boolean;
10
+ nonce?: string;
11
+ }
12
+ /** Pedido de contagens de membros por canal dentro de um servidor (opcode 16). */
13
+ export interface ChannelCountsRequest {
14
+ guildID: string;
15
+ channelID?: string;
16
+ channelIDs?: string[];
17
+ nonce?: string;
18
+ }
19
+ /** Pedido de não lidos de posts em um canal de fórum ou mídia (opcode 28). */
20
+ export interface ForumUnreadsRequest {
21
+ guildID: string;
22
+ channelID: string;
23
+ threads: {
24
+ threadID: string;
25
+ ackMessageID?: string;
26
+ }[];
27
+ }
28
+ /** Assinatura de tráfego de threads em um servidor (opcode 14). */
29
+ export interface ThreadSubscriptionInput {
30
+ guildID: string;
31
+ threads?: boolean;
32
+ threadIDs?: string[];
33
+ }
34
+ /**
35
+ * Pedidos brutos ao gateway. São fire-and-forget: os resultados chegam por
36
+ * eventos do client (ex.: `guildCountsUpdate`, `channelMemberCountsUpdate`,
37
+ * `forumUnreads`, `threadMemberListUpdate`). Para aguardar a resposta use
38
+ * `users.guildCounts` e `users.channelCounts`, que encapsulam pedido e espera.
39
+ */
40
+ export interface GatewayResources {
41
+ requestMembers(input: GatewayMembersRequest): void;
42
+ requestGuildCounts(guildIDs: string[], nonce?: string): void;
43
+ requestChannelCounts(input: ChannelCountsRequest): void;
44
+ requestForumUnreads(input: ForumUnreadsRequest): void;
45
+ subscribeThreads(input: ThreadSubscriptionInput): void;
46
+ send(shardID: number, payload: GatewaySendPayload): void;
47
+ }
48
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7D,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC1D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/ports/resources/gateway.ts"],"names":[],"mappings":"","sourcesContent":["import type { GatewaySendPayload } from '@fluxerjs/types';\n\n/** Pedido de membros de servidor pelo gateway (opcode 8). */\nexport interface GatewayMembersRequest {\n guildID?: string;\n guildIDs?: string[];\n query?: string;\n limit?: number;\n userIDs?: string[];\n presences?: boolean;\n nonce?: string;\n}\n\n/** Pedido de contagens de membros por canal dentro de um servidor (opcode 16). */\nexport interface ChannelCountsRequest {\n guildID: string;\n channelID?: string;\n channelIDs?: string[];\n nonce?: string;\n}\n\n/** Pedido de não lidos de posts em um canal de fórum ou mídia (opcode 28). */\nexport interface ForumUnreadsRequest {\n guildID: string;\n channelID: string;\n threads: { threadID: string; ackMessageID?: string }[];\n}\n\n/** Assinatura de tráfego de threads em um servidor (opcode 14). */\nexport interface ThreadSubscriptionInput {\n guildID: string;\n threads?: boolean;\n threadIDs?: string[];\n}\n\n/**\n * Pedidos brutos ao gateway. São fire-and-forget: os resultados chegam por\n * eventos do client (ex.: `guildCountsUpdate`, `channelMemberCountsUpdate`,\n * `forumUnreads`, `threadMemberListUpdate`). Para aguardar a resposta use\n * `users.guildCounts` e `users.channelCounts`, que encapsulam pedido e espera.\n */\nexport interface GatewayResources {\n requestMembers(input: GatewayMembersRequest): void;\n requestGuildCounts(guildIDs: string[], nonce?: string): void;\n requestChannelCounts(input: ChannelCountsRequest): void;\n requestForumUnreads(input: ForumUnreadsRequest): void;\n subscribeThreads(input: ThreadSubscriptionInput): void;\n send(shardID: number, payload: GatewaySendPayload): void;\n}\n"]}
@@ -0,0 +1,101 @@
1
+ /** URLs de endpoint resolvidas da instância Fluxer. */
2
+ export interface InstanceEndpointsInfo {
3
+ api: string;
4
+ apiClient: string;
5
+ apiPublic: string;
6
+ gateway: string;
7
+ media: string;
8
+ staticCDN: string;
9
+ marketing: string;
10
+ admin: string;
11
+ invite: string;
12
+ gift: string;
13
+ webapp: string;
14
+ }
15
+ /** Flags de recursos do documento de descoberta da instância. */
16
+ export interface InstanceFeaturesInfo {
17
+ voiceEnabled: boolean;
18
+ stripeEnabled: boolean;
19
+ selfHosted: boolean;
20
+ presignedAttachmentUploads: boolean;
21
+ emailsEnabled: boolean;
22
+ }
23
+ /** Integrações opcionais de terceiros habilitadas na instância. */
24
+ export interface InstanceServicesInfo {
25
+ gif: boolean;
26
+ youtube: boolean;
27
+ bluesky: boolean;
28
+ }
29
+ /** Descrição normalizada da instância: endpoints resolvidos e descoberta. */
30
+ export interface InstanceInfo {
31
+ apiCodeVersion: number | null;
32
+ codename: string | null;
33
+ endpoints: InstanceEndpointsInfo;
34
+ features: InstanceFeaturesInfo | null;
35
+ registrationMode: 'open' | 'approval' | 'closed' | null;
36
+ ssoEnabled: boolean | null;
37
+ ssoEnforced: boolean | null;
38
+ singleCommunity: boolean | null;
39
+ singleCommunityGuildID: string | null;
40
+ directMessagesDisabled: boolean | null;
41
+ services: InstanceServicesInfo | null;
42
+ }
43
+ /** Informações de conexão do gateway (`GET /gateway/bot`). */
44
+ export interface GatewayInfo {
45
+ url: string;
46
+ shards: number;
47
+ sessionStartLimit: {
48
+ total: number;
49
+ remaining: number;
50
+ resetAfter: number;
51
+ maxConcurrency: number;
52
+ } | null;
53
+ }
54
+ /** Aplicação normalizada de `applications/@me` e `oauth2/applications/@me`. */
55
+ export interface ApplicationInfo {
56
+ id: string;
57
+ name: string;
58
+ icon: string | null;
59
+ description: string | null;
60
+ botPublic: boolean | null;
61
+ botRequireCodeGrant: boolean | null;
62
+ verifyKey: string | null;
63
+ flags: number | null;
64
+ ownerID: string | null;
65
+ botID: string | null;
66
+ redirectURIs: string[];
67
+ clientSecret: string | null;
68
+ }
69
+ /** Metadados de emoji (`GET /emojis/{id}/metadata`). */
70
+ export interface EmojiMetadataInfo {
71
+ id: string;
72
+ guildID: string;
73
+ name: string;
74
+ animated: boolean;
75
+ allowCloning: boolean;
76
+ }
77
+ /** Metadados de sticker (`GET /stickers/{id}/metadata`). */
78
+ export interface StickerMetadataInfo {
79
+ id: string;
80
+ guildID: string;
81
+ name: string;
82
+ animated: boolean;
83
+ allowCloning: boolean;
84
+ }
85
+ /** Referência de emoji aceita por `resolveEmoji` além do texto. */
86
+ export interface EmojiReference {
87
+ name: string;
88
+ id?: string;
89
+ animated?: boolean;
90
+ }
91
+ /** Introspecção da instância, do gateway e da aplicação do client. */
92
+ export interface InstanceResources {
93
+ describe(): Promise<InstanceInfo>;
94
+ gatewayInfo(): Promise<GatewayInfo>;
95
+ application(): Promise<ApplicationInfo>;
96
+ oauthApplications(): Promise<ApplicationInfo[]>;
97
+ emojiMetadata(emojiID: string): Promise<EmojiMetadataInfo>;
98
+ stickerMetadata(stickerID: string): Promise<StickerMetadataInfo>;
99
+ resolveEmoji(emoji: string | EmojiReference, guildID?: string): Promise<string>;
100
+ }
101
+ //# sourceMappingURL=instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/instance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../src/ports/resources/instance.ts"],"names":[],"mappings":"","sourcesContent":["/** URLs de endpoint resolvidas da instância Fluxer. */\nexport interface InstanceEndpointsInfo {\n api: string;\n apiClient: string;\n apiPublic: string;\n gateway: string;\n media: string;\n staticCDN: string;\n marketing: string;\n admin: string;\n invite: string;\n gift: string;\n webapp: string;\n}\n\n/** Flags de recursos do documento de descoberta da instância. */\nexport interface InstanceFeaturesInfo {\n voiceEnabled: boolean;\n stripeEnabled: boolean;\n selfHosted: boolean;\n presignedAttachmentUploads: boolean;\n emailsEnabled: boolean;\n}\n\n/** Integrações opcionais de terceiros habilitadas na instância. */\nexport interface InstanceServicesInfo {\n gif: boolean;\n youtube: boolean;\n bluesky: boolean;\n}\n\n/** Descrição normalizada da instância: endpoints resolvidos e descoberta. */\nexport interface InstanceInfo {\n apiCodeVersion: number | null;\n codename: string | null;\n endpoints: InstanceEndpointsInfo;\n features: InstanceFeaturesInfo | null;\n registrationMode: 'open' | 'approval' | 'closed' | null;\n ssoEnabled: boolean | null;\n ssoEnforced: boolean | null;\n singleCommunity: boolean | null;\n singleCommunityGuildID: string | null;\n directMessagesDisabled: boolean | null;\n services: InstanceServicesInfo | null;\n}\n\n/** Informações de conexão do gateway (`GET /gateway/bot`). */\nexport interface GatewayInfo {\n url: string;\n shards: number;\n sessionStartLimit: {\n total: number;\n remaining: number;\n resetAfter: number;\n maxConcurrency: number;\n } | null;\n}\n\n/** Aplicação normalizada de `applications/@me` e `oauth2/applications/@me`. */\nexport interface ApplicationInfo {\n id: string;\n name: string;\n icon: string | null;\n description: string | null;\n botPublic: boolean | null;\n botRequireCodeGrant: boolean | null;\n verifyKey: string | null;\n flags: number | null;\n ownerID: string | null;\n botID: string | null;\n redirectURIs: string[];\n clientSecret: string | null;\n}\n\n/** Metadados de emoji (`GET /emojis/{id}/metadata`). */\nexport interface EmojiMetadataInfo {\n id: string;\n guildID: string;\n name: string;\n animated: boolean;\n allowCloning: boolean;\n}\n\n/** Metadados de sticker (`GET /stickers/{id}/metadata`). */\nexport interface StickerMetadataInfo {\n id: string;\n guildID: string;\n name: string;\n animated: boolean;\n allowCloning: boolean;\n}\n\n/** Referência de emoji aceita por `resolveEmoji` além do texto. */\nexport interface EmojiReference {\n name: string;\n id?: string;\n animated?: boolean;\n}\n\n/** Introspecção da instância, do gateway e da aplicação do client. */\nexport interface InstanceResources {\n describe(): Promise<InstanceInfo>;\n gatewayInfo(): Promise<GatewayInfo>;\n application(): Promise<ApplicationInfo>;\n oauthApplications(): Promise<ApplicationInfo[]>;\n emojiMetadata(emojiID: string): Promise<EmojiMetadataInfo>;\n stickerMetadata(stickerID: string): Promise<StickerMetadataInfo>;\n resolveEmoji(emoji: string | EmojiReference, guildID?: string): Promise<string>;\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { AttachmentSpec, BinaryAttachmentSpec } from './common.js';
2
+ import type { APIMessage } from '@fluxerjs/types';
2
3
  import type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';
3
4
  import type { ReceivedEmbed } from '../../domain/messages.js';
4
5
  export type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';
@@ -37,6 +38,8 @@ export interface MessagesResources {
37
38
  dm(userID: string, content: string): Promise<string>;
38
39
  forward(channelID: string, sourceChannelID: string, messageID: string): Promise<string>;
39
40
  search(input: MessageSearchInput): Promise<MessageSearchPage>;
41
+ searchAll(input: MessageSearchInput): Promise<MessageSearchPage>;
42
+ bulkFetch(requests: BulkFetchRequest[], input?: BulkFetchInput): Promise<MessageInfo[] | BulkFetchRawChannel[]>;
40
43
  sendBytes(channelID: string, files: BinaryAttachmentSpec[], content?: string): Promise<string>;
41
44
  sendAttachments(channelID: string, files: (AttachmentSpec | BinaryAttachmentSpec)[], content?: string): Promise<string>;
42
45
  }
@@ -62,4 +65,21 @@ export interface MessageSearchPage {
62
65
  total: number;
63
66
  cursor: string[] | null;
64
67
  }
68
+ /** Janela de mensagens de um canal dentro de um `bulkFetch`. */
69
+ export interface BulkFetchRequest {
70
+ channelID: string;
71
+ limit: number;
72
+ before?: string;
73
+ after?: string;
74
+ around?: string;
75
+ }
76
+ export interface BulkFetchInput {
77
+ /** `false` retorna o payload bruto da API; o padrão hidrata e normaliza. */
78
+ hydrate?: boolean;
79
+ }
80
+ /** Canal do retorno bruto de `bulkFetch` quando `hydrate` é `false`. */
81
+ export interface BulkFetchRawChannel {
82
+ channelID: string;
83
+ messages: APIMessage[];
84
+ }
65
85
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/messages.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/ports/resources/messages.ts"],"names":[],"mappings":"","sourcesContent":["import type { AttachmentSpec, BinaryAttachmentSpec } from './common.js';\nimport type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';\nimport type { ReceivedEmbed } from '../../domain/messages.js';\nexport type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';\n\nexport interface AttachmentInfo {\n id: string;\n name: string;\n url: string;\n size: number;\n contentType: string | null;\n}\n\nexport interface MessageInfo {\n id: string;\n channelID: string;\n authorID: string;\n authorName: string;\n content: string;\n createdTimestamp: number;\n pinned: boolean;\n attachments: AttachmentInfo[];\n /** Embeds recebidos, normalizados em camelCase e somente leitura. */\n embeds: ReceivedEmbed[];\n}\n\nexport interface MessagesResources {\n preload(channelIDs: string[]): Promise<Record<string, MessageInfo | null>>;\n fetch(channelID: string, messageID: string): Promise<MessageInfo>;\n list(channelID: string, limit?: number, cursor?: MessageCursor): Promise<MessageInfo[]>;\n pin(channelID: string, messageID: string): Promise<void>;\n unpin(channelID: string, messageID: string): Promise<void>;\n pinned(channelID: string, limit?: number): Promise<MessageInfo[]>;\n pinnedPage(channelID: string, input?: PinnedMessagesInput): Promise<PinnedMessagesPage>;\n sendFiles(channelID: string, files: AttachmentSpec[], content?: string): Promise<string>;\n removeReaction(channelID: string, messageID: string, emoji: string, userID?: string): Promise<void>;\n clearReactions(channelID: string, messageID: string, emoji?: string): Promise<void>;\n reactionUsers(channelID: string, messageID: string, emoji: string, limit?: number, after?: string): Promise<string[]>;\n reactionUsersPage(channelID: string, messageID: string, emoji: string, limit?: number, after?: string): Promise<ReactionUsersPage>;\n dm(userID: string, content: string): Promise<string>;\n forward(channelID: string, sourceChannelID: string, messageID: string): Promise<string>;\n search(input: MessageSearchInput): Promise<MessageSearchPage>;\n sendBytes(channelID: string, files: BinaryAttachmentSpec[], content?: string): Promise<string>;\n sendAttachments(channelID: string, files: (AttachmentSpec | BinaryAttachmentSpec)[], content?: string): Promise<string>;\n}\n\nexport interface MessageCursor { before?: string; after?: string; around?: string }\nexport interface PinnedMessagesPage {\n messages: MessageInfo[];\n pinnedAt: string[];\n hasMore: boolean;\n nextBefore: string | null;\n}\nexport interface ReactionUsersPage {\n users: string[];\n hasMore: boolean;\n nextAfter: string | null;\n}\nexport interface MessageSearchPage {\n indexing: boolean;\n messages: MessageInfo[];\n total: number;\n cursor: string[] | null;\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/ports/resources/messages.ts"],"names":[],"mappings":"","sourcesContent":["import type { AttachmentSpec, BinaryAttachmentSpec } from './common.js';\nimport type { APIMessage } from '@fluxerjs/types';\nimport type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';\nimport type { ReceivedEmbed } from '../../domain/messages.js';\nexport type { MessageSearchInput, PinnedMessagesInput } from '../../domain/message-query.js';\n\nexport interface AttachmentInfo {\n id: string;\n name: string;\n url: string;\n size: number;\n contentType: string | null;\n}\n\nexport interface MessageInfo {\n id: string;\n channelID: string;\n authorID: string;\n authorName: string;\n content: string;\n createdTimestamp: number;\n pinned: boolean;\n attachments: AttachmentInfo[];\n /** Embeds recebidos, normalizados em camelCase e somente leitura. */\n embeds: ReceivedEmbed[];\n}\n\nexport interface MessagesResources {\n preload(channelIDs: string[]): Promise<Record<string, MessageInfo | null>>;\n fetch(channelID: string, messageID: string): Promise<MessageInfo>;\n list(channelID: string, limit?: number, cursor?: MessageCursor): Promise<MessageInfo[]>;\n pin(channelID: string, messageID: string): Promise<void>;\n unpin(channelID: string, messageID: string): Promise<void>;\n pinned(channelID: string, limit?: number): Promise<MessageInfo[]>;\n pinnedPage(channelID: string, input?: PinnedMessagesInput): Promise<PinnedMessagesPage>;\n sendFiles(channelID: string, files: AttachmentSpec[], content?: string): Promise<string>;\n removeReaction(channelID: string, messageID: string, emoji: string, userID?: string): Promise<void>;\n clearReactions(channelID: string, messageID: string, emoji?: string): Promise<void>;\n reactionUsers(channelID: string, messageID: string, emoji: string, limit?: number, after?: string): Promise<string[]>;\n reactionUsersPage(channelID: string, messageID: string, emoji: string, limit?: number, after?: string): Promise<ReactionUsersPage>;\n dm(userID: string, content: string): Promise<string>;\n forward(channelID: string, sourceChannelID: string, messageID: string): Promise<string>;\n search(input: MessageSearchInput): Promise<MessageSearchPage>;\n searchAll(input: MessageSearchInput): Promise<MessageSearchPage>;\n bulkFetch(requests: BulkFetchRequest[], input?: BulkFetchInput): Promise<MessageInfo[] | BulkFetchRawChannel[]>;\n sendBytes(channelID: string, files: BinaryAttachmentSpec[], content?: string): Promise<string>;\n sendAttachments(channelID: string, files: (AttachmentSpec | BinaryAttachmentSpec)[], content?: string): Promise<string>;\n}\n\nexport interface MessageCursor { before?: string; after?: string; around?: string }\nexport interface PinnedMessagesPage {\n messages: MessageInfo[];\n pinnedAt: string[];\n hasMore: boolean;\n nextBefore: string | null;\n}\nexport interface ReactionUsersPage {\n users: string[];\n hasMore: boolean;\n nextAfter: string | null;\n}\nexport interface MessageSearchPage {\n indexing: boolean;\n messages: MessageInfo[];\n total: number;\n cursor: string[] | null;\n}\n\n/** Janela de mensagens de um canal dentro de um `bulkFetch`. */\nexport interface BulkFetchRequest {\n channelID: string;\n limit: number;\n before?: string;\n after?: string;\n around?: string;\n}\n\nexport interface BulkFetchInput {\n /** `false` retorna o payload bruto da API; o padrão hidrata e normaliza. */\n hydrate?: boolean;\n}\n\n/** Canal do retorno bruto de `bulkFetch` quando `hydrate` é `false`. */\nexport interface BulkFetchRawChannel {\n channelID: string;\n messages: APIMessage[];\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import type { UserInfo } from './users.js';
2
+ /** Credenciais para verificação sudo (ações elevadas): senha e/ou MFA. */
3
+ export interface SudoVerification {
4
+ password?: string;
5
+ mfaMethod?: 'totp' | 'webauthn';
6
+ mfaCode?: string;
7
+ webauthnResponse?: Record<string, unknown>;
8
+ webauthnChallenge?: string;
9
+ }
10
+ /** Servidor parcial retornado por `GET /users/@me/guilds`. */
11
+ export interface SelfGuildInfo {
12
+ id: string;
13
+ name: string;
14
+ icon: string | null;
15
+ owner: boolean;
16
+ permissions: string | null;
17
+ features: string[];
18
+ memberCount: number | null;
19
+ onlineCount: number | null;
20
+ }
21
+ /** Operações sobre o usuário autenticado (`client.user`). */
22
+ export interface SelfResources {
23
+ fetch(): Promise<UserInfo>;
24
+ guilds(input?: {
25
+ withCounts?: boolean;
26
+ }): Promise<SelfGuildInfo[]>;
27
+ leaveGuild(guildID: string, verification?: SudoVerification): Promise<void>;
28
+ deleteMyMessages(guildID: string, verification?: SudoVerification): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../../src/ports/resources/self.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,CAAC,KAAK,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/ports/resources/self.ts"],"names":[],"mappings":"","sourcesContent":["import type { UserInfo } from './users.js';\n\n/** Credenciais para verificação sudo (ações elevadas): senha e/ou MFA. */\nexport interface SudoVerification {\n password?: string;\n mfaMethod?: 'totp' | 'webauthn';\n mfaCode?: string;\n webauthnResponse?: Record<string, unknown>;\n webauthnChallenge?: string;\n}\n\n/** Servidor parcial retornado por `GET /users/@me/guilds`. */\nexport interface SelfGuildInfo {\n id: string;\n name: string;\n icon: string | null;\n owner: boolean;\n permissions: string | null;\n features: string[];\n memberCount: number | null;\n onlineCount: number | null;\n}\n\n/** Operações sobre o usuário autenticado (`client.user`). */\nexport interface SelfResources {\n fetch(): Promise<UserInfo>;\n guilds(input?: { withCounts?: boolean }): Promise<SelfGuildInfo[]>;\n leaveGuild(guildID: string, verification?: SudoVerification): Promise<void>;\n deleteMyMessages(guildID: string, verification?: SudoVerification): Promise<void>;\n}\n"]}