yuzuha 0.1.5 → 0.2.0
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 +80 -0
- package/README.md +171 -115
- package/VERSIONING.md +119 -7
- package/assets/canvas/Inter-Bold.ttf +0 -0
- package/assets/canvas/Inter-Regular.ttf +0 -0
- package/assets/canvas/OFL.txt +92 -0
- package/assets/canvas/ORIGIN.md +8 -0
- package/benchmarks/compare.mjs +8 -2
- package/benchmarks/parser.mjs +66 -0
- package/benchmarks/performance.mjs +87 -0
- package/benchmarks/rate-limits.mjs +138 -0
- package/benchmarks/refinement.mjs +99 -0
- package/benchmarks/results/rate-limits-comparison.json +273 -0
- package/benchmarks/results/v0.1.6/performance-0.1.5.json +205 -0
- package/benchmarks/results/v0.1.6/performance-0.1.6.json +263 -0
- package/benchmarks/results/v0.1.6/refinement-audio.json +147 -0
- package/benchmarks/results/v0.1.6/refinement-final-repeat.json +147 -0
- package/benchmarks/results/v0.1.6/refinement-final.json +147 -0
- package/benchmarks/results/v0.1.6/refinement-initial.json +117 -0
- package/benchmarks/results/v0.1.6/runtime-0.1.5.json +341 -0
- package/benchmarks/results/v0.1.6/runtime-0.1.6-refined.json +406 -0
- package/benchmarks/results/v0.1.6/runtime-0.1.6-repeat.json +406 -0
- package/benchmarks/results/v0.1.6/runtime-0.1.6.json +406 -0
- package/benchmarks/results/v0.1.7/parser-comparison.json +170 -0
- package/bridges/lavalink/README.md +101 -0
- package/bridges/lavalink/application.yml +20 -0
- package/bridges/lavalink/build.mjs +38 -0
- package/bridges/lavalink/integration.mjs +161 -0
- package/bridges/lavalink/results/node22.json +39 -0
- package/bridges/lavalink/results/node26.json +39 -0
- package/bridges/lavalink/src/AudioController.java +149 -0
- package/bridges/lavalink/src/WebmOpus.java +82 -0
- package/dist/canvas.d.ts +10 -0
- package/dist/canvas.d.ts.map +1 -0
- package/dist/canvas.js +11 -0
- package/dist/canvas.js.map +1 -0
- package/dist/cli/arguments.d.ts +6 -0
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +39 -9
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/bot-template-catalog.d.ts +33 -0
- package/dist/cli/bot-template-catalog.d.ts.map +1 -0
- package/dist/cli/bot-template-catalog.js +20 -0
- package/dist/cli/bot-template-catalog.js.map +1 -0
- package/dist/cli/bot-template-commands.d.ts +2 -0
- package/dist/cli/bot-template-commands.d.ts.map +1 -0
- package/dist/cli/bot-template-commands.js +358 -0
- package/dist/cli/bot-template-commands.js.map +1 -0
- package/dist/cli/bot-template-content.d.ts +13 -0
- package/dist/cli/bot-template-content.d.ts.map +1 -0
- package/dist/cli/bot-template-content.js +69 -0
- package/dist/cli/bot-template-content.js.map +1 -0
- package/dist/cli/bot-template-feature-tests.d.ts +2 -0
- package/dist/cli/bot-template-feature-tests.d.ts.map +1 -0
- package/dist/cli/bot-template-feature-tests.js +165 -0
- package/dist/cli/bot-template-feature-tests.js.map +1 -0
- package/dist/cli/bot-template-tests.d.ts +3 -0
- package/dist/cli/bot-template-tests.d.ts.map +1 -0
- package/dist/cli/bot-template-tests.js +67 -0
- package/dist/cli/bot-template-tests.js.map +1 -0
- package/dist/cli/bot-templates.d.ts +3 -0
- package/dist/cli/bot-templates.d.ts.map +1 -0
- package/dist/cli/bot-templates.js +154 -0
- package/dist/cli/bot-templates.js.map +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +13 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/scaffold.d.ts +3 -1
- package/dist/cli/scaffold.d.ts.map +1 -1
- package/dist/cli/scaffold.js +26 -8
- package/dist/cli/scaffold.js.map +1 -1
- package/dist/cli/version.d.ts +1 -3
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +1 -6
- package/dist/cli/version.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/arguments.d.ts.map +1 -1
- package/dist/commands/arguments.js +56 -45
- package/dist/commands/arguments.js.map +1 -1
- package/dist/commands/context.d.ts +44 -10
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +80 -27
- package/dist/commands/context.js.map +1 -1
- package/dist/contracts.d.ts +1 -1
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/domain/canvas.d.ts +240 -0
- package/dist/domain/canvas.d.ts.map +1 -0
- package/dist/domain/canvas.js +226 -0
- package/dist/domain/canvas.js.map +1 -0
- package/dist/domain/decimal.d.ts +4 -0
- package/dist/domain/decimal.d.ts.map +1 -0
- package/dist/domain/decimal.js +84 -0
- package/dist/domain/decimal.js.map +1 -0
- package/dist/domain/embeds.d.ts +36 -0
- package/dist/domain/embeds.d.ts.map +1 -0
- package/dist/domain/embeds.js +259 -0
- package/dist/domain/embeds.js.map +1 -0
- package/dist/domain/message-query.d.ts +39 -0
- package/dist/domain/message-query.d.ts.map +1 -0
- package/dist/domain/message-query.js +108 -0
- package/dist/domain/message-query.js.map +1 -0
- package/dist/domain/messages.d.ts +89 -13
- package/dist/domain/messages.d.ts.map +1 -1
- package/dist/domain/messages.js.map +1 -1
- package/dist/domain/music-state.d.ts +3 -0
- package/dist/domain/music-state.d.ts.map +1 -0
- package/dist/domain/music-state.js +10 -0
- package/dist/domain/music-state.js.map +1 -0
- package/dist/domain/music.d.ts +199 -0
- package/dist/domain/music.d.ts.map +1 -0
- package/dist/domain/music.js +2 -0
- package/dist/domain/music.js.map +1 -0
- package/dist/domain/state-validation.d.ts.map +1 -1
- package/dist/domain/state-validation.js +2 -0
- package/dist/domain/state-validation.js.map +1 -1
- package/dist/domain/state.d.ts +1 -0
- package/dist/domain/state.d.ts.map +1 -1
- package/dist/domain/state.js.map +1 -1
- package/dist/domain/track-queue.d.ts +24 -0
- package/dist/domain/track-queue.d.ts.map +1 -0
- package/dist/domain/track-queue.js +103 -0
- package/dist/domain/track-queue.js.map +1 -0
- package/dist/domain/variable-query.d.ts +29 -0
- package/dist/domain/variable-query.d.ts.map +1 -0
- package/dist/domain/variable-query.js +53 -0
- package/dist/domain/variable-query.js.map +1 -0
- package/dist/framework/bot.d.ts +17 -2
- package/dist/framework/bot.d.ts.map +1 -1
- package/dist/framework/bot.js +167 -39
- package/dist/framework/bot.js.map +1 -1
- package/dist/framework/command-registry.d.ts.map +1 -1
- package/dist/framework/command-registry.js +8 -1
- package/dist/framework/command-registry.js.map +1 -1
- package/dist/framework/events.d.ts +12 -0
- package/dist/framework/events.d.ts.map +1 -1
- package/dist/framework/events.js.map +1 -1
- package/dist/framework/options.d.ts +6 -0
- package/dist/framework/options.d.ts.map +1 -1
- package/dist/framework/options.js.map +1 -1
- package/dist/framework/rate-limits.d.ts +4 -0
- package/dist/framework/rate-limits.d.ts.map +1 -1
- package/dist/framework/rate-limits.js +31 -15
- package/dist/framework/rate-limits.js.map +1 -1
- package/dist/framework/reporting.js +1 -1
- package/dist/framework/reporting.js.map +1 -1
- package/dist/images.d.ts +3 -0
- package/dist/images.d.ts.map +1 -0
- package/dist/images.js +2 -0
- package/dist/images.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/canvas/render.d.ts +3 -0
- package/dist/infrastructure/canvas/render.d.ts.map +1 -0
- package/dist/infrastructure/canvas/render.js +118 -0
- package/dist/infrastructure/canvas/render.js.map +1 -0
- package/dist/infrastructure/canvas/worker.mjs +286 -0
- package/dist/infrastructure/fluxer/lavalink-bridge.d.ts +34 -0
- package/dist/infrastructure/fluxer/lavalink-bridge.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/lavalink-bridge.js +250 -0
- package/dist/infrastructure/fluxer/lavalink-bridge.js.map +1 -0
- package/dist/infrastructure/fluxer/payload.d.ts +6 -1
- package/dist/infrastructure/fluxer/payload.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/payload.js +58 -19
- package/dist/infrastructure/fluxer/payload.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.js +61 -4
- package/dist/infrastructure/fluxer/resources/messages.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/threads.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/threads.js +9 -0
- package/dist/infrastructure/fluxer/resources/threads.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.js +6 -0
- package/dist/infrastructure/fluxer/resources/users.js.map +1 -1
- package/dist/infrastructure/fluxer/transport.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/transport.js +9 -5
- package/dist/infrastructure/fluxer/transport.js.map +1 -1
- package/dist/infrastructure/fluxer/voice.d.ts +28 -0
- package/dist/infrastructure/fluxer/voice.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/voice.js +157 -0
- package/dist/infrastructure/fluxer/voice.js.map +1 -0
- package/dist/infrastructure/images/transform.d.ts +21 -0
- package/dist/infrastructure/images/transform.d.ts.map +1 -0
- package/dist/infrastructure/images/transform.js +77 -0
- package/dist/infrastructure/images/transform.js.map +1 -0
- package/dist/infrastructure/images/worker.mjs +28 -0
- package/dist/infrastructure/lavalink/audio-stream.d.ts +12 -0
- package/dist/infrastructure/lavalink/audio-stream.d.ts.map +1 -0
- package/dist/infrastructure/lavalink/audio-stream.js +95 -0
- package/dist/infrastructure/lavalink/audio-stream.js.map +1 -0
- package/dist/infrastructure/lavalink/node.d.ts +147 -0
- package/dist/infrastructure/lavalink/node.d.ts.map +1 -0
- package/dist/infrastructure/lavalink/node.js +498 -0
- package/dist/infrastructure/lavalink/node.js.map +1 -0
- package/dist/infrastructure/lavalink/protocol.d.ts +10 -0
- package/dist/infrastructure/lavalink/protocol.d.ts.map +1 -0
- package/dist/infrastructure/lavalink/protocol.js +114 -0
- package/dist/infrastructure/lavalink/protocol.js.map +1 -0
- package/dist/infrastructure/process-budget.d.ts +3 -0
- package/dist/infrastructure/process-budget.d.ts.map +1 -0
- package/dist/infrastructure/process-budget.js +17 -0
- package/dist/infrastructure/process-budget.js.map +1 -0
- package/dist/infrastructure/storage/memory.d.ts +2 -0
- package/dist/infrastructure/storage/memory.d.ts.map +1 -1
- package/dist/infrastructure/storage/memory.js +8 -0
- package/dist/infrastructure/storage/memory.js.map +1 -1
- package/dist/infrastructure/storage/sqlite.d.ts +4 -0
- package/dist/infrastructure/storage/sqlite.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite.js +53 -3
- package/dist/infrastructure/storage/sqlite.js.map +1 -1
- package/dist/music.d.ts +12 -0
- package/dist/music.d.ts.map +1 -0
- package/dist/music.js +6 -0
- package/dist/music.js.map +1 -0
- package/dist/ports/canvas.d.ts +5 -0
- package/dist/ports/canvas.d.ts.map +1 -0
- package/dist/ports/canvas.js +2 -0
- package/dist/ports/canvas.js.map +1 -0
- package/dist/ports/music.d.ts +25 -0
- package/dist/ports/music.d.ts.map +1 -0
- package/dist/ports/music.js +2 -0
- package/dist/ports/music.js.map +1 -0
- package/dist/ports/resources/messages.d.ts +17 -7
- package/dist/ports/resources/messages.d.ts.map +1 -1
- package/dist/ports/resources/messages.js.map +1 -1
- package/dist/ports/resources/threads.d.ts +6 -0
- package/dist/ports/resources/threads.d.ts.map +1 -1
- package/dist/ports/resources/threads.js.map +1 -1
- package/dist/ports/resources/users.d.ts +2 -0
- package/dist/ports/resources/users.d.ts.map +1 -1
- package/dist/ports/resources/users.js.map +1 -1
- package/dist/ports/store.d.ts +5 -1
- package/dist/ports/store.d.ts.map +1 -1
- package/dist/ports/store.js.map +1 -1
- package/dist/ports/voice.d.ts +28 -0
- package/dist/ports/voice.d.ts.map +1 -0
- package/dist/ports/voice.js +2 -0
- package/dist/ports/voice.js.map +1 -0
- package/dist/scripting/builtins/canvas.d.ts +2 -0
- package/dist/scripting/builtins/canvas.d.ts.map +1 -0
- package/dist/scripting/builtins/canvas.js +118 -0
- package/dist/scripting/builtins/canvas.js.map +1 -0
- package/dist/scripting/builtins/embeds.d.ts +1 -2
- package/dist/scripting/builtins/embeds.d.ts.map +1 -1
- package/dist/scripting/builtins/embeds.js +90 -35
- package/dist/scripting/builtins/embeds.js.map +1 -1
- package/dist/scripting/builtins/flow.d.ts.map +1 -1
- package/dist/scripting/builtins/flow.js +2 -1
- package/dist/scripting/builtins/flow.js.map +1 -1
- package/dist/scripting/builtins/http.d.ts.map +1 -1
- package/dist/scripting/builtins/http.js +59 -0
- package/dist/scripting/builtins/http.js.map +1 -1
- package/dist/scripting/builtins/index.d.ts.map +1 -1
- package/dist/scripting/builtins/index.js +4 -1
- package/dist/scripting/builtins/index.js.map +1 -1
- package/dist/scripting/builtins/language/decimals.d.ts +2 -0
- package/dist/scripting/builtins/language/decimals.d.ts.map +1 -0
- package/dist/scripting/builtins/language/decimals.js +9 -0
- package/dist/scripting/builtins/language/decimals.js.map +1 -0
- package/dist/scripting/builtins/language/index.d.ts.map +1 -1
- package/dist/scripting/builtins/language/index.js +6 -0
- package/dist/scripting/builtins/language/index.js.map +1 -1
- package/dist/scripting/builtins/language/loops.d.ts.map +1 -1
- package/dist/scripting/builtins/language/loops.js +69 -7
- package/dist/scripting/builtins/language/loops.js.map +1 -1
- package/dist/scripting/builtins/language/objects.d.ts.map +1 -1
- package/dist/scripting/builtins/language/objects.js +2 -1
- package/dist/scripting/builtins/language/objects.js.map +1 -1
- package/dist/scripting/builtins/language/regex.d.ts +2 -0
- package/dist/scripting/builtins/language/regex.d.ts.map +1 -0
- package/dist/scripting/builtins/language/regex.js +17 -0
- package/dist/scripting/builtins/language/regex.js.map +1 -0
- package/dist/scripting/builtins/language/sort.d.ts +2 -0
- package/dist/scripting/builtins/language/sort.d.ts.map +1 -0
- package/dist/scripting/builtins/language/sort.js +55 -0
- package/dist/scripting/builtins/language/sort.js.map +1 -0
- package/dist/scripting/builtins/language/state.d.ts.map +1 -1
- package/dist/scripting/builtins/language/state.js +14 -9
- package/dist/scripting/builtins/language/state.js.map +1 -1
- package/dist/scripting/builtins/messages.js +3 -3
- package/dist/scripting/builtins/messages.js.map +1 -1
- package/dist/scripting/builtins/native-expressions.d.ts.map +1 -1
- package/dist/scripting/builtins/native-expressions.js +3 -1
- package/dist/scripting/builtins/native-expressions.js.map +1 -1
- package/dist/scripting/builtins/native-messages.d.ts.map +1 -1
- package/dist/scripting/builtins/native-messages.js +17 -0
- package/dist/scripting/builtins/native-messages.js.map +1 -1
- package/dist/scripting/builtins/native-threads.d.ts.map +1 -1
- package/dist/scripting/builtins/native-threads.js +8 -0
- package/dist/scripting/builtins/native-threads.js.map +1 -1
- package/dist/scripting/builtins/native-users.d.ts.map +1 -1
- package/dist/scripting/builtins/native-users.js +5 -0
- package/dist/scripting/builtins/native-users.js.map +1 -1
- package/dist/scripting/builtins/payload.d.ts +4 -1
- package/dist/scripting/builtins/payload.d.ts.map +1 -1
- package/dist/scripting/builtins/payload.js +127 -5
- package/dist/scripting/builtins/payload.js.map +1 -1
- package/dist/scripting/builtins/resource-extras.d.ts.map +1 -1
- package/dist/scripting/builtins/resource-extras.js +10 -2
- package/dist/scripting/builtins/resource-extras.js.map +1 -1
- package/dist/scripting/builtins/schedule.js +8 -8
- package/dist/scripting/builtins/schedule.js.map +1 -1
- package/dist/scripting/builtins/storage.d.ts.map +1 -1
- package/dist/scripting/builtins/storage.js +8 -0
- package/dist/scripting/builtins/storage.js.map +1 -1
- package/dist/scripting/canvas-execution.d.ts +12 -0
- package/dist/scripting/canvas-execution.d.ts.map +1 -0
- package/dist/scripting/canvas-execution.js +14 -0
- package/dist/scripting/canvas-execution.js.map +1 -0
- package/dist/scripting/control-flow.d.ts +8 -0
- package/dist/scripting/control-flow.d.ts.map +1 -0
- package/dist/scripting/control-flow.js +18 -0
- package/dist/scripting/control-flow.js.map +1 -0
- package/dist/scripting/evaluator.d.ts +4 -0
- package/dist/scripting/evaluator.d.ts.map +1 -1
- package/dist/scripting/evaluator.js +81 -36
- package/dist/scripting/evaluator.js.map +1 -1
- package/dist/scripting/parser.d.ts.map +1 -1
- package/dist/scripting/parser.js +20 -11
- package/dist/scripting/parser.js.map +1 -1
- package/dist/scripting/regex-worker.mjs +69 -0
- package/dist/scripting/regex.d.ts +19 -0
- package/dist/scripting/regex.d.ts.map +1 -0
- package/dist/scripting/regex.js +61 -0
- package/dist/scripting/regex.js.map +1 -0
- package/dist/scripting/registry.d.ts +2 -1
- package/dist/scripting/registry.d.ts.map +1 -1
- package/dist/scripting/registry.js +9 -2
- package/dist/scripting/registry.js.map +1 -1
- package/dist/services/attachments.d.ts +10 -0
- package/dist/services/attachments.d.ts.map +1 -0
- package/dist/services/attachments.js +54 -0
- package/dist/services/attachments.js.map +1 -0
- package/dist/services/authorization.d.ts +1 -0
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +10 -0
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/canvas.d.ts +43 -0
- package/dist/services/canvas.d.ts.map +1 -0
- package/dist/services/canvas.js +587 -0
- package/dist/services/canvas.js.map +1 -0
- package/dist/services/http.d.ts.map +1 -1
- package/dist/services/http.js +34 -44
- package/dist/services/http.js.map +1 -1
- package/dist/services/music-player.d.ts +90 -0
- package/dist/services/music-player.d.ts.map +1 -0
- package/dist/services/music-player.js +475 -0
- package/dist/services/music-player.js.map +1 -0
- package/dist/services/music.d.ts +50 -0
- package/dist/services/music.d.ts.map +1 -0
- package/dist/services/music.js +177 -0
- package/dist/services/music.js.map +1 -0
- package/dist/services/native-data.d.ts +2 -0
- package/dist/services/native-data.d.ts.map +1 -1
- package/dist/services/native-data.js +3 -0
- package/dist/services/native-data.js.map +1 -1
- package/dist/services/resource-authorization.d.ts.map +1 -1
- package/dist/services/resource-authorization.js +37 -6
- package/dist/services/resource-authorization.js.map +1 -1
- package/dist/services/scheduler.d.ts +4 -0
- package/dist/services/scheduler.d.ts.map +1 -1
- package/dist/services/scheduler.js +10 -2
- package/dist/services/scheduler.js.map +1 -1
- package/dist/services/variables.d.ts +2 -0
- package/dist/services/variables.d.ts.map +1 -1
- package/dist/services/variables.js +11 -0
- package/dist/services/variables.js.map +1 -1
- package/dist/shared/package.d.ts +4 -0
- package/dist/shared/package.d.ts.map +1 -0
- package/dist/shared/package.js +7 -0
- package/dist/shared/package.js.map +1 -0
- package/dist/testing/music.d.ts +35 -0
- package/dist/testing/music.d.ts.map +1 -0
- package/dist/testing/music.js +88 -0
- package/dist/testing/music.js.map +1 -0
- package/dist/testing.d.ts +2 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +4 -2
- package/dist/testing.js.map +1 -1
- package/docs/API.md +60 -3
- package/docs/ARCHITECTURE.md +22 -3
- package/docs/BENCHMARKS.md +230 -2
- package/docs/BOT-BASES.md +168 -0
- package/docs/CANVAS.md +274 -0
- package/docs/CLI.md +43 -5
- package/docs/COOKBOOK.md +1 -1
- package/docs/EMBEDS.md +153 -0
- package/docs/EVENTS.md +8 -0
- package/docs/FUNCTION-GAPS.md +54 -34
- package/docs/FUNCTIONS.md +62 -9
- package/docs/HTTP.md +41 -0
- package/docs/IMAGES.md +109 -0
- package/docs/INTEGRATIONS.md +69 -0
- package/docs/LANGUAGE-EXTENSIONS.md +106 -0
- package/docs/LANGUAGE.md +41 -4
- package/docs/MUSIC.md +339 -0
- package/docs/NATIVE.md +50 -8
- package/docs/PARITY-MATRIX.md +952 -0
- package/docs/PARITY.md +50 -26
- package/docs/PLAN.md +69 -1
- package/docs/PROJECT.md +35 -0
- package/docs/QUICKSTART.md +89 -48
- package/docs/README.md +44 -24
- package/docs/REPOSITORY.md +70 -0
- package/docs/SCHEDULER.md +17 -0
- package/docs/STORAGE.md +52 -1
- package/docs/TESTING.md +21 -1
- package/docs/TROUBLESHOOTING.md +11 -1
- package/docs/VALIDATION.md +222 -4
- package/docs/tutorials/DATA.md +100 -0
- package/docs/tutorials/FIRST-COMMAND.md +134 -0
- package/docs/tutorials/FUNCTION-MODE.md +100 -0
- package/docs/tutorials/TESTING.md +84 -0
- package/editors/vscode/functions.json +395 -11
- package/editors/vscode/package.json +1 -1
- package/examples/canvas/fixtures/avatar.png +0 -0
- package/examples/canvas/functions/profile.yuzuha +15 -0
- package/examples/canvas/functions/ranking.yuzuha +46 -0
- package/examples/canvas/functions/welcome.yuzuha +10 -0
- package/examples/canvas/output/function-profile.png +0 -0
- package/examples/canvas/output/function-ranking.png +0 -0
- package/examples/canvas/output/function-welcome.png +0 -0
- package/examples/canvas/output/js-profile.png +0 -0
- package/examples/canvas/output/js-ranking.png +0 -0
- package/examples/canvas/output/js-welcome.png +0 -0
- package/examples/canvas/output/profile.png +0 -0
- package/examples/canvas/output/ranking.png +0 -0
- package/examples/canvas/output/welcome.png +0 -0
- package/examples/canvas/profile.d.mts +3 -0
- package/examples/canvas/profile.mjs +20 -0
- package/examples/canvas/profile.ts +34 -0
- package/examples/canvas/ranking.d.mts +5 -0
- package/examples/canvas/ranking.mjs +25 -0
- package/examples/canvas/ranking.ts +40 -0
- package/examples/canvas/render.ts +48 -0
- package/examples/canvas/welcome.d.mts +3 -0
- package/examples/canvas/welcome.mjs +14 -0
- package/examples/canvas/welcome.ts +27 -0
- package/examples/embeds/complete-embed-functions.ts +31 -0
- package/examples/embeds/complete-embed.ts +33 -0
- package/examples/lavalink.ts +55 -0
- package/examples/music-offline.ts +25 -0
- package/examples/native-voice.ts +26 -0
- package/package.json +49 -5
- package/src/canvas.ts +20 -0
- package/src/cli/arguments.ts +34 -12
- package/src/cli/bot-template-catalog.ts +23 -0
- package/src/cli/bot-template-commands.ts +357 -0
- package/src/cli/bot-template-content.ts +66 -0
- package/src/cli/bot-template-feature-tests.ts +159 -0
- package/src/cli/bot-template-tests.ts +68 -0
- package/src/cli/bot-templates.ts +155 -0
- package/src/cli/main.ts +13 -3
- package/src/cli/scaffold.ts +29 -8
- package/src/cli/version.ts +1 -10
- package/src/cli.ts +1 -1
- package/src/commands/arguments.ts +48 -41
- package/src/commands/context.ts +83 -26
- package/src/contracts.ts +1 -1
- package/src/domain/canvas.ts +259 -0
- package/src/domain/decimal.ts +75 -0
- package/src/domain/embeds.ts +218 -0
- package/src/domain/message-query.ts +142 -0
- package/src/domain/messages.ts +89 -4
- package/src/domain/music-state.ts +10 -0
- package/src/domain/music.ts +82 -0
- package/src/domain/state-validation.ts +1 -0
- package/src/domain/state.ts +1 -0
- package/src/domain/track-queue.ts +79 -0
- package/src/domain/variable-query.ts +58 -0
- package/src/framework/bot.ts +141 -34
- package/src/framework/command-registry.ts +7 -1
- package/src/framework/events.ts +12 -0
- package/src/framework/options.ts +6 -0
- package/src/framework/rate-limits.ts +25 -11
- package/src/framework/reporting.ts +1 -1
- package/src/images.ts +2 -0
- package/src/index.ts +9 -3
- package/src/infrastructure/canvas/render.ts +100 -0
- package/src/infrastructure/canvas/worker.mjs +286 -0
- package/src/infrastructure/fluxer/lavalink-bridge.ts +200 -0
- package/src/infrastructure/fluxer/payload.ts +54 -13
- package/src/infrastructure/fluxer/resources/messages.ts +62 -5
- package/src/infrastructure/fluxer/resources/threads.ts +9 -0
- package/src/infrastructure/fluxer/resources/users.ts +5 -0
- package/src/infrastructure/fluxer/transport.ts +9 -5
- package/src/infrastructure/fluxer/voice.ts +108 -0
- package/src/infrastructure/images/transform.ts +71 -0
- package/src/infrastructure/images/worker.mjs +28 -0
- package/src/infrastructure/lavalink/audio-stream.ts +71 -0
- package/src/infrastructure/lavalink/node.ts +425 -0
- package/src/infrastructure/lavalink/protocol.ts +84 -0
- package/src/infrastructure/process-budget.ts +17 -0
- package/src/infrastructure/storage/memory.ts +10 -0
- package/src/infrastructure/storage/sqlite.ts +52 -4
- package/src/music.ts +11 -0
- package/src/ports/canvas.ts +5 -0
- package/src/ports/music.ts +24 -0
- package/src/ports/resources/messages.ts +17 -7
- package/src/ports/resources/threads.ts +7 -0
- package/src/ports/resources/users.ts +2 -0
- package/src/ports/store.ts +5 -1
- package/src/ports/voice.ts +26 -0
- package/src/scripting/builtins/canvas.ts +117 -0
- package/src/scripting/builtins/embeds.ts +87 -28
- package/src/scripting/builtins/flow.ts +2 -1
- package/src/scripting/builtins/http.ts +44 -0
- package/src/scripting/builtins/index.ts +4 -1
- package/src/scripting/builtins/language/decimals.ts +10 -0
- package/src/scripting/builtins/language/index.ts +6 -0
- package/src/scripting/builtins/language/loops.ts +57 -8
- package/src/scripting/builtins/language/objects.ts +2 -1
- package/src/scripting/builtins/language/regex.ts +19 -0
- package/src/scripting/builtins/language/sort.ts +50 -0
- package/src/scripting/builtins/language/state.ts +14 -7
- package/src/scripting/builtins/messages.ts +3 -3
- package/src/scripting/builtins/native-expressions.ts +3 -1
- package/src/scripting/builtins/native-messages.ts +17 -0
- package/src/scripting/builtins/native-threads.ts +7 -0
- package/src/scripting/builtins/native-users.ts +5 -0
- package/src/scripting/builtins/payload.ts +121 -6
- package/src/scripting/builtins/resource-extras.ts +9 -2
- package/src/scripting/builtins/schedule.ts +11 -11
- package/src/scripting/builtins/storage.ts +7 -0
- package/src/scripting/canvas-execution.ts +23 -0
- package/src/scripting/control-flow.ts +13 -0
- package/src/scripting/evaluator.ts +52 -18
- package/src/scripting/parser.ts +23 -10
- package/src/scripting/regex-worker.mjs +69 -0
- package/src/scripting/regex.ts +63 -0
- package/src/scripting/registry.ts +7 -2
- package/src/services/attachments.ts +51 -0
- package/src/services/authorization.ts +9 -0
- package/src/services/canvas.ts +498 -0
- package/src/services/http.ts +26 -33
- package/src/services/music-player.ts +340 -0
- package/src/services/music.ts +146 -0
- package/src/services/native-data.ts +5 -0
- package/src/services/resource-authorization.ts +37 -6
- package/src/services/scheduler.ts +11 -2
- package/src/services/variables.ts +11 -0
- package/src/shared/package.ts +10 -0
- package/src/testing/music.ts +71 -0
- package/src/testing.ts +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -21,6 +21,86 @@ documentos. Veja a [política completa](VERSIONING.md).
|
|
|
21
21
|
|
|
22
22
|
</details>
|
|
23
23
|
|
|
24
|
+
## v0.2.0 · 02/11/2026
|
|
25
|
+
|
|
26
|
+
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.
|
|
27
|
+
|
|
28
|
+
- `Embed` aceita `url`, `timestamp`, `author` com ícone e link, `footer.iconURL`, texto alternativo em imagem e miniatura, e `fields[].inline` opcional. Na função `$color` e em `$embedFromObject`, a cor aceita `#RRGGBB`, tupla `r,g,b` ou nome simples; o tipo `Embed` nativo continua recebendo número. `embed()` valida um embed tipado na API nativa e `yuzuha/sdk` continua expondo o `EmbedBuilder` do SDK.
|
|
29
|
+
- Mensagens aceitam até 10 embeds, `tts`, `stickerIds`, `flags`, `allowedMentions` e `reply` na API nativa. O padrão continua sem menções e sem ping ao autor respondido. Relaxar menções exige `MentionEveryone` do autor, e TTS exige `SendTtsMessages`.
|
|
30
|
+
- Catorze funções novas: `$url`, `$embedTimestamp`, `$author`, `$footerIcon`, `$imageAlt`, `$thumbnailAlt`, `$fields`, `$addField`, `$removeField`, `$editField`, `$embedFromObject`, `$embeds`, `$addEmbed` e `$messageOptions`. `$field` aceita valor vazio quando é inline.
|
|
31
|
+
- `$fetchMessage` e `$messages` devolvem `embeds` normalizados, com `type`, `provider`, `video`, `audio`, `nsfw` e `children` somente leitura.
|
|
32
|
+
- Mudança incompatível: `MessageInfo.embeds` é obrigatório para implementações próprias de `MessagesResources`. Objetos de mensagem em script rejeitam chaves desconhecidas, que antes viravam embed sem validação. Veja [VERSIONING.md](VERSIONING.md#migrar-para-020).
|
|
33
|
+
- `npm run docs:generate` gera [PARITY-MATRIX.md](docs/PARITY-MATRIX.md), que classifica cada export do SDK como coberto por script, coberto pelo código nativo, só-SDK ou lacuna. Um teste falha quando o SDK ganha export sem área.
|
|
34
|
+
- Catálogo do function mode: de 322 para **336** funções. [FUNCTION-GAPS.md](docs/FUNCTION-GAPS.md) foi atualizado com a contagem real.
|
|
35
|
+
|
|
36
|
+
## v0.1.9 · 29/10/2026
|
|
37
|
+
|
|
38
|
+
Composição opcional de cartões para comandos, eventos e function mode, com fontes locais e renderização isolada. Esta atualização da biblioteca Yuzuha foi preparada em 29/10/2026 (v0.1.9).
|
|
39
|
+
|
|
40
|
+
- `yuzuha/canvas` oferece builder tipado para texto, imagens, avatares, formas, gradientes, sombras, badges e progresso. A raiz e o function mode continuam importáveis sem instalar `@napi-rs/canvas`; o backend carrega somente no processo filho durante a renderização.
|
|
41
|
+
- `ctx.canvas.send` e `bot.contextEvent` permitem anexar imagens em comandos e eventos sem mensagem. O canal é explícito quando o evento não o fornece.
|
|
42
|
+
- Doze funções `$canvas*` mantêm cenas privadas por execução e elevam o catálogo canônico de 310 para **322**. Quotas, cancelamento e limites atravessam `$try`.
|
|
43
|
+
- Inter 4.1 Regular e Bold acompanham os arquivos originais e a licença OFL. Fontes próprias podem vir de bytes, aliases configurados ou HTTP submetido à política do contexto.
|
|
44
|
+
- Canvas e Sharp compartilham no máximo dois processos simultâneos, sem fila implícita. Canvas não depende de Sharp; `yuzuha/images` preserva seu contrato.
|
|
45
|
+
- Perfil, boas-vindas e ranking têm versões JS, TS e function mode e geram nove PNGs offline. O tarball verifica imports sem os peers e renderização real com Canvas sem Sharp.
|
|
46
|
+
- SDK 3.3.0, Node >=22.13 e schema persistido 2 permanecem compatíveis.
|
|
47
|
+
|
|
48
|
+
## v0.1.8 · 28/10/2026
|
|
49
|
+
|
|
50
|
+
Bases de bots, buscas e páginas do Fluxer.js, com autorização compartilhada e correções de limites, streams e cooldowns. Esta atualização da biblioteca Yuzuha foi preparada em 28/10/2026 (v0.1.8).
|
|
51
|
+
|
|
52
|
+
- A CLI oferece sete bases JS/TS com `templates` e `init --template`: simple, multifunctional, moderation, community, economy, entertainment e utility. A multifuncional reúne 24 comandos raiz; os projetos incluem configuração, exemplos e testes offline. O scaffold padrão e `--functions` continuam disponíveis.
|
|
53
|
+
- A distribuição preserva o modo executável da CLI e testa a instalação, os tipos e o dispatch dos 14 pares de base/linguagem a partir do tarball.
|
|
54
|
+
- Quatro funções novas levam o catálogo de 306 a **310**: `$searchMessagesAdvanced`, `$pinnedMessagesPage`, `$reactionUsersPage` e `$threadMember`. Seus recursos e tipos também estão disponíveis na API nativa.
|
|
55
|
+
- A busca aceita filtros de conteúdo, frases, autores, canais, menções, anexos, IDs e ordenação sem exigir texto. A validação é compartilhada entre scripts e adaptador, copia arrays e limita as opções a 32 KiB; a busca anterior continua disponível, incluindo cursor vazio.
|
|
56
|
+
- Páginas de fixadas preservam ordem de fixação, timestamps, `hasMore` e cursor ISO. Páginas de reações preservam `hasMore`/`nextAfter`, incluindo respostas legadas em array. A consulta individual de membros de threads inclui flags e metadados de mute, com o autor do contexto como padrão nos scripts.
|
|
57
|
+
- Mutações de emojis e stickers pelo contexto exigem `ManageExpressions` de autor e bot no servidor atual. Criar emoji verifica as permissões antes do download e revalida antes de criar o recurso. Guards não são capturados por `$try`.
|
|
58
|
+
- `$jsonEncode` preserva guards, limites, cancelamento, controle de loops e `PartialModerationError`. Incrementos, remoções/inclusões em arrays e atualizações por caminho verificam a saída antes do commit, preservando valor, TTL e ausência quando recusados.
|
|
59
|
+
- O prazo cooperativo do runtime usa relógio monotônico. Esperas externas sobrepostas ou aninhadas descontam seu intervalo uma única vez, sem conceder tempo duplicado.
|
|
60
|
+
- HTTP valida sub-redes IPv4/IPv6, inclusive IPv4 mapeado, link-local e redes especiais. Literais IPv6 públicos funcionam sem consulta DNS; credenciais na URL e corpos em GET/HEAD são recusados.
|
|
61
|
+
- Redirects preservam os métodos conforme o padrão Fetch e removem cabeçalhos de conteúdo quando descartam o corpo. Respostas binárias copiam chunks reutilizados; cancelamento libera readers mesmo quando a fonte não conclui a limpeza.
|
|
62
|
+
- Anexos por stream mantêm os metadados validados durante a leitura e não deixam um timeout agendado quando a fonte já está bloqueada por outro reader.
|
|
63
|
+
- Deduplicação de mensagens e consultas de cooldown ativo deixam de varrer o mapa de cooldowns. A coleta considera vencimentos e pressão de capacidade; renovação e admissão reutilizam entradas expiradas, mantendo o teto de 100 mil. Flags malformadas geram `GuardError` antes do handler.
|
|
64
|
+
- Um benchmark reproduzível compara a implementação anterior e a atual com amostras intercaladas. O ganho é localizado na manutenção removida; cenários comuns tiveram resultados mistos, registrados sem alegação de aceleração geral.
|
|
65
|
+
- Referências, catálogo do editor, guias e consumidores JS/TS acompanham os novos contratos. O SDK continua fixado em 3.3.0, o schema persistido em 2 e os sete entrypoints permanecem disponíveis.
|
|
66
|
+
- **Adaptação de integrações:** implementações completas próprias de `MessagesResources` devem acrescentar `pinnedPage` e `reactionUsersPage`; `ThreadsResources` deve acrescentar `member`. Comandos antes autorizados apenas pelo bot podem receber `GuardError` nas mutações de expressões. Apesar da numeração patch, esta entrega altera esses contratos; veja [VERSIONING.md](VERSIONING.md) antes de atualizar.
|
|
67
|
+
|
|
68
|
+
## v0.1.7 · 23/10/2026
|
|
69
|
+
|
|
70
|
+
Loops controláveis, comparadores de arrays, regex isolada, decimais exatos e busca pela CLI, com o conteúdo preparado na 0.1.6. Esta atualização da biblioteca Yuzuha foi preparada em 23/10/2026 (v0.1.7).
|
|
71
|
+
|
|
72
|
+
- `yuzuha functions --search <termo>` filtra nomes, aliases e descrições por trecho, sem distinguir maiúsculas e minúsculas. Aceita `$` inicial e combina com categoria, JSON, exportação de catálogo e filtros de plugins, preservando a ordem dos resultados.
|
|
73
|
+
- Buscas sem resultados encerram com sucesso e retornam uma mensagem no terminal ou uma lista vazia em JSON. Termos vazios, ausentes ou repetidos são recusados; categorias desconhecidas continuam sendo erros.
|
|
74
|
+
- Consultas paginadas de variáveis por prefixo, com TTL e cursor; índice SQLite derivado do snapshot e invalidado por trigger. Streaming UTF-8 em scripts, com backpressure, controle de loop e cancelamento.
|
|
75
|
+
- `yuzuha/images` adiciona transformação opcional de PNG/JPEG/WebP com Sharp em processos limitados e canceláveis. `ctx.sendStream` lê anexos com orçamento e prazo antes do upload de bytes exigido pelo SDK.
|
|
76
|
+
- Auditoria de integrações documenta configuração de shards já suportada pelo core, gerenciamento externo de processos e ausência de contratos para componentes/comandos de aplicação.
|
|
77
|
+
- Tarefas aceitam prioridade persistida; `globalConcurrency` coordena claims no store compartilhado, preservando o limite local.
|
|
78
|
+
- **18 funções novas**, totalizando **306**: `guildFeatures`, `leaveGuild`, `while`, `break`, `continue`, `arraySortWith`, `sortLeft`, `sortRight`, `regexTest`, `regexMatch`, `regexReplace`, `decimal`, `decimalCompare`, `decimalRound`, `queryVars`, `httpStream`, `httpChunk` e `httpChunkIndex`.
|
|
79
|
+
- `ctx.guildFeatures()` copia as features do servidor; `ctx.leaveGuild()` só permite a saída solicitada pelo dono do servidor, com a mesma autorização nos scripts. Ports customizados antigos continuam válidos; ausência do recurso retorna `NATIVE_UNAVAILABLE`.
|
|
80
|
+
- Loops restauram o contexto ao sair; `break` e `continue` atravessam `$try` e afetam o corpo do loop mais próximo. Comparadores usam ordenação estável e orçamento compartilhado. Decimais retornam texto e usam até 1000 dígitos, sem perda por `Number`.
|
|
81
|
+
- Regex roda em workers limitados, com cancelamento, prazo e limites de entrada, correspondências e saída. O worker é incluído no tarball e não executa JavaScript fornecido pelo script.
|
|
82
|
+
- Inclui as otimizações de dispatch, runtime e estado, as APIs nativas de música, a integração Lavalink v4 e a ponte de áudio descritas na entrada 0.1.6. SDK 3.3.0, schema 2 e imports anteriores permanecem compatíveis.
|
|
83
|
+
- Erros do gateway e de shards chegam aos hooks `onError`/`onLog` mesmo sem listeners do usuário. Os listeners padrão permanecem ativos durante o encerramento e preservam os listeners de clients injetados.
|
|
84
|
+
- O parser salta trechos de texto comum mantendo offsets, escapes e diagnósticos. A limpeza de `$httpStream` não bloqueia o comando quando a fonte deixa o cancelamento pendente.
|
|
85
|
+
- Biblioteca e CLI voltam à raiz do repositório, com instalação npm, guias Markdown e exemplos incluídos no pacote. O site fica arquivado para uma etapa futura.
|
|
86
|
+
|
|
87
|
+
## v0.1.6 · 22/10/2026
|
|
88
|
+
|
|
89
|
+
Dispatch, argumentos, runtime e leituras de estado mais rápidos, com ferramentas nativas para música e integração Lavalink v4. Esta atualização da biblioteca Yuzuha foi preparada em 22/10/2026 (v0.1.6).
|
|
90
|
+
|
|
91
|
+
- Deduplicação usa uma fila circular de 10000 entradas; mensagens ignoradas seguem um caminho curto. Prefixos estáticos são reaproveitados, o sinal de encerramento é compartilhado e serviços, mapas de argumentos e variáveis do contexto são criados sob demanda.
|
|
92
|
+
- Registro individual de comandos valida conflitos antes de inserir, sem copiar todo o catálogo. Carga e recarga continuam atômicas. Argumentos simples usam tokenização por trechos; o caminho de aspas/apóstrofos evita inspecionar repetidamente a palavra em construção. Escapes, flags e erros de entrada são preservados.
|
|
93
|
+
- Parser acumula trechos de texto; evaluator evita promises para literais e resolve funções com cache fraco por AST. A validação continua ativa para ASTs externos ou editados, com ordem, tipos, guards, orçamento e falhas parciais preservados.
|
|
94
|
+
- Leituras pontuais em memória e JSON copiam somente o valor solicitado e respeitam TTL e ordenação das transações. Stores próprios conservam o caminho anterior; `readVariable` é uma capacidade opcional. SQLite reutiliza statements sem alterar schema, WAL ou validação antes do commit.
|
|
95
|
+
- `yuzuha/music` entrega cliente Lavalink v4 com REST/WebSocket autenticados, retomada de sessão, reconexão limitada, cancelamento, limite de respostas/requisições, cache LRU com orçamento de bytes e compartilhamento de buscas simultâneas.
|
|
96
|
+
- Gerenciador de música com distribuição de novos players entre nodes disponíveis, filas limitadas por servidor, avanço automático, loop, pause, skip, stop, seek, volume e filtros. Controles e eventos são serializados; falhas de PATCH preservam as faixas pendentes.
|
|
97
|
+
- Sessões Lavalink perdidas são reconstruídas com concorrência limitada, posição, pausa, filtros e renovação de voz. Sessões retomadas preservam a reprodução; eventos aguardam a confirmação do handshake. Respostas antigas não alteram a fila.
|
|
98
|
+
- Filas permitem remover, mover, embaralhar e consultar páginas sem copiar todo o catálogo. Controles pendentes são limitados por player; eventos de fim mantêm capacidade reservada. Nodes consideram CPU, players e frames ao distribuir carga; saídas pelo plugin ignoram os contadores de voz Discord, evitando perda falsa no balanceamento.
|
|
99
|
+
- Buscas com signals distintos compartilham a requisição, com cancelamento por chamada e aborto quando todos desistem. Decode de faixas/lotes e diagnósticos de cache/rede completam a API; parsing de flags evita mapas e objetos temporários por valor.
|
|
100
|
+
- `FluxerVoice` carrega `@fluxerjs/voice` opcionalmente para áudio WebM/Opus nativo. `ctx.voice` e `ctx.music` recebem serviços configurados e participam do encerramento.
|
|
101
|
+
- `FluxerLavalinkBridge` e o plugin `yuzuha-audio` conectam a saída Opus do Lavalink 4.2.2 ao SDK do Fluxer. Mantêm uma publicação entre faixas, pausa, seek e filtros; transmissão incremental, limites, cancelamento e reconexão liberam os recursos por servidor. A integração local usa áudio e decoder reais, com publicação LiveKit simulada.
|
|
102
|
+
- `MockMusicBackend`, `mockTrack`, exemplo offline, guia de música e benchmarks adicionais acompanham a versão. Relatórios anteriores/atuais e método estão em [BENCHMARKS.md](docs/BENCHMARKS.md). SDK 3.3.0, schema 2 e 288 funções de script permanecem compatíveis.
|
|
103
|
+
|
|
24
104
|
## v0.1.5 · 22/10/2026
|
|
25
105
|
|
|
26
106
|
Subcomandos e flags tipadas, ajuda derivada das definições e testes nativos com relógio controlável, com projetos gerados prontos para compartilhar. Esta atualização da biblioteca Yuzuha foi preparada em 22/10/2026 (v0.1.5).
|
package/README.md
CHANGED
|
@@ -1,159 +1,215 @@
|
|
|
1
1
|
# Yuzuha
|
|
2
2
|
|
|
3
|
-
Framework para bots do Fluxer
|
|
4
|
-
tipados
|
|
5
|
-
|
|
3
|
+
Framework TypeScript para bots do [Fluxer](https://fluxer.app), com comandos
|
|
4
|
+
tipados em JavaScript/TypeScript e uma linguagem opcional de scripts.
|
|
5
|
+
Os dois modos compartilham permissões, moderação, estado e recursos.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
O Yuzuha usa **Fluxer.js 3.3.0**. Você continua tendo acesso ao client original
|
|
8
|
+
por `bot.client` e aos exports do SDK em `yuzuha/sdk`.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
[0.2.0](CHANGELOG.md) · Node **22.13+** · ESM · [MIT](LICENSE)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
[Começar](#começar) · [Comandos](#escrever-comandos) · [Recursos](#recursos) · [Testes](#testar-sem-token) · [Documentação](#documentação)
|
|
13
|
+
|
|
14
|
+
## Começar
|
|
15
|
+
|
|
16
|
+
### Criar um bot
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
npx yuzuha@0.2.0 init ./meu-bot --ts
|
|
20
|
+
cd meu-bot
|
|
21
|
+
npm install
|
|
22
|
+
npm run check
|
|
23
|
+
npm run typecheck
|
|
24
|
+
npm test
|
|
25
|
+
cp .env.example .env
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Preencha `FLUXER_BOT_TOKEN` no `.env` e inicie o bot:
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
```sh
|
|
31
|
+
npm run dev
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
O projeto inclui três comandos, configuração e um teste offline. Para JavaScript,
|
|
35
|
+
troque `--ts` por `--js` e omita `typecheck`. Acrescente `--functions` ao `init`
|
|
36
|
+
para incluir um comando de exemplo com scripts.
|
|
37
|
+
|
|
38
|
+
`npm run check`, `npm run typecheck` e `npm test` validam o projeto sem conectar o bot.
|
|
39
|
+
`npm run dev` conecta e recarrega os arquivos de comando ao editar;
|
|
40
|
+
`npm start` executa sem recarga automática.
|
|
33
41
|
|
|
34
|
-
|
|
42
|
+
### Usar em um projeto existente
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
npm install yuzuha@0.2.0
|
|
46
|
+
```
|
|
35
47
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- Guards, middleware, plugins, eventos tipados e recarga de comandos sem reiniciar.
|
|
39
|
-
- Moderação compartilhada (ban, kick, timeout, unban) com casos por servidor.
|
|
40
|
-
- Recursos prontos: usuários, cargos, canais, mensagens, convites, webhooks,
|
|
41
|
-
emojis, stickers, threads e fóruns, incluindo reações, membros de threads,
|
|
42
|
-
posição de cargos/canais e categorias.
|
|
43
|
-
- Estado em memória, JSON ou SQLite, com transações e variáveis por escopo.
|
|
44
|
-
- Agendamentos persistentes com cron, fuso IANA, concorrência e retry com jitter.
|
|
45
|
-
- HTTP textual/binário, streaming e multipart, com limites e políticas por comando.
|
|
46
|
-
- `createTestBot`, relógio controlável, `MockTransport` e stores isolados para testar sem token.
|
|
47
|
-
- Transações entre chaves, agendamentos editáveis com pausa/retry e apelidos com autorização compartilhada.
|
|
48
|
-
- Limpeza de expirados, estatísticas e backup/restauração versionados com simulação.
|
|
49
|
-
- `doctor`, lint JSON, cenários offline, catálogos de plugins e extensão VS Code.
|
|
50
|
-
- SDK `@fluxerjs/core` **3.3.0** reexportado em `yuzuha/sdk`, sem esconder o original.
|
|
48
|
+
Use `"type": "module"` no `package.json`. O [guia inicial](docs/QUICKSTART.md)
|
|
49
|
+
mostra como configurar o bot e carregar comandos.
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
estiver no framework continua acessível por `bot.client` e pelos tipos originais.
|
|
51
|
+
## Escrever comandos
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
Salve **uma das versões** abaixo em `commands/eco.ts` (`.js` para JavaScript).
|
|
54
|
+
Ambas respondem a `!eco Olá, Yuzuha!` com `Olá, Yuzuha!`.
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
runtime é ativado quando um comando com `code` ou um evento de script é registrado.
|
|
56
|
+
### JavaScript / TypeScript
|
|
59
57
|
|
|
60
58
|
```ts
|
|
61
|
-
import {
|
|
62
|
-
|
|
59
|
+
import { arg, defineCommand } from 'yuzuha';
|
|
60
|
+
|
|
61
|
+
export default defineCommand({
|
|
62
|
+
name: 'eco',
|
|
63
|
+
description: 'Repete o texto informado.',
|
|
64
|
+
args: { texto: arg.text().rest().required() },
|
|
65
|
+
async run(ctx) {
|
|
66
|
+
await ctx.reply(ctx.args.get('texto'));
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Schemas `arg.*` inferem os tipos de argumentos e flags. Você também pode declarar
|
|
72
|
+
subcomandos, checks e middleware. O [guia nativo](docs/NATIVE.md) cobre esses
|
|
73
|
+
contratos, eventos, moderação e persistência.
|
|
74
|
+
|
|
75
|
+
### Function mode do Yuzuha
|
|
63
76
|
|
|
64
|
-
|
|
77
|
+
```ts
|
|
78
|
+
import { script } from 'yuzuha/functions';
|
|
65
79
|
|
|
66
|
-
|
|
67
|
-
name: '
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
export default script({
|
|
81
|
+
name: 'eco',
|
|
82
|
+
description: 'Repete o texto informado.',
|
|
83
|
+
code: '$reply[$messageSlice[0]]',
|
|
84
|
+
});
|
|
70
85
|
```
|
|
71
86
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
O function mode tem **336 funções** para mensagens, guards, moderação, variáveis,
|
|
88
|
+
JSON, arrays, loops, eventos e agendamentos. O runtime é ativado ao registrar um
|
|
89
|
+
comando com `code` ou um evento de script.
|
|
75
90
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
As funções seguem as assinaturas e regras do runtime do Yuzuha. Consulte a
|
|
92
|
+
[linguagem](docs/LANGUAGE.md), as [assinaturas das funções](docs/FUNCTIONS.md)
|
|
93
|
+
e a [cobertura](docs/PARITY.md).
|
|
79
94
|
|
|
80
|
-
##
|
|
95
|
+
## Recursos
|
|
81
96
|
|
|
82
|
-
|
|
83
|
-
|
|
97
|
+
| Área | O que está disponível |
|
|
98
|
+
|---|---|
|
|
99
|
+
| Comandos | Prefixos, aliases, subcomandos, argumentos e flags tipadas, cooldowns e ajuda gerada dos metadados |
|
|
100
|
+
| Extensões | Plugins, eventos, checks, middleware e recarga atômica de comandos |
|
|
101
|
+
| Moderação | Ban, kick, timeout, unban e moderação de voz, com permissões, hierarquia e casos por servidor |
|
|
102
|
+
| Fluxer | Usuários, membros, cargos, canais, mensagens, reações, anexos, threads, convites, webhooks e expressões |
|
|
103
|
+
| Dados | Memória, JSON e SQLite; TTL, transações, limpeza e backup/restauração com simulação |
|
|
104
|
+
| Agendamentos | Tarefas persistentes, cron, fusos IANA, pausa/retomada, histórico e retry |
|
|
105
|
+
| HTTP | Texto, bytes, streaming e multipart, com limites, cancelamento e políticas por comando |
|
|
106
|
+
| Canvas | Cartões com texto, avatares, imagens, gradientes, badges e progresso; peer nativo opcional |
|
|
107
|
+
| Música | Lavalink v4 com plugin e ponte de áudio para Fluxer, recuperação, filas editáveis, loop, seek, volume e filtros |
|
|
108
|
+
| Desenvolvimento | CLI, autocomplete e diagnósticos no VS Code, mocks e relógio controlável para testes |
|
|
109
|
+
|
|
110
|
+
## Testar sem token
|
|
111
|
+
|
|
112
|
+
O scaffold já inclui um teste executável com `npm test`. Para testar o comando
|
|
113
|
+
`eco` acima, crie `test/eco.test.ts` (`.js` para JavaScript):
|
|
84
114
|
|
|
85
|
-
```
|
|
86
|
-
|
|
115
|
+
```ts
|
|
116
|
+
import test from 'node:test';
|
|
117
|
+
import assert from 'node:assert/strict';
|
|
118
|
+
import { createTestBot } from 'yuzuha/testing';
|
|
119
|
+
import eco from '../commands/eco.js';
|
|
120
|
+
|
|
121
|
+
test('eco responde com o texto informado', async t => {
|
|
122
|
+
const fixture = createTestBot({ commands: [eco] });
|
|
123
|
+
t.after(() => fixture.destroy());
|
|
124
|
+
|
|
125
|
+
assert.equal(await fixture.send('!eco Olá, Yuzuha!'), 'success');
|
|
126
|
+
assert.equal(fixture.messages.at(-1)?.payload.content, 'Olá, Yuzuha!');
|
|
127
|
+
});
|
|
87
128
|
```
|
|
88
129
|
|
|
89
|
-
|
|
130
|
+
`createTestBot` usa transporte e recursos simulados, com estado isolado. O relógio
|
|
131
|
+
controlável permite testar cooldown, TTL e tarefas sem aguardar tempo real.
|
|
132
|
+
Veja fixtures, stores e cenários na [documentação de testes](docs/TESTING.md).
|
|
90
133
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
134
|
+
## CLI
|
|
135
|
+
|
|
136
|
+
Execute estes comandos no diretório do seu bot:
|
|
137
|
+
|
|
138
|
+
| Comando | Uso |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `npx yuzuha check` | Validar configuração e comandos sem login |
|
|
141
|
+
| `npx yuzuha doctor` | Diagnosticar ambiente, configuração e store |
|
|
142
|
+
| `npx yuzuha lint commands --json` | Analisar scripts sem importar módulos |
|
|
143
|
+
| `npx yuzuha functions --category moderation` | Consultar funções e assinaturas |
|
|
144
|
+
| `npx yuzuha functions --search mensagem` | Buscar funções por nome, alias ou descrição |
|
|
145
|
+
| `npx yuzuha editor` | Encontrar a extensão VS Code incluída no pacote |
|
|
100
146
|
|
|
101
|
-
`
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
Para acrescentar um exemplo de script, use `--functions`.
|
|
147
|
+
`check` importa configurações e comandos JS/TS de confiança; a verificação de
|
|
148
|
+
tipos é feita por `npm run typecheck`. A [referência da CLI](docs/CLI.md) também cobre
|
|
149
|
+
catálogos de plugins, cenários offline e manutenção de dados.
|
|
105
150
|
|
|
106
|
-
|
|
151
|
+
## Documentação
|
|
152
|
+
|
|
153
|
+
O [índice completo](docs/README.md) reúne os guias e as referências.
|
|
154
|
+
|
|
155
|
+
| Quero… | Ler |
|
|
156
|
+
|---|---|
|
|
157
|
+
| Criar e configurar um bot | [Guia inicial](docs/QUICKSTART.md) |
|
|
158
|
+
| Programar em JS/TS | [Guia nativo](docs/NATIVE.md), [framework](docs/FRAMEWORK.md) e [API](docs/API.md) |
|
|
159
|
+
| Criar um bot de música | [Lavalink, filas e voz Fluxer](docs/MUSIC.md) |
|
|
160
|
+
| Medir performance | [Benchmarks e comparações com a 0.1.5](docs/BENCHMARKS.md) |
|
|
161
|
+
| Compor cartões e imagens | [Canvas](docs/CANVAS.md) e [transformações de imagem](docs/IMAGES.md) |
|
|
162
|
+
| Escrever scripts `$...` | [Linguagem](docs/LANGUAGE.md) e [referência de funções](docs/FUNCTIONS.md) |
|
|
163
|
+
| Copiar exemplos | [Receitas](docs/COOKBOOK.md) e [código de exemplo](examples) |
|
|
164
|
+
| Usar o editor ou diagnosticar um erro | [VS Code](docs/EDITOR.md) e [problemas comuns](docs/TROUBLESHOOTING.md) |
|
|
165
|
+
| Entender a cobertura | [Paridade](docs/PARITY.md) e [funções ausentes](docs/FUNCTION-GAPS.md) |
|
|
166
|
+
| Conferir mudanças e validação | [Changelog](CHANGELOG.md), [versionamento](VERSIONING.md) e [evidências](docs/VALIDATION.md) |
|
|
107
167
|
|
|
108
|
-
## Desenvolver a biblioteca
|
|
168
|
+
## Desenvolver a biblioteca
|
|
169
|
+
|
|
170
|
+
Na cópia do repositório:
|
|
109
171
|
|
|
110
172
|
```sh
|
|
111
|
-
|
|
173
|
+
git clone https://github.com/horizzon3507/yuzuha.git
|
|
174
|
+
cd yuzuha
|
|
112
175
|
npm ci
|
|
113
|
-
npm run build
|
|
114
|
-
node dist/cli.js init ~/Projects/meu-bot --ts --local
|
|
115
|
-
cd ~/Projects/meu-bot
|
|
116
|
-
npm install
|
|
117
176
|
npm run check
|
|
118
|
-
npm run
|
|
119
|
-
cp .env.example .env
|
|
177
|
+
npm run smoke:package
|
|
120
178
|
```
|
|
121
179
|
|
|
122
|
-
|
|
123
|
-
[guia inicial](docs/QUICKSTART.md) explica instalação e configuração.
|
|
124
|
-
|
|
125
|
-
## Experimentar sem token
|
|
180
|
+
Para experimentar os exemplos offline:
|
|
126
181
|
|
|
127
182
|
```sh
|
|
128
183
|
npx tsx examples/offline.ts
|
|
129
184
|
npx tsx examples/function-mode.ts
|
|
130
|
-
node dist/cli.js check examples/yuzuha.config.js --json
|
|
131
|
-
node dist/cli.js functions --category moderation
|
|
132
185
|
```
|
|
133
186
|
|
|
134
|
-
|
|
135
|
-
config e comandos JS/TS de confiança, valida os scripts e não chama `login`.
|
|
136
|
-
Ele não substitui o typecheck do TypeScript.
|
|
187
|
+
Para gerar um bot que use sua instalação local da biblioteca:
|
|
137
188
|
|
|
138
|
-
|
|
189
|
+
```sh
|
|
190
|
+
node dist/cli.js init ../meu-bot-local --ts --local
|
|
191
|
+
```
|
|
139
192
|
|
|
140
|
-
|
|
193
|
+
O `init` usa a dependência npm por padrão; `--local` aponta para a instalação
|
|
194
|
+
que executa a CLI. Veja [contribuição](CONTRIBUTING.md) para as regras de código
|
|
195
|
+
e as verificações do projeto.
|
|
141
196
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
197
|
+
Transformações opcionais de imagens e entrada de anexos por stream estão em
|
|
198
|
+
[IMAGES.md](docs/IMAGES.md); consultas por prefixo e cursor em
|
|
199
|
+
[STORAGE.md](docs/STORAGE.md), e limites das integrações em
|
|
200
|
+
[INTEGRATIONS.md](docs/INTEGRATIONS.md).
|
|
201
|
+
|
|
202
|
+
### Bases de bots
|
|
203
|
+
|
|
204
|
+
Sete opções: `simple`, `multifunctional`, `moderation`, `community`, `economy`,
|
|
205
|
+
`entertainment` e `utility`. Na cópia local compilada:
|
|
206
|
+
|
|
207
|
+
```sh
|
|
208
|
+
node dist/cli.js templates
|
|
209
|
+
node dist/cli.js init ../bot-comunidade --template community --ts --local
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
A multifuncional reúne 24 comandos raiz com embeds e subcomandos, incluindo
|
|
213
|
+
moderação com casos, regras, sugestões, enquetes, moedas virtuais, diversão
|
|
214
|
+
e notas pessoais em DM. Todas as bases aceitam JS/TS e `--functions`, com README
|
|
215
|
+
e testes offline próprios. Veja [BOT-BASES.md](docs/BOT-BASES.md).
|
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.
|
|
4
|
+
A versão desta atualização é **0.2.0**.
|
|
5
5
|
|
|
6
6
|
## Pacote e histórico
|
|
7
7
|
|
|
8
8
|
| Lugar | Formato nesta versão |
|
|
9
9
|
|---|---|
|
|
10
|
-
| `package.json` e raiz
|
|
11
|
-
| Pacote npm e saída de `yuzuha --version` | `0.
|
|
12
|
-
| Título do changelog | `## v0.
|
|
13
|
-
|
|
|
10
|
+
| `package.json` e entrada raiz de `package-lock.json` | `0.2.0` |
|
|
11
|
+
| Pacote npm e saída de `yuzuha --version` | `0.2.0` |
|
|
12
|
+
| Título do changelog | `## v0.2.0 · 02/11/2026` |
|
|
13
|
+
| Tag Git | `v0.2.0` |
|
|
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,7 +30,8 @@ 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
|
|
33
|
+
`yuzuha/testing`, `yuzuha/tooling`, `yuzuha/music`, `yuzuha/images` e
|
|
34
|
+
`yuzuha/canvas`. A organização interna de `src/` não cria estabilidade de deep
|
|
34
35
|
imports. Schema persistido,
|
|
35
36
|
gramática e funções documentadas também fazem parte da compatibilidade.
|
|
36
37
|
|
|
@@ -40,6 +41,117 @@ gerado por `init` pertence ao consumidor e não precisa acompanhar a biblioteca.
|
|
|
40
41
|
|
|
41
42
|
## Preparar uma atualização
|
|
42
43
|
|
|
44
|
+
### Migrar para 0.2.0
|
|
45
|
+
|
|
46
|
+
A 0.2.0 acrescenta campos a `Embed` (`url`, `timestamp`, `author`, `footer.iconURL`,
|
|
47
|
+
alt text em imagem e miniatura), `allowedMentions`, `tts`, `stickerIds`, `flags` e
|
|
48
|
+
`reply` em `Payload`, além de 14 funções de script e a leitura normalizada de embeds
|
|
49
|
+
em `$fetchMessage` e `$messages`. Os exports públicos continuam os mesmos.
|
|
50
|
+
|
|
51
|
+
Há duas mudanças de contrato, por isso a versão é minor na série `0.x`:
|
|
52
|
+
|
|
53
|
+
- `MessageInfo.embeds` passou a ser obrigatório. Quem implementa `MessagesResources`
|
|
54
|
+
própria deve devolver `embeds` (use `[]` se não houver embeds).
|
|
55
|
+
- Objetos de mensagem em script (`$reply`, `$sendMessage`, `$editMessage`) aceitam
|
|
56
|
+
somente as chaves `content`, `embeds`, `tts`, `stickerIds`, `flags` e `allowedMentions`.
|
|
57
|
+
Antes, qualquer objeto virava embed sem validação; agora campos desconhecidos são erro.
|
|
58
|
+
|
|
59
|
+
Menções só relaxam com a permissão `MentionEveryone` do autor, e TTS exige
|
|
60
|
+
`SendTtsMessages`. O padrão continua sem menções e sem ping ao autor respondido.
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
npm install yuzuha@0.2.0
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Migrar para 0.1.9
|
|
67
|
+
|
|
68
|
+
A 0.1.9 acrescenta `yuzuha/canvas`, `ctx.canvas` e `bot.contextEvent`, além de
|
|
69
|
+
12 funções de script da categoria `canvas`. O pacote continua utilizável sem
|
|
70
|
+
Canvas; para renderizar, instale `@napi-rs/canvas@^1.0.13`. Sem o peer, somente
|
|
71
|
+
a chamada de renderização falha com `CANVAS_DEPENDENCY`. Sharp continua sendo
|
|
72
|
+
opcional e independente. O envio usa `resources.messages.sendBytes` e eventos
|
|
73
|
+
sem canal precisam fornecer `channelID` em `ctx.canvas.send`.
|
|
74
|
+
|
|
75
|
+
`CanvasConfig` pode registrar bytes de assets e fontes TTF/OTF. As respostas
|
|
76
|
+
HTTP continuam sujeitas à política e ao limite configurado no bot. Canvas e
|
|
77
|
+
transformações Sharp compartilham duas vagas de processo. O schema persistido
|
|
78
|
+
permanece em 2 e o SDK em 3.3.0; não há migração de dados.
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
npm install yuzuha@0.1.9 @napi-rs/canvas@^1.0.13
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Veja [CANVAS.md](docs/CANVAS.md) para opções, limites, fontes e exemplos. A
|
|
85
|
+
extensão incluída acompanha a versão 0.1.9.
|
|
86
|
+
|
|
87
|
+
### Migrar para 0.1.8
|
|
88
|
+
|
|
89
|
+
A 0.1.8 é uma exceção pontual à regra de versões minor para mudanças de
|
|
90
|
+
contrato na série 0.x. Embora use numeração patch, requer adaptação de
|
|
91
|
+
implementações completas próprias de `Resources` e revisão das autorizações
|
|
92
|
+
de comandos. A regra de compatibilidade acima continua valendo para as
|
|
93
|
+
próximas versões.
|
|
94
|
+
|
|
95
|
+
- Acrescente `messages.pinnedPage`, `messages.reactionUsersPage` e
|
|
96
|
+
`threads.member` aos adaptadores completos. Os tipos de retorno são
|
|
97
|
+
`PinnedMessagesPage`, `ReactionUsersPage` e `ThreadMemberDetails`, exportados
|
|
98
|
+
pela raiz. `mockResources` continua aceitando overrides parciais.
|
|
99
|
+
- Mutações de emojis/stickers por `ctx.resources.expressions` exigem
|
|
100
|
+
`ManageExpressions` de autor e bot no servidor do contexto. Código confiável
|
|
101
|
+
que precisa operar diretamente com a autoridade do bot continua usando
|
|
102
|
+
`bot.resources` ou `bot.client` explicitamente.
|
|
103
|
+
- HTTP recusa credenciais embutidas na URL, corpos GET/HEAD e destinos nas
|
|
104
|
+
redes locais/especiais bloqueadas, incluindo IPv4 mapeado em IPv6. Use
|
|
105
|
+
`Authorization` para autenticação; rede privada exige `allowPrivate: true`
|
|
106
|
+
explícito. Redirects 301/302 preservam PUT/PATCH/DELETE e 303 preserva HEAD;
|
|
107
|
+
cabeçalhos de conteúdo são removidos quando o corpo é descartado.
|
|
108
|
+
- As opções de busca recebem validação compartilhada de tipos, IDs, cursores
|
|
109
|
+
e limites. Texto é opcional na API nativa e em `$searchMessagesAdvanced`;
|
|
110
|
+
`$searchMessages` mantém sua assinatura e aceita cursor vazio.
|
|
111
|
+
- O catálogo passa a 310 funções. Imports, SDK 3.3.0 e schema 2 permanecem;
|
|
112
|
+
não há migração de dados em disco. As sete bases da CLI são aditivas e não
|
|
113
|
+
reescrevem projetos existentes. A extensão incluída acompanha a versão 0.1.8.
|
|
114
|
+
|
|
115
|
+
### Migrar para 0.1.7
|
|
116
|
+
|
|
117
|
+
A distribuição 0.1.7 inclui o conteúdo preparado na 0.1.6 e acrescenta
|
|
118
|
+
`yuzuha functions --search <termo>`. A busca combina com os filtros e formatos
|
|
119
|
+
existentes sem alterar imports anteriores, schema 2 ou SDK 3.3.0.
|
|
120
|
+
A linguagem recebe 18 funções, chegando a 306. `GuildInfo.features` e
|
|
121
|
+
`UsersResources.leaveGuild` são opcionais para preservar recursos customizados;
|
|
122
|
+
os novos auxiliares do contexto recusam recursos ausentes explicitamente.
|
|
123
|
+
O port `Store.queryVariables` também é opcional; memória/JSON mantêm fallback
|
|
124
|
+
por snapshot. SQLite cria um índice derivado automaticamente na primeira consulta,
|
|
125
|
+
sem alterar schema 2. Prioridade padrão é zero e capacidade compartilhada só é
|
|
126
|
+
ativada com `globalConcurrency`. `yuzuha/images` requer instalar Sharp; o restante
|
|
127
|
+
da biblioteca continua independente dele. Não há mudanças obrigatórias nos bots
|
|
128
|
+
existentes.
|
|
129
|
+
As instruções da 0.1.6 abaixo continuam aplicáveis ao atualizar da 0.1.5.
|
|
130
|
+
|
|
131
|
+
### Migrar para 0.1.6
|
|
132
|
+
|
|
133
|
+
Imports, schema 2, SDK 3.3.0 e 288 funções permanecem disponíveis. Os serviços do
|
|
134
|
+
contexto e seus mapas são inicializados sob demanda; as referências devolvidas
|
|
135
|
+
continuam estáveis por contexto. Mensagens ignoradas não criam uma execução.
|
|
136
|
+
O sinal de cancelamento pode ser compartilhado entre comandos do mesmo bot;
|
|
137
|
+
não dependa de sua identidade para correlacionar execuções: use `executionID`.
|
|
138
|
+
|
|
139
|
+
`Store.readVariable` é opcional e deve retornar uma cópia isolada, respeitar a
|
|
140
|
+
ordenação das transações e avaliar o callback de relógio `now` dentro da leitura,
|
|
141
|
+
após aguardar operações anteriores. `undefined` indica
|
|
142
|
+
ausente/expirado; `null` continua sendo um valor JSON válido. Não há migração de
|
|
143
|
+
disco. SQLite conserva validação do estado completo antes de cada commit.
|
|
144
|
+
|
|
145
|
+
`yuzuha/music` é um import adicional. Configure `music`/`voice` explicitamente;
|
|
146
|
+
o bot encerra os serviços fornecidos e o chamador fecha os nodes Lavalink.
|
|
147
|
+
`@fluxerjs/voice` é um peer opcional carregado em `join`. Para áudio Lavalink no
|
|
148
|
+
Fluxer, configure `FluxerLavalinkBridge` e instale o plugin `yuzuha-audio` fornecido
|
|
149
|
+
pelo Yuzuha no servidor; veja [MUSIC.md](docs/MUSIC.md).
|
|
150
|
+
Não há wrappers de música no function mode nesta versão.
|
|
151
|
+
|
|
152
|
+
Benchmarks agora exigem a versão exata do Node e o mesmo modo de GC, suíte e
|
|
153
|
+
carga. Relatórios de outro runtime devem ser executados novamente antes de comparar.
|
|
154
|
+
|
|
43
155
|
### Migrar para 0.1.5
|
|
44
156
|
|
|
45
157
|
Imports, argumentos posicionais e comandos existentes continuam disponíveis.
|
|
@@ -133,7 +245,7 @@ externos para idempotência. Veja [NATIVE.md](docs/NATIVE.md) e
|
|
|
133
245
|
|
|
134
246
|
### Procedimento
|
|
135
247
|
|
|
136
|
-
1. Atualize
|
|
248
|
+
1. Atualize `package.json` e regenere `package-lock.json` para a mesma versão.
|
|
137
249
|
2. Acrescente a entrada no [CHANGELOG.md](CHANGELOG.md), com data real e mudanças verificáveis.
|
|
138
250
|
3. Atualize migração, cobertura e documentação quando o contrato mudar.
|
|
139
251
|
4. Rode `npm run check` e `npm run smoke:package` e registre a evidência.
|
|
Binary file
|
|
Binary file
|