yuzuha 0.2.1 → 0.3.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 +17 -1
- package/README.md +22 -14
- package/VERSIONING.md +33 -6
- package/benchmarks/parser.mjs +1 -1
- package/benchmarks/run.mjs +3 -2
- package/dist/canvas/card.d.ts +10 -0
- package/dist/canvas/card.d.ts.map +1 -0
- package/dist/canvas/card.js +11 -0
- package/dist/canvas/card.js.map +1 -0
- package/dist/canvas.d.ts +30 -9
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +64 -9
- package/dist/canvas.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +2 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/lint.d.ts.map +1 -1
- package/dist/cli/lint.js +1 -2
- package/dist/cli/lint.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +8 -9
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/scaffold.js +1 -1
- package/dist/cli/scaffold.js.map +1 -1
- package/dist/cli/scenarios.d.ts.map +1 -1
- package/dist/cli/scenarios.js +2 -1
- package/dist/cli/scenarios.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +1 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/domain/resource-batches.d.ts +6 -0
- package/dist/domain/resource-batches.d.ts.map +1 -1
- package/dist/domain/resource-batches.js +31 -0
- package/dist/domain/resource-batches.js.map +1 -1
- package/dist/framework/bot.d.ts +9 -5
- package/dist/framework/bot.d.ts.map +1 -1
- package/dist/framework/bot.js +51 -27
- package/dist/framework/bot.js.map +1 -1
- package/dist/framework/command-registry.d.ts +8 -7
- package/dist/framework/command-registry.d.ts.map +1 -1
- package/dist/framework/command-registry.js +14 -11
- package/dist/framework/command-registry.js.map +1 -1
- package/dist/framework/options.d.ts +3 -3
- package/dist/framework/options.d.ts.map +1 -1
- package/dist/framework/options.js.map +1 -1
- package/dist/{scripting → functions}/builtins/arguments.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/arguments.js.map +1 -1
- package/dist/functions/builtins/canvas.d.ts +2 -0
- package/dist/functions/builtins/canvas.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/canvas.js +1 -1
- package/dist/{scripting → functions}/builtins/canvas.js.map +1 -1
- package/dist/functions/builtins/context.d.ts +2 -0
- package/dist/functions/builtins/context.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/context.js.map +1 -1
- package/dist/{scripting → functions}/builtins/definition.d.ts +1 -1
- package/dist/functions/builtins/definition.d.ts.map +1 -0
- package/dist/functions/builtins/definition.js.map +1 -0
- package/dist/functions/builtins/embeds.d.ts +3 -0
- package/dist/{scripting → functions}/builtins/embeds.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/embeds.js +1 -1
- package/dist/functions/builtins/embeds.js.map +1 -0
- package/dist/functions/builtins/events.d.ts +2 -0
- package/dist/functions/builtins/events.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/events.js.map +1 -1
- package/dist/functions/builtins/flow.d.ts +2 -0
- package/dist/functions/builtins/flow.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/flow.js +2 -2
- package/dist/functions/builtins/flow.js.map +1 -0
- package/dist/functions/builtins/guards.d.ts +2 -0
- package/dist/functions/builtins/guards.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/guards.js +1 -1
- package/dist/functions/builtins/guards.js.map +1 -0
- package/dist/functions/builtins/http.d.ts +2 -0
- package/dist/functions/builtins/http.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/http.js +2 -2
- package/dist/functions/builtins/http.js.map +1 -0
- package/dist/functions/builtins/index.d.ts +5 -0
- package/dist/functions/builtins/index.d.ts.map +1 -0
- package/dist/functions/builtins/index.js.map +1 -0
- package/dist/functions/builtins/language/array-callbacks.d.ts +2 -0
- package/dist/functions/builtins/language/array-callbacks.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/array-callbacks.js +1 -1
- package/dist/{scripting → functions}/builtins/language/array-callbacks.js.map +1 -1
- package/dist/functions/builtins/language/arrays.d.ts +2 -0
- package/dist/functions/builtins/language/arrays.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/arrays.js +1 -1
- package/dist/{scripting → functions}/builtins/language/arrays.js.map +1 -1
- package/dist/{scripting → functions}/builtins/language/common.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/language/common.js.map +1 -1
- package/dist/functions/builtins/language/decimals.d.ts +2 -0
- package/dist/functions/builtins/language/decimals.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/decimals.js.map +1 -1
- package/dist/functions/builtins/language/index.d.ts +3 -0
- package/dist/functions/builtins/language/index.d.ts.map +1 -0
- package/dist/functions/builtins/language/index.js.map +1 -0
- package/dist/functions/builtins/language/loops.d.ts +4 -0
- package/dist/{scripting → functions}/builtins/language/loops.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/language/loops.js +3 -3
- package/dist/{scripting → functions}/builtins/language/loops.js.map +1 -1
- package/dist/functions/builtins/language/numbers.d.ts +2 -0
- package/dist/functions/builtins/language/numbers.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/numbers.js.map +1 -1
- package/dist/{scripting → functions}/builtins/language/objects.d.ts +1 -1
- package/dist/{scripting → functions}/builtins/language/objects.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/language/objects.js.map +1 -1
- package/dist/functions/builtins/language/regex.d.ts +2 -0
- package/dist/functions/builtins/language/regex.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/regex.js +1 -1
- package/dist/{scripting → functions}/builtins/language/regex.js.map +1 -1
- package/dist/functions/builtins/language/sort.d.ts +2 -0
- package/dist/functions/builtins/language/sort.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/sort.js.map +1 -1
- package/dist/{scripting → functions}/builtins/language/state.d.ts +1 -1
- package/dist/{scripting → functions}/builtins/language/state.d.ts.map +1 -1
- package/dist/{scripting → functions}/builtins/language/state.js.map +1 -1
- package/dist/functions/builtins/language/texts.d.ts +2 -0
- package/dist/functions/builtins/language/texts.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/language/texts.js.map +1 -1
- package/dist/functions/builtins/messages.d.ts +2 -0
- package/dist/functions/builtins/messages.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/messages.js.map +1 -1
- package/dist/functions/builtins/moderation.d.ts +2 -0
- package/dist/functions/builtins/moderation.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/moderation.js.map +1 -1
- package/dist/functions/builtins/native-channels.d.ts +2 -0
- package/dist/functions/builtins/native-channels.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-channels.js.map +1 -1
- package/dist/functions/builtins/native-collectors.d.ts +2 -0
- package/dist/functions/builtins/native-collectors.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-collectors.js.map +1 -1
- package/dist/functions/builtins/native-expressions.d.ts +2 -0
- package/dist/functions/builtins/native-expressions.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-expressions.js.map +1 -1
- package/dist/functions/builtins/native-invites.d.ts +2 -0
- package/dist/functions/builtins/native-invites.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-invites.js.map +1 -1
- package/dist/functions/builtins/native-messages.d.ts +2 -0
- package/dist/functions/builtins/native-messages.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-messages.js.map +1 -1
- package/dist/functions/builtins/native-roles.d.ts +2 -0
- package/dist/functions/builtins/native-roles.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-roles.js.map +1 -1
- package/dist/functions/builtins/native-threads.d.ts +2 -0
- package/dist/functions/builtins/native-threads.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-threads.js.map +1 -1
- package/dist/functions/builtins/native-users.d.ts +2 -0
- package/dist/functions/builtins/native-users.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-users.js.map +1 -1
- package/dist/functions/builtins/native-webhooks.d.ts +2 -0
- package/dist/functions/builtins/native-webhooks.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/native-webhooks.js.map +1 -1
- package/dist/{scripting → functions}/builtins/payload.d.ts +2 -2
- package/dist/functions/builtins/payload.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/payload.js +1 -1
- package/dist/functions/builtins/payload.js.map +1 -0
- package/dist/functions/builtins/resource-extras.d.ts +2 -0
- package/dist/functions/builtins/resource-extras.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/resource-extras.js.map +1 -1
- package/dist/functions/builtins/schedule.d.ts +2 -0
- package/dist/functions/builtins/schedule.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/schedule.js.map +1 -1
- package/dist/functions/builtins/storage.d.ts +2 -0
- package/dist/functions/builtins/storage.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/storage.js.map +1 -1
- package/dist/functions/builtins/values.d.ts +2 -0
- package/dist/functions/builtins/values.d.ts.map +1 -0
- package/dist/{scripting → functions}/builtins/values.js +1 -1
- package/dist/functions/builtins/values.js.map +1 -0
- package/dist/functions/runtime/ast.d.ts.map +1 -0
- package/dist/functions/runtime/ast.js.map +1 -0
- package/dist/{scripting → functions/runtime}/canvas-execution.d.ts +1 -1
- package/dist/functions/runtime/canvas-execution.d.ts.map +1 -0
- package/dist/functions/runtime/canvas-execution.js.map +1 -0
- package/dist/functions/runtime/control-flow.d.ts.map +1 -0
- package/dist/functions/runtime/control-flow.js.map +1 -0
- package/dist/{scripting → functions/runtime}/evaluator.d.ts +1 -1
- package/dist/functions/runtime/evaluator.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/evaluator.js +1 -1
- package/dist/functions/runtime/evaluator.js.map +1 -0
- package/dist/functions/runtime/limits.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/limits.js +1 -1
- package/dist/functions/runtime/limits.js.map +1 -0
- package/dist/functions/runtime/parser.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/parser.js +1 -1
- package/dist/functions/runtime/parser.js.map +1 -0
- package/dist/functions/runtime/regex.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/regex.js +1 -1
- package/dist/functions/runtime/regex.js.map +1 -0
- package/dist/functions/runtime/registry.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/registry.js +1 -1
- package/dist/functions/runtime/registry.js.map +1 -0
- package/dist/{scripting → functions/runtime}/runtime.d.ts +3 -1
- package/dist/functions/runtime/runtime.d.ts.map +1 -0
- package/dist/{scripting → functions/runtime}/runtime.js +3 -0
- package/dist/functions/runtime/runtime.js.map +1 -0
- package/dist/{scripting → functions/runtime}/types.d.ts +1 -1
- package/dist/functions/runtime/types.d.ts.map +1 -0
- package/dist/functions/runtime/types.js.map +1 -0
- package/dist/functions/runtime/values.d.ts.map +1 -0
- package/dist/functions/runtime/values.js.map +1 -0
- package/dist/functions.d.ts +19 -8
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +18 -6
- package/dist/functions.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/canvas/napi.d.ts +4 -0
- package/dist/infrastructure/canvas/napi.d.ts.map +1 -0
- package/dist/infrastructure/canvas/napi.js +17 -0
- package/dist/infrastructure/canvas/napi.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/cache.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/cache.js +18 -1
- package/dist/infrastructure/fluxer/resources/cache.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/channels.d.ts +3 -2
- package/dist/infrastructure/fluxer/resources/channels.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/channels.js +54 -2
- package/dist/infrastructure/fluxer/resources/channels.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/expressions.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/expressions.js +8 -1
- package/dist/infrastructure/fluxer/resources/expressions.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.js +42 -1
- package/dist/infrastructure/fluxer/resources/messages.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/roles.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/roles.js +8 -0
- package/dist/infrastructure/fluxer/resources/roles.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/threads.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/threads.js +15 -0
- package/dist/infrastructure/fluxer/resources/threads.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.d.ts +3 -2
- package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.js +34 -1
- package/dist/infrastructure/fluxer/resources/users.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/webhooks.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/webhooks.js +9 -0
- package/dist/infrastructure/fluxer/resources/webhooks.js.map +1 -1
- package/dist/ports/resources/cache.d.ts +23 -1
- package/dist/ports/resources/cache.d.ts.map +1 -1
- package/dist/ports/resources/cache.js.map +1 -1
- package/dist/ports/resources/channels.d.ts +17 -0
- package/dist/ports/resources/channels.d.ts.map +1 -1
- package/dist/ports/resources/channels.js.map +1 -1
- package/dist/ports/resources/common.d.ts +2 -0
- package/dist/ports/resources/common.d.ts.map +1 -1
- package/dist/ports/resources/common.js.map +1 -1
- package/dist/ports/resources/expressions.d.ts +8 -0
- package/dist/ports/resources/expressions.d.ts.map +1 -1
- package/dist/ports/resources/expressions.js.map +1 -1
- package/dist/ports/resources/messages.d.ts +7 -0
- package/dist/ports/resources/messages.d.ts.map +1 -1
- package/dist/ports/resources/messages.js.map +1 -1
- package/dist/ports/resources/roles.d.ts +6 -0
- package/dist/ports/resources/roles.d.ts.map +1 -1
- package/dist/ports/resources/roles.js.map +1 -1
- package/dist/ports/resources/threads.d.ts +16 -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 +30 -0
- package/dist/ports/resources/users.d.ts.map +1 -1
- package/dist/ports/resources/users.js.map +1 -1
- package/dist/ports/resources/webhooks.d.ts +5 -0
- package/dist/ports/resources/webhooks.d.ts.map +1 -1
- package/dist/ports/resources/webhooks.js.map +1 -1
- package/dist/ports/script-engine.d.ts +45 -0
- package/dist/ports/script-engine.d.ts.map +1 -0
- package/dist/ports/script-engine.js +2 -0
- package/dist/ports/script-engine.js.map +1 -0
- package/dist/services/canvas-image.d.ts +12 -0
- package/dist/services/canvas-image.d.ts.map +1 -0
- package/dist/services/canvas-image.js +56 -0
- package/dist/services/canvas-image.js.map +1 -0
- package/dist/services/canvas.d.ts +12 -2
- package/dist/services/canvas.d.ts.map +1 -1
- package/dist/services/canvas.js +91 -5
- package/dist/services/canvas.js.map +1 -1
- package/dist/services/moderation.d.ts +1 -0
- package/dist/services/moderation.d.ts.map +1 -1
- package/dist/services/moderation.js +11 -0
- package/dist/services/moderation.js.map +1 -1
- package/dist/services/native-moderation.d.ts +6 -1
- package/dist/services/native-moderation.d.ts.map +1 -1
- package/dist/services/native-moderation.js +11 -1
- package/dist/services/native-moderation.js.map +1 -1
- package/dist/services/resource-authorization.d.ts.map +1 -1
- package/dist/services/resource-authorization.js +94 -3
- package/dist/services/resource-authorization.js.map +1 -1
- package/docs/API.md +8 -7
- package/docs/ARCHITECTURE.md +14 -9
- package/docs/BENCHMARKS.md +1 -1
- package/docs/CANVAS.md +70 -15
- package/docs/EDITOR.md +1 -1
- package/docs/FRAMEWORK.md +2 -3
- package/docs/HTTP.md +1 -1
- package/docs/IMAGES.md +2 -1
- package/docs/NATIVE.md +15 -11
- package/docs/PARITY-MATRIX.md +830 -820
- package/docs/PARITY.md +3 -3
- package/docs/PLAN.md +14 -3
- package/docs/QUICKSTART.md +5 -5
- package/docs/README.md +7 -7
- package/docs/REPOSITORY.md +1 -1
- package/docs/SCHEDULER.md +1 -1
- package/docs/TROUBLESHOOTING.md +1 -1
- package/docs/VALIDATION.md +5 -5
- package/docs/{FUNCTION-GAPS.md → functions/FUNCTION-GAPS.md} +10 -10
- package/docs/{LANGUAGE.md → functions/LANGUAGE.md} +7 -7
- package/docs/functions/README.md +33 -0
- package/docs/tutorials/DATA.md +2 -2
- package/docs/tutorials/FUNCTION-MODE.md +2 -2
- package/examples/canvas/napi-style.ts +24 -0
- package/examples/canvas/output/napi-style.png +0 -0
- package/examples/canvas/profile.d.mts +1 -1
- package/examples/canvas/profile.mjs +2 -2
- package/examples/canvas/profile.ts +3 -3
- package/examples/canvas/ranking.d.mts +1 -1
- package/examples/canvas/ranking.mjs +2 -2
- package/examples/canvas/ranking.ts +3 -3
- package/examples/canvas/render.ts +2 -1
- package/examples/canvas/welcome.d.mts +1 -1
- package/examples/canvas/welcome.mjs +2 -2
- package/examples/canvas/welcome.ts +3 -3
- package/examples/embeds/complete-embed-functions.ts +2 -2
- package/examples/function-mode.ts +3 -3
- package/examples/yuzuha.config.js +2 -0
- package/package.json +5 -1
- package/src/canvas/card.ts +20 -0
- package/src/canvas.ts +69 -17
- package/src/cli/config.ts +2 -1
- package/src/cli/lint.ts +1 -2
- package/src/cli/main.ts +8 -9
- package/src/cli/scaffold.ts +1 -1
- package/src/cli/scenarios.ts +2 -1
- package/src/commands/context.ts +3 -1
- package/src/domain/resource-batches.ts +31 -0
- package/src/framework/bot.ts +44 -27
- package/src/framework/command-registry.ts +15 -10
- package/src/framework/options.ts +3 -3
- package/src/{scripting → functions}/builtins/canvas.ts +2 -2
- package/src/{scripting → functions}/builtins/context.ts +1 -1
- package/src/{scripting → functions}/builtins/definition.ts +1 -1
- package/src/{scripting → functions}/builtins/embeds.ts +1 -1
- package/src/{scripting → functions}/builtins/flow.ts +2 -2
- package/src/{scripting → functions}/builtins/guards.ts +1 -1
- package/src/{scripting → functions}/builtins/http.ts +2 -2
- package/src/{scripting → functions}/builtins/index.ts +2 -2
- package/src/{scripting → functions}/builtins/language/array-callbacks.ts +2 -2
- package/src/{scripting → functions}/builtins/language/arrays.ts +1 -1
- package/src/{scripting → functions}/builtins/language/index.ts +1 -1
- package/src/{scripting → functions}/builtins/language/loops.ts +4 -4
- package/src/{scripting → functions}/builtins/language/regex.ts +1 -1
- package/src/{scripting → functions}/builtins/moderation.ts +1 -1
- package/src/{scripting → functions}/builtins/native-channels.ts +1 -1
- package/src/{scripting → functions}/builtins/native-roles.ts +1 -1
- package/src/{scripting → functions}/builtins/native-users.ts +1 -1
- package/src/{scripting → functions}/builtins/payload.ts +2 -2
- package/src/{scripting → functions}/builtins/resource-extras.ts +1 -1
- package/src/{scripting → functions}/builtins/values.ts +1 -1
- package/src/{scripting → functions/runtime}/canvas-execution.ts +1 -1
- package/src/{scripting → functions/runtime}/evaluator.ts +2 -2
- package/src/{scripting → functions/runtime}/limits.ts +1 -1
- package/src/{scripting → functions/runtime}/parser.ts +1 -1
- package/src/{scripting → functions/runtime}/regex.ts +1 -1
- package/src/{scripting → functions/runtime}/registry.ts +1 -1
- package/src/{scripting → functions/runtime}/runtime.ts +6 -1
- package/src/{scripting → functions/runtime}/types.ts +1 -1
- package/src/functions.ts +28 -8
- package/src/index.ts +1 -0
- package/src/infrastructure/canvas/napi.ts +17 -0
- package/src/infrastructure/fluxer/resources/cache.ts +19 -2
- package/src/infrastructure/fluxer/resources/channels.ts +51 -3
- package/src/infrastructure/fluxer/resources/expressions.ts +7 -1
- package/src/infrastructure/fluxer/resources/messages.ts +35 -1
- package/src/infrastructure/fluxer/resources/roles.ts +8 -0
- package/src/infrastructure/fluxer/resources/threads.ts +14 -0
- package/src/infrastructure/fluxer/resources/users.ts +38 -2
- package/src/infrastructure/fluxer/resources/webhooks.ts +9 -0
- package/src/ports/resources/cache.ts +26 -1
- package/src/ports/resources/channels.ts +12 -0
- package/src/ports/resources/common.ts +2 -0
- package/src/ports/resources/expressions.ts +6 -0
- package/src/ports/resources/messages.ts +7 -0
- package/src/ports/resources/roles.ts +3 -0
- package/src/ports/resources/threads.ts +15 -0
- package/src/ports/resources/users.ts +33 -0
- package/src/ports/resources/webhooks.ts +6 -0
- package/src/ports/script-engine.ts +42 -0
- package/src/services/canvas-image.ts +54 -0
- package/src/services/canvas.ts +89 -6
- package/src/services/moderation.ts +4 -0
- package/src/services/native-moderation.ts +11 -1
- package/src/services/resource-authorization.ts +88 -3
- package/dist/parser.d.ts +0 -3
- package/dist/parser.d.ts.map +0 -1
- package/dist/parser.js +0 -2
- package/dist/parser.js.map +0 -1
- package/dist/runtime.d.ts +0 -5
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -4
- package/dist/runtime.js.map +0 -1
- package/dist/scripting/ast.d.ts.map +0 -1
- package/dist/scripting/ast.js.map +0 -1
- package/dist/scripting/builtins/canvas.d.ts +0 -2
- package/dist/scripting/builtins/canvas.d.ts.map +0 -1
- package/dist/scripting/builtins/context.d.ts +0 -2
- package/dist/scripting/builtins/context.d.ts.map +0 -1
- package/dist/scripting/builtins/definition.d.ts.map +0 -1
- package/dist/scripting/builtins/definition.js.map +0 -1
- package/dist/scripting/builtins/embeds.d.ts +0 -3
- package/dist/scripting/builtins/embeds.js.map +0 -1
- package/dist/scripting/builtins/events.d.ts +0 -2
- package/dist/scripting/builtins/events.d.ts.map +0 -1
- package/dist/scripting/builtins/flow.d.ts +0 -2
- package/dist/scripting/builtins/flow.d.ts.map +0 -1
- package/dist/scripting/builtins/flow.js.map +0 -1
- package/dist/scripting/builtins/guards.d.ts +0 -2
- package/dist/scripting/builtins/guards.d.ts.map +0 -1
- package/dist/scripting/builtins/guards.js.map +0 -1
- package/dist/scripting/builtins/http.d.ts +0 -2
- package/dist/scripting/builtins/http.d.ts.map +0 -1
- package/dist/scripting/builtins/http.js.map +0 -1
- package/dist/scripting/builtins/index.d.ts +0 -5
- package/dist/scripting/builtins/index.d.ts.map +0 -1
- package/dist/scripting/builtins/index.js.map +0 -1
- package/dist/scripting/builtins/language/array-callbacks.d.ts +0 -2
- package/dist/scripting/builtins/language/array-callbacks.d.ts.map +0 -1
- package/dist/scripting/builtins/language/arrays.d.ts +0 -2
- package/dist/scripting/builtins/language/arrays.d.ts.map +0 -1
- package/dist/scripting/builtins/language/decimals.d.ts +0 -2
- package/dist/scripting/builtins/language/decimals.d.ts.map +0 -1
- package/dist/scripting/builtins/language/index.d.ts +0 -3
- package/dist/scripting/builtins/language/index.d.ts.map +0 -1
- package/dist/scripting/builtins/language/index.js.map +0 -1
- package/dist/scripting/builtins/language/loops.d.ts +0 -4
- package/dist/scripting/builtins/language/numbers.d.ts +0 -2
- package/dist/scripting/builtins/language/numbers.d.ts.map +0 -1
- package/dist/scripting/builtins/language/regex.d.ts +0 -2
- package/dist/scripting/builtins/language/regex.d.ts.map +0 -1
- package/dist/scripting/builtins/language/sort.d.ts +0 -2
- package/dist/scripting/builtins/language/sort.d.ts.map +0 -1
- package/dist/scripting/builtins/language/texts.d.ts +0 -2
- package/dist/scripting/builtins/language/texts.d.ts.map +0 -1
- package/dist/scripting/builtins/messages.d.ts +0 -2
- package/dist/scripting/builtins/messages.d.ts.map +0 -1
- package/dist/scripting/builtins/moderation.d.ts +0 -2
- package/dist/scripting/builtins/moderation.d.ts.map +0 -1
- package/dist/scripting/builtins/native-channels.d.ts +0 -2
- package/dist/scripting/builtins/native-channels.d.ts.map +0 -1
- package/dist/scripting/builtins/native-collectors.d.ts +0 -2
- package/dist/scripting/builtins/native-collectors.d.ts.map +0 -1
- package/dist/scripting/builtins/native-expressions.d.ts +0 -2
- package/dist/scripting/builtins/native-expressions.d.ts.map +0 -1
- package/dist/scripting/builtins/native-invites.d.ts +0 -2
- package/dist/scripting/builtins/native-invites.d.ts.map +0 -1
- package/dist/scripting/builtins/native-messages.d.ts +0 -2
- package/dist/scripting/builtins/native-messages.d.ts.map +0 -1
- package/dist/scripting/builtins/native-roles.d.ts +0 -2
- package/dist/scripting/builtins/native-roles.d.ts.map +0 -1
- package/dist/scripting/builtins/native-threads.d.ts +0 -2
- package/dist/scripting/builtins/native-threads.d.ts.map +0 -1
- package/dist/scripting/builtins/native-users.d.ts +0 -2
- package/dist/scripting/builtins/native-users.d.ts.map +0 -1
- package/dist/scripting/builtins/native-webhooks.d.ts +0 -2
- package/dist/scripting/builtins/native-webhooks.d.ts.map +0 -1
- package/dist/scripting/builtins/payload.d.ts.map +0 -1
- package/dist/scripting/builtins/payload.js.map +0 -1
- package/dist/scripting/builtins/resource-extras.d.ts +0 -2
- package/dist/scripting/builtins/resource-extras.d.ts.map +0 -1
- package/dist/scripting/builtins/schedule.d.ts +0 -2
- package/dist/scripting/builtins/schedule.d.ts.map +0 -1
- package/dist/scripting/builtins/storage.d.ts +0 -2
- package/dist/scripting/builtins/storage.d.ts.map +0 -1
- package/dist/scripting/builtins/values.d.ts +0 -2
- package/dist/scripting/builtins/values.d.ts.map +0 -1
- package/dist/scripting/builtins/values.js.map +0 -1
- package/dist/scripting/canvas-execution.d.ts.map +0 -1
- package/dist/scripting/canvas-execution.js.map +0 -1
- package/dist/scripting/control-flow.d.ts.map +0 -1
- package/dist/scripting/control-flow.js.map +0 -1
- package/dist/scripting/evaluator.d.ts.map +0 -1
- package/dist/scripting/evaluator.js.map +0 -1
- package/dist/scripting/limits.d.ts.map +0 -1
- package/dist/scripting/limits.js.map +0 -1
- package/dist/scripting/parser.d.ts.map +0 -1
- package/dist/scripting/parser.js.map +0 -1
- package/dist/scripting/regex.d.ts.map +0 -1
- package/dist/scripting/regex.js.map +0 -1
- package/dist/scripting/registry.d.ts.map +0 -1
- package/dist/scripting/registry.js.map +0 -1
- package/dist/scripting/runtime.d.ts.map +0 -1
- package/dist/scripting/runtime.js.map +0 -1
- package/dist/scripting/types.d.ts.map +0 -1
- package/dist/scripting/types.js.map +0 -1
- package/dist/scripting/values.d.ts.map +0 -1
- package/dist/scripting/values.js.map +0 -1
- package/src/parser.ts +0 -2
- package/src/runtime.ts +0 -4
- /package/dist/{scripting → functions}/builtins/arguments.d.ts +0 -0
- /package/dist/{scripting → functions}/builtins/arguments.js +0 -0
- /package/dist/{scripting → functions}/builtins/context.js +0 -0
- /package/dist/{scripting → functions}/builtins/definition.js +0 -0
- /package/dist/{scripting → functions}/builtins/events.js +0 -0
- /package/dist/{scripting → functions}/builtins/index.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/common.d.ts +0 -0
- /package/dist/{scripting → functions}/builtins/language/common.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/decimals.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/index.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/numbers.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/objects.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/sort.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/state.js +0 -0
- /package/dist/{scripting → functions}/builtins/language/texts.js +0 -0
- /package/dist/{scripting → functions}/builtins/messages.js +0 -0
- /package/dist/{scripting → functions}/builtins/moderation.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-channels.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-collectors.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-expressions.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-invites.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-messages.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-roles.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-threads.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-users.js +0 -0
- /package/dist/{scripting → functions}/builtins/native-webhooks.js +0 -0
- /package/dist/{scripting → functions}/builtins/resource-extras.js +0 -0
- /package/dist/{scripting → functions}/builtins/schedule.js +0 -0
- /package/dist/{scripting → functions}/builtins/storage.js +0 -0
- /package/dist/{scripting → functions/runtime}/ast.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/ast.js +0 -0
- /package/dist/{scripting → functions/runtime}/canvas-execution.js +0 -0
- /package/dist/{scripting → functions/runtime}/control-flow.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/control-flow.js +0 -0
- /package/dist/{scripting → functions/runtime}/limits.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/parser.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/regex-worker.mjs +0 -0
- /package/dist/{scripting → functions/runtime}/regex.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/registry.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/types.js +0 -0
- /package/dist/{scripting → functions/runtime}/values.d.ts +0 -0
- /package/dist/{scripting → functions/runtime}/values.js +0 -0
- /package/docs/{FUNCTIONS.md → functions/FUNCTIONS.md} +0 -0
- /package/docs/{LANGUAGE-EXTENSIONS.md → functions/LANGUAGE-EXTENSIONS.md} +0 -0
- /package/src/{scripting → functions}/builtins/arguments.ts +0 -0
- /package/src/{scripting → functions}/builtins/events.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/common.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/decimals.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/numbers.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/objects.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/sort.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/state.ts +0 -0
- /package/src/{scripting → functions}/builtins/language/texts.ts +0 -0
- /package/src/{scripting → functions}/builtins/messages.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-collectors.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-expressions.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-invites.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-messages.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-threads.ts +0 -0
- /package/src/{scripting → functions}/builtins/native-webhooks.ts +0 -0
- /package/src/{scripting → functions}/builtins/schedule.ts +0 -0
- /package/src/{scripting → functions}/builtins/storage.ts +0 -0
- /package/src/{scripting → functions/runtime}/ast.ts +0 -0
- /package/src/{scripting → functions/runtime}/control-flow.ts +0 -0
- /package/src/{scripting → functions/runtime}/regex-worker.mjs +0 -0
- /package/src/{scripting → functions/runtime}/values.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -21,6 +21,22 @@ documentos. Veja a [política completa](VERSIONING.md).
|
|
|
21
21
|
|
|
22
22
|
</details>
|
|
23
23
|
|
|
24
|
+
## v0.3.0 · 04/11/2026
|
|
25
|
+
|
|
26
|
+
Function mode isolado da raiz e `yuzuha/canvas` compatível com `@napi-rs/canvas`. Esta atualização da biblioteca Yuzuha foi preparada em 04/11/2026 (v0.3.0).
|
|
27
|
+
|
|
28
|
+
- `yuzuha/canvas` agora expõe a API napi em processo: `createCanvas`, `loadImage`, `registerFonts`, `GlobalFonts`, `Path2D`, `ImageData`, `DOMMatrix` e os demais exports de `@napi-rs/canvas`. `loadImage` baixa URLs HTTP(S) por `HttpService` com guarda de rede privada, limite de bytes, inspeção de formato e cancelamento. Sem o peer, os exports falham com `CANVAS_DEPENDENCY`.
|
|
29
|
+
- `ctx.canvas.send(canvas)` aceita um canvas napi e envia o anexo com as mesmas opções do builder; `ctx.canvas.loadImage(source)` usa o HTTP e o sinal do contexto. `ctx.canvas` continua oferecendo o builder (`create`/`send(builder)`) sem alterações.
|
|
30
|
+
- O builder de cartões migrou para `yuzuha/canvas/card` e continua renderizando em processo filho com os mesmos limites.
|
|
31
|
+
- O function mode fica isolado em `src/functions/`: `yuzuha/functions` exporta `functions()` que devolve um `ScriptEngine` com os builtins registrados. `new Yuzuha({ engine: functions() })` ou `bot.useEngine(engine)` instalam o engine; comandos com `code`, subcomandos com `code`, eventos de script e `plugin.functions` sem engine falham com `FUNCTIONS_REQUIRED`. A CLI injeta `functions()` automaticamente, preservando a UX de `yuzuha.config.js`.
|
|
32
|
+
- **Mudanças incompatíveis:** `import { createCanvas } from 'yuzuha/canvas'` passa a criar um canvas napi em processo — para o builder, migre para `import { createCard } from 'yuzuha/canvas/card'`. `bot.runtime`, `bot.enableFunctions()` e `YuzuhaOptions.limits` foram removidos — instale o engine explicitamente e use `bot.engine` ou `functions({ limits })`. Sem engine, `code:` e `scriptEvent` lançam `FUNCTIONS_REQUIRED`.
|
|
33
|
+
- Recursos nativos novos: `channels.sendTyping`, `channels.slowmode` (leitura), `channels.rtcRegions`, `messages.bulkDelete`/`bulkDeleteOwn`/`acknowledgePins`/`clearReadState`, `users.createDM` e `cache.sweepUsers`/`sweepChannels`/`sweepGuilds`. `bulkDelete` exige `ManageMessages` de autor e bot no canal, deduplica os ids e limita o lote a 100 (`BULK_DELETE_LIMIT`).
|
|
34
|
+
- A matriz de paridade agora distingue `coberto-recurso` (alcançado por `ctx.resources`, usado também pelas funções) de `coberto-nativo`, e marca como `só-SDK` as constantes, helpers puros e classes de dados reexportados por `yuzuha/sdk`. Membros internos (`_`, `Flags`, `fromOrCreate`, `[Symbol.iterator]`) e propriedades de dados de objetos do SDK foram classificados como só-SDK; eventos do SDK sem função contam como cobertos nativamente via `bot.on`/`bot.client.on`.
|
|
35
|
+
- Recursos nativos adicionais: `webhooks.editMessage`/`deleteMessage`, `channels.addRecipient`/`removeRecipient` (grupos de DM; dono exigido para incluir e para remover terceiros, `channels.get` devolve DMs com `recipientIDs`/`ownerID`), `messages.purgeDM` (canal de anotações), `threads.setLocked`/`editSelf`/`editDefaults`, `channels.editThreadDefaults`/`setDefaultForumLayout`, `expressions.createStickersBulk` (lote validado, falhas parciais preservadas), `users.discoveryStatus`/`applyForDiscovery`/`editDiscoveryApplication` e `RoleInfo.hoistPosition`. Segunda leva: `users.me`/`transferOwnership`/`withdrawDiscoveryApplication`, `roles.setRoleHoistPositions`/`resetRoleHoistPositions` (ManageRoles + hierarquia), `messages.deleteAttachment` (ManageMessages salvo mensagem própria)/`sendTo`, `cache.cascadeChannel`/`cascadeGuild` e `stats().cascading`, `bot.isReady()`/`bot.uptime`/`bot.assertReady()` (`BOT_NOT_READY`), `ctx.mod.canBan`/`canKick`/`canModerate` (booleanos, mesma hierarquia), `spoiler` em `AttachmentSpec`/`BinaryAttachmentSpec`. A matriz ganhou `coberto-equivalente` (mapeamentos verificados em `scripts/parity-equivalents.json`) e chega a zero `lacuna`.
|
|
36
|
+
- **Contrato público**: as interfaces `Resources` ganharam métodos obrigatórios em toda a cadeia (`channels.sendTyping`/`slowmode`/`rtcRegions`/`addRecipient`/`removeRecipient`/`editThreadDefaults`/`setDefaultForumLayout`, `messages.bulkDelete`/`bulkDeleteOwn`/`acknowledgePins`/`clearReadState`/`purgeDM`/`deleteAttachment`/`sendTo`, `webhooks.editMessage`/`deleteMessage`, `threads.setLocked`/`editSelf`/`editDefaults`, `expressions.createStickersBulk`, `users.createDM`/`me`/`transferOwnership`/`discoveryStatus`/`applyForDiscovery`/`editDiscoveryApplication`/`withdrawDiscoveryApplication`, `roles.setRoleHoistPositions`/`resetRoleHoistPositions`, `cache.sweepUsers`/`sweepChannels`/`sweepGuilds`/`cascadeChannel`/`cascadeGuild`). Adaptadores `Resources` completos precisam implementá-los.: 7 exports de tipos via `yuzuha/sdk/types` e membros internos/de dados como `só-SDK`.
|
|
37
|
+
- Documentação refeita com foco na experiência nativa JS/TS: os guias do function mode foram para `docs/functions/`, com índice explicando ativação por `engine: functions()`.
|
|
38
|
+
- SDK 3.3.0, Node >=22.13 e schema persistido 2 permanecem compatíveis. Veja [VERSIONING.md](VERSIONING.md#migrar-para-030) antes de atualizar.
|
|
39
|
+
|
|
24
40
|
## v0.2.1 · 03/11/2026
|
|
25
41
|
|
|
26
42
|
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).
|
|
@@ -43,7 +59,7 @@ Embeds completos em uma API só, nos modos nativo e function mode, com uma matri
|
|
|
43
59
|
- `$fetchMessage` e `$messages` devolvem `embeds` normalizados, com `type`, `provider`, `video`, `audio`, `nsfw` e `children` somente leitura.
|
|
44
60
|
- 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).
|
|
45
61
|
- `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.
|
|
46
|
-
- Catálogo do function mode: de 322 para **336** funções. [FUNCTION-GAPS.md](docs/FUNCTION-GAPS.md) foi atualizado com a contagem real.
|
|
62
|
+
- Catálogo do function mode: de 322 para **336** funções. [FUNCTION-GAPS.md](docs/functions/FUNCTION-GAPS.md) foi atualizado com a contagem real.
|
|
47
63
|
|
|
48
64
|
## v0.1.9 · 29/10/2026
|
|
49
65
|
|
package/README.md
CHANGED
|
@@ -5,9 +5,12 @@ tipados em JavaScript/TypeScript e uma linguagem opcional de scripts.
|
|
|
5
5
|
Os dois modos compartilham permissões, moderação, estado e recursos.
|
|
6
6
|
|
|
7
7
|
O Yuzuha usa **Fluxer.js 3.3.0**. Você continua tendo acesso ao client original
|
|
8
|
-
por `bot.client
|
|
8
|
+
por `bot.client`, aos exports do SDK em `yuzuha/sdk` e a todos os subpaths e
|
|
9
|
+
pacotes satélites por `yuzuha/sdk/*` (client, errors, message, cluster, internal,
|
|
10
|
+
types, rest, ws, builders, collection e util, além de voice e sharding como peers
|
|
11
|
+
opcionais).
|
|
9
12
|
|
|
10
|
-
[0.
|
|
13
|
+
[0.3.0](CHANGELOG.md) · Node **22.13+** · ESM · [MIT](LICENSE)
|
|
11
14
|
|
|
12
15
|
[Começar](#começar) · [Comandos](#escrever-comandos) · [Recursos](#recursos) · [Testes](#testar-sem-token) · [Documentação](#documentação)
|
|
13
16
|
|
|
@@ -16,7 +19,7 @@ por `bot.client` e aos exports do SDK em `yuzuha/sdk`.
|
|
|
16
19
|
### Criar um bot
|
|
17
20
|
|
|
18
21
|
```sh
|
|
19
|
-
npx yuzuha@0.
|
|
22
|
+
npx yuzuha@0.3.0 init ./meu-bot --ts
|
|
20
23
|
cd meu-bot
|
|
21
24
|
npm install
|
|
22
25
|
npm run check
|
|
@@ -42,7 +45,7 @@ para incluir um comando de exemplo com scripts.
|
|
|
42
45
|
### Usar em um projeto existente
|
|
43
46
|
|
|
44
47
|
```sh
|
|
45
|
-
npm install yuzuha@0.
|
|
48
|
+
npm install yuzuha@0.3.0
|
|
46
49
|
```
|
|
47
50
|
|
|
48
51
|
Use `"type": "module"` no `package.json`. O [guia inicial](docs/QUICKSTART.md)
|
|
@@ -72,24 +75,28 @@ Schemas `arg.*` inferem os tipos de argumentos e flags. Você também pode decla
|
|
|
72
75
|
subcomandos, checks e middleware. O [guia nativo](docs/NATIVE.md) cobre esses
|
|
73
76
|
contratos, eventos, moderação e persistência.
|
|
74
77
|
|
|
75
|
-
### Function mode
|
|
78
|
+
### Function mode (opcional)
|
|
79
|
+
|
|
80
|
+
O function mode é opcional e isolado da raiz. Comandos com `code` e eventos de
|
|
81
|
+
script exigem um engine explícito:
|
|
76
82
|
|
|
77
83
|
```ts
|
|
78
|
-
import { script } from 'yuzuha/functions';
|
|
84
|
+
import { functions, script } from 'yuzuha/functions';
|
|
85
|
+
|
|
86
|
+
const bot = new Yuzuha({ transport, store, engine: functions() });
|
|
79
87
|
|
|
80
|
-
|
|
88
|
+
bot.command(script({
|
|
81
89
|
name: 'eco',
|
|
82
90
|
description: 'Repete o texto informado.',
|
|
83
91
|
code: '$reply[$messageSlice[0]]',
|
|
84
|
-
});
|
|
92
|
+
}));
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
O function mode tem **336 funções** para mensagens, guards, moderação, variáveis,
|
|
88
|
-
JSON, arrays, loops, eventos e agendamentos.
|
|
89
|
-
comando com `code` ou um evento de script.
|
|
96
|
+
JSON, arrays, loops, eventos e agendamentos.
|
|
90
97
|
|
|
91
98
|
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)
|
|
99
|
+
[linguagem](docs/functions/LANGUAGE.md), as [assinaturas das funções](docs/functions/FUNCTIONS.md)
|
|
93
100
|
e a [cobertura](docs/PARITY.md).
|
|
94
101
|
|
|
95
102
|
## Recursos
|
|
@@ -99,7 +106,8 @@ e a [cobertura](docs/PARITY.md).
|
|
|
99
106
|
| Comandos | Prefixos, aliases, subcomandos, argumentos e flags tipadas, cooldowns e ajuda gerada dos metadados |
|
|
100
107
|
| Extensões | Plugins, eventos, checks, middleware e recarga atômica de comandos |
|
|
101
108
|
| 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
|
|
109
|
+
| Fluxer | Usuários, membros, cargos, canais, mensagens com embeds, reações, anexos, threads, convites, webhooks, expressões, gateway, instância, conta autenticada e cache |
|
|
110
|
+
| Collectors | `collectMessages` e `collectReactions` como streams assíncronas, com tempo, limite e cancelamento |
|
|
103
111
|
| Dados | Memória, JSON e SQLite; TTL, transações, limpeza e backup/restauração com simulação |
|
|
104
112
|
| Agendamentos | Tarefas persistentes, cron, fusos IANA, pausa/retomada, histórico e retry |
|
|
105
113
|
| HTTP | Texto, bytes, streaming e multipart, com limites, cancelamento e políticas por comando |
|
|
@@ -159,10 +167,10 @@ O [índice completo](docs/README.md) reúne os guias e as referências.
|
|
|
159
167
|
| Criar um bot de música | [Lavalink, filas e voz Fluxer](docs/MUSIC.md) |
|
|
160
168
|
| Medir performance | [Benchmarks e comparações com a 0.1.5](docs/BENCHMARKS.md) |
|
|
161
169
|
| 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) |
|
|
170
|
+
| Escrever scripts `$...` | [Linguagem](docs/functions/LANGUAGE.md) e [referência de funções](docs/functions/FUNCTIONS.md) |
|
|
163
171
|
| Copiar exemplos | [Receitas](docs/COOKBOOK.md) e [código de exemplo](examples) |
|
|
164
172
|
| 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) |
|
|
173
|
+
| Entender a cobertura | [Paridade](docs/PARITY.md) e [funções ausentes](docs/functions/FUNCTION-GAPS.md) |
|
|
166
174
|
| Conferir mudanças e validação | [Changelog](CHANGELOG.md), [versionamento](VERSIONING.md) e [evidências](docs/VALIDATION.md) |
|
|
167
175
|
|
|
168
176
|
## Desenvolver a biblioteca
|
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.3.0**.
|
|
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.
|
|
11
|
-
| Pacote npm e saída de `yuzuha --version` | `0.
|
|
12
|
-
| Título do changelog | `## v0.
|
|
13
|
-
| Tag Git | `v0.
|
|
10
|
+
| `package.json` e entrada raiz de `package-lock.json` | `0.3.0` |
|
|
11
|
+
| Pacote npm e saída de `yuzuha --version` | `0.3.0` |
|
|
12
|
+
| Título do changelog | `## v0.3.0 · 04/11/2026` |
|
|
13
|
+
| Tag Git | `v0.3.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.
|
|
@@ -31,7 +31,7 @@ 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
33
|
`yuzuha/sdk/*`, `yuzuha/testing`, `yuzuha/tooling`, `yuzuha/music`,
|
|
34
|
-
`yuzuha/images` e `yuzuha/canvas`. A organização interna de `src/` não cria
|
|
34
|
+
`yuzuha/images`, `yuzuha/canvas` e `yuzuha/canvas/card`. A organização interna de `src/` não cria
|
|
35
35
|
estabilidade de deep
|
|
36
36
|
imports. Schema persistido,
|
|
37
37
|
gramática e funções documentadas também fazem parte da compatibilidade.
|
|
@@ -42,6 +42,33 @@ gerado por `init` pertence ao consumidor e não precisa acompanhar a biblioteca.
|
|
|
42
42
|
|
|
43
43
|
## Preparar uma atualização
|
|
44
44
|
|
|
45
|
+
### Migrar para 0.3.0
|
|
46
|
+
|
|
47
|
+
As interfaces `Resources` ganharam métodos obrigatórios; quem mantém um adaptador `Resources` próprio precisa implementá-los (veja o CHANGELOG `v0.3.0` para a lista).
|
|
48
|
+
|
|
49
|
+
A 0.3.0 isola o function mode da raiz e transforma `yuzuha/canvas` na API
|
|
50
|
+
compatível com `@napi-rs/canvas`. Há três mudanças incompatíveis:
|
|
51
|
+
|
|
52
|
+
- `yuzuha/canvas` passa a exportar a API napi em processo (`createCanvas`,
|
|
53
|
+
`loadImage`, `registerFonts`, `GlobalFonts` e demais exports do peer). O
|
|
54
|
+
antigo builder de cartões migrou para `yuzuha/canvas/card`: troque
|
|
55
|
+
`import { createCanvas } from 'yuzuha/canvas'` por
|
|
56
|
+
`import { createCard } from 'yuzuha/canvas/card'` e renomeie a chamada.
|
|
57
|
+
- Comandos com `code`, eventos de script e plugins com `functions` exigem um
|
|
58
|
+
engine instalado: `new Yuzuha({ ..., engine: functions() })` ou
|
|
59
|
+
`bot.useEngine(functions())` com `functions` importado de `yuzuha/functions`.
|
|
60
|
+
Sem engine, o registro falha com `FUNCTIONS_REQUIRED`. A CLI injeta o engine
|
|
61
|
+
automaticamente, então `yuzuha.config.js` continua igual.
|
|
62
|
+
- `bot.runtime`, `bot.enableFunctions()` e `YuzuhaOptions.limits` foram
|
|
63
|
+
removidos. Use `bot.engine` (o `ScriptEngine` instalado), o engine passado nas
|
|
64
|
+
opções e `functions({ limits })` para limites próprios.
|
|
65
|
+
|
|
66
|
+
O schema persistido permanece em 2 e o SDK em 3.3.0; não há migração de dados.
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
npm install yuzuha@0.3.0
|
|
70
|
+
```
|
|
71
|
+
|
|
45
72
|
### Migrar para 0.2.1
|
|
46
73
|
|
|
47
74
|
A 0.2.1 amplia a paridade nativa com o Fluxer.js. Os subpaths `yuzuha/sdk/*`
|
package/benchmarks/parser.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { createHash } from 'node:crypto';
|
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { pathToFileURL } from 'node:url';
|
|
8
8
|
|
|
9
|
-
const modules = { current: new URL('../dist/
|
|
9
|
+
const modules = { current: new URL('../dist/functions/runtime/parser.js', import.meta.url) };
|
|
10
10
|
for (let index = 2; index < process.argv.length; index += 2) {
|
|
11
11
|
const key = { '--parser-module': 'current', '--baseline-module': 'baseline' }[process.argv[index]];
|
|
12
12
|
const value = process.argv[index + 1];
|
package/benchmarks/run.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { performance } from 'node:perf_hooks';
|
|
|
3
3
|
import { arch, cpus, platform } from 'node:os';
|
|
4
4
|
import { readFile } from 'node:fs/promises';
|
|
5
5
|
import { CommandContext, MemoryStore, Yuzuha } from '../dist/index.js';
|
|
6
|
-
import { registerBuiltins, Runtime } from '../dist/functions.js';
|
|
6
|
+
import { functions, registerBuiltins, Runtime } from '../dist/functions.js';
|
|
7
7
|
import { MockTransport, mockMessage } from '../dist/testing.js';
|
|
8
8
|
import { compareReports } from './compare.mjs';
|
|
9
9
|
|
|
@@ -58,7 +58,8 @@ const bots = [];
|
|
|
58
58
|
try {
|
|
59
59
|
for (const scripted of [false, true]) {
|
|
60
60
|
for (const concurrency of new Set([1, config.concurrency])) {
|
|
61
|
-
const bot = new Yuzuha({ transport: new MockTransport(), store: new MemoryStore(), scheduler: false, http: false
|
|
61
|
+
const bot = new Yuzuha({ transport: new MockTransport(), store: new MemoryStore(), scheduler: false, http: false,
|
|
62
|
+
engine: scripted ? functions() : undefined });
|
|
62
63
|
bots.push(bot);
|
|
63
64
|
bot.command(scripted ? { name: 'bench', code: '$let[x;$math[2;*;3]]' } : { name: 'bench', run() {} });
|
|
64
65
|
const name = scripted ? 'dispatch/functions' : 'dispatch/native';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CANVAS_LIMITS } from '../domain/canvas.js';
|
|
2
|
+
import type { CanvasCreateOptions } from '../domain/canvas.js';
|
|
3
|
+
import { CanvasService } from '../services/canvas.js';
|
|
4
|
+
import type { CanvasBuilder, CanvasRuntimeOptions } from '../services/canvas.js';
|
|
5
|
+
export declare function createCard(width: number, height: number, options?: CanvasCreateOptions & CanvasRuntimeOptions): CanvasBuilder;
|
|
6
|
+
export { CanvasService };
|
|
7
|
+
export type { CanvasBuilder, CanvasRuntimeOptions, CanvasHostOptions, CanvasSendOptions } from '../services/canvas.js';
|
|
8
|
+
export type * from '../domain/canvas.js';
|
|
9
|
+
export { CANVAS_LIMITS };
|
|
10
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/canvas/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAgB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAmB,GAAG,oBAAyB,GACvD,aAAa,CAIf;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvH,mBAAmB,qBAAqB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CANVAS_LIMITS } from '../domain/canvas.js';
|
|
2
|
+
import { canvasRenderer } from '../infrastructure/canvas/render.js';
|
|
3
|
+
import { CanvasService } from '../services/canvas.js';
|
|
4
|
+
export function createCard(width, height, options = {}) {
|
|
5
|
+
const { scale, background, signal, http, assets, fonts, timeoutMs } = options;
|
|
6
|
+
const service = new CanvasService({ renderer: canvasRenderer, signal, http, assets, fonts, timeoutMs });
|
|
7
|
+
return service.create(width, height, { scale, background });
|
|
8
|
+
}
|
|
9
|
+
export { CanvasService };
|
|
10
|
+
export { CANVAS_LIMITS };
|
|
11
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/canvas/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,MAAc,EACd,UAAsD,EAAE;IAExD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACxG,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { CANVAS_LIMITS } from '../domain/canvas.js';\nimport type { CanvasConfig, CanvasCreateOptions } from '../domain/canvas.js';\nimport { canvasRenderer } from '../infrastructure/canvas/render.js';\nimport { CanvasService } from '../services/canvas.js';\nimport type { CanvasBuilder, CanvasRuntimeOptions } from '../services/canvas.js';\n\nexport function createCard(\n width: number,\n height: number,\n options: CanvasCreateOptions & CanvasRuntimeOptions = {},\n): CanvasBuilder {\n const { scale, background, signal, http, assets, fonts, timeoutMs } = options;\n const service = new CanvasService({ renderer: canvasRenderer, signal, http, assets, fonts, timeoutMs });\n return service.create(width, height, { scale, background });\n}\n\nexport { CanvasService };\nexport type { CanvasBuilder, CanvasRuntimeOptions, CanvasHostOptions, CanvasSendOptions } from '../services/canvas.js';\nexport type * from '../domain/canvas.js';\nexport { CANVAS_LIMITS };\n"]}
|
package/dist/canvas.d.ts
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
1
|
+
import type { CanvasLoadImageOptions, CanvasLoadImageSource } from './services/canvas-image.js';
|
|
2
|
+
export type { CanvasLoadImageOptions };
|
|
3
|
+
export type * from '@napi-rs/canvas';
|
|
4
|
+
export declare const Canvas: typeof import("@napi-rs/canvas").Canvas;
|
|
5
|
+
export declare const Image: typeof import("@napi-rs/canvas").Image;
|
|
6
|
+
export declare const Path2D: typeof import("@napi-rs/canvas").Path2D;
|
|
7
|
+
export declare const ImageData: typeof import("@napi-rs/canvas").ImageData;
|
|
8
|
+
export declare const DOMMatrix: typeof import("@napi-rs/canvas").DOMMatrix;
|
|
9
|
+
export declare const DOMRect: typeof import("@napi-rs/canvas").DOMRect;
|
|
10
|
+
export declare const DOMPoint: typeof import("@napi-rs/canvas").DOMPoint;
|
|
11
|
+
export declare const FontKey: typeof import("@napi-rs/canvas").FontKey;
|
|
12
|
+
export declare const PDFDocument: typeof import("@napi-rs/canvas").PDFDocument;
|
|
13
|
+
export declare const GifEncoder: typeof import("@napi-rs/canvas").GifEncoder;
|
|
14
|
+
export declare const LottieAnimation: typeof import("@napi-rs/canvas").LottieAnimation;
|
|
15
|
+
export declare const GlobalFonts: typeof import("@napi-rs/canvas").GlobalFonts;
|
|
16
|
+
export declare const PathOp: typeof import("@napi-rs/canvas").PathOp;
|
|
17
|
+
export declare const FillType: typeof import("@napi-rs/canvas").FillType;
|
|
18
|
+
export declare const StrokeCap: typeof import("@napi-rs/canvas").StrokeCap;
|
|
19
|
+
export declare const StrokeJoin: typeof import("@napi-rs/canvas").StrokeJoin;
|
|
20
|
+
export declare const SvgExportFlag: typeof import("@napi-rs/canvas").SvgExportFlag;
|
|
21
|
+
export declare const GifDisposal: typeof import("@napi-rs/canvas").GifDisposal;
|
|
22
|
+
export declare const ChromaSubsampling: typeof import("@napi-rs/canvas").ChromaSubsampling;
|
|
23
|
+
export declare const SVGCanvas: any;
|
|
24
|
+
export declare const CanvasElement: any;
|
|
25
|
+
export declare function createCanvas(width: number, height: number): import('@napi-rs/canvas').Canvas;
|
|
26
|
+
export declare function createCanvas(width: number, height: number, svgExportFlag: import('@napi-rs/canvas').SvgExportFlag): import('@napi-rs/canvas').SvgCanvas;
|
|
27
|
+
export declare function loadImage(source: CanvasLoadImageSource, options?: CanvasLoadImageOptions): Promise<import('@napi-rs/canvas').Image>;
|
|
28
|
+
export declare function clearAllCache(): void;
|
|
29
|
+
export declare function convertSVGTextToPath(svg: Buffer | string): Buffer;
|
|
30
|
+
export declare function registerFonts(dir: string): number;
|
|
10
31
|
//# sourceMappingURL=canvas.d.ts.map
|
package/dist/canvas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGhG,YAAY,EAAE,sBAAsB,EAAE,CAAC;AACvC,mBAAmB,iBAAiB,CAAC;AAUrC,eAAO,MAAM,MAAM,EAAkC,cAAc,iBAAiB,EAAE,MAAM,CAAC;AAC7F,eAAO,MAAM,KAAK,EAAiC,cAAc,iBAAiB,EAAE,KAAK,CAAC;AAC1F,eAAO,MAAM,MAAM,EAAkC,cAAc,iBAAiB,EAAE,MAAM,CAAC;AAC7F,eAAO,MAAM,SAAS,EAAqC,cAAc,iBAAiB,EAAE,SAAS,CAAC;AACtG,eAAO,MAAM,SAAS,EAAqC,cAAc,iBAAiB,EAAE,SAAS,CAAC;AACtG,eAAO,MAAM,OAAO,EAAmC,cAAc,iBAAiB,EAAE,OAAO,CAAC;AAChG,eAAO,MAAM,QAAQ,EAAoC,cAAc,iBAAiB,EAAE,QAAQ,CAAC;AACnG,eAAO,MAAM,OAAO,EAAmC,cAAc,iBAAiB,EAAE,OAAO,CAAC;AAChG,eAAO,MAAM,WAAW,EAAuC,cAAc,iBAAiB,EAAE,WAAW,CAAC;AAC5G,eAAO,MAAM,UAAU,EAAsC,cAAc,iBAAiB,EAAE,UAAU,CAAC;AACzG,eAAO,MAAM,eAAe,EAA2C,cAAc,iBAAiB,EAAE,eAAe,CAAC;AACxH,eAAO,MAAM,WAAW,EAAuC,cAAc,iBAAiB,EAAE,WAAW,CAAC;AAC5G,eAAO,MAAM,MAAM,EAAkC,cAAc,iBAAiB,EAAE,MAAM,CAAC;AAC7F,eAAO,MAAM,QAAQ,EAAoC,cAAc,iBAAiB,EAAE,QAAQ,CAAC;AACnG,eAAO,MAAM,SAAS,EAAqC,cAAc,iBAAiB,EAAE,SAAS,CAAC;AACtG,eAAO,MAAM,UAAU,EAAsC,cAAc,iBAAiB,EAAE,UAAU,CAAC;AACzG,eAAO,MAAM,aAAa,EAAyC,cAAc,iBAAiB,EAAE,aAAa,CAAC;AAClH,eAAO,MAAM,WAAW,EAAuC,cAAc,iBAAiB,EAAE,WAAW,CAAC;AAC5G,eAAO,MAAM,iBAAiB,EAA6C,cAAc,iBAAiB,EAAE,iBAAiB,CAAC;AAC9H,eAAO,MAAM,SAAS,EAAE,GAA2C,CAAC;AACpE,eAAO,MAAM,aAAa,EAAE,GAA+C,CAAC;AAE5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,iBAAiB,EAAE,MAAM,CAAC;AAC9F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,iBAAiB,EAAE,aAAa,GAAG,OAAO,iBAAiB,EAAE,SAAS,CAAC;AAazJ,wBAAsB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,OAAO,iBAAiB,EAAE,KAAK,CAAC,CAG7I;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjD"}
|
package/dist/canvas.js
CHANGED
|
@@ -1,11 +1,66 @@
|
|
|
1
1
|
import { CANVAS_LIMITS } from './domain/canvas.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
import { canvasDependency, napi } from './infrastructure/canvas/napi.js';
|
|
3
|
+
import { loadCanvasImage, registerCanvasFonts } from './services/canvas-image.js';
|
|
4
|
+
import { YuzuhaError } from './shared/errors.js';
|
|
5
|
+
const missing = () => new Proxy(function () { throw canvasDependency(); }, {
|
|
6
|
+
get(target, property) {
|
|
7
|
+
if (property === 'prototype')
|
|
8
|
+
return target.prototype;
|
|
9
|
+
throw canvasDependency();
|
|
10
|
+
},
|
|
11
|
+
construct() { throw canvasDependency(); },
|
|
12
|
+
});
|
|
13
|
+
export const Canvas = (napi?.Canvas ?? missing());
|
|
14
|
+
export const Image = (napi?.Image ?? missing());
|
|
15
|
+
export const Path2D = (napi?.Path2D ?? missing());
|
|
16
|
+
export const ImageData = (napi?.ImageData ?? missing());
|
|
17
|
+
export const DOMMatrix = (napi?.DOMMatrix ?? missing());
|
|
18
|
+
export const DOMRect = (napi?.DOMRect ?? missing());
|
|
19
|
+
export const DOMPoint = (napi?.DOMPoint ?? missing());
|
|
20
|
+
export const FontKey = (napi?.FontKey ?? missing());
|
|
21
|
+
export const PDFDocument = (napi?.PDFDocument ?? missing());
|
|
22
|
+
export const GifEncoder = (napi?.GifEncoder ?? missing());
|
|
23
|
+
export const LottieAnimation = (napi?.LottieAnimation ?? missing());
|
|
24
|
+
export const GlobalFonts = (napi?.GlobalFonts ?? missing());
|
|
25
|
+
export const PathOp = (napi?.PathOp ?? missing());
|
|
26
|
+
export const FillType = (napi?.FillType ?? missing());
|
|
27
|
+
export const StrokeCap = (napi?.StrokeCap ?? missing());
|
|
28
|
+
export const StrokeJoin = (napi?.StrokeJoin ?? missing());
|
|
29
|
+
export const SvgExportFlag = (napi?.SvgExportFlag ?? missing());
|
|
30
|
+
export const GifDisposal = (napi?.GifDisposal ?? missing());
|
|
31
|
+
export const ChromaSubsampling = (napi?.ChromaSubsampling ?? missing());
|
|
32
|
+
export const SVGCanvas = napi?.SVGCanvas ?? missing();
|
|
33
|
+
export const CanvasElement = napi?.CanvasElement ?? missing();
|
|
34
|
+
export function createCanvas(width, height, svgExportFlag) {
|
|
35
|
+
if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) || width < 1 || height < 1) {
|
|
36
|
+
throw new YuzuhaError('CANVAS_OPTIONS', 'Largura e altura devem ser inteiros positivos.');
|
|
37
|
+
}
|
|
38
|
+
if (width > CANVAS_LIMITS.maxPhysicalDimension || height > CANVAS_LIMITS.maxPhysicalDimension
|
|
39
|
+
|| width * height > CANVAS_LIMITS.maxPixels) {
|
|
40
|
+
throw new YuzuhaError('CANVAS_OPTIONS', 'Dimensões físicas excedem os limites do Canvas.');
|
|
41
|
+
}
|
|
42
|
+
if (!napi)
|
|
43
|
+
throw canvasDependency();
|
|
44
|
+
return svgExportFlag === undefined ? napi.createCanvas(width, height) : napi.createCanvas(width, height, svgExportFlag);
|
|
45
|
+
}
|
|
46
|
+
export async function loadImage(source, options = {}) {
|
|
47
|
+
if (!napi)
|
|
48
|
+
throw canvasDependency();
|
|
49
|
+
return loadCanvasImage(napi, source, options);
|
|
50
|
+
}
|
|
51
|
+
export function clearAllCache() {
|
|
52
|
+
if (!napi)
|
|
53
|
+
throw canvasDependency();
|
|
54
|
+
napi.clearAllCache();
|
|
55
|
+
}
|
|
56
|
+
export function convertSVGTextToPath(svg) {
|
|
57
|
+
if (!napi)
|
|
58
|
+
throw canvasDependency();
|
|
59
|
+
return napi.convertSVGTextToPath(svg);
|
|
60
|
+
}
|
|
61
|
+
export function registerFonts(dir) {
|
|
62
|
+
if (!napi)
|
|
63
|
+
throw canvasDependency();
|
|
64
|
+
return registerCanvasFonts(napi, dir);
|
|
65
|
+
}
|
|
11
66
|
//# sourceMappingURL=canvas.js.map
|
package/dist/canvas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"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","sourcesContent":["import { CANVAS_LIMITS } from './domain/canvas.js';\nimport { canvasDependency, napi } from './infrastructure/canvas/napi.js';\nimport { loadCanvasImage, registerCanvasFonts } from './services/canvas-image.js';\nimport type { CanvasLoadImageOptions, CanvasLoadImageSource } from './services/canvas-image.js';\nimport { YuzuhaError } from './shared/errors.js';\n\nexport type { CanvasLoadImageOptions };\nexport type * from '@napi-rs/canvas';\n\nconst missing = () => new Proxy(function () { throw canvasDependency(); }, {\n get(target, property) {\n if (property === 'prototype') return target.prototype;\n throw canvasDependency();\n },\n construct() { throw canvasDependency(); },\n});\n\nexport const Canvas = (napi?.Canvas ?? missing()) as typeof import('@napi-rs/canvas').Canvas;\nexport const Image = (napi?.Image ?? missing()) as typeof import('@napi-rs/canvas').Image;\nexport const Path2D = (napi?.Path2D ?? missing()) as typeof import('@napi-rs/canvas').Path2D;\nexport const ImageData = (napi?.ImageData ?? missing()) as typeof import('@napi-rs/canvas').ImageData;\nexport const DOMMatrix = (napi?.DOMMatrix ?? missing()) as typeof import('@napi-rs/canvas').DOMMatrix;\nexport const DOMRect = (napi?.DOMRect ?? missing()) as typeof import('@napi-rs/canvas').DOMRect;\nexport const DOMPoint = (napi?.DOMPoint ?? missing()) as typeof import('@napi-rs/canvas').DOMPoint;\nexport const FontKey = (napi?.FontKey ?? missing()) as typeof import('@napi-rs/canvas').FontKey;\nexport const PDFDocument = (napi?.PDFDocument ?? missing()) as typeof import('@napi-rs/canvas').PDFDocument;\nexport const GifEncoder = (napi?.GifEncoder ?? missing()) as typeof import('@napi-rs/canvas').GifEncoder;\nexport const LottieAnimation = (napi?.LottieAnimation ?? missing()) as typeof import('@napi-rs/canvas').LottieAnimation;\nexport const GlobalFonts = (napi?.GlobalFonts ?? missing()) as typeof import('@napi-rs/canvas').GlobalFonts;\nexport const PathOp = (napi?.PathOp ?? missing()) as typeof import('@napi-rs/canvas').PathOp;\nexport const FillType = (napi?.FillType ?? missing()) as typeof import('@napi-rs/canvas').FillType;\nexport const StrokeCap = (napi?.StrokeCap ?? missing()) as typeof import('@napi-rs/canvas').StrokeCap;\nexport const StrokeJoin = (napi?.StrokeJoin ?? missing()) as typeof import('@napi-rs/canvas').StrokeJoin;\nexport const SvgExportFlag = (napi?.SvgExportFlag ?? missing()) as typeof import('@napi-rs/canvas').SvgExportFlag;\nexport const GifDisposal = (napi?.GifDisposal ?? missing()) as typeof import('@napi-rs/canvas').GifDisposal;\nexport const ChromaSubsampling = (napi?.ChromaSubsampling ?? missing()) as typeof import('@napi-rs/canvas').ChromaSubsampling;\nexport const SVGCanvas: any = (napi as any)?.SVGCanvas ?? missing();\nexport const CanvasElement: any = (napi as any)?.CanvasElement ?? missing();\n\nexport function createCanvas(width: number, height: number): import('@napi-rs/canvas').Canvas;\nexport function createCanvas(width: number, height: number, svgExportFlag: import('@napi-rs/canvas').SvgExportFlag): import('@napi-rs/canvas').SvgCanvas;\nexport function createCanvas(width: number, height: number, svgExportFlag?: import('@napi-rs/canvas').SvgExportFlag) {\n if (!Number.isSafeInteger(width) || !Number.isSafeInteger(height) || width < 1 || height < 1) {\n throw new YuzuhaError('CANVAS_OPTIONS', 'Largura e altura devem ser inteiros positivos.');\n }\n if (width > CANVAS_LIMITS.maxPhysicalDimension || height > CANVAS_LIMITS.maxPhysicalDimension\n || width * height > CANVAS_LIMITS.maxPixels) {\n throw new YuzuhaError('CANVAS_OPTIONS', 'Dimensões físicas excedem os limites do Canvas.');\n }\n if (!napi) throw canvasDependency();\n return svgExportFlag === undefined ? napi.createCanvas(width, height) : napi.createCanvas(width, height, svgExportFlag);\n}\n\nexport async function loadImage(source: CanvasLoadImageSource, options: CanvasLoadImageOptions = {}): Promise<import('@napi-rs/canvas').Image> {\n if (!napi) throw canvasDependency();\n return loadCanvasImage(napi, source, options);\n}\n\nexport function clearAllCache(): void {\n if (!napi) throw canvasDependency();\n napi.clearAllCache();\n}\n\nexport function convertSVGTextToPath(svg: Buffer | string): Buffer {\n if (!napi) throw canvasDependency();\n return napi.convertSVGTextToPath(svg);\n}\n\nexport function registerFonts(dir: string): number {\n if (!napi) throw canvasDependency();\n return registerCanvasFonts(napi, dir);\n}\n"]}
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKnC,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3D;AAED,wBAAsB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB3I"}
|
package/dist/cli/config.js
CHANGED
|
@@ -4,6 +4,7 @@ import { pathToFileURL } from 'node:url';
|
|
|
4
4
|
import { parseEnv } from 'node:util';
|
|
5
5
|
import { importModule } from '../framework/module-loader.js';
|
|
6
6
|
import { Yuzuha } from '../bot.js';
|
|
7
|
+
import { functions } from '../functions.js';
|
|
7
8
|
import { YuzuhaError } from '../errors.js';
|
|
8
9
|
export async function exists(path) {
|
|
9
10
|
try {
|
|
@@ -42,7 +43,7 @@ export async function configuredBot(path, environment, loadCommands = true) {
|
|
|
42
43
|
const config = module.default;
|
|
43
44
|
if ((config.commands !== undefined && typeof config.commands !== 'string') || (config.setup !== undefined && typeof config.setup !== 'function'))
|
|
44
45
|
throw new YuzuhaError('CONFIG_INVALID', 'commands deve ser texto e setup deve ser uma função.');
|
|
45
|
-
const bot = new Yuzuha(config);
|
|
46
|
+
const bot = new Yuzuha({ ...config, engine: config.engine ?? functions() });
|
|
46
47
|
try {
|
|
47
48
|
await config.setup?.(bot);
|
|
48
49
|
const commandsPath = resolve(directory, config.commands ?? 'commands');
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, stat } from 'node:fs/promises';\nimport { dirname, join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { parseEnv } from 'node:util';\nimport { importModule } from '../framework/module-loader.js';\nimport { Yuzuha } from '../bot.js';\nimport { functions } from '../functions.js';\nimport type { YuzuhaConfig } from '../config.js';\nimport { YuzuhaError } from '../errors.js';\n\nexport async function exists(path: string): Promise<boolean> {\n try { await stat(path); return true; }\n catch (error) { if ((error as NodeJS.ErrnoException).code === 'ENOENT') return false; throw error; }\n}\n\nexport async function findConfig(input?: string): Promise<string> {\n if (input) return resolve(input);\n for (const file of ['yuzuha.config.ts', 'yuzuha.config.js', 'yuzuha.config.mjs']) {\n if (await exists(file)) return resolve(file);\n }\n throw new YuzuhaError('CONFIG_MISSING', 'Config não encontrada. Execute yuzuha init meu-bot ou informe o caminho.');\n}\n\nexport async function loadEnvironment(directory: string): Promise<void> {\n const path = join(directory, '.env');\n if (!(await exists(path))) return;\n for (const [key, value] of Object.entries(parseEnv(await readFile(path, 'utf8')))) process.env[key] ??= value;\n}\n\nexport async function configuredBot(path: string, environment: boolean, loadCommands = true): Promise<{ bot: Yuzuha; commandsPath: string }> {\n const directory = dirname(path);\n if (environment) await loadEnvironment(directory);\n const module = await importModule(pathToFileURL(path).href);\n if (!module.default || typeof module.default !== 'object' || Array.isArray(module.default)) throw new YuzuhaError('CONFIG_INVALID', 'Config deve exportar um objeto default.');\n const config = module.default as YuzuhaConfig;\n if ((config.commands !== undefined && typeof config.commands !== 'string') || (config.setup !== undefined && typeof config.setup !== 'function')) throw new YuzuhaError('CONFIG_INVALID', 'commands deve ser texto e setup deve ser uma função.');\n const bot = new Yuzuha({ ...config, engine: config.engine ?? functions() });\n try {\n await config.setup?.(bot);\n const commandsPath = resolve(directory, config.commands ?? 'commands');\n if (loadCommands) await bot.load(commandsPath, false);\n return { bot, commandsPath };\n } catch (error) {\n await bot.destroy();\n await config.store?.close?.();\n throw error;\n }\n}\n"]}
|
package/dist/cli/lint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,gBAAgB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CACtD;AAOD,wBAAsB,cAAc,CAAC,YAAY,GAAE,SAAS,MAAM,EAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAYtG;AAED,wEAAwE;AACxE,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAiCnG"}
|
package/dist/cli/lint.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { lstat, readFile, readdir } from 'node:fs/promises';
|
|
2
2
|
import { extname, join, resolve } from 'node:path';
|
|
3
|
-
import { registerBuiltins } from '../functions.js';
|
|
4
|
-
import { Runtime } from '../runtime.js';
|
|
3
|
+
import { registerBuiltins, Runtime } from '../functions.js';
|
|
5
4
|
import { YuzuhaError } from '../errors.js';
|
|
6
5
|
import { documentDiagnostics, mergeFunctionCatalogs, parseFunctionCatalog } from '../tooling/language.js';
|
|
7
6
|
const extensions = new Map([
|
package/dist/cli/lint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/cli/lint.ts"],"names":[],"mappings":"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","sourcesContent":["import { lstat, readFile, readdir } from 'node:fs/promises';\nimport { extname, join, resolve } from 'node:path';\nimport { registerBuiltins, Runtime } from '../functions.js';\nimport { YuzuhaError } from '../errors.js';\nimport { documentDiagnostics, mergeFunctionCatalogs, parseFunctionCatalog } from '../tooling/language.js';\nimport type { FunctionMetadata, ScriptDiagnostic } from '../tooling/language.js';\n\nexport interface LintReport {\n valid: boolean;\n offline: true;\n files: number;\n diagnostics: (ScriptDiagnostic & { file: string })[];\n}\nconst extensions = new Map([\n ['.yz', 'yuzuha'], ['.yuzuha', 'yuzuha'], ['.js', 'javascript'], ['.mjs', 'javascript'], ['.cjs', 'javascript'],\n ['.ts', 'typescript'], ['.mts', 'typescript'], ['.cts', 'typescript'], ['.jsx', 'javascriptreact'], ['.tsx', 'typescriptreact'],\n]);\nconst ignored = new Set(['node_modules', '.git', 'dist', 'coverage', 'artifacts']);\n\nexport async function builtinCatalog(catalogPaths: readonly string[] = []): Promise<FunctionMetadata[]> {\n if (catalogPaths.length > 16) throw new YuzuhaError('LINT_CATALOG', 'Informe até 16 catálogos.');\n const builtins = registerBuiltins(new Runtime()).functions().map(({ execute: _execute, ...fn }) => fn);\n const catalogs = await Promise.all(catalogPaths.map(async path => {\n try {\n const info = await lstat(resolve(path));\n if (!info.isFile() || info.size > 2_000_000) throw new Error('Catálogo deve ser arquivo JSON de até 2000000 bytes.');\n return parseFunctionCatalog(await readFile(resolve(path), 'utf8'));\n } catch (cause) { throw new YuzuhaError('LINT_CATALOG', 'Não foi possível validar o catálogo JSON.', { cause }); }\n }));\n try { return mergeFunctionCatalogs(builtins, ...catalogs); }\n catch (cause) { throw new YuzuhaError('LINT_CATALOG', 'Catálogos possuem funções ou aliases duplicados.', { cause }); }\n}\n\n/** Inspects text only. Target files and catalogs are never imported. */\nexport async function lint(input: string, catalogPaths: readonly string[] = []): Promise<LintReport> {\n const catalog = await builtinCatalog(catalogPaths), files: string[] = [];\n async function collect(path: string, depth: number): Promise<void> {\n if (depth > 32) throw new YuzuhaError('LINT_LIMIT', 'Diretório excede 32 níveis.');\n const info = await lstat(path);\n if (info.isSymbolicLink()) return;\n if (info.isDirectory()) {\n const entries = await readdir(path, { withFileTypes: true });\n if (entries.length > 10_000) throw new YuzuhaError('LINT_LIMIT', 'Diretório excede 10000 entradas.');\n for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n if (!ignored.has(entry.name) && !entry.isSymbolicLink()) await collect(join(path, entry.name), depth + 1);\n }\n } else if (info.isFile() && extensions.has(extname(path)) && !/\\.d\\.(?:ts|mts|cts)$/.test(path)) {\n if (info.size > 2_000_000) throw new YuzuhaError('LINT_LIMIT', 'Arquivo excede 2000000 bytes.');\n files.push(path);\n if (files.length > 1000) throw new YuzuhaError('LINT_LIMIT', 'Lint aceita até 1000 arquivos por chamada.');\n }\n }\n const root = resolve(input), info = await lstat(root);\n if (info.isSymbolicLink() || (!info.isDirectory() && (!info.isFile() || !extensions.has(extname(root))))) {\n throw new YuzuhaError('LINT_INPUT', 'Informe um arquivo de script/JS/TS ou diretório, sem link simbólico.');\n }\n await collect(root, 0);\n const diagnostics: LintReport['diagnostics'] = [];\n let bytes = 0;\n for (const file of files) {\n const source = await readFile(file, 'utf8');\n bytes += Buffer.byteLength(source);\n if (source.length > 2_000_000 || bytes > 20_000_000) throw new YuzuhaError('LINT_LIMIT', 'Lint excede o limite de leitura de arquivos.');\n diagnostics.push(...documentDiagnostics(source, extensions.get(extname(file))!, catalog).map(value => ({ file, ...value })));\n if (diagnostics.length > 10_000) throw new YuzuhaError('LINT_LIMIT', 'Lint excede 10000 diagnósticos.');\n }\n return { valid: diagnostics.length === 0, offline: true, files: files.length, diagnostics };\n}\n"]}
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAiBA,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEtE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAQpE"}
|
package/dist/cli/main.js
CHANGED
|
@@ -6,8 +6,7 @@ import { stat } from 'node:fs/promises';
|
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { Yuzuha } from '../bot.js';
|
|
8
8
|
import { ScriptError, YuzuhaError } from '../errors.js';
|
|
9
|
-
import { registerBuiltins } from '../functions.js';
|
|
10
|
-
import { Runtime } from '../runtime.js';
|
|
9
|
+
import { functions, registerBuiltins, Runtime } from '../functions.js';
|
|
11
10
|
import { parseArguments, usage } from './arguments.js';
|
|
12
11
|
import { configuredBot, findConfig } from './config.js';
|
|
13
12
|
import { runBot } from './runner.js';
|
|
@@ -72,7 +71,7 @@ export async function main(args = process.argv.slice(2)) {
|
|
|
72
71
|
try {
|
|
73
72
|
if (options.config) {
|
|
74
73
|
({ bot: catalogBot } = await configuredBot(await findConfig(options.config), false, false));
|
|
75
|
-
all = catalogBot.
|
|
74
|
+
all = catalogBot.engine.functions();
|
|
76
75
|
}
|
|
77
76
|
else
|
|
78
77
|
all = registerBuiltins(new Runtime()).functions();
|
|
@@ -85,20 +84,20 @@ export async function main(args = process.argv.slice(2)) {
|
|
|
85
84
|
}
|
|
86
85
|
const builtinNames = options.pluginsOnly ? new Set(registerBuiltins(new Runtime()).functions().map(fn => fn.name.replace(/^\$/, '').toLowerCase())) : undefined;
|
|
87
86
|
const visible = builtinNames ? all.filter(fn => !builtinNames.has(fn.name.replace(/^\$/, '').toLowerCase())) : all;
|
|
88
|
-
let
|
|
89
|
-
if (options.category && !
|
|
87
|
+
let entries = options.category ? visible.filter(fn => fn.category === options.category) : visible;
|
|
88
|
+
if (options.category && !entries.length)
|
|
90
89
|
throw new YuzuhaError('CATEGORY', `Categoria desconhecida. Escolha: ${[...new Set(all.map(fn => fn.category))].join(', ')}.`);
|
|
91
90
|
if (options.search !== undefined) {
|
|
92
91
|
const term = options.search.toLowerCase();
|
|
93
|
-
|
|
92
|
+
entries = entries.filter(fn => [fn.name, ...(fn.aliases ?? []), fn.description].some(value => value.toLowerCase().includes(term)));
|
|
94
93
|
}
|
|
95
|
-
const metadata =
|
|
96
|
-
console.log(options.catalog ? JSON.stringify({ version: 1, functions: metadata }, null, 2) : options.json ? JSON.stringify(metadata, null, 2) : options.search !== undefined && !
|
|
94
|
+
const metadata = entries.map(({ execute: _execute, ...value }) => value);
|
|
95
|
+
console.log(options.catalog ? JSON.stringify({ version: 1, functions: metadata }, null, 2) : options.json ? JSON.stringify(metadata, null, 2) : options.search !== undefined && !entries.length ? 'Nenhuma função encontrada.' : entries.map(fn => `${fn.usage.padEnd(52)} ${fn.description}`).join('\n'));
|
|
97
96
|
return;
|
|
98
97
|
}
|
|
99
98
|
let bot, commandsPath;
|
|
100
99
|
if (options.action === 'check' && options.input && (await stat(resolve(options.input))).isDirectory()) {
|
|
101
|
-
bot = new Yuzuha();
|
|
100
|
+
bot = new Yuzuha({ engine: functions() });
|
|
102
101
|
commandsPath = resolve(options.input);
|
|
103
102
|
try {
|
|
104
103
|
await bot.load(commandsPath);
|