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":"collectors.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/collectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,SAAS,IAAI,CAAC,OAAgB;IAC5B,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AACjH,CAAC;AAED,SAAS,OAAO,CAAC,MAAyB;IACxC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,IAAI,CAAC,QAA8D,EAAE,MAAc,EAAE,MAAgB;IAC5G,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,OAAO;QACL,YAAY,CAAC,SAAiB,EAAE,KAAwB;YACtD,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,OAAO,CAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;oBACvE,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CACrB,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC;wBAClE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/E,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClG,MAAM,MAAM,GAAG,CAAC,KAAkC,EAAE,MAAiC,EAAQ,EAAE;oBAC7F,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC;wBAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;4BAAS,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;gBAC7D,CAAC,CAAC;gBACF,MAAM,KAAK,GAAG,GAAS,EAAE;oBACvB,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC;wBAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;4BAAS,CAAC;wBAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBAAC,CAAC;gBAC1E,CAAC,CAAC;gBACF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBACnE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;oBAC9B,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO;oBAAE,KAAK,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,aAAa,CAAC,SAAiB,EAAE,SAAiB,EAAE,MAAyB,EAAE,MAAc,EAAE,MAAe,EAAE,MAAoB;YAClI,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACnD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;oBACpE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;oBACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;2BACnE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,IAAI;iBAC9C,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,MAAiC,EAAQ,EAAE;oBACrF,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC;wBAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;4BAAS,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;gBAC7D,CAAC,CAAC;gBACF,MAAM,KAAK,GAAG,GAAS,EAAE;oBACvB,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC;wBAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;4BAAS,CAAC;wBAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBAAC,CAAC;gBAC1E,CAAC,CAAC;gBACF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;oBAC9B,IAAI,OAAO;wBAAE,OAAO;oBACpB,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC3F,CAAC,CAAC,CAAC;gBACH,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzD,IAAI,MAAM,EAAE,OAAO;oBAAE,KAAK,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { Client, Message } from '@fluxerjs/core';\nimport { MessageCollector, ReactionCollector } from '@fluxerjs/core';\nimport type { AwaitMessageInput, CollectedMessageInfo, CollectorsResources, ReactionVote } from '../../../ports/resources/collectors.js';\nimport { cancellationError } from '../../../services/cancellation.js';\n\nfunction info(message: Message): CollectedMessageInfo {\n return { id: message.id, channelID: message.channelId, authorID: message.author.id, content: message.content };\n}\n\nfunction targets(emojis: string | string[]): string[] {\n return (Array.isArray(emojis) ? emojis : [emojis]).map(value => value.trim().toLowerCase()).filter(Boolean);\n}\n\nfunction vote(reaction: { emojiIdentifier: string; emoji: { name: string } }, userID: string, wanted: string[]): ReactionVote | null {\n const identifier = reaction.emojiIdentifier.toLowerCase();\n const name = reaction.emoji.name.toLowerCase();\n if (!wanted.includes(identifier) && !wanted.includes(name)) return null;\n return { userID, emoji: reaction.emoji.name };\n}\n\nexport function createCollectorsResources(client: Client): CollectorsResources {\n return {\n awaitMessage(channelID: string, input: AwaitMessageInput): Promise<CollectedMessageInfo | null> {\n if (input.signal?.aborted) return Promise.reject(cancellationError());\n return new Promise<CollectedMessageInfo | null>((resolve, reject) => {\n const filter = input.userID === undefined && input.contains === undefined\n ? undefined\n : (message: Message) =>\n (input.userID === undefined || message.author.id === input.userID) &&\n (input.contains === undefined || message.content.includes(input.contains));\n let settled = false;\n const collector = new MessageCollector(client, channelID, { filter, max: 1, time: input.timeMs });\n const finish = (value: CollectedMessageInfo | null, reason: 'time' | 'limit' | 'user'): void => {\n if (settled) return;\n settled = true;\n input.signal?.removeEventListener('abort', abort);\n try { collector.stop(reason); } finally { resolve(value); }\n };\n const abort = (): void => {\n if (settled) return;\n settled = true;\n input.signal?.removeEventListener('abort', abort);\n try { collector.stop('user'); } finally { reject(cancellationError()); }\n };\n collector.on('collect', message => finish(info(message), 'limit'));\n collector.on('end', collected => {\n if (settled) return;\n const first = [...collected.values()][0];\n finish(first === undefined ? null : info(first), 'time');\n });\n input.signal?.addEventListener('abort', abort, { once: true });\n if (input.signal?.aborted) abort();\n });\n },\n awaitReaction(channelID: string, messageID: string, emojis: string | string[], timeMs: number, userID?: string, signal?: AbortSignal): Promise<ReactionVote | null> {\n if (signal?.aborted) return Promise.reject(cancellationError());\n return new Promise<ReactionVote | null>((resolve, reject) => {\n const wanted = targets(emojis);\n if (wanted.length === 0) { resolve(null); return; }\n let settled = false;\n const collector = new ReactionCollector(client, messageID, channelID, {\n max: 1, time: timeMs,\n filter: (reaction, user) => (userID === undefined || user.id === userID)\n && vote(reaction, user.id, wanted) !== null,\n });\n const finish = (value: ReactionVote | null, reason: 'time' | 'limit' | 'user'): void => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener('abort', abort);\n try { collector.stop(reason); } finally { resolve(value); }\n };\n const abort = (): void => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener('abort', abort);\n try { collector.stop('user'); } finally { reject(cancellationError()); }\n };\n collector.on('collect', (reaction, user) => finish(vote(reaction, user.id, wanted), 'limit'));\n collector.on('end', collected => {\n if (settled) return;\n const first = [...collected.values()][0];\n finish(first === undefined ? null : vote(first.reaction, first.user.id, wanted), 'time');\n });\n signal?.addEventListener('abort', abort, { once: true });\n if (signal?.aborted) abort();\n });\n },\n };\n}\n"]}
1
+ {"version":3,"file":"collectors.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/collectors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client, Message } from '@fluxerjs/core';\nimport { MessageCollector, ReactionCollector } from '@fluxerjs/core';\nimport type { AwaitMessageInput, CollectedMessageInfo, CollectMessagesInput, CollectReactionsInput, CollectorsResources, ReactionVote } from '../../../ports/resources/collectors.js';\nimport { cancellationError } from '../../../services/cancellation.js';\nimport { YuzuhaError } from '../../../errors.js';\n\ntype ReactionLike = { emojiIdentifier: string; emoji: { name: string }; messageId: string };\n\nfunction info(message: Message): CollectedMessageInfo {\n return { id: message.id, channelID: message.channelId, authorID: message.author.id, content: message.content };\n}\n\nfunction targets(emojis: string | string[]): string[] {\n return (Array.isArray(emojis) ? emojis : [emojis]).map(value => value.trim().toLowerCase()).filter(Boolean);\n}\n\nfunction matches(reaction: ReactionLike, wanted: string[]): boolean {\n const identifier = reaction.emojiIdentifier.toLowerCase();\n const name = reaction.emoji.name.toLowerCase();\n return wanted.includes(identifier) || wanted.includes(name);\n}\n\nfunction voteInfo(reaction: ReactionLike, userID: string): ReactionVote {\n return { userID, emoji: reaction.emoji.name, messageID: reaction.messageId };\n}\n\nfunction vote(reaction: ReactionLike, userID: string, wanted: string[]): ReactionVote | null {\n return matches(reaction, wanted) ? voteInfo(reaction, userID) : null;\n}\n\nfunction positiveBound(value: number | undefined): number {\n return value !== undefined && Number.isFinite(value) && value > 0 ? value : 0;\n}\n\nfunction requireBounds(time: number, max: number, signal: AbortSignal | undefined): void {\n if (time <= 0 && max <= 0 && signal === undefined) {\n throw new YuzuhaError('COLLECTOR_BOUNDS', 'Informe um limite para o coletor: timeMs, max ou signal.');\n }\n}\n\n/** Itera itens de um coletor do SDK: enfileira 'collect', encerra no 'end' e limpa ao sair. */\nasync function* pump<T>(attach: (push: (item: T) => void, finish: () => void) => () => void): AsyncGenerator<T, void> {\n const queue: T[] = [];\n let ended = false;\n let waiting: (() => void) | undefined;\n const notify = (): void => { const wake = waiting; waiting = undefined; wake?.(); };\n const detach = attach(item => { queue.push(item); notify(); }, () => { ended = true; notify(); });\n try {\n for (;;) {\n const item = queue.shift();\n if (item !== undefined) { yield item; continue; }\n if (ended) return;\n await new Promise<void>(resolve => { waiting = resolve; });\n }\n } finally {\n detach();\n }\n}\n\nexport function createCollectorsResources(client: Client): CollectorsResources {\n return {\n awaitMessage(channelID: string, input: AwaitMessageInput): Promise<CollectedMessageInfo | null> {\n if (input.signal?.aborted) return Promise.reject(cancellationError());\n return new Promise<CollectedMessageInfo | null>((resolve, reject) => {\n const filter = input.userID === undefined && input.contains === undefined\n ? undefined\n : (message: Message) =>\n (input.userID === undefined || message.author.id === input.userID) &&\n (input.contains === undefined || message.content.includes(input.contains));\n let settled = false;\n const collector = new MessageCollector(client, channelID, { filter, max: 1, time: input.timeMs });\n const finish = (value: CollectedMessageInfo | null, reason: 'time' | 'limit' | 'user'): void => {\n if (settled) return;\n settled = true;\n input.signal?.removeEventListener('abort', abort);\n try { collector.stop(reason); } finally { resolve(value); }\n };\n const abort = (): void => {\n if (settled) return;\n settled = true;\n input.signal?.removeEventListener('abort', abort);\n try { collector.stop('user'); } finally { reject(cancellationError()); }\n };\n collector.on('collect', message => finish(info(message), 'limit'));\n collector.on('end', collected => {\n if (settled) return;\n const first = [...collected.values()][0];\n finish(first === undefined ? null : info(first), 'time');\n });\n input.signal?.addEventListener('abort', abort, { once: true });\n if (input.signal?.aborted) abort();\n });\n },\n awaitReaction(channelID: string, messageID: string, emojis: string | string[], timeMs: number, userID?: string, signal?: AbortSignal): Promise<ReactionVote | null> {\n if (signal?.aborted) return Promise.reject(cancellationError());\n return new Promise<ReactionVote | null>((resolve, reject) => {\n const wanted = targets(emojis);\n if (wanted.length === 0) { resolve(null); return; }\n let settled = false;\n const collector = new ReactionCollector(client, messageID, channelID, {\n max: 1, time: timeMs,\n filter: (reaction, user) => (userID === undefined || user.id === userID)\n && vote(reaction, user.id, wanted) !== null,\n });\n const finish = (value: ReactionVote | null, reason: 'time' | 'limit' | 'user'): void => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener('abort', abort);\n try { collector.stop(reason); } finally { resolve(value); }\n };\n const abort = (): void => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener('abort', abort);\n try { collector.stop('user'); } finally { reject(cancellationError()); }\n };\n collector.on('collect', (reaction, user) => finish(vote(reaction, user.id, wanted), 'limit'));\n collector.on('end', collected => {\n if (settled) return;\n const first = [...collected.values()][0];\n finish(first === undefined ? null : vote(first.reaction, first.user.id, wanted), 'time');\n });\n signal?.addEventListener('abort', abort, { once: true });\n if (signal?.aborted) abort();\n });\n },\n collectMessages(channelID: string, input: CollectMessagesInput): AsyncIterable<CollectedMessageInfo> {\n const time = positiveBound(input.timeMs);\n const max = positiveBound(input.max);\n requireBounds(time, max, input.signal);\n const filter = input.userID === undefined && input.contains === undefined\n ? undefined\n : (message: Message) =>\n (input.userID === undefined || message.author.id === input.userID) &&\n (input.contains === undefined || message.content.includes(input.contains));\n const signal = input.signal;\n return pump<CollectedMessageInfo>((push, finish) => {\n // O SDK exige time ou max; com só signal o teto de max é inalcançável e o abort encerra.\n const collector = new MessageCollector(client, channelID, {\n filter, time, max: time > 0 || max > 0 ? max : Number.MAX_SAFE_INTEGER,\n });\n const abort = (): void => collector.stop('user');\n collector.on('collect', message => push(info(message)));\n collector.on('end', () => finish());\n signal?.addEventListener('abort', abort, { once: true });\n if (signal?.aborted) collector.stop('user');\n return () => { signal?.removeEventListener('abort', abort); collector.stop('user'); };\n });\n },\n collectReactions(channelID: string, input: CollectReactionsInput): AsyncIterable<ReactionVote> {\n const time = positiveBound(input.timeMs);\n const max = positiveBound(input.max);\n requireBounds(time, max, input.signal);\n if (!input.messageID) throw new YuzuhaError('COLLECTOR_MESSAGE', 'Informe a mensagem (messageID) para coletar reações.');\n const wanted = targets(input.emojis ?? []);\n const signal = input.signal;\n return pump<ReactionVote>((push, finish) => {\n const collector = new ReactionCollector(client, input.messageID, channelID, {\n time, max,\n filter: (reaction, user) => (input.userID === undefined || user.id === input.userID)\n && (wanted.length === 0 || matches(reaction, wanted)),\n });\n const abort = (): void => collector.stop('user');\n collector.on('collect', (reaction, user) => push(voteInfo(reaction, user.id)));\n collector.on('end', () => finish());\n signal?.addEventListener('abort', abort, { once: true });\n if (signal?.aborted) collector.stop('user');\n return () => { signal?.removeEventListener('abort', abort); collector.stop('user'); };\n });\n },\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { Client } from '@fluxerjs/core';
2
+ import type { GatewayResources } from '../../../ports/resources/gateway.js';
3
+ export declare function createGatewayResources(client: Client): GatewayResources;
4
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CA6BvE"}
@@ -0,0 +1,31 @@
1
+ export function createGatewayResources(client) {
2
+ return {
3
+ requestMembers(input) {
4
+ client.requestGuildMembers({
5
+ guildId: input.guildID, guildIds: input.guildIDs, query: input.query, limit: input.limit,
6
+ userIds: input.userIDs, presences: input.presences, nonce: input.nonce,
7
+ });
8
+ },
9
+ requestGuildCounts(guildIDs, nonce) {
10
+ client.requestGuildCounts({ guildIds: guildIDs, nonce });
11
+ },
12
+ requestChannelCounts(input) {
13
+ client.requestChannelMemberCounts({
14
+ guildId: input.guildID, channelId: input.channelID, channelIds: input.channelIDs, nonce: input.nonce,
15
+ });
16
+ },
17
+ requestForumUnreads(input) {
18
+ client.requestForumUnreads({
19
+ guildId: input.guildID, channelId: input.channelID,
20
+ threads: input.threads.map(thread => ({ threadId: thread.threadID, ackMessageId: thread.ackMessageID })),
21
+ });
22
+ },
23
+ subscribeThreads(input) {
24
+ client.subscribeThreads({ guildId: input.guildID, threads: input.threads, threadIds: input.threadIDs });
25
+ },
26
+ send(shardID, payload) {
27
+ client.sendToGateway(shardID, payload);
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/gateway.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,OAAO;QACL,cAAc,CAAC,KAAK;YAClB,MAAM,CAAC,mBAAmB,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;gBACxF,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;aACvE,CAAC,CAAC;QACL,CAAC;QACD,kBAAkB,CAAC,QAAQ,EAAE,KAAK;YAChC,MAAM,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,oBAAoB,CAAC,KAAK;YACxB,MAAM,CAAC,0BAA0B,CAAC;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;aACrG,CAAC,CAAC;QACL,CAAC;QACD,mBAAmB,CAAC,KAAK;YACvB,MAAM,CAAC,mBAAmB,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;gBAClD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;aACzG,CAAC,CAAC;QACL,CAAC;QACD,gBAAgB,CAAC,KAAK;YACpB,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,OAAO;YACnB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { Client } from '@fluxerjs/core';\nimport type { GatewayResources } from '../../../ports/resources/gateway.js';\n\nexport function createGatewayResources(client: Client): GatewayResources {\n return {\n requestMembers(input) {\n client.requestGuildMembers({\n guildId: input.guildID, guildIds: input.guildIDs, query: input.query, limit: input.limit,\n userIds: input.userIDs, presences: input.presences, nonce: input.nonce,\n });\n },\n requestGuildCounts(guildIDs, nonce) {\n client.requestGuildCounts({ guildIds: guildIDs, nonce });\n },\n requestChannelCounts(input) {\n client.requestChannelMemberCounts({\n guildId: input.guildID, channelId: input.channelID, channelIds: input.channelIDs, nonce: input.nonce,\n });\n },\n requestForumUnreads(input) {\n client.requestForumUnreads({\n guildId: input.guildID, channelId: input.channelID,\n threads: input.threads.map(thread => ({ threadId: thread.threadID, ackMessageId: thread.ackMessageID })),\n });\n },\n subscribeThreads(input) {\n client.subscribeThreads({ guildId: input.guildID, threads: input.threads, threadIds: input.threadIDs });\n },\n send(shardID, payload) {\n client.sendToGateway(shardID, payload);\n },\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { Client } from '@fluxerjs/core';
2
+ import type { InstanceResources } from '../../../ports/resources/instance.js';
3
+ export declare function createInstanceResources(client: Client): InstanceResources;
4
+ //# sourceMappingURL=instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAyD9C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAyCzE"}
@@ -0,0 +1,96 @@
1
+ function instanceInfo(endpoints, discovery) {
2
+ return {
3
+ apiCodeVersion: discovery?.api_code_version ?? null,
4
+ codename: discovery?.codename ?? null,
5
+ endpoints: {
6
+ api: endpoints.api,
7
+ apiClient: endpoints.api_client,
8
+ apiPublic: endpoints.api_public,
9
+ gateway: endpoints.gateway,
10
+ media: endpoints.media,
11
+ staticCDN: endpoints.static_cdn,
12
+ marketing: endpoints.marketing,
13
+ admin: endpoints.admin,
14
+ invite: endpoints.invite,
15
+ gift: endpoints.gift,
16
+ webapp: endpoints.webapp,
17
+ },
18
+ features: discovery?.features ? {
19
+ voiceEnabled: discovery.features.voice_enabled,
20
+ stripeEnabled: discovery.features.stripe_enabled,
21
+ selfHosted: discovery.features.self_hosted,
22
+ presignedAttachmentUploads: discovery.features.presigned_attachment_uploads,
23
+ emailsEnabled: discovery.features.emails_enabled,
24
+ } : null,
25
+ registrationMode: discovery?.registration?.mode ?? null,
26
+ ssoEnabled: discovery?.sso?.enabled ?? null,
27
+ ssoEnforced: discovery?.sso?.enforced ?? null,
28
+ singleCommunity: discovery?.community?.single_community ?? null,
29
+ singleCommunityGuildID: discovery?.community?.single_community_guild_id ?? null,
30
+ directMessagesDisabled: discovery?.community?.direct_messages_disabled ?? null,
31
+ services: discovery?.services ? {
32
+ gif: discovery.services.gif_enabled,
33
+ youtube: discovery.services.youtube_enabled,
34
+ bluesky: discovery.services.bluesky_enabled,
35
+ } : null,
36
+ };
37
+ }
38
+ function applicationInfo(application) {
39
+ return {
40
+ id: application.id,
41
+ name: application.name,
42
+ icon: application.icon ?? null,
43
+ description: application.description ?? null,
44
+ botPublic: application.bot_public ?? null,
45
+ botRequireCodeGrant: application.bot_require_code_grant ?? null,
46
+ verifyKey: 'verify_key' in application ? application.verify_key ?? null : null,
47
+ flags: 'flags' in application ? application.flags ?? null : null,
48
+ ownerID: 'owner' in application ? application.owner?.id ?? null : null,
49
+ botID: 'bot' in application ? application.bot?.id ?? null : null,
50
+ redirectURIs: 'redirect_uris' in application ? [...application.redirect_uris ?? []] : [],
51
+ clientSecret: 'client_secret' in application ? application.client_secret ?? null : null,
52
+ };
53
+ }
54
+ export function createInstanceResources(client) {
55
+ return {
56
+ async describe() {
57
+ const resolved = client.instance;
58
+ const fetched = await client.fetchInstance();
59
+ return instanceInfo(fetched?.endpoints ?? resolved.endpoints, fetched ?? resolved.discovery);
60
+ },
61
+ async gatewayInfo() {
62
+ const info = await client.fetchGatewayInfo();
63
+ const limit = info.session_start_limit;
64
+ return {
65
+ url: info.url,
66
+ shards: info.shards,
67
+ sessionStartLimit: limit ? {
68
+ total: limit.total,
69
+ remaining: limit.remaining,
70
+ resetAfter: limit.reset_after,
71
+ maxConcurrency: limit.max_concurrency,
72
+ } : null,
73
+ };
74
+ },
75
+ async application() {
76
+ return applicationInfo(await client.fetchApplication());
77
+ },
78
+ async oauthApplications() {
79
+ return (await client.fetchOAuthApplications()).map(applicationInfo);
80
+ },
81
+ async emojiMetadata(emojiID) {
82
+ const metadata = await client.fetchEmojiMetadata(emojiID);
83
+ return { id: metadata.id, guildID: metadata.guild_id, name: metadata.name,
84
+ animated: metadata.animated, allowCloning: metadata.allow_cloning };
85
+ },
86
+ async stickerMetadata(stickerID) {
87
+ const metadata = await client.fetchStickerMetadata(stickerID);
88
+ return { id: metadata.id, guildID: metadata.guild_id, name: metadata.name,
89
+ animated: metadata.animated, allowCloning: metadata.allow_cloning };
90
+ },
91
+ resolveEmoji(emoji, guildID) {
92
+ return client.resolveEmoji(emoji, guildID);
93
+ },
94
+ };
95
+ }
96
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/instance.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client } from '@fluxerjs/core';\nimport type { APIApplicationMe, APIInstance, APIInstanceEndpoints, APIOAuthApplication } from '@fluxerjs/types';\nimport type {\n ApplicationInfo,\n InstanceInfo,\n InstanceResources,\n} from '../../../ports/resources/instance.js';\n\nfunction instanceInfo(endpoints: APIInstanceEndpoints, discovery: APIInstance | null): InstanceInfo {\n return {\n apiCodeVersion: discovery?.api_code_version ?? null,\n codename: discovery?.codename ?? null,\n endpoints: {\n api: endpoints.api,\n apiClient: endpoints.api_client,\n apiPublic: endpoints.api_public,\n gateway: endpoints.gateway,\n media: endpoints.media,\n staticCDN: endpoints.static_cdn,\n marketing: endpoints.marketing,\n admin: endpoints.admin,\n invite: endpoints.invite,\n gift: endpoints.gift,\n webapp: endpoints.webapp,\n },\n features: discovery?.features ? {\n voiceEnabled: discovery.features.voice_enabled,\n stripeEnabled: discovery.features.stripe_enabled,\n selfHosted: discovery.features.self_hosted,\n presignedAttachmentUploads: discovery.features.presigned_attachment_uploads,\n emailsEnabled: discovery.features.emails_enabled,\n } : null,\n registrationMode: discovery?.registration?.mode ?? null,\n ssoEnabled: discovery?.sso?.enabled ?? null,\n ssoEnforced: discovery?.sso?.enforced ?? null,\n singleCommunity: discovery?.community?.single_community ?? null,\n singleCommunityGuildID: discovery?.community?.single_community_guild_id ?? null,\n directMessagesDisabled: discovery?.community?.direct_messages_disabled ?? null,\n services: discovery?.services ? {\n gif: discovery.services.gif_enabled,\n youtube: discovery.services.youtube_enabled,\n bluesky: discovery.services.bluesky_enabled,\n } : null,\n };\n}\n\nfunction applicationInfo(application: APIApplicationMe | APIOAuthApplication): ApplicationInfo {\n return {\n id: application.id,\n name: application.name,\n icon: application.icon ?? null,\n description: application.description ?? null,\n botPublic: application.bot_public ?? null,\n botRequireCodeGrant: application.bot_require_code_grant ?? null,\n verifyKey: 'verify_key' in application ? application.verify_key ?? null : null,\n flags: 'flags' in application ? application.flags ?? null : null,\n ownerID: 'owner' in application ? application.owner?.id ?? null : null,\n botID: 'bot' in application ? application.bot?.id ?? null : null,\n redirectURIs: 'redirect_uris' in application ? [...application.redirect_uris ?? []] : [],\n clientSecret: 'client_secret' in application ? application.client_secret ?? null : null,\n };\n}\n\nexport function createInstanceResources(client: Client): InstanceResources {\n return {\n async describe() {\n const resolved = client.instance;\n const fetched = await client.fetchInstance();\n return instanceInfo(fetched?.endpoints ?? resolved.endpoints, fetched ?? resolved.discovery);\n },\n async gatewayInfo() {\n const info = await client.fetchGatewayInfo();\n const limit = info.session_start_limit;\n return {\n url: info.url,\n shards: info.shards,\n sessionStartLimit: limit ? {\n total: limit.total,\n remaining: limit.remaining,\n resetAfter: limit.reset_after,\n maxConcurrency: limit.max_concurrency,\n } : null,\n };\n },\n async application() {\n return applicationInfo(await client.fetchApplication());\n },\n async oauthApplications() {\n return (await client.fetchOAuthApplications()).map(applicationInfo);\n },\n async emojiMetadata(emojiID) {\n const metadata = await client.fetchEmojiMetadata(emojiID);\n return { id: metadata.id, guildID: metadata.guild_id, name: metadata.name,\n animated: metadata.animated, allowCloning: metadata.allow_cloning };\n },\n async stickerMetadata(stickerID) {\n const metadata = await client.fetchStickerMetadata(stickerID);\n return { id: metadata.id, guildID: metadata.guild_id, name: metadata.name,\n animated: metadata.animated, allowCloning: metadata.allow_cloning };\n },\n resolveEmoji(emoji, guildID) {\n return client.resolveEmoji(emoji, guildID);\n },\n };\n}\n"]}
@@ -1,4 +1,6 @@
1
+ import { Message } from '@fluxerjs/core';
1
2
  import type { Client } from '@fluxerjs/core';
2
- import type { MessagesResources } from '../../../ports/resources/messages.js';
3
+ import type { MessageInfo, MessagesResources } from '../../../ports/resources/messages.js';
4
+ export declare function toMessageInfo(message: Message): MessageInfo;
3
5
  export declare function createMessagesResources(client: Client): MessagesResources;
4
6
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAmC,MAAM,gBAAgB,CAAC;AAK9E,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAwC3F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAyHzE"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAmC,MAAM,gBAAgB,CAAC;AAK9E,OAAO,KAAK,EAAuB,WAAW,EAAyC,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAuBvJ,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAW3D;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAuIzE"}
@@ -20,7 +20,7 @@ function receivedEmbed(embed) {
20
20
  children: embed.children.map(receivedEmbed), html: embed.html, htmlWidth: embed.htmlWidth, htmlHeight: embed.htmlHeight,
21
21
  };
22
22
  }
23
- function info(message) {
23
+ export function toMessageInfo(message) {
24
24
  return {
25
25
  id: message.id, channelID: message.channelId, authorID: message.author.id,
26
26
  authorName: message.author.username, content: message.content,
@@ -50,14 +50,44 @@ export function createMessagesResources(client) {
50
50
  allowedMentions: { parse: [], repliedUser: false },
51
51
  })).id;
52
52
  };
53
+ const search = async (rawInput) => {
54
+ const input = messageSearchInput(rawInput);
55
+ const result = await client.searchMessages({ content: input.content,
56
+ contextGuildId: input.guildID, contextChannelId: input.channelID,
57
+ channelIds: input.channelIDs ?? (input.channelID ? [input.channelID] : undefined),
58
+ authorIds: input.authorIDs ?? (input.authorID ? [input.authorID] : undefined),
59
+ hitsPerPage: limitOf(input.limit, 25, 100), cursor: input.cursor,
60
+ ...(input.contents === undefined ? {} : { contents: input.contents }),
61
+ ...(input.exactPhrases === undefined ? {} : { exactPhrases: input.exactPhrases }),
62
+ ...(input.excludeChannelIDs === undefined ? {} : { excludeChannelIds: input.excludeChannelIDs }),
63
+ ...(input.excludeAuthorIDs === undefined ? {} : { excludeAuthorIds: input.excludeAuthorIDs }),
64
+ ...(input.authorType === undefined ? {} : { authorType: input.authorType }),
65
+ ...(input.excludeAuthorType === undefined ? {} : { excludeAuthorType: input.excludeAuthorType }),
66
+ ...(input.mentions === undefined ? {} : { mentions: input.mentions }),
67
+ ...(input.excludeMentions === undefined ? {} : { excludeMentions: input.excludeMentions }),
68
+ ...(input.mentionEveryone === undefined ? {} : { mentionEveryone: input.mentionEveryone }),
69
+ ...(input.pinned === undefined ? {} : { pinned: input.pinned }),
70
+ ...(input.includeNsfw === undefined ? {} : { includeNsfw: input.includeNsfw }),
71
+ ...(input.has === undefined ? {} : { has: input.has }),
72
+ ...(input.excludeHas === undefined ? {} : { excludeHas: input.excludeHas }),
73
+ ...(input.minID === undefined ? {} : { minId: input.minID }),
74
+ ...(input.maxID === undefined ? {} : { maxId: input.maxID }),
75
+ ...(input.sortBy === undefined ? {} : { sortBy: input.sortBy }),
76
+ ...(input.sortOrder === undefined ? {} : { sortOrder: input.sortOrder }),
77
+ ...(input.page === undefined ? {} : { page: input.page }) });
78
+ if ('indexing' in result)
79
+ return { indexing: true, messages: [], total: 0, cursor: null };
80
+ return { indexing: false, messages: result.messages.map(data => toMessageInfo(new Message(client, data))),
81
+ total: result.total, cursor: result.cursor ?? null };
82
+ };
53
83
  return {
54
84
  async preload(channelIDs) {
55
85
  const ids = preloadChannels(channelIDs);
56
86
  const result = await client.preloadMessages(ids);
57
- return Object.fromEntries(ids.map(id => [id, result[id] ? info(new Message(client, result[id])) : null]));
87
+ return Object.fromEntries(ids.map(id => [id, result[id] ? toMessageInfo(new Message(client, result[id])) : null]));
58
88
  },
59
89
  async fetch(channelID, messageID) {
60
- return info(await client.channels.fetchMessage(channelID, messageID));
90
+ return toMessageInfo(await client.channels.fetchMessage(channelID, messageID));
61
91
  },
62
92
  async list(channelID, limit, cursor = {}) {
63
93
  if (Object.values(cursor).filter(value => value !== undefined).length > 1) {
@@ -67,7 +97,7 @@ export function createMessagesResources(client) {
67
97
  if (!channel.isTextBased())
68
98
  throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');
69
99
  const messages = await channel.messages.fetch({ limit: limitOf(limit, 20, 100), ...cursor });
70
- return order([...messages.values()].map(info));
100
+ return order([...messages.values()].map(toMessageInfo));
71
101
  },
72
102
  async pin(channelID, messageID) {
73
103
  await (await client.channels.fetchMessage(channelID, messageID)).pin();
@@ -84,7 +114,7 @@ export function createMessagesResources(client) {
84
114
  const messages = limit === undefined
85
115
  ? await channel.fetchPinnedMessages()
86
116
  : await channel.fetchPinnedMessagesPage({ limit }).then(page => page.messages);
87
- return order(messages.map(info));
117
+ return order(messages.map(toMessageInfo));
88
118
  },
89
119
  async pinnedPage(channelID, input) {
90
120
  const options = pinnedMessagesInput(input);
@@ -92,7 +122,7 @@ export function createMessagesResources(client) {
92
122
  if (!channel.isTextBased())
93
123
  throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');
94
124
  const page = await channel.fetchPinnedMessagesPage(options);
95
- return { messages: page.messages.map(info), pinnedAt: [...page.pinnedAt], hasMore: page.hasMore,
125
+ return { messages: page.messages.map(toMessageInfo), pinnedAt: [...page.pinnedAt], hasMore: page.hasMore,
96
126
  nextBefore: page.hasMore ? page.pinnedAt.at(-1) ?? null : null };
97
127
  },
98
128
  sendFiles: send,
@@ -106,35 +136,19 @@ export function createMessagesResources(client) {
106
136
  allowedMentions: { parse: [], repliedUser: false },
107
137
  })).id;
108
138
  },
109
- async search(rawInput) {
110
- const input = messageSearchInput(rawInput);
111
- const result = await client.searchMessages({ content: input.content,
112
- contextGuildId: input.guildID, contextChannelId: input.channelID,
113
- channelIds: input.channelIDs ?? (input.channelID ? [input.channelID] : undefined),
114
- authorIds: input.authorIDs ?? (input.authorID ? [input.authorID] : undefined),
115
- hitsPerPage: limitOf(input.limit, 25, 100), cursor: input.cursor,
116
- ...(input.contents === undefined ? {} : { contents: input.contents }),
117
- ...(input.exactPhrases === undefined ? {} : { exactPhrases: input.exactPhrases }),
118
- ...(input.excludeChannelIDs === undefined ? {} : { excludeChannelIds: input.excludeChannelIDs }),
119
- ...(input.excludeAuthorIDs === undefined ? {} : { excludeAuthorIds: input.excludeAuthorIDs }),
120
- ...(input.authorType === undefined ? {} : { authorType: input.authorType }),
121
- ...(input.excludeAuthorType === undefined ? {} : { excludeAuthorType: input.excludeAuthorType }),
122
- ...(input.mentions === undefined ? {} : { mentions: input.mentions }),
123
- ...(input.excludeMentions === undefined ? {} : { excludeMentions: input.excludeMentions }),
124
- ...(input.mentionEveryone === undefined ? {} : { mentionEveryone: input.mentionEveryone }),
125
- ...(input.pinned === undefined ? {} : { pinned: input.pinned }),
126
- ...(input.includeNsfw === undefined ? {} : { includeNsfw: input.includeNsfw }),
127
- ...(input.has === undefined ? {} : { has: input.has }),
128
- ...(input.excludeHas === undefined ? {} : { excludeHas: input.excludeHas }),
129
- ...(input.minID === undefined ? {} : { minId: input.minID }),
130
- ...(input.maxID === undefined ? {} : { maxId: input.maxID }),
131
- ...(input.sortBy === undefined ? {} : { sortBy: input.sortBy }),
132
- ...(input.sortOrder === undefined ? {} : { sortOrder: input.sortOrder }),
133
- ...(input.page === undefined ? {} : { page: input.page }) });
134
- if ('indexing' in result)
135
- return { indexing: true, messages: [], total: 0, cursor: null };
136
- return { indexing: false, messages: result.messages.map(data => info(new Message(client, data))),
137
- total: result.total, cursor: result.cursor ?? null };
139
+ search,
140
+ searchAll: search,
141
+ async bulkFetch(requests, input) {
142
+ const options = requests.map(request => ({ channelId: request.channelID, limit: request.limit,
143
+ ...(request.before === undefined ? {} : { before: request.before }),
144
+ ...(request.after === undefined ? {} : { after: request.after }),
145
+ ...(request.around === undefined ? {} : { around: request.around }) }));
146
+ if (input?.hydrate === false) {
147
+ const raw = await client.bulkFetchMessages(options, { hydrate: false });
148
+ return raw.channels.map(channel => ({ channelID: channel.channel_id, messages: channel.messages }));
149
+ }
150
+ const result = await client.bulkFetchMessages(options);
151
+ return result.channels.flatMap(channel => [...channel.messages.values()].map(toMessageInfo));
138
152
  },
139
153
  sendBytes: send,
140
154
  sendAttachments: send,
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { AttachmentBuilder, Message } from '@fluxerjs/core';\nimport type { Client, MessageEmbed, MessageEmbedMedia } from '@fluxerjs/core';\nimport type { ReceivedEmbed, ReceivedEmbedMedia } from '../../../domain/messages.js';\nimport { limitOf } from '../../../ports/resources/common.js';\nimport type { AttachmentSpec, BinaryAttachmentSpec } from '../../../ports/resources/common.js';\nimport { YuzuhaError } from '../../../errors.js';\nimport type { MessageInfo, MessagesResources } from '../../../ports/resources/messages.js';\nimport { preloadChannels } from '../../../domain/resource-batches.js';\nimport { messageSearchInput, pinnedMessagesInput, reactionUsersInput } from '../../../domain/message-query.js';\n\nfunction receivedMedia(media: MessageEmbedMedia | null): ReceivedEmbedMedia | null {\n return media && { url: media.url, proxyURL: media.proxyUrl, contentType: media.contentType,\n width: media.width, height: media.height, description: media.description };\n}\n\nfunction receivedEmbed(embed: MessageEmbed): ReceivedEmbed {\n return {\n type: embed.type, url: embed.url, title: embed.title, color: embed.color,\n timestamp: embed.timestamp ? embed.timestamp.toISOString() : null, description: embed.description,\n author: embed.author && { name: embed.author.name, url: embed.author.url, iconURL: embed.author.iconUrl },\n image: receivedMedia(embed.image), thumbnail: receivedMedia(embed.thumbnail),\n footer: embed.footer && { text: embed.footer.text, iconURL: embed.footer.iconUrl },\n fields: embed.fields.map(field => ({ name: field.name, value: field.value, inline: field.inline })),\n provider: embed.provider && { name: embed.provider.name, url: embed.provider.url, iconURL: embed.provider.iconUrl },\n video: receivedMedia(embed.video), audio: receivedMedia(embed.audio), nsfw: embed.nsfw,\n children: embed.children.map(receivedEmbed), html: embed.html, htmlWidth: embed.htmlWidth, htmlHeight: embed.htmlHeight,\n };\n}\n\nfunction info(message: Message): MessageInfo {\n return {\n id: message.id, channelID: message.channelId, authorID: message.author.id,\n authorName: message.author.username, content: message.content,\n createdTimestamp: message.createdAt.getTime(), pinned: message.pinned,\n attachments: [...message.attachments.values()].map(attachment => ({\n id: attachment.id, name: attachment.filename, url: attachment.url ?? '',\n size: attachment.size, contentType: attachment.contentType,\n })),\n embeds: message.embeds.map(receivedEmbed),\n };\n}\n\nfunction order(messages: MessageInfo[]): MessageInfo[] {\n return [...messages].sort((a, b) => b.createdTimestamp - a.createdTimestamp);\n}\n\nexport function createMessagesResources(client: Client): MessagesResources {\n const send = async (channelID: string, files: (AttachmentSpec | BinaryAttachmentSpec)[], content?: string): Promise<string> => {\n if (files.length < 1 || files.length > 10 || files.reduce((size, file) => size + ('data' in file ? file.data.byteLength : 0), 0) > 10_000_000) {\n throw new YuzuhaError('ATTACHMENTS', 'Envie de 1 a 10 anexos, com até 10 MB de bytes no total.');\n }\n const builders = files.map(file => {\n if (!file.name.trim() || file.name.length > 255) throw new YuzuhaError('ATTACHMENT_NAME', 'Nome de anexo deve ter de 1 a 255 caracteres.');\n return new AttachmentBuilder('data' in file ? Buffer.from(file.data) : file.url,\n { name: file.name, description: file.description });\n });\n return (await client.channels.send(channelID, { content, files: builders,\n attachments: builders.map((builder, id) => builder.toJSON(id)),\n allowedMentions: { parse: [], repliedUser: false },\n })).id;\n };\n return {\n async preload(channelIDs) {\n const ids = preloadChannels(channelIDs);\n const result = await client.preloadMessages(ids);\n return Object.fromEntries(ids.map(id => [id, result[id] ? info(new Message(client, result[id])) : null]));\n },\n async fetch(channelID: string, messageID: string): Promise<MessageInfo> {\n return info(await client.channels.fetchMessage(channelID, messageID));\n },\n async list(channelID, limit, cursor = {}): Promise<MessageInfo[]> {\n if (Object.values(cursor).filter(value => value !== undefined).length > 1) {\n throw new YuzuhaError('MESSAGE_CURSOR', 'Use apenas um cursor: before, after ou around.');\n }\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const messages = await channel.messages.fetch({ limit: limitOf(limit, 20, 100), ...cursor });\n return order([...messages.values()].map(info));\n },\n async pin(channelID: string, messageID: string): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).pin();\n },\n async unpin(channelID: string, messageID: string): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).unpin();\n },\n async pinned(channelID: string, limit?: number): Promise<MessageInfo[]> {\n if (limit !== undefined) limit = pinnedMessagesInput({ limit }).limit;\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const messages = limit === undefined\n ? await channel.fetchPinnedMessages()\n : await channel.fetchPinnedMessagesPage({ limit }).then(page => page.messages);\n return order(messages.map(info));\n },\n async pinnedPage(channelID, input) {\n const options = pinnedMessagesInput(input);\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const page = await channel.fetchPinnedMessagesPage(options);\n return { messages: page.messages.map(info), pinnedAt: [...page.pinnedAt], hasMore: page.hasMore,\n nextBefore: page.hasMore ? page.pinnedAt.at(-1) ?? null : null };\n },\n sendFiles: send,\n async dm(userID, content): Promise<string> {\n const user = await client.users.fetch(userID);\n return (await user.send({ content, allowedMentions: { parse: [], repliedUser: false } })).id;\n },\n async forward(channelID, sourceChannelID, messageID): Promise<string> {\n return (await client.channels.send(channelID, {\n forward: { channelId: sourceChannelID, messageId: messageID },\n allowedMentions: { parse: [], repliedUser: false },\n })).id;\n },\n async search(rawInput) {\n const input = messageSearchInput(rawInput);\n const result = await client.searchMessages({ content: input.content,\n contextGuildId: input.guildID, contextChannelId: input.channelID,\n channelIds: input.channelIDs ?? (input.channelID ? [input.channelID] : undefined),\n authorIds: input.authorIDs ?? (input.authorID ? [input.authorID] : undefined),\n hitsPerPage: limitOf(input.limit, 25, 100), cursor: input.cursor,\n ...(input.contents === undefined ? {} : { contents: input.contents }),\n ...(input.exactPhrases === undefined ? {} : { exactPhrases: input.exactPhrases }),\n ...(input.excludeChannelIDs === undefined ? {} : { excludeChannelIds: input.excludeChannelIDs }),\n ...(input.excludeAuthorIDs === undefined ? {} : { excludeAuthorIds: input.excludeAuthorIDs }),\n ...(input.authorType === undefined ? {} : { authorType: input.authorType }),\n ...(input.excludeAuthorType === undefined ? {} : { excludeAuthorType: input.excludeAuthorType }),\n ...(input.mentions === undefined ? {} : { mentions: input.mentions }),\n ...(input.excludeMentions === undefined ? {} : { excludeMentions: input.excludeMentions }),\n ...(input.mentionEveryone === undefined ? {} : { mentionEveryone: input.mentionEveryone }),\n ...(input.pinned === undefined ? {} : { pinned: input.pinned }),\n ...(input.includeNsfw === undefined ? {} : { includeNsfw: input.includeNsfw }),\n ...(input.has === undefined ? {} : { has: input.has }),\n ...(input.excludeHas === undefined ? {} : { excludeHas: input.excludeHas }),\n ...(input.minID === undefined ? {} : { minId: input.minID }),\n ...(input.maxID === undefined ? {} : { maxId: input.maxID }),\n ...(input.sortBy === undefined ? {} : { sortBy: input.sortBy }),\n ...(input.sortOrder === undefined ? {} : { sortOrder: input.sortOrder }),\n ...(input.page === undefined ? {} : { page: input.page }) });\n if ('indexing' in result) return { indexing: true, messages: [], total: 0, cursor: null };\n return { indexing: false, messages: result.messages.map(data => info(new Message(client, data))),\n total: result.total, cursor: result.cursor ?? null };\n },\n sendBytes: send,\n sendAttachments: send,\n async removeReaction(channelID, messageID, emoji, userID): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).removeReaction(emoji, userID);\n },\n async clearReactions(channelID, messageID, emoji): Promise<void> {\n const message = await client.channels.fetchMessage(channelID, messageID);\n if (emoji === undefined) await message.removeAllReactions();\n else await message.removeReactionEmoji(emoji);\n },\n async reactionUsers(channelID, messageID, emoji, limit = 100, after): Promise<string[]> {\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {\n throw new YuzuhaError('MESSAGE_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n }\n const message = await client.channels.fetchMessage(channelID, messageID);\n return (await message.fetchReactionUsers(emoji, { limit, after })).map(user => user.id);\n },\n async reactionUsersPage(channelID, messageID, emoji, limit, after) {\n const input = reactionUsersInput({ limit, after });\n if (!emoji.trim()) throw new YuzuhaError('MESSAGE_ARGUMENT', 'Emoji é obrigatório.');\n const message = await client.channels.fetchMessage(channelID, messageID);\n const page = await message.fetchReactionUsersPage(emoji, input);\n return { users: page.users.map(user => user.id), hasMore: page.hasMore, nextAfter: page.nextAfter };\n },\n };\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { AttachmentBuilder, Message } from '@fluxerjs/core';\nimport type { Client, MessageEmbed, MessageEmbedMedia } from '@fluxerjs/core';\nimport type { ReceivedEmbed, ReceivedEmbedMedia } from '../../../domain/messages.js';\nimport { limitOf } from '../../../ports/resources/common.js';\nimport type { AttachmentSpec, BinaryAttachmentSpec } from '../../../ports/resources/common.js';\nimport { YuzuhaError } from '../../../errors.js';\nimport type { BulkFetchRawChannel, MessageInfo, MessageSearchInput, MessageSearchPage, MessagesResources } from '../../../ports/resources/messages.js';\nimport { preloadChannels } from '../../../domain/resource-batches.js';\nimport { messageSearchInput, pinnedMessagesInput, reactionUsersInput } from '../../../domain/message-query.js';\n\nfunction receivedMedia(media: MessageEmbedMedia | null): ReceivedEmbedMedia | null {\n return media && { url: media.url, proxyURL: media.proxyUrl, contentType: media.contentType,\n width: media.width, height: media.height, description: media.description };\n}\n\nfunction receivedEmbed(embed: MessageEmbed): ReceivedEmbed {\n return {\n type: embed.type, url: embed.url, title: embed.title, color: embed.color,\n timestamp: embed.timestamp ? embed.timestamp.toISOString() : null, description: embed.description,\n author: embed.author && { name: embed.author.name, url: embed.author.url, iconURL: embed.author.iconUrl },\n image: receivedMedia(embed.image), thumbnail: receivedMedia(embed.thumbnail),\n footer: embed.footer && { text: embed.footer.text, iconURL: embed.footer.iconUrl },\n fields: embed.fields.map(field => ({ name: field.name, value: field.value, inline: field.inline })),\n provider: embed.provider && { name: embed.provider.name, url: embed.provider.url, iconURL: embed.provider.iconUrl },\n video: receivedMedia(embed.video), audio: receivedMedia(embed.audio), nsfw: embed.nsfw,\n children: embed.children.map(receivedEmbed), html: embed.html, htmlWidth: embed.htmlWidth, htmlHeight: embed.htmlHeight,\n };\n}\n\nexport function toMessageInfo(message: Message): MessageInfo {\n return {\n id: message.id, channelID: message.channelId, authorID: message.author.id,\n authorName: message.author.username, content: message.content,\n createdTimestamp: message.createdAt.getTime(), pinned: message.pinned,\n attachments: [...message.attachments.values()].map(attachment => ({\n id: attachment.id, name: attachment.filename, url: attachment.url ?? '',\n size: attachment.size, contentType: attachment.contentType,\n })),\n embeds: message.embeds.map(receivedEmbed),\n };\n}\n\nfunction order(messages: MessageInfo[]): MessageInfo[] {\n return [...messages].sort((a, b) => b.createdTimestamp - a.createdTimestamp);\n}\n\nexport function createMessagesResources(client: Client): MessagesResources {\n const send = async (channelID: string, files: (AttachmentSpec | BinaryAttachmentSpec)[], content?: string): Promise<string> => {\n if (files.length < 1 || files.length > 10 || files.reduce((size, file) => size + ('data' in file ? file.data.byteLength : 0), 0) > 10_000_000) {\n throw new YuzuhaError('ATTACHMENTS', 'Envie de 1 a 10 anexos, com até 10 MB de bytes no total.');\n }\n const builders = files.map(file => {\n if (!file.name.trim() || file.name.length > 255) throw new YuzuhaError('ATTACHMENT_NAME', 'Nome de anexo deve ter de 1 a 255 caracteres.');\n return new AttachmentBuilder('data' in file ? Buffer.from(file.data) : file.url,\n { name: file.name, description: file.description });\n });\n return (await client.channels.send(channelID, { content, files: builders,\n attachments: builders.map((builder, id) => builder.toJSON(id)),\n allowedMentions: { parse: [], repliedUser: false },\n })).id;\n };\n const search = async (rawInput: MessageSearchInput): Promise<MessageSearchPage> => {\n const input = messageSearchInput(rawInput);\n const result = await client.searchMessages({ content: input.content,\n contextGuildId: input.guildID, contextChannelId: input.channelID,\n channelIds: input.channelIDs ?? (input.channelID ? [input.channelID] : undefined),\n authorIds: input.authorIDs ?? (input.authorID ? [input.authorID] : undefined),\n hitsPerPage: limitOf(input.limit, 25, 100), cursor: input.cursor,\n ...(input.contents === undefined ? {} : { contents: input.contents }),\n ...(input.exactPhrases === undefined ? {} : { exactPhrases: input.exactPhrases }),\n ...(input.excludeChannelIDs === undefined ? {} : { excludeChannelIds: input.excludeChannelIDs }),\n ...(input.excludeAuthorIDs === undefined ? {} : { excludeAuthorIds: input.excludeAuthorIDs }),\n ...(input.authorType === undefined ? {} : { authorType: input.authorType }),\n ...(input.excludeAuthorType === undefined ? {} : { excludeAuthorType: input.excludeAuthorType }),\n ...(input.mentions === undefined ? {} : { mentions: input.mentions }),\n ...(input.excludeMentions === undefined ? {} : { excludeMentions: input.excludeMentions }),\n ...(input.mentionEveryone === undefined ? {} : { mentionEveryone: input.mentionEveryone }),\n ...(input.pinned === undefined ? {} : { pinned: input.pinned }),\n ...(input.includeNsfw === undefined ? {} : { includeNsfw: input.includeNsfw }),\n ...(input.has === undefined ? {} : { has: input.has }),\n ...(input.excludeHas === undefined ? {} : { excludeHas: input.excludeHas }),\n ...(input.minID === undefined ? {} : { minId: input.minID }),\n ...(input.maxID === undefined ? {} : { maxId: input.maxID }),\n ...(input.sortBy === undefined ? {} : { sortBy: input.sortBy }),\n ...(input.sortOrder === undefined ? {} : { sortOrder: input.sortOrder }),\n ...(input.page === undefined ? {} : { page: input.page }) });\n if ('indexing' in result) return { indexing: true, messages: [], total: 0, cursor: null };\n return { indexing: false, messages: result.messages.map(data => toMessageInfo(new Message(client, data))),\n total: result.total, cursor: result.cursor ?? null };\n };\n return {\n async preload(channelIDs) {\n const ids = preloadChannels(channelIDs);\n const result = await client.preloadMessages(ids);\n return Object.fromEntries(ids.map(id => [id, result[id] ? toMessageInfo(new Message(client, result[id])) : null]));\n },\n async fetch(channelID: string, messageID: string): Promise<MessageInfo> {\n return toMessageInfo(await client.channels.fetchMessage(channelID, messageID));\n },\n async list(channelID, limit, cursor = {}): Promise<MessageInfo[]> {\n if (Object.values(cursor).filter(value => value !== undefined).length > 1) {\n throw new YuzuhaError('MESSAGE_CURSOR', 'Use apenas um cursor: before, after ou around.');\n }\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const messages = await channel.messages.fetch({ limit: limitOf(limit, 20, 100), ...cursor });\n return order([...messages.values()].map(toMessageInfo));\n },\n async pin(channelID: string, messageID: string): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).pin();\n },\n async unpin(channelID: string, messageID: string): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).unpin();\n },\n async pinned(channelID: string, limit?: number): Promise<MessageInfo[]> {\n if (limit !== undefined) limit = pinnedMessagesInput({ limit }).limit;\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const messages = limit === undefined\n ? await channel.fetchPinnedMessages()\n : await channel.fetchPinnedMessagesPage({ limit }).then(page => page.messages);\n return order(messages.map(toMessageInfo));\n },\n async pinnedPage(channelID, input) {\n const options = pinnedMessagesInput(input);\n const channel = await client.channels.fetch(channelID, { force: true });\n if (!channel.isTextBased()) throw new YuzuhaError('CHANNEL_TEXT', 'Canal sem suporte a mensagens.');\n const page = await channel.fetchPinnedMessagesPage(options);\n return { messages: page.messages.map(toMessageInfo), pinnedAt: [...page.pinnedAt], hasMore: page.hasMore,\n nextBefore: page.hasMore ? page.pinnedAt.at(-1) ?? null : null };\n },\n sendFiles: send,\n async dm(userID, content): Promise<string> {\n const user = await client.users.fetch(userID);\n return (await user.send({ content, allowedMentions: { parse: [], repliedUser: false } })).id;\n },\n async forward(channelID, sourceChannelID, messageID): Promise<string> {\n return (await client.channels.send(channelID, {\n forward: { channelId: sourceChannelID, messageId: messageID },\n allowedMentions: { parse: [], repliedUser: false },\n })).id;\n },\n search,\n searchAll: search,\n async bulkFetch(requests, input): Promise<MessageInfo[] | BulkFetchRawChannel[]> {\n const options = requests.map(request => ({ channelId: request.channelID, limit: request.limit,\n ...(request.before === undefined ? {} : { before: request.before }),\n ...(request.after === undefined ? {} : { after: request.after }),\n ...(request.around === undefined ? {} : { around: request.around }) }));\n if (input?.hydrate === false) {\n const raw = await client.bulkFetchMessages(options, { hydrate: false });\n return raw.channels.map(channel => ({ channelID: channel.channel_id, messages: channel.messages }));\n }\n const result = await client.bulkFetchMessages(options);\n return result.channels.flatMap(channel => [...channel.messages.values()].map(toMessageInfo));\n },\n sendBytes: send,\n sendAttachments: send,\n async removeReaction(channelID, messageID, emoji, userID): Promise<void> {\n await (await client.channels.fetchMessage(channelID, messageID)).removeReaction(emoji, userID);\n },\n async clearReactions(channelID, messageID, emoji): Promise<void> {\n const message = await client.channels.fetchMessage(channelID, messageID);\n if (emoji === undefined) await message.removeAllReactions();\n else await message.removeReactionEmoji(emoji);\n },\n async reactionUsers(channelID, messageID, emoji, limit = 100, after): Promise<string[]> {\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {\n throw new YuzuhaError('MESSAGE_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n }\n const message = await client.channels.fetchMessage(channelID, messageID);\n return (await message.fetchReactionUsers(emoji, { limit, after })).map(user => user.id);\n },\n async reactionUsersPage(channelID, messageID, emoji, limit, after) {\n const input = reactionUsersInput({ limit, after });\n if (!emoji.trim()) throw new YuzuhaError('MESSAGE_ARGUMENT', 'Emoji é obrigatório.');\n const message = await client.channels.fetchMessage(channelID, messageID);\n const page = await message.fetchReactionUsersPage(emoji, input);\n return { users: page.users.map(user => user.id), hasMore: page.hasMore, nextAfter: page.nextAfter };\n },\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { Client } from '@fluxerjs/core';
2
+ import type { SelfResources } from '../../../ports/resources/self.js';
3
+ export declare function createSelfResources(client: Client): SelfResources;
4
+ //# sourceMappingURL=self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/self.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAWtE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAyBjE"}
@@ -0,0 +1,36 @@
1
+ import { YuzuhaError } from '../../../errors.js';
2
+ import { toUserInfo } from './users.js';
3
+ function selfUser(client) {
4
+ const user = client.user;
5
+ if (!user) {
6
+ throw new YuzuhaError('NOT_READY', 'O cliente ainda não está pronto; o usuário autenticado não está disponível.');
7
+ }
8
+ return user;
9
+ }
10
+ export function createSelfResources(client) {
11
+ return {
12
+ async fetch() {
13
+ return toUserInfo(await selfUser(client).fetch());
14
+ },
15
+ async guilds(input) {
16
+ const guilds = await selfUser(client).fetchGuilds({ withCounts: input?.withCounts ?? false });
17
+ return guilds.map(guild => ({
18
+ id: guild.id,
19
+ name: guild.name,
20
+ icon: guild.icon,
21
+ owner: guild.owner ?? false,
22
+ permissions: guild.permissions ?? null,
23
+ features: guild.features ?? [],
24
+ memberCount: guild.approximateMemberCount ?? null,
25
+ onlineCount: guild.approximatePresenceCount ?? null,
26
+ }));
27
+ },
28
+ async leaveGuild(guildID, verification) {
29
+ await selfUser(client).leaveGuild(guildID, verification);
30
+ },
31
+ async deleteMyMessages(guildID, verification) {
32
+ await selfUser(client).bulkDeleteMyMessagesInGuild(guildID, verification);
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/self.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,6EAA6E,CAAC,CAAC;IACpH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO;QACL,KAAK,CAAC,KAAK;YACT,OAAO,UAAU,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;YAC9F,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK;gBAC3B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;gBACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;gBAC9B,WAAW,EAAE,KAAK,CAAC,sBAAsB,IAAI,IAAI;gBACjD,WAAW,EAAE,KAAK,CAAC,wBAAwB,IAAI,IAAI;aACpD,CAAC,CAAC,CAAC;QACN,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY;YACpC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY;YAC1C,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { Client, ClientUser } from '@fluxerjs/core';\nimport { YuzuhaError } from '../../../errors.js';\nimport type { SelfResources } from '../../../ports/resources/self.js';\nimport { toUserInfo } from './users.js';\n\nfunction selfUser(client: Client): ClientUser {\n const user = client.user;\n if (!user) {\n throw new YuzuhaError('NOT_READY', 'O cliente ainda não está pronto; o usuário autenticado não está disponível.');\n }\n return user;\n}\n\nexport function createSelfResources(client: Client): SelfResources {\n return {\n async fetch() {\n return toUserInfo(await selfUser(client).fetch());\n },\n async guilds(input) {\n const guilds = await selfUser(client).fetchGuilds({ withCounts: input?.withCounts ?? false });\n return guilds.map(guild => ({\n id: guild.id,\n name: guild.name,\n icon: guild.icon,\n owner: guild.owner ?? false,\n permissions: guild.permissions ?? null,\n features: guild.features ?? [],\n memberCount: guild.approximateMemberCount ?? null,\n onlineCount: guild.approximatePresenceCount ?? null,\n }));\n },\n async leaveGuild(guildID, verification) {\n await selfUser(client).leaveGuild(guildID, verification);\n },\n async deleteMyMessages(guildID, verification) {\n await selfUser(client).bulkDeleteMyMessagesInGuild(guildID, verification);\n },\n };\n}\n"]}
@@ -1,4 +1,6 @@
1
- import type { Client } from '@fluxerjs/core';
2
- import type { UsersResources } from '../../../ports/resources/users.js';
1
+ import type { Client, GuildMember, User } from '@fluxerjs/core';
2
+ import type { MemberInfo, UserInfo, UsersResources } from '../../../ports/resources/users.js';
3
+ export declare function toUserInfo(user: User): UserInfo;
4
+ export declare function toMemberInfo(member: GuildMember): MemberInfo;
3
5
  export declare function createUsersResources(client: Client): UsersResources;
4
6
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmE,MAAM,gBAAgB,CAAC;AAG9G,OAAO,KAAK,EAMV,cAAc,EAGf,MAAM,mCAAmC,CAAC;AAkG3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAiGnE"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAS,WAAW,EAAyB,IAAI,EAAkB,MAAM,gBAAgB,CAAC;AAG9G,OAAO,KAAK,EAIV,UAAU,EACV,QAAQ,EACR,cAAc,EAGf,MAAM,mCAAmC,CAAC;AAuD3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAU/C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAgB5D;AAeD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAiGnE"}
@@ -55,7 +55,7 @@ const ACTIVITY_NUMBERS = {
55
55
  function snowflakeTimestamp(id) {
56
56
  return Number((BigInt(id) >> 22n) + FLUXER_EPOCH);
57
57
  }
58
- function toUserInfo(user) {
58
+ export function toUserInfo(user) {
59
59
  return {
60
60
  id: user.id,
61
61
  username: user.username,
@@ -66,7 +66,7 @@ function toUserInfo(user) {
66
66
  createdTimestamp: user.createdTimestamp,
67
67
  };
68
68
  }
69
- function toMemberInfo(member) {
69
+ export function toMemberInfo(member) {
70
70
  const user = member.user;
71
71
  return {
72
72
  id: member.id,