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
package/CHANGELOG.md
CHANGED
|
@@ -21,6 +21,18 @@ documentos. Veja a [política completa](VERSIONING.md).
|
|
|
21
21
|
|
|
22
22
|
</details>
|
|
23
23
|
|
|
24
|
+
## v0.2.1 · 03/11/2026
|
|
25
|
+
|
|
26
|
+
Paridade nativa ampliada com o Fluxer.js: subpaths do SDK espelhados, pacotes satélites reexportados e novas áreas de recursos para gateway, instância, usuário autenticado e cache. Esta atualização da biblioteca Yuzuha foi preparada em 03/11/2026 (v0.2.1).
|
|
27
|
+
|
|
28
|
+
- `yuzuha/sdk` passa a espelhar os subpaths de `@fluxerjs/core`: `yuzuha/sdk/client`, `/errors`, `/message`, `/cluster` e `/internal`. O teste de consumidor agora compara os exports de cada subpath ao pacote correspondente.
|
|
29
|
+
- Os pacotes satélites do monorepo são reexportados como `yuzuha/sdk/types` (com `/routes`), `yuzuha/sdk/rest` (com `/request-manager`), `yuzuha/sdk/ws`, `yuzuha/sdk/builders`, `yuzuha/sdk/collection` e `yuzuha/sdk/util`, que viram dependências diretas. `yuzuha/sdk/voice` e `yuzuha/sdk/sharding` reexportam os peers opcionais homônimos.
|
|
30
|
+
- Quatro áreas novas em `ctx.resources` e `bot.resources`: `gateway` envia pedidos brutos ao gateway (membros, contagens, não lidos de fórum, assinatura de threads e payload por shard); `instance` descreve a instância, o gateway, a aplicação e metadados de emoji/sticker; `self` cobre o usuário autenticado com verificação sudo; `cache` expõe estatísticas, limites e limpezas.
|
|
31
|
+
- `collectors.collectMessages` e `collectReactions` devolvem `AsyncIterable` sobre os coletores do SDK, com limites `timeMs`/`max`/`signal` e limpeza garantida. Reações exigem `messageID`, como no coletor do SDK. `ReactionVote` ganha `messageID` opcional.
|
|
32
|
+
- `messages.bulkFetch` busca janelas de mensagens por canal com hidratação por padrão ou payloads brutos com `hydrate: false`. `messages.searchAll` usa a busca global do client com os mesmos filtros e paginação de `search`.
|
|
33
|
+
- As novas áreas passam pela autorização compartilhada como autoridade direta, mesmo contrato de `users` e `messages`; o sinal do comando cancela os streams.
|
|
34
|
+
- **Adaptação de integrações:** implementações completas próprias de `Resources` devem fornecer `gateway`, `instance`, `self` e `cache`; `CollectorsResources` e `MessagesResources` ganharam métodos. `@fluxerjs/sharding` declara peer exato em `@fluxerjs/core` 3.0.0 — consumidores que o instalarem precisam de `overrides` para o core fixado. Veja [VERSIONING.md](VERSIONING.md) antes de atualizar.
|
|
35
|
+
|
|
24
36
|
## v0.2.0 · 02/11/2026
|
|
25
37
|
|
|
26
38
|
Embeds completos em uma API só, nos modos nativo e function mode, com uma matriz automática de paridade com o SDK. Esta atualização da biblioteca Yuzuha foi preparada em 02/11/2026 (v0.2.0); a tag Git `v0.2.0` aponta para esta versão.
|
package/VERSIONING.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Versionamento
|
|
2
2
|
|
|
3
3
|
O Yuzuha aplica o formato Hory ao histórico e usa **SemVer simples** no pacote.
|
|
4
|
-
A versão desta atualização é **0.2.
|
|
4
|
+
A versão desta atualização é **0.2.1**.
|
|
5
5
|
|
|
6
6
|
## Pacote e histórico
|
|
7
7
|
|
|
8
8
|
| Lugar | Formato nesta versão |
|
|
9
9
|
|---|---|
|
|
10
|
-
| `package.json` e entrada raiz de `package-lock.json` | `0.2.
|
|
11
|
-
| Pacote npm e saída de `yuzuha --version` | `0.2.
|
|
12
|
-
| Título do changelog | `## v0.2.
|
|
13
|
-
| Tag Git | `v0.2.
|
|
10
|
+
| `package.json` e entrada raiz de `package-lock.json` | `0.2.1` |
|
|
11
|
+
| Pacote npm e saída de `yuzuha --version` | `0.2.1` |
|
|
12
|
+
| Título do changelog | `## v0.2.1 · 03/11/2026` |
|
|
13
|
+
| Tag Git | `v0.2.1` |
|
|
14
14
|
|
|
15
15
|
O SDK e a CLI pertencem ao mesmo pacote. Para bibliotecas, a convenção Hory mantém
|
|
16
16
|
SemVer sem `m`, sem seções por superfície e sem sufixos de canal.
|
|
@@ -30,8 +30,9 @@ estivermos em `0.x`. Ao chegar a `1.0.0`, mudanças incompatíveis exigem major;
|
|
|
30
30
|
novas funcionalidades compatíveis, minor; correções compatíveis, patch.
|
|
31
31
|
|
|
32
32
|
Os exports públicos são `yuzuha`, `yuzuha/functions`, `yuzuha/sdk`,
|
|
33
|
-
`yuzuha/testing`, `yuzuha/tooling`, `yuzuha/music`,
|
|
34
|
-
`yuzuha/canvas`. A organização interna de `src/` não cria
|
|
33
|
+
`yuzuha/sdk/*`, `yuzuha/testing`, `yuzuha/tooling`, `yuzuha/music`,
|
|
34
|
+
`yuzuha/images` e `yuzuha/canvas`. A organização interna de `src/` não cria
|
|
35
|
+
estabilidade de deep
|
|
35
36
|
imports. Schema persistido,
|
|
36
37
|
gramática e funções documentadas também fazem parte da compatibilidade.
|
|
37
38
|
|
|
@@ -41,6 +42,27 @@ gerado por `init` pertence ao consumidor e não precisa acompanhar a biblioteca.
|
|
|
41
42
|
|
|
42
43
|
## Preparar uma atualização
|
|
43
44
|
|
|
45
|
+
### Migrar para 0.2.1
|
|
46
|
+
|
|
47
|
+
A 0.2.1 amplia a paridade nativa com o Fluxer.js. Os subpaths `yuzuha/sdk/*`
|
|
48
|
+
espelham `@fluxerjs/core/*` e os pacotes satélites `@fluxerjs/types`, `/rest`,
|
|
49
|
+
`/ws`, `/builders`, `/collection` e `/util`, que viram dependências diretas.
|
|
50
|
+
`yuzuha/sdk/voice` e `yuzuha/sdk/sharding` reexportam peers opcionais; instale-os
|
|
51
|
+
para usar esses caminhos. `@fluxerjs/sharding` declara peer exato em
|
|
52
|
+
`@fluxerjs/core` 3.0.0: consumidores precisam de `overrides` apontando o core
|
|
53
|
+
fixado, como no manifesto do próprio Yuzuha.
|
|
54
|
+
|
|
55
|
+
`ctx.resources` ganha quatro áreas novas — `gateway`, `instance`, `self` e
|
|
56
|
+
`cache` — e `collectors` ganha os streams `collectMessages`/`collectReactions`.
|
|
57
|
+
`messages` ganha `bulkFetch` e `searchAll`. Implementações completas próprias de
|
|
58
|
+
`Resources` precisam fornecer as novas áreas; `mockResources` continua aceitando
|
|
59
|
+
parciais. O schema persistido permanece em 2 e o SDK em 3.3.0; não há migração
|
|
60
|
+
de dados.
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
npm install yuzuha@0.2.1
|
|
64
|
+
```
|
|
65
|
+
|
|
44
66
|
### Migrar para 0.2.0
|
|
45
67
|
|
|
46
68
|
A 0.2.0 acrescenta campos a `Embed` (`url`, `timestamp`, `author`, `footer.iconURL`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/context.js
CHANGED
|
@@ -147,10 +147,15 @@ export class CommandContext {
|
|
|
147
147
|
const source = bindAuthorizedResources(this.nativeResources, this.transport, { guildID: this.guildID, authorID: this.authorID }), collectors = source.collectors;
|
|
148
148
|
return this.scopedResources = { users: source.users, roles: source.roles, channels: source.channels,
|
|
149
149
|
messages: source.messages, webhooks: source.webhooks, expressions: source.expressions,
|
|
150
|
-
threads: source.threads, invites: source.invites,
|
|
150
|
+
threads: source.threads, invites: source.invites, gateway: source.gateway,
|
|
151
|
+
instance: source.instance, self: source.self, cache: source.cache, collectors: {
|
|
151
152
|
awaitMessage: (channelID, input) => collectors.awaitMessage(channelID, { ...input,
|
|
152
153
|
signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),
|
|
153
154
|
awaitReaction: (channelID, messageID, emojis, timeMs, userID, signal) => collectors.awaitReaction(channelID, messageID, emojis, timeMs, userID, signal ? AbortSignal.any([this.signal, signal]) : this.signal),
|
|
155
|
+
collectMessages: (channelID, input) => collectors.collectMessages(channelID, { ...input,
|
|
156
|
+
signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),
|
|
157
|
+
collectReactions: (channelID, input) => collectors.collectReactions(channelID, { ...input,
|
|
158
|
+
signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),
|
|
154
159
|
} };
|
|
155
160
|
}
|
|
156
161
|
get scheduler() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { IncomingMessage, Payload } from '../domain/messages.js';\nimport type { ScriptEventData } from '../domain/events.js';\nimport type { CaseRecord, ModerationAction, ModerationOptions } from '../domain/moderation.js';\nimport type { JsonValue, VariableScope } from '../domain/state.js';\nimport { parseDuration } from '../domain/values.js';\nimport type { Store } from '../ports/store.js';\nimport type { Transport } from '../ports/transport.js';\nimport type { NativeAccess } from '../ports/native.js';\nimport type { Resources } from '../ports/resources.js';\nimport type { Scheduler } from '../services/scheduler.js';\nimport { sendStreamAttachment } from '../services/attachments.js';\nimport type { StreamAttachmentOptions } from '../services/attachments.js';\nimport { bindHttp } from '../services/http.js';\nimport type { HttpService } from '../services/http.js';\nimport { AuthorizationService, requireGuild } from '../services/authorization.js';\nimport { CaseService } from '../services/cases.js';\nimport { ModerationService } from '../services/moderation.js';\nimport { VariableService } from '../services/variables.js';\nimport type { DataTransaction, VariableOptions } from '../services/variables.js';\nimport { NativeModeration } from '../services/native-moderation.js';\nimport { ScopedData } from '../services/native-data.js';\nimport type { NativeData } from '../services/native-data.js';\nimport { bindAuthorizedResources } from '../services/resource-authorization.js';\nimport { MemberService } from '../services/members.js';\nimport type { MusicManager } from '../services/music.js';\nimport type { NativeVoice } from '../ports/voice.js';\nimport type { CanvasConfig } from '../domain/canvas.js';\nimport type { CanvasRenderer } from '../ports/canvas.js';\nimport { CanvasService } from '../services/canvas.js';\nimport { GuardError, PartialModerationError, YuzuhaError } from '../shared/errors.js';\nimport { parseArguments, parseFlags, tokenize } from './arguments.js';\nimport { commandUsage } from './help.js';\nimport { ArgumentBag } from './typed-arguments.js';\nimport type { Command } from './definition.js';\n\nexport interface ContextOptions {\n message: IncomingMessage;\n transport: Transport;\n store: Store;\n command: Command;\n lineage?: readonly Command[];\n prefix?: string;\n input?: string;\n cooldown: (key: string, duration: number) => number;\n now?: () => number;\n help?: () => string;\n native?: NativeAccess;\n resources?: Resources;\n scheduler?: Scheduler;\n http?: HttpService;\n music?: MusicManager;\n voice?: NativeVoice;\n canvas?: { renderer: CanvasRenderer; config?: CanvasConfig };\n signal?: AbortSignal;\n executionID?: string;\n event?: Readonly<ScriptEventData>;\n messageAvailable?: boolean;\n actor?: { guildID: string; authorID: string };\n}\n\nexport class CommandContext {\n private executionKey?: string;\n private localVars?: Map<string, unknown>;\n private argumentsBag?: ArgumentBag;\n private flagsBag?: ArgumentBag;\n private nativeMod?: NativeModeration;\n private nativeData?: NativeData;\n private memberService?: MemberService;\n readonly signal: AbortSignal;\n readonly now: () => number;\n readonly tokens: string[];\n lastCase?: CaseRecord;\n private moderationApplied = false;\n private readonly sourceMessage: IncomingMessage;\n readonly event?: Readonly<ScriptEventData>;\n private readonly messageAvailable: boolean;\n private readonly actor?: { guildID: string; authorID: string };\n readonly transport: Transport;\n readonly store: Store;\n readonly command: Command;\n readonly input: string;\n readonly help: () => string;\n private readonly claimCooldown: ContextOptions['cooldown'];\n private readonly lineage: readonly Command[];\n private readonly prefix: string;\n private authorizationService?: AuthorizationService;\n private moderationService?: ModerationService;\n private caseService?: CaseService;\n private variableService?: VariableService;\n private readonly scope: { guildID: string; authorID: string };\n private readonly native?: NativeAccess;\n private readonly nativeResources?: Resources;\n private readonly schedulerService?: Scheduler;\n private readonly httpService?: HttpService;\n private readonly musicService?: MusicManager;\n private readonly voiceService?: NativeVoice;\n private readonly canvasRenderer?: CanvasRenderer;\n private readonly canvasConfig?: CanvasConfig;\n private canvasService?: CanvasService;\n private scopedHttp?: HttpService;\n private scopedResources?: Resources;\n\n constructor(options: ContextOptions) {\n this.executionKey = options.executionID;\n this.sourceMessage = options.message;\n this.event = options.event ? Object.freeze({ ...options.event }) : undefined;\n this.messageAvailable = options.messageAvailable ?? true;\n this.actor = options.actor;\n this.scope = { guildID: this.guildID, authorID: this.authorID };\n this.transport = options.transport;\n this.store = options.store;\n this.command = options.command;\n this.lineage = options.lineage ?? [options.command];\n this.prefix = options.prefix ?? '';\n this.input = options.input ?? '';\n try { this.tokens = tokenize(this.input); }\n catch (error) {\n if (error instanceof GuardError) throw new GuardError(`${error.message}\\nUso: ${commandUsage(this.command, this.prefix)}`);\n throw error;\n }\n this.claimCooldown = options.cooldown;\n this.help = options.help ?? (() => '');\n this.native = options.native;\n this.schedulerService = options.scheduler;\n this.signal = options.signal ?? new AbortController().signal;\n this.now = options.now ?? Date.now;\n this.httpService = options.http;\n this.musicService = options.music;\n this.voiceService = options.voice;\n this.canvasRenderer = options.canvas?.renderer;\n this.canvasConfig = options.canvas?.config;\n this.nativeResources = options.resources;\n }\n\n private get authorization(): AuthorizationService { return this.authorizationService ??= new AuthorizationService(this.transport, this.scope); }\n private get moderation(): ModerationService { return this.moderationService ??= new ModerationService(this.transport, this.store, this.scope); }\n private get cases(): CaseService { return this.caseService ??= new CaseService(this.store); }\n private get variables(): VariableService { return this.variableService ??= new VariableService(this.store, this.scope, this.now); }\n get members(): MemberService { return this.memberService ??= new MemberService(this.transport, this.scope, () => this.resources.users); }\n get vars(): Map<string, unknown> { return this.localVars ??= new Map(); }\n get args(): ArgumentBag { return this.argumentsBag ??= new ArgumentBag(); }\n get flags(): ArgumentBag { return this.flagsBag ??= new ArgumentBag(); }\n async guildFeatures(): Promise<string[]> {\n const info = await this.resources.users.guild(this.requireGuild());\n if (!info.features) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O recurso de servidor não fornece features.');\n return [...info.features];\n }\n\n async leaveGuild(): Promise<void> {\n const guildID = await this.authorization.requireGuildDeparture();\n if (!this.resources.users.leaveGuild) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O recurso de servidor não implementa leaveGuild.');\n await this.resources.users.leaveGuild(guildID);\n }\n get mod(): NativeModeration {\n return this.nativeMod ??= new NativeModeration((action, target, reason, options) => this.moderate(action, target, reason, options));\n }\n get data(): NativeData {\n return this.nativeData ??= Object.freeze({\n guild: new ScopedData(this.variables, 'guild'), user: new ScopedData(this.variables, 'user'),\n global: new ScopedData(this.variables, 'global'),\n userFor: (id: string) => new ScopedData(this.variables.forUser(id), 'user'),\n transaction: <T>(writer: (data: DataTransaction) => T) => this.variables.transaction(writer),\n });\n }\n\n get message(): IncomingMessage {\n if (!this.messageAvailable) throw new GuardError('Este evento não fornece uma mensagem completa. Use os campos de evento e um canal explícito.');\n return this.sourceMessage;\n }\n get authorID(): string { return this.actor?.authorID ?? this.sourceMessage.authorID; }\n get authorName(): string { return this.event?.userName ?? this.sourceMessage.authorName; }\n get channelID(): string { return this.sourceMessage.channelID; }\n get executionID(): string { return this.executionKey ??= randomUUID(); }\n get hasModerationEffect(): boolean { return this.moderationApplied; }\n get guildID(): string { return this.actor?.guildID ?? this.sourceMessage.guildID ?? ''; }\n get client(): NativeAccess['client'] {\n if (!this.native) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O client nativo não foi fornecido a este contexto.');\n return this.native.client;\n }\n get nativeMessage(): NativeAccess['message'] { return this.native?.message; }\n /** Recursos nativos usados por funções de script e comandos. */\n get resources(): Resources {\n if (!this.nativeResources) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'Os recursos nativos não foram fornecidos a este contexto.');\n if (this.scopedResources) return this.scopedResources;\n const source = bindAuthorizedResources(this.nativeResources, this.transport, { guildID: this.guildID, authorID: this.authorID }), collectors = source.collectors;\n return this.scopedResources = { users: source.users, roles: source.roles, channels: source.channels,\n messages: source.messages, webhooks: source.webhooks, expressions: source.expressions,\n threads: source.threads, invites: source.invites, collectors: {\n awaitMessage: (channelID, input) => collectors.awaitMessage(channelID, { ...input,\n signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),\n awaitReaction: (channelID, messageID, emojis, timeMs, userID, signal) => collectors.awaitReaction(\n channelID, messageID, emojis, timeMs, userID, signal ? AbortSignal.any([this.signal, signal]) : this.signal),\n } };\n }\n get scheduler(): Scheduler {\n if (!this.schedulerService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O agendador não foi fornecido a este contexto.');\n return this.schedulerService;\n }\n get music(): MusicManager {\n if (!this.musicService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O gerenciador de música não foi fornecido a este contexto.');\n return this.musicService;\n }\n get voice(): NativeVoice {\n if (!this.voiceService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O serviço de voz não foi fornecido a este contexto.');\n return this.voiceService;\n }\n get canvas(): CanvasService {\n if (!this.canvasRenderer) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O renderer de Canvas não foi fornecido a este contexto.');\n return this.canvasService ??= new CanvasService({ renderer: this.canvasRenderer, ...this.canvasConfig,\n signal: this.signal, http: this.httpService ? this.http : undefined,\n channelID: this.channelID, messages: this.resources.messages });\n }\n get http(): HttpService {\n if (!this.httpService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O serviço HTTP não foi fornecido a este contexto.');\n return this.scopedHttp ??= bindHttp(this.command.http ? this.httpService.withPolicy(this.command.http) : this.httpService, this.signal);\n }\n requireGuild(): string { return requireGuild(this.guildID); }\n\n assert(condition: unknown, message: string): void {\n if (!condition) throw new GuardError(message);\n }\n\n reply(payload: string | Payload): Promise<string> {\n return this.transport.reply(this.message, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n send(payload: string | Payload, channelID = this.message.channelID): Promise<string> {\n return this.transport.send(channelID, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n sendStream(source: ReadableStream<Uint8Array>, options: StreamAttachmentOptions, channelID = this.message.channelID): Promise<string> {\n return sendStreamAttachment(this.resources.messages, channelID, source, options, this.signal);\n }\n\n edit(messageID: string, payload: string | Payload, channelID = this.message.channelID): Promise<void> {\n return this.transport.edit(channelID, messageID, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n delete(messageID: string, channelID = this.message.channelID): Promise<void> {\n return this.transport.delete(channelID, messageID);\n }\n\n react(emoji: string, messageID = this.message.id, channelID = this.message.channelID): Promise<void> {\n return this.transport.react(channelID, messageID, emoji);\n }\n\n requirePermission(name: string, bot = false, message?: string): Promise<void> {\n return this.authorization.requirePermission(name, bot, message);\n }\n\n cooldown(duration: string | number, message?: string): void {\n const key = JSON.stringify([this.guildID, this.message.channelID, this.authorID, this.command.name]);\n const remaining = this.claimCooldown(key, parseDuration(duration));\n if (remaining > 0) throw new GuardError((message ?? 'Aguarde {remaining} antes de usar novamente.')\n .replaceAll('{remaining}', `${Math.ceil(remaining / 1000)}s`));\n }\n\n async prepare(): Promise<void> {\n if (this.command.guildOnly) this.requireGuild();\n for (const permission of this.command.permissions ?? []) await this.requirePermission(permission);\n for (const permission of this.command.botPermissions ?? []) await this.requirePermission(permission, true);\n try {\n if (this.command.flags !== undefined) {\n const parsed = parseFlags(this.command.flags, this.tokens);\n for (const [name, value] of parsed.flags) this.flags.set(name, value);\n this.tokens.splice(0, this.tokens.length, ...parsed.tokens);\n }\n if (this.command.args?.length) for (const [name, value] of parseArguments(this.command.args, this.tokens)) this.args.set(name, value);\n } catch (error) {\n if (error instanceof GuardError) throw new GuardError(`${error.message}\\nUso: ${commandUsage(this.command, this.prefix)}`);\n throw error;\n }\n for (const command of this.lineage) {\n if (command.cooldown === undefined) continue;\n const key = JSON.stringify([this.guildID, this.message.channelID, this.authorID, command.name]);\n const remaining = this.claimCooldown(key, parseDuration(command.cooldown));\n if (remaining > 0) throw new GuardError(`Aguarde ${Math.ceil(remaining / 1000)}s antes de usar novamente.`);\n }\n }\n\n async moderate(action: ModerationAction, target: string, reason: string, options: ModerationOptions = {}): Promise<CaseRecord | undefined> {\n try {\n const record = await this.moderation.execute(action, target, reason, options);\n this.moderationApplied = true;\n if (record) this.lastCase = record;\n return record;\n } catch (error) {\n if (error instanceof PartialModerationError) this.moderationApplied = true;\n throw error;\n }\n }\n\n case(id: number): Promise<CaseRecord | undefined> { return this.cases.find(this.requireGuild(), id); }\n\n variable(scope: VariableScope, name: string, fallback: JsonValue = null): Promise<JsonValue> {\n return this.variables.get(scope, name, fallback);\n }\n\n setVariable(scope: VariableScope, name: string, value: JsonValue, options?: VariableOptions): Promise<void> {\n return this.variables.set(scope, name, value, options);\n }\n\n deleteVariable(scope: VariableScope, name: string): Promise<void> {\n return this.variables.delete(scope, name);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { IncomingMessage, Payload } from '../domain/messages.js';\nimport type { ScriptEventData } from '../domain/events.js';\nimport type { CaseRecord, ModerationAction, ModerationOptions } from '../domain/moderation.js';\nimport type { JsonValue, VariableScope } from '../domain/state.js';\nimport { parseDuration } from '../domain/values.js';\nimport type { Store } from '../ports/store.js';\nimport type { Transport } from '../ports/transport.js';\nimport type { NativeAccess } from '../ports/native.js';\nimport type { Resources } from '../ports/resources.js';\nimport type { Scheduler } from '../services/scheduler.js';\nimport { sendStreamAttachment } from '../services/attachments.js';\nimport type { StreamAttachmentOptions } from '../services/attachments.js';\nimport { bindHttp } from '../services/http.js';\nimport type { HttpService } from '../services/http.js';\nimport { AuthorizationService, requireGuild } from '../services/authorization.js';\nimport { CaseService } from '../services/cases.js';\nimport { ModerationService } from '../services/moderation.js';\nimport { VariableService } from '../services/variables.js';\nimport type { DataTransaction, VariableOptions } from '../services/variables.js';\nimport { NativeModeration } from '../services/native-moderation.js';\nimport { ScopedData } from '../services/native-data.js';\nimport type { NativeData } from '../services/native-data.js';\nimport { bindAuthorizedResources } from '../services/resource-authorization.js';\nimport { MemberService } from '../services/members.js';\nimport type { MusicManager } from '../services/music.js';\nimport type { NativeVoice } from '../ports/voice.js';\nimport type { CanvasConfig } from '../domain/canvas.js';\nimport type { CanvasRenderer } from '../ports/canvas.js';\nimport { CanvasService } from '../services/canvas.js';\nimport { GuardError, PartialModerationError, YuzuhaError } from '../shared/errors.js';\nimport { parseArguments, parseFlags, tokenize } from './arguments.js';\nimport { commandUsage } from './help.js';\nimport { ArgumentBag } from './typed-arguments.js';\nimport type { Command } from './definition.js';\n\nexport interface ContextOptions {\n message: IncomingMessage;\n transport: Transport;\n store: Store;\n command: Command;\n lineage?: readonly Command[];\n prefix?: string;\n input?: string;\n cooldown: (key: string, duration: number) => number;\n now?: () => number;\n help?: () => string;\n native?: NativeAccess;\n resources?: Resources;\n scheduler?: Scheduler;\n http?: HttpService;\n music?: MusicManager;\n voice?: NativeVoice;\n canvas?: { renderer: CanvasRenderer; config?: CanvasConfig };\n signal?: AbortSignal;\n executionID?: string;\n event?: Readonly<ScriptEventData>;\n messageAvailable?: boolean;\n actor?: { guildID: string; authorID: string };\n}\n\nexport class CommandContext {\n private executionKey?: string;\n private localVars?: Map<string, unknown>;\n private argumentsBag?: ArgumentBag;\n private flagsBag?: ArgumentBag;\n private nativeMod?: NativeModeration;\n private nativeData?: NativeData;\n private memberService?: MemberService;\n readonly signal: AbortSignal;\n readonly now: () => number;\n readonly tokens: string[];\n lastCase?: CaseRecord;\n private moderationApplied = false;\n private readonly sourceMessage: IncomingMessage;\n readonly event?: Readonly<ScriptEventData>;\n private readonly messageAvailable: boolean;\n private readonly actor?: { guildID: string; authorID: string };\n readonly transport: Transport;\n readonly store: Store;\n readonly command: Command;\n readonly input: string;\n readonly help: () => string;\n private readonly claimCooldown: ContextOptions['cooldown'];\n private readonly lineage: readonly Command[];\n private readonly prefix: string;\n private authorizationService?: AuthorizationService;\n private moderationService?: ModerationService;\n private caseService?: CaseService;\n private variableService?: VariableService;\n private readonly scope: { guildID: string; authorID: string };\n private readonly native?: NativeAccess;\n private readonly nativeResources?: Resources;\n private readonly schedulerService?: Scheduler;\n private readonly httpService?: HttpService;\n private readonly musicService?: MusicManager;\n private readonly voiceService?: NativeVoice;\n private readonly canvasRenderer?: CanvasRenderer;\n private readonly canvasConfig?: CanvasConfig;\n private canvasService?: CanvasService;\n private scopedHttp?: HttpService;\n private scopedResources?: Resources;\n\n constructor(options: ContextOptions) {\n this.executionKey = options.executionID;\n this.sourceMessage = options.message;\n this.event = options.event ? Object.freeze({ ...options.event }) : undefined;\n this.messageAvailable = options.messageAvailable ?? true;\n this.actor = options.actor;\n this.scope = { guildID: this.guildID, authorID: this.authorID };\n this.transport = options.transport;\n this.store = options.store;\n this.command = options.command;\n this.lineage = options.lineage ?? [options.command];\n this.prefix = options.prefix ?? '';\n this.input = options.input ?? '';\n try { this.tokens = tokenize(this.input); }\n catch (error) {\n if (error instanceof GuardError) throw new GuardError(`${error.message}\\nUso: ${commandUsage(this.command, this.prefix)}`);\n throw error;\n }\n this.claimCooldown = options.cooldown;\n this.help = options.help ?? (() => '');\n this.native = options.native;\n this.schedulerService = options.scheduler;\n this.signal = options.signal ?? new AbortController().signal;\n this.now = options.now ?? Date.now;\n this.httpService = options.http;\n this.musicService = options.music;\n this.voiceService = options.voice;\n this.canvasRenderer = options.canvas?.renderer;\n this.canvasConfig = options.canvas?.config;\n this.nativeResources = options.resources;\n }\n\n private get authorization(): AuthorizationService { return this.authorizationService ??= new AuthorizationService(this.transport, this.scope); }\n private get moderation(): ModerationService { return this.moderationService ??= new ModerationService(this.transport, this.store, this.scope); }\n private get cases(): CaseService { return this.caseService ??= new CaseService(this.store); }\n private get variables(): VariableService { return this.variableService ??= new VariableService(this.store, this.scope, this.now); }\n get members(): MemberService { return this.memberService ??= new MemberService(this.transport, this.scope, () => this.resources.users); }\n get vars(): Map<string, unknown> { return this.localVars ??= new Map(); }\n get args(): ArgumentBag { return this.argumentsBag ??= new ArgumentBag(); }\n get flags(): ArgumentBag { return this.flagsBag ??= new ArgumentBag(); }\n async guildFeatures(): Promise<string[]> {\n const info = await this.resources.users.guild(this.requireGuild());\n if (!info.features) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O recurso de servidor não fornece features.');\n return [...info.features];\n }\n\n async leaveGuild(): Promise<void> {\n const guildID = await this.authorization.requireGuildDeparture();\n if (!this.resources.users.leaveGuild) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O recurso de servidor não implementa leaveGuild.');\n await this.resources.users.leaveGuild(guildID);\n }\n get mod(): NativeModeration {\n return this.nativeMod ??= new NativeModeration((action, target, reason, options) => this.moderate(action, target, reason, options));\n }\n get data(): NativeData {\n return this.nativeData ??= Object.freeze({\n guild: new ScopedData(this.variables, 'guild'), user: new ScopedData(this.variables, 'user'),\n global: new ScopedData(this.variables, 'global'),\n userFor: (id: string) => new ScopedData(this.variables.forUser(id), 'user'),\n transaction: <T>(writer: (data: DataTransaction) => T) => this.variables.transaction(writer),\n });\n }\n\n get message(): IncomingMessage {\n if (!this.messageAvailable) throw new GuardError('Este evento não fornece uma mensagem completa. Use os campos de evento e um canal explícito.');\n return this.sourceMessage;\n }\n get authorID(): string { return this.actor?.authorID ?? this.sourceMessage.authorID; }\n get authorName(): string { return this.event?.userName ?? this.sourceMessage.authorName; }\n get channelID(): string { return this.sourceMessage.channelID; }\n get executionID(): string { return this.executionKey ??= randomUUID(); }\n get hasModerationEffect(): boolean { return this.moderationApplied; }\n get guildID(): string { return this.actor?.guildID ?? this.sourceMessage.guildID ?? ''; }\n get client(): NativeAccess['client'] {\n if (!this.native) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O client nativo não foi fornecido a este contexto.');\n return this.native.client;\n }\n get nativeMessage(): NativeAccess['message'] { return this.native?.message; }\n /** Recursos nativos usados por funções de script e comandos. */\n get resources(): Resources {\n if (!this.nativeResources) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'Os recursos nativos não foram fornecidos a este contexto.');\n if (this.scopedResources) return this.scopedResources;\n const source = bindAuthorizedResources(this.nativeResources, this.transport, { guildID: this.guildID, authorID: this.authorID }), collectors = source.collectors;\n return this.scopedResources = { users: source.users, roles: source.roles, channels: source.channels,\n messages: source.messages, webhooks: source.webhooks, expressions: source.expressions,\n threads: source.threads, invites: source.invites, gateway: source.gateway,\n instance: source.instance, self: source.self, cache: source.cache, collectors: {\n awaitMessage: (channelID, input) => collectors.awaitMessage(channelID, { ...input,\n signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),\n awaitReaction: (channelID, messageID, emojis, timeMs, userID, signal) => collectors.awaitReaction(\n channelID, messageID, emojis, timeMs, userID, signal ? AbortSignal.any([this.signal, signal]) : this.signal),\n collectMessages: (channelID, input) => collectors.collectMessages(channelID, { ...input,\n signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),\n collectReactions: (channelID, input) => collectors.collectReactions(channelID, { ...input,\n signal: input.signal ? AbortSignal.any([this.signal, input.signal]) : this.signal }),\n } };\n }\n get scheduler(): Scheduler {\n if (!this.schedulerService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O agendador não foi fornecido a este contexto.');\n return this.schedulerService;\n }\n get music(): MusicManager {\n if (!this.musicService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O gerenciador de música não foi fornecido a este contexto.');\n return this.musicService;\n }\n get voice(): NativeVoice {\n if (!this.voiceService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O serviço de voz não foi fornecido a este contexto.');\n return this.voiceService;\n }\n get canvas(): CanvasService {\n if (!this.canvasRenderer) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O renderer de Canvas não foi fornecido a este contexto.');\n return this.canvasService ??= new CanvasService({ renderer: this.canvasRenderer, ...this.canvasConfig,\n signal: this.signal, http: this.httpService ? this.http : undefined,\n channelID: this.channelID, messages: this.resources.messages });\n }\n get http(): HttpService {\n if (!this.httpService) throw new YuzuhaError('NATIVE_UNAVAILABLE', 'O serviço HTTP não foi fornecido a este contexto.');\n return this.scopedHttp ??= bindHttp(this.command.http ? this.httpService.withPolicy(this.command.http) : this.httpService, this.signal);\n }\n requireGuild(): string { return requireGuild(this.guildID); }\n\n assert(condition: unknown, message: string): void {\n if (!condition) throw new GuardError(message);\n }\n\n reply(payload: string | Payload): Promise<string> {\n return this.transport.reply(this.message, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n send(payload: string | Payload, channelID = this.message.channelID): Promise<string> {\n return this.transport.send(channelID, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n sendStream(source: ReadableStream<Uint8Array>, options: StreamAttachmentOptions, channelID = this.message.channelID): Promise<string> {\n return sendStreamAttachment(this.resources.messages, channelID, source, options, this.signal);\n }\n\n edit(messageID: string, payload: string | Payload, channelID = this.message.channelID): Promise<void> {\n return this.transport.edit(channelID, messageID, typeof payload === 'string' ? { content: payload } : payload);\n }\n\n delete(messageID: string, channelID = this.message.channelID): Promise<void> {\n return this.transport.delete(channelID, messageID);\n }\n\n react(emoji: string, messageID = this.message.id, channelID = this.message.channelID): Promise<void> {\n return this.transport.react(channelID, messageID, emoji);\n }\n\n requirePermission(name: string, bot = false, message?: string): Promise<void> {\n return this.authorization.requirePermission(name, bot, message);\n }\n\n cooldown(duration: string | number, message?: string): void {\n const key = JSON.stringify([this.guildID, this.message.channelID, this.authorID, this.command.name]);\n const remaining = this.claimCooldown(key, parseDuration(duration));\n if (remaining > 0) throw new GuardError((message ?? 'Aguarde {remaining} antes de usar novamente.')\n .replaceAll('{remaining}', `${Math.ceil(remaining / 1000)}s`));\n }\n\n async prepare(): Promise<void> {\n if (this.command.guildOnly) this.requireGuild();\n for (const permission of this.command.permissions ?? []) await this.requirePermission(permission);\n for (const permission of this.command.botPermissions ?? []) await this.requirePermission(permission, true);\n try {\n if (this.command.flags !== undefined) {\n const parsed = parseFlags(this.command.flags, this.tokens);\n for (const [name, value] of parsed.flags) this.flags.set(name, value);\n this.tokens.splice(0, this.tokens.length, ...parsed.tokens);\n }\n if (this.command.args?.length) for (const [name, value] of parseArguments(this.command.args, this.tokens)) this.args.set(name, value);\n } catch (error) {\n if (error instanceof GuardError) throw new GuardError(`${error.message}\\nUso: ${commandUsage(this.command, this.prefix)}`);\n throw error;\n }\n for (const command of this.lineage) {\n if (command.cooldown === undefined) continue;\n const key = JSON.stringify([this.guildID, this.message.channelID, this.authorID, command.name]);\n const remaining = this.claimCooldown(key, parseDuration(command.cooldown));\n if (remaining > 0) throw new GuardError(`Aguarde ${Math.ceil(remaining / 1000)}s antes de usar novamente.`);\n }\n }\n\n async moderate(action: ModerationAction, target: string, reason: string, options: ModerationOptions = {}): Promise<CaseRecord | undefined> {\n try {\n const record = await this.moderation.execute(action, target, reason, options);\n this.moderationApplied = true;\n if (record) this.lastCase = record;\n return record;\n } catch (error) {\n if (error instanceof PartialModerationError) this.moderationApplied = true;\n throw error;\n }\n }\n\n case(id: number): Promise<CaseRecord | undefined> { return this.cases.find(this.requireGuild(), id); }\n\n variable(scope: VariableScope, name: string, fallback: JsonValue = null): Promise<JsonValue> {\n return this.variables.get(scope, name, fallback);\n }\n\n setVariable(scope: VariableScope, name: string, value: JsonValue, options?: VariableOptions): Promise<void> {\n return this.variables.set(scope, name, value, options);\n }\n\n deleteVariable(scope: VariableScope, name: string): Promise<void> {\n return this.variables.delete(scope, name);\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,12 +22,16 @@ export type { Resources } from './ports/resources.js';
|
|
|
22
22
|
export type { UserInfo, MemberInfo, GuildInfo, BanInfo, AuditLogInfo, UsersResources, GuildEditInput, MemberSearchPage, ProfileInfo, UserProfileInfo, LiveCountsInput, GuildCountsInfo, ChannelCountsInfo, } from './ports/resources/users.js';
|
|
23
23
|
export type { RoleInfo, RoleCreateInput, RoleEditInput, RolesResources } from './ports/resources/roles.js';
|
|
24
24
|
export type { ChannelInfo, ChannelCreateInput, ChannelEditInput, ChannelOverwriteInput, ChannelsResources, } from './ports/resources/channels.js';
|
|
25
|
-
export type { AttachmentInfo, MessageInfo, MessagesResources, MessageCursor, MessageSearchInput, MessageSearchPage, PinnedMessagesInput, PinnedMessagesPage, ReactionUsersPage } from './ports/resources/messages.js';
|
|
26
|
-
export type { AwaitMessageInput, CollectedMessageInfo, CollectorsResources, ReactionVote } from './ports/resources/collectors.js';
|
|
25
|
+
export type { AttachmentInfo, MessageInfo, MessagesResources, MessageCursor, MessageSearchInput, MessageSearchPage, PinnedMessagesInput, PinnedMessagesPage, ReactionUsersPage, BulkFetchRequest, BulkFetchInput, BulkFetchRawChannel } from './ports/resources/messages.js';
|
|
26
|
+
export type { AwaitMessageInput, CollectedMessageInfo, CollectMessagesInput, CollectReactionsInput, CollectorsResources, ReactionVote } from './ports/resources/collectors.js';
|
|
27
27
|
export type { WebhookInfo, WebhookSendInput, WebhooksResources } from './ports/resources/webhooks.js';
|
|
28
28
|
export type { EmojiInfo, EmojiCreateInput, EmojiBulkResult, StickerInfo, StickerCreateInput, StickerEditInput, ExpressionsResources } from './ports/resources/expressions.js';
|
|
29
29
|
export type { ThreadInfo, ThreadMemberInfo, ThreadMemberDetails, ThreadCreateInput, ForumPostInput, ThreadsResources, ThreadEditInput, ThreadSearchInput, ThreadSearchPage, ArchivedThreadsInput, ThreadListPage } from './ports/resources/threads.js';
|
|
30
30
|
export type { InviteInfo, InviteCreateInput, InvitesResources } from './ports/resources/invites.js';
|
|
31
|
+
export type { GatewayMembersRequest, ChannelCountsRequest, ForumUnreadsRequest, ThreadSubscriptionInput, GatewayResources } from './ports/resources/gateway.js';
|
|
32
|
+
export type { InstanceEndpointsInfo, InstanceFeaturesInfo, InstanceServicesInfo, InstanceInfo, GatewayInfo, ApplicationInfo, EmojiMetadataInfo, StickerMetadataInfo, EmojiReference, InstanceResources } from './ports/resources/instance.js';
|
|
33
|
+
export type { SudoVerification, SelfGuildInfo, SelfResources } from './ports/resources/self.js';
|
|
34
|
+
export type { CacheLimitsInfo, CacheStatsInfo, MessageSweepInput, MemberSweepInput, CacheResources } from './ports/resources/cache.js';
|
|
31
35
|
export type { AttachmentSpec, BinaryAttachmentSpec, PresenceStatus, ActivityType, ActivityInfo } from './ports/resources/common.js';
|
|
32
36
|
export { NativeModeration } from './services/native-moderation.js';
|
|
33
37
|
export type { NativeModerationOptions, NativeBanOptions, NativeTimeoutOptions, NativeMoveOptions, NativeVoiceOptions, ModerationTarget } from './services/native-moderation.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/H,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClH,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EACxG,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,GAClF,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3G,YAAY,EACV,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,GAC5F,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAChH,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA6B3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { Yuzuha, Bot } from './bot.js';\nexport type { YuzuhaOptions, YuzuhaPlugin, Middleware, DispatchResult } from './bot.js';\nexport { CommandContext, defineCommand, parseDuration } from './context.js';\nexport type { Command, ArgumentDefinition } from './context.js';\nexport { commandUsage, commandHelp } from './commands/help.js';\nexport type { ContextOptions } from './context.js';\nexport { arg, ArgumentBuilder } from './commands/builders.js';\nexport type { ArgumentSchema, InferArgument } from './commands/builders.js';\nexport { ArgumentBag } from './commands/typed-arguments.js';\nexport type { TypedArguments } from './commands/typed-arguments.js';\nexport type { NativeCommandContext, NativeCommandDefinition, CommandCheck, CommandMiddleware } from './commands/definition.js';\nexport { defineEvent } from './framework/events.js';\nexport type { ContextEventDefinition, EventDefinition, NativeEvent, NativeListener } from './framework/events.js';\nexport type { LogRecord } from './framework/logging.js';\nexport { EventContext } from './commands/event-context.js';\nexport type { EventContextOptions } from './commands/event-context.js';\nexport type { ScriptEventDefinition } from './framework/script-events.js';\nexport type { ScriptEventData, ScriptEventName } from './domain/events.js';\nexport type { NativeAccess } from './ports/native.js';\nexport type { NativeVoice, FluxerVoiceConnection, FluxerVoiceDriver } from './ports/voice.js';\nexport type { Resources } from './ports/resources.js';\nexport type {\n UserInfo, MemberInfo, GuildInfo, BanInfo, AuditLogInfo, UsersResources, GuildEditInput, MemberSearchPage,\n ProfileInfo, UserProfileInfo, LiveCountsInput, GuildCountsInfo, ChannelCountsInfo,\n} from './ports/resources/users.js';\nexport type { RoleInfo, RoleCreateInput, RoleEditInput, RolesResources } from './ports/resources/roles.js';\nexport type {\n ChannelInfo, ChannelCreateInput, ChannelEditInput, ChannelOverwriteInput, ChannelsResources,\n} from './ports/resources/channels.js';\nexport type { AttachmentInfo, MessageInfo, MessagesResources, MessageCursor, MessageSearchInput, MessageSearchPage,\n PinnedMessagesInput, PinnedMessagesPage, ReactionUsersPage,\n BulkFetchRequest, BulkFetchInput, BulkFetchRawChannel } from './ports/resources/messages.js';\nexport type { AwaitMessageInput, CollectedMessageInfo, CollectMessagesInput, CollectReactionsInput, CollectorsResources, ReactionVote } from './ports/resources/collectors.js';\nexport type { WebhookInfo, WebhookSendInput, WebhooksResources } from './ports/resources/webhooks.js';\nexport type { EmojiInfo, EmojiCreateInput, EmojiBulkResult, StickerInfo, StickerCreateInput, StickerEditInput, ExpressionsResources } from './ports/resources/expressions.js';\nexport type { ThreadInfo, ThreadMemberInfo, ThreadMemberDetails, ThreadCreateInput, ForumPostInput, ThreadsResources, ThreadEditInput, ThreadSearchInput, ThreadSearchPage, ArchivedThreadsInput, ThreadListPage } from './ports/resources/threads.js';\nexport type { InviteInfo, InviteCreateInput, InvitesResources } from './ports/resources/invites.js';\nexport type { GatewayMembersRequest, ChannelCountsRequest, ForumUnreadsRequest, ThreadSubscriptionInput, GatewayResources } from './ports/resources/gateway.js';\nexport type { InstanceEndpointsInfo, InstanceFeaturesInfo, InstanceServicesInfo, InstanceInfo, GatewayInfo, ApplicationInfo,\n EmojiMetadataInfo, StickerMetadataInfo, EmojiReference, InstanceResources } from './ports/resources/instance.js';\nexport type { SudoVerification, SelfGuildInfo, SelfResources } from './ports/resources/self.js';\nexport type { CacheLimitsInfo, CacheStatsInfo, MessageSweepInput, MemberSweepInput, CacheResources } from './ports/resources/cache.js';\nexport type { AttachmentSpec, BinaryAttachmentSpec, PresenceStatus, ActivityType, ActivityInfo } from './ports/resources/common.js';\nexport { NativeModeration } from './services/native-moderation.js';\nexport type { NativeModerationOptions, NativeBanOptions, NativeTimeoutOptions, NativeMoveOptions, NativeVoiceOptions, ModerationTarget } from './services/native-moderation.js';\nexport { ScopedData } from './services/native-data.js';\nexport type { NativeData } from './services/native-data.js';\nexport type { DataTransaction, TransactionScope, VariableOptions, VariableOperation } from './services/variables.js';\nexport { MemberService } from './services/members.js';\nexport { Scheduler, ScheduleExecutionError } from './services/scheduler.js';\nexport type { ScheduleInput, CronScheduleInput, SchedulePatch, ScheduleAccess, RetryPolicy, SchedulerOptions, SchedulerEvent } from './services/scheduler.js';\nexport { parseCron, nextCron, assertTimezone } from './domain/cron.js';\nexport type { CronExpression, MissedRunPolicy } from './domain/cron.js';\nexport { HttpService } from './services/http.js';\nexport type { HttpOptions, HttpRequest, HttpResponse, HttpPolicy, HttpMultipartPart, HttpStreamResponse } from './services/http.js';\nexport { StateMaintenance } from './services/state-maintenance.js';\nexport type { StoreStatistics, CleanupOptions, CleanupResult, StateBackup, RestoreOptions, RestoreReport } from './services/state-maintenance.js';\nexport type { ScheduleRecord, ScheduleExecutionRecord } from './domain/state.js';\nexport { defineConfig } from './config.js';\nexport type { YuzuhaConfig } from './config.js';\nexport type * from './contracts.js';\nexport { FluxerTransport, incoming } from './adapter.js';\nexport { FluxerResources } from './infrastructure/fluxer/resources.js';\nexport { JsonStore, MemoryStore, defaultDataPath } from './store.js';\nexport { SQLiteStore } from './sqlite.js';\nexport { loadCommands, commandFiles } from './loader.js';\nexport * from './errors.js';\nexport * as SDK from '@fluxerjs/core';\nexport { decimal, decimalCompare, decimalRound } from './domain/decimal.js';\nexport { embed } from './domain/embeds.js';\nexport type { VariableQueryOptions, VariableQuery, VariableEntry, VariablePage } from './domain/variable-query.js';\nexport type { StreamAttachmentOptions } from './services/attachments.js';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAQxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAyCnE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { YuzuhaError } from '../../../errors.js';
|
|
2
|
+
import { toMessageInfo } from './messages.js';
|
|
3
|
+
import { toMemberInfo } from './users.js';
|
|
4
|
+
function bounded(value) {
|
|
5
|
+
return Number.isFinite(value) ? value : null;
|
|
6
|
+
}
|
|
7
|
+
export function createCacheResources(client) {
|
|
8
|
+
return {
|
|
9
|
+
async stats() {
|
|
10
|
+
const sizes = client.cache.stats();
|
|
11
|
+
const messages = client._messageCacheStats();
|
|
12
|
+
const limits = client.cache.limits;
|
|
13
|
+
return {
|
|
14
|
+
...sizes,
|
|
15
|
+
messages: messages.messages,
|
|
16
|
+
messageChannels: messages.channels,
|
|
17
|
+
limits: {
|
|
18
|
+
guilds: bounded(limits.guilds),
|
|
19
|
+
channels: bounded(limits.channels),
|
|
20
|
+
users: bounded(limits.users),
|
|
21
|
+
members: bounded(limits.members),
|
|
22
|
+
messages: limits.messages === false ? false : bounded(limits.messages),
|
|
23
|
+
roles: bounded(limits.roles),
|
|
24
|
+
emojis: bounded(limits.emojis),
|
|
25
|
+
stickers: bounded(limits.stickers),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
async sweepMessages(input = {}) {
|
|
30
|
+
const { channelID, maxAgeMs, keep } = input;
|
|
31
|
+
if (maxAgeMs !== undefined && (!Number.isSafeInteger(maxAgeMs) || maxAgeMs < 0)) {
|
|
32
|
+
throw new YuzuhaError('SWEEP_AGE', 'maxAgeMs deve ser um inteiro não negativo.');
|
|
33
|
+
}
|
|
34
|
+
const cutoff = maxAgeMs === undefined ? null : Date.now() - maxAgeMs;
|
|
35
|
+
return client.sweepMessages((message, channelId) => {
|
|
36
|
+
if (cutoff !== null && message.createdAt.getTime() >= cutoff)
|
|
37
|
+
return false;
|
|
38
|
+
return keep ? !keep(toMessageInfo(message), channelId) : true;
|
|
39
|
+
}, channelID);
|
|
40
|
+
},
|
|
41
|
+
async sweepMembers(input = {}) {
|
|
42
|
+
const { guildID, keep } = input;
|
|
43
|
+
return client.sweepMembers((member, guildId) => {
|
|
44
|
+
if (guildID !== undefined && guildId !== guildID)
|
|
45
|
+
return false;
|
|
46
|
+
return keep ? !keep(toMemberInfo(member), guildId) : true;
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/cache.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client } from '@fluxerjs/core';\nimport { YuzuhaError } from '../../../errors.js';\nimport type { CacheResources } from '../../../ports/resources/cache.js';\nimport { toMessageInfo } from './messages.js';\nimport { toMemberInfo } from './users.js';\n\nfunction bounded(value: number): number | null {\n return Number.isFinite(value) ? value : null;\n}\n\nexport function createCacheResources(client: Client): CacheResources {\n return {\n async stats() {\n const sizes = client.cache.stats();\n const messages = client._messageCacheStats();\n const limits = client.cache.limits;\n return {\n ...sizes,\n messages: messages.messages,\n messageChannels: messages.channels,\n limits: {\n guilds: bounded(limits.guilds),\n channels: bounded(limits.channels),\n users: bounded(limits.users),\n members: bounded(limits.members),\n messages: limits.messages === false ? false : bounded(limits.messages),\n roles: bounded(limits.roles),\n emojis: bounded(limits.emojis),\n stickers: bounded(limits.stickers),\n },\n };\n },\n async sweepMessages(input = {}) {\n const { channelID, maxAgeMs, keep } = input;\n if (maxAgeMs !== undefined && (!Number.isSafeInteger(maxAgeMs) || maxAgeMs < 0)) {\n throw new YuzuhaError('SWEEP_AGE', 'maxAgeMs deve ser um inteiro não negativo.');\n }\n const cutoff = maxAgeMs === undefined ? null : Date.now() - maxAgeMs;\n return client.sweepMessages((message, channelId) => {\n if (cutoff !== null && message.createdAt.getTime() >= cutoff) return false;\n return keep ? !keep(toMessageInfo(message), channelId) : true;\n }, channelID);\n },\n async sweepMembers(input = {}) {\n const { guildID, keep } = input;\n return client.sweepMembers((member, guildId) => {\n if (guildID !== undefined && guildId !== guildID) return false;\n return keep ? !keep(toMemberInfo(member), guildId) : true;\n });\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/collectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"collectors.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/fluxer/resources/collectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EAAwF,mBAAmB,EAAgB,MAAM,wCAAwC,CAAC;AAyDtL,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAgH7E"}
|
|
@@ -1,17 +1,53 @@
|
|
|
1
1
|
import { MessageCollector, ReactionCollector } from '@fluxerjs/core';
|
|
2
2
|
import { cancellationError } from '../../../services/cancellation.js';
|
|
3
|
+
import { YuzuhaError } from '../../../errors.js';
|
|
3
4
|
function info(message) {
|
|
4
5
|
return { id: message.id, channelID: message.channelId, authorID: message.author.id, content: message.content };
|
|
5
6
|
}
|
|
6
7
|
function targets(emojis) {
|
|
7
8
|
return (Array.isArray(emojis) ? emojis : [emojis]).map(value => value.trim().toLowerCase()).filter(Boolean);
|
|
8
9
|
}
|
|
9
|
-
function
|
|
10
|
+
function matches(reaction, wanted) {
|
|
10
11
|
const identifier = reaction.emojiIdentifier.toLowerCase();
|
|
11
12
|
const name = reaction.emoji.name.toLowerCase();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
return wanted.includes(identifier) || wanted.includes(name);
|
|
14
|
+
}
|
|
15
|
+
function voteInfo(reaction, userID) {
|
|
16
|
+
return { userID, emoji: reaction.emoji.name, messageID: reaction.messageId };
|
|
17
|
+
}
|
|
18
|
+
function vote(reaction, userID, wanted) {
|
|
19
|
+
return matches(reaction, wanted) ? voteInfo(reaction, userID) : null;
|
|
20
|
+
}
|
|
21
|
+
function positiveBound(value) {
|
|
22
|
+
return value !== undefined && Number.isFinite(value) && value > 0 ? value : 0;
|
|
23
|
+
}
|
|
24
|
+
function requireBounds(time, max, signal) {
|
|
25
|
+
if (time <= 0 && max <= 0 && signal === undefined) {
|
|
26
|
+
throw new YuzuhaError('COLLECTOR_BOUNDS', 'Informe um limite para o coletor: timeMs, max ou signal.');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** Itera itens de um coletor do SDK: enfileira 'collect', encerra no 'end' e limpa ao sair. */
|
|
30
|
+
async function* pump(attach) {
|
|
31
|
+
const queue = [];
|
|
32
|
+
let ended = false;
|
|
33
|
+
let waiting;
|
|
34
|
+
const notify = () => { const wake = waiting; waiting = undefined; wake?.(); };
|
|
35
|
+
const detach = attach(item => { queue.push(item); notify(); }, () => { ended = true; notify(); });
|
|
36
|
+
try {
|
|
37
|
+
for (;;) {
|
|
38
|
+
const item = queue.shift();
|
|
39
|
+
if (item !== undefined) {
|
|
40
|
+
yield item;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (ended)
|
|
44
|
+
return;
|
|
45
|
+
await new Promise(resolve => { waiting = resolve; });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
detach();
|
|
50
|
+
}
|
|
15
51
|
}
|
|
16
52
|
export function createCollectorsResources(client) {
|
|
17
53
|
return {
|
|
@@ -112,6 +148,52 @@ export function createCollectorsResources(client) {
|
|
|
112
148
|
abort();
|
|
113
149
|
});
|
|
114
150
|
},
|
|
151
|
+
collectMessages(channelID, input) {
|
|
152
|
+
const time = positiveBound(input.timeMs);
|
|
153
|
+
const max = positiveBound(input.max);
|
|
154
|
+
requireBounds(time, max, input.signal);
|
|
155
|
+
const filter = input.userID === undefined && input.contains === undefined
|
|
156
|
+
? undefined
|
|
157
|
+
: (message) => (input.userID === undefined || message.author.id === input.userID) &&
|
|
158
|
+
(input.contains === undefined || message.content.includes(input.contains));
|
|
159
|
+
const signal = input.signal;
|
|
160
|
+
return pump((push, finish) => {
|
|
161
|
+
// O SDK exige time ou max; com só signal o teto de max é inalcançável e o abort encerra.
|
|
162
|
+
const collector = new MessageCollector(client, channelID, {
|
|
163
|
+
filter, time, max: time > 0 || max > 0 ? max : Number.MAX_SAFE_INTEGER,
|
|
164
|
+
});
|
|
165
|
+
const abort = () => collector.stop('user');
|
|
166
|
+
collector.on('collect', message => push(info(message)));
|
|
167
|
+
collector.on('end', () => finish());
|
|
168
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
169
|
+
if (signal?.aborted)
|
|
170
|
+
collector.stop('user');
|
|
171
|
+
return () => { signal?.removeEventListener('abort', abort); collector.stop('user'); };
|
|
172
|
+
});
|
|
173
|
+
},
|
|
174
|
+
collectReactions(channelID, input) {
|
|
175
|
+
const time = positiveBound(input.timeMs);
|
|
176
|
+
const max = positiveBound(input.max);
|
|
177
|
+
requireBounds(time, max, input.signal);
|
|
178
|
+
if (!input.messageID)
|
|
179
|
+
throw new YuzuhaError('COLLECTOR_MESSAGE', 'Informe a mensagem (messageID) para coletar reações.');
|
|
180
|
+
const wanted = targets(input.emojis ?? []);
|
|
181
|
+
const signal = input.signal;
|
|
182
|
+
return pump((push, finish) => {
|
|
183
|
+
const collector = new ReactionCollector(client, input.messageID, channelID, {
|
|
184
|
+
time, max,
|
|
185
|
+
filter: (reaction, user) => (input.userID === undefined || user.id === input.userID)
|
|
186
|
+
&& (wanted.length === 0 || matches(reaction, wanted)),
|
|
187
|
+
});
|
|
188
|
+
const abort = () => collector.stop('user');
|
|
189
|
+
collector.on('collect', (reaction, user) => push(voteInfo(reaction, user.id)));
|
|
190
|
+
collector.on('end', () => finish());
|
|
191
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
192
|
+
if (signal?.aborted)
|
|
193
|
+
collector.stop('user');
|
|
194
|
+
return () => { signal?.removeEventListener('abort', abort); collector.stop('user'); };
|
|
195
|
+
});
|
|
196
|
+
},
|
|
115
197
|
};
|
|
116
198
|
}
|
|
117
199
|
//# sourceMappingURL=collectors.js.map
|