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.
- package/CHANGELOG.md +12 -0
- package/VERSIONING.md +29 -7
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +6 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/cache.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/cache.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/cache.js +51 -0
- package/dist/infrastructure/fluxer/resources/cache.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/collectors.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/collectors.js +86 -4
- package/dist/infrastructure/fluxer/resources/collectors.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/gateway.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/gateway.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/gateway.js +31 -0
- package/dist/infrastructure/fluxer/resources/gateway.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/instance.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/instance.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/instance.js +96 -0
- package/dist/infrastructure/fluxer/resources/instance.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/messages.d.ts +3 -1
- package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.js +49 -35
- package/dist/infrastructure/fluxer/resources/messages.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/self.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/self.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/self.js +36 -0
- package/dist/infrastructure/fluxer/resources/self.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/users.d.ts +4 -2
- package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.js +2 -2
- package/dist/infrastructure/fluxer/resources/users.js.map +1 -1
- package/dist/infrastructure/fluxer/resources.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources.js +12 -0
- package/dist/infrastructure/fluxer/resources.js.map +1 -1
- package/dist/ports/resources/cache.d.ts +52 -0
- package/dist/ports/resources/cache.d.ts.map +1 -0
- package/dist/ports/resources/cache.js +2 -0
- package/dist/ports/resources/cache.js.map +1 -0
- package/dist/ports/resources/collectors.d.ts +18 -0
- package/dist/ports/resources/collectors.d.ts.map +1 -1
- package/dist/ports/resources/collectors.js.map +1 -1
- package/dist/ports/resources/gateway.d.ts +48 -0
- package/dist/ports/resources/gateway.d.ts.map +1 -0
- package/dist/ports/resources/gateway.js +2 -0
- package/dist/ports/resources/gateway.js.map +1 -0
- package/dist/ports/resources/instance.d.ts +101 -0
- package/dist/ports/resources/instance.d.ts.map +1 -0
- package/dist/ports/resources/instance.js +2 -0
- package/dist/ports/resources/instance.js.map +1 -0
- package/dist/ports/resources/messages.d.ts +20 -0
- package/dist/ports/resources/messages.d.ts.map +1 -1
- package/dist/ports/resources/messages.js.map +1 -1
- package/dist/ports/resources/self.d.ts +30 -0
- package/dist/ports/resources/self.d.ts.map +1 -0
- package/dist/ports/resources/self.js +2 -0
- package/dist/ports/resources/self.js.map +1 -0
- package/dist/ports/resources.d.ts +8 -0
- package/dist/ports/resources.d.ts.map +1 -1
- package/dist/ports/resources.js.map +1 -1
- package/dist/sdk/builders.d.ts +2 -0
- package/dist/sdk/builders.d.ts.map +1 -0
- package/dist/sdk/builders.js +2 -0
- package/dist/sdk/builders.js.map +1 -0
- package/dist/sdk/client.d.ts +2 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +2 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/cluster.d.ts +2 -0
- package/dist/sdk/cluster.d.ts.map +1 -0
- package/dist/sdk/cluster.js +2 -0
- package/dist/sdk/cluster.js.map +1 -0
- package/dist/sdk/collection.d.ts +2 -0
- package/dist/sdk/collection.d.ts.map +1 -0
- package/dist/sdk/collection.js +2 -0
- package/dist/sdk/collection.js.map +1 -0
- package/dist/sdk/errors.d.ts +2 -0
- package/dist/sdk/errors.d.ts.map +1 -0
- package/dist/sdk/errors.js +2 -0
- package/dist/sdk/errors.js.map +1 -0
- package/dist/sdk/internal.d.ts +2 -0
- package/dist/sdk/internal.d.ts.map +1 -0
- package/dist/sdk/internal.js +2 -0
- package/dist/sdk/internal.js.map +1 -0
- package/dist/sdk/message.d.ts +2 -0
- package/dist/sdk/message.d.ts.map +1 -0
- package/dist/sdk/message.js +2 -0
- package/dist/sdk/message.js.map +1 -0
- package/dist/sdk/rest/request-manager.d.ts +2 -0
- package/dist/sdk/rest/request-manager.d.ts.map +1 -0
- package/dist/sdk/rest/request-manager.js +2 -0
- package/dist/sdk/rest/request-manager.js.map +1 -0
- package/dist/sdk/rest.d.ts +2 -0
- package/dist/sdk/rest.d.ts.map +1 -0
- package/dist/sdk/rest.js +2 -0
- package/dist/sdk/rest.js.map +1 -0
- package/dist/sdk/sharding.d.ts +2 -0
- package/dist/sdk/sharding.d.ts.map +1 -0
- package/dist/sdk/sharding.js +2 -0
- package/dist/sdk/sharding.js.map +1 -0
- package/dist/sdk/types/routes.d.ts +2 -0
- package/dist/sdk/types/routes.d.ts.map +1 -0
- package/dist/sdk/types/routes.js +2 -0
- package/dist/sdk/types/routes.js.map +1 -0
- package/dist/sdk/types.d.ts +2 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sdk/util.d.ts +2 -0
- package/dist/sdk/util.d.ts.map +1 -0
- package/dist/sdk/util.js +2 -0
- package/dist/sdk/util.js.map +1 -0
- package/dist/sdk/voice.d.ts +2 -0
- package/dist/sdk/voice.d.ts.map +1 -0
- package/dist/sdk/voice.js +2 -0
- package/dist/sdk/voice.js.map +1 -0
- package/dist/sdk/ws.d.ts +2 -0
- package/dist/sdk/ws.d.ts.map +1 -0
- package/dist/sdk/ws.js +2 -0
- package/dist/sdk/ws.js.map +1 -0
- package/dist/services/resource-authorization.d.ts.map +1 -1
- package/dist/services/resource-authorization.js +2 -1
- package/dist/services/resource-authorization.js.map +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +4 -0
- package/dist/testing.js.map +1 -1
- package/docs/FUNCTION-GAPS.md +8 -3
- package/docs/NATIVE.md +32 -5
- package/docs/PARITY-MATRIX.md +25 -25
- package/docs/PARITY.md +21 -9
- package/package.json +22 -1
- package/src/commands/context.ts +6 -1
- package/src/index.ts +8 -2
- package/src/infrastructure/fluxer/resources/cache.ts +52 -0
- package/src/infrastructure/fluxer/resources/collectors.ts +87 -4
- package/src/infrastructure/fluxer/resources/gateway.ts +33 -0
- package/src/infrastructure/fluxer/resources/instance.ts +105 -0
- package/src/infrastructure/fluxer/resources/messages.ts +49 -35
- package/src/infrastructure/fluxer/resources/self.ts +39 -0
- package/src/infrastructure/fluxer/resources/users.ts +2 -2
- package/src/infrastructure/fluxer/resources.ts +12 -0
- package/src/ports/resources/cache.ts +56 -0
- package/src/ports/resources/collectors.ts +20 -0
- package/src/ports/resources/gateway.ts +49 -0
- package/src/ports/resources/instance.ts +109 -0
- package/src/ports/resources/messages.ts +23 -0
- package/src/ports/resources/self.ts +30 -0
- package/src/ports/resources.ts +8 -0
- package/src/sdk/builders.ts +1 -0
- package/src/sdk/client.ts +1 -0
- package/src/sdk/cluster.ts +1 -0
- package/src/sdk/collection.ts +1 -0
- package/src/sdk/errors.ts +1 -0
- package/src/sdk/internal.ts +1 -0
- package/src/sdk/message.ts +1 -0
- package/src/sdk/rest/request-manager.ts +1 -0
- package/src/sdk/rest.ts +1 -0
- package/src/sdk/sharding.ts +1 -0
- package/src/sdk/types/routes.ts +1 -0
- package/src/sdk/types.ts +1 -0
- package/src/sdk/util.ts +1 -0
- package/src/sdk/voice.ts +1 -0
- package/src/sdk/ws.ts +1 -0
- package/src/services/resource-authorization.ts +2 -1
- package/src/testing.ts +4 -0
|
@@ -1 +1 @@
|
|
|
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, 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 @@
|
|
|
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 @@
|
|
|
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":"
|
|
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
|
|
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] ?
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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 @@
|
|
|
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,
|
|
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,
|