yuzuha 0.2.0 → 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 +29 -1
- package/README.md +22 -14
- package/VERSIONING.md +56 -7
- 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 +7 -2
- 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 +7 -2
- 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 +4 -0
- package/dist/infrastructure/fluxer/resources/cache.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/cache.js +68 -0
- package/dist/infrastructure/fluxer/resources/cache.js.map +1 -0
- 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/collectors.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/collectors.js +86 -4
- package/dist/infrastructure/fluxer/resources/collectors.js.map +1 -1
- package/dist/infrastructure/fluxer/resources/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/gateway.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/gateway.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/gateway.js +31 -0
- package/dist/infrastructure/fluxer/resources/gateway.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/instance.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/instance.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/instance.js +96 -0
- package/dist/infrastructure/fluxer/resources/instance.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/messages.d.ts +3 -1
- package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/messages.js +91 -36
- 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/self.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources/self.d.ts.map +1 -0
- package/dist/infrastructure/fluxer/resources/self.js +36 -0
- package/dist/infrastructure/fluxer/resources/self.js.map +1 -0
- package/dist/infrastructure/fluxer/resources/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 +5 -2
- package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources/users.js +36 -3
- 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/infrastructure/fluxer/resources.d.ts +4 -0
- package/dist/infrastructure/fluxer/resources.d.ts.map +1 -1
- package/dist/infrastructure/fluxer/resources.js +12 -0
- package/dist/infrastructure/fluxer/resources.js.map +1 -1
- package/dist/ports/resources/cache.d.ts +74 -0
- package/dist/ports/resources/cache.d.ts.map +1 -0
- package/dist/ports/resources/cache.js +2 -0
- package/dist/ports/resources/cache.js.map +1 -0
- package/dist/ports/resources/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/collectors.d.ts +18 -0
- package/dist/ports/resources/collectors.d.ts.map +1 -1
- package/dist/ports/resources/collectors.js.map +1 -1
- package/dist/ports/resources/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/gateway.d.ts +48 -0
- package/dist/ports/resources/gateway.d.ts.map +1 -0
- package/dist/ports/resources/gateway.js +2 -0
- package/dist/ports/resources/gateway.js.map +1 -0
- package/dist/ports/resources/instance.d.ts +101 -0
- package/dist/ports/resources/instance.d.ts.map +1 -0
- package/dist/ports/resources/instance.js +2 -0
- package/dist/ports/resources/instance.js.map +1 -0
- package/dist/ports/resources/messages.d.ts +27 -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/self.d.ts +30 -0
- package/dist/ports/resources/self.d.ts.map +1 -0
- package/dist/ports/resources/self.js +2 -0
- package/dist/ports/resources/self.js.map +1 -0
- package/dist/ports/resources/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/resources.d.ts +8 -0
- package/dist/ports/resources.d.ts.map +1 -1
- package/dist/ports/resources.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/sdk/builders.d.ts +2 -0
- package/dist/sdk/builders.d.ts.map +1 -0
- package/dist/sdk/builders.js +2 -0
- package/dist/sdk/builders.js.map +1 -0
- package/dist/sdk/client.d.ts +2 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +2 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/cluster.d.ts +2 -0
- package/dist/sdk/cluster.d.ts.map +1 -0
- package/dist/sdk/cluster.js +2 -0
- package/dist/sdk/cluster.js.map +1 -0
- package/dist/sdk/collection.d.ts +2 -0
- package/dist/sdk/collection.d.ts.map +1 -0
- package/dist/sdk/collection.js +2 -0
- package/dist/sdk/collection.js.map +1 -0
- package/dist/sdk/errors.d.ts +2 -0
- package/dist/sdk/errors.d.ts.map +1 -0
- package/dist/sdk/errors.js +2 -0
- package/dist/sdk/errors.js.map +1 -0
- package/dist/sdk/internal.d.ts +2 -0
- package/dist/sdk/internal.d.ts.map +1 -0
- package/dist/sdk/internal.js +2 -0
- package/dist/sdk/internal.js.map +1 -0
- package/dist/sdk/message.d.ts +2 -0
- package/dist/sdk/message.d.ts.map +1 -0
- package/dist/sdk/message.js +2 -0
- package/dist/sdk/message.js.map +1 -0
- package/dist/sdk/rest/request-manager.d.ts +2 -0
- package/dist/sdk/rest/request-manager.d.ts.map +1 -0
- package/dist/sdk/rest/request-manager.js +2 -0
- package/dist/sdk/rest/request-manager.js.map +1 -0
- package/dist/sdk/rest.d.ts +2 -0
- package/dist/sdk/rest.d.ts.map +1 -0
- package/dist/sdk/rest.js +2 -0
- package/dist/sdk/rest.js.map +1 -0
- package/dist/sdk/sharding.d.ts +2 -0
- package/dist/sdk/sharding.d.ts.map +1 -0
- package/dist/sdk/sharding.js +2 -0
- package/dist/sdk/sharding.js.map +1 -0
- package/dist/sdk/types/routes.d.ts +2 -0
- package/dist/sdk/types/routes.d.ts.map +1 -0
- package/dist/sdk/types/routes.js +2 -0
- package/dist/sdk/types/routes.js.map +1 -0
- package/dist/sdk/types.d.ts +2 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sdk/util.d.ts +2 -0
- package/dist/sdk/util.d.ts.map +1 -0
- package/dist/sdk/util.js +2 -0
- package/dist/sdk/util.js.map +1 -0
- package/dist/sdk/voice.d.ts +2 -0
- package/dist/sdk/voice.d.ts.map +1 -0
- package/dist/sdk/voice.js +2 -0
- package/dist/sdk/voice.js.map +1 -0
- package/dist/sdk/ws.d.ts +2 -0
- package/dist/sdk/ws.d.ts.map +1 -0
- package/dist/sdk/ws.js +2 -0
- package/dist/sdk/ws.js.map +1 -0
- package/dist/services/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 +95 -3
- package/dist/services/resource-authorization.js.map +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +4 -0
- package/dist/testing.js.map +1 -1
- package/docs/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 +45 -14
- package/docs/PARITY-MATRIX.md +853 -843
- package/docs/PARITY.md +24 -12
- 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} +18 -13
- 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 +26 -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 +9 -2
- 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 +9 -2
- package/src/infrastructure/canvas/napi.ts +17 -0
- package/src/infrastructure/fluxer/resources/cache.ts +69 -0
- package/src/infrastructure/fluxer/resources/channels.ts +51 -3
- package/src/infrastructure/fluxer/resources/collectors.ts +87 -4
- package/src/infrastructure/fluxer/resources/expressions.ts +7 -1
- package/src/infrastructure/fluxer/resources/gateway.ts +33 -0
- package/src/infrastructure/fluxer/resources/instance.ts +105 -0
- package/src/infrastructure/fluxer/resources/messages.ts +84 -36
- package/src/infrastructure/fluxer/resources/roles.ts +8 -0
- package/src/infrastructure/fluxer/resources/self.ts +39 -0
- package/src/infrastructure/fluxer/resources/threads.ts +14 -0
- package/src/infrastructure/fluxer/resources/users.ts +40 -4
- package/src/infrastructure/fluxer/resources/webhooks.ts +9 -0
- package/src/infrastructure/fluxer/resources.ts +12 -0
- package/src/ports/resources/cache.ts +81 -0
- package/src/ports/resources/channels.ts +12 -0
- package/src/ports/resources/collectors.ts +20 -0
- package/src/ports/resources/common.ts +2 -0
- package/src/ports/resources/expressions.ts +6 -0
- package/src/ports/resources/gateway.ts +49 -0
- package/src/ports/resources/instance.ts +109 -0
- package/src/ports/resources/messages.ts +30 -0
- package/src/ports/resources/roles.ts +3 -0
- package/src/ports/resources/self.ts +30 -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/resources.ts +8 -0
- package/src/ports/script-engine.ts +42 -0
- package/src/sdk/builders.ts +1 -0
- package/src/sdk/client.ts +1 -0
- package/src/sdk/cluster.ts +1 -0
- package/src/sdk/collection.ts +1 -0
- package/src/sdk/errors.ts +1 -0
- package/src/sdk/internal.ts +1 -0
- package/src/sdk/message.ts +1 -0
- package/src/sdk/rest/request-manager.ts +1 -0
- package/src/sdk/rest.ts +1 -0
- package/src/sdk/sharding.ts +1 -0
- package/src/sdk/types/routes.ts +1 -0
- package/src/sdk/types.ts +1 -0
- package/src/sdk/util.ts +1 -0
- package/src/sdk/voice.ts +1 -0
- package/src/sdk/ws.ts +1 -0
- package/src/services/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 +89 -3
- package/src/testing.ts +4 -0
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-callbacks.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/array-callbacks.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,sBAAsB,uDAoEjC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { YuzuhaError } from '../../../errors.js';
|
|
2
|
-
import { text, truthy } from '../../values.js';
|
|
2
|
+
import { text, truthy } from '../../runtime/values.js';
|
|
3
3
|
import { defineFunctions } from '../definition.js';
|
|
4
4
|
import { requireArray } from './common.js';
|
|
5
5
|
import { withLoopState } from './loops.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-callbacks.js","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"array-callbacks.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/array-callbacks.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport type { FunctionCall } from '../../runtime/types.js';\nimport { text, truthy } from '../../runtime/values.js';\nimport { defineFunctions } from '../definition.js';\nimport { requireArray } from './common.js';\nimport { withLoopState } from './loops.js';\nimport { LOOP_ACCUMULATOR_KEY, LOOP_INDEX_KEY, LOOP_MAX, LOOP_VALUE_KEY } from './state.js';\n\nasync function items(c: FunctionCall): Promise<unknown[]> {\n const value = requireArray(await c.arg(0));\n if (value.length > LOOP_MAX) throw new YuzuhaError('EXECUTION_LIMIT', `Array excede o limite de ${LOOP_MAX} itens.`);\n return [...value];\n}\n\nfunction iteration(c: FunctionCall, values: unknown[], index: number): void {\n c.ctx.vars.set(LOOP_INDEX_KEY, index);\n c.ctx.vars.set(LOOP_VALUE_KEY, values[index]);\n}\n\nexport const arrayCallbackFunctions = defineFunctions(fn => {\n for (const [name, description] of [\n ['arrayMap', 'Retorna um array com o resultado da expressão para cada item.'],\n ['arrayFilter', 'Retorna os itens cuja expressão é verdadeira.'],\n ['arraySome', 'Retorna true no primeiro item com expressão verdadeira; false se nenhum.'],\n ['arrayEvery', 'Retorna false no primeiro item com expressão falsa; true se todos, inclusive array vazio.'],\n ['arrayFind', 'Retorna o primeiro item com expressão verdadeira, ou null se ausente.'],\n ] as const) {\n fn(name, 'language', 2, 2, '[array;expressão]', `${description} Usa $loopValue/$loopIndex; máximo 1000 itens.`, async c => {\n const values = await items(c);\n return withLoopState(c, async () => {\n const result: unknown[] = [];\n for (let index = 0; index < values.length; index++) {\n iteration(c, values, index);\n const value = await c.fresh(1);\n const matches = truthy(value);\n if (name === 'arraySome' && matches) return true;\n if (name === 'arrayEvery' && !matches) return false;\n if (name === 'arrayFind' && matches) return values[index];\n if (name === 'arrayMap') result.push(value);\n if (name === 'arrayFilter' && matches) result.push(values[index]);\n c.checkOutput(result);\n }\n if (name === 'arraySome') return false;\n if (name === 'arrayEvery') return true;\n if (name === 'arrayFind') return null;\n return result;\n });\n });\n }\n fn('arrayReduce', 'language', 3, 3, '[array;inicial;expressão]', 'Reduz até 1000 itens usando $loopAccumulator, $loopValue e $loopIndex.', async c => {\n const values = await items(c);\n let accumulator = await c.arg(1);\n return withLoopState(c, async () => {\n for (let index = 0; index < values.length; index++) {\n iteration(c, values, index);\n c.ctx.vars.set(LOOP_ACCUMULATOR_KEY, accumulator);\n accumulator = await c.fresh(2);\n c.checkOutput(accumulator);\n }\n return accumulator;\n });\n });\n fn('arraySortBy', 'language', 2, 3, '[array;chave;direção?]', 'Ordena até 1000 itens por chaves de mesmo tipo, texto ou número; calculadas uma vez por item. Asc/desc preservam empates.', async c => {\n const values = await items(c);\n const direction = c.count > 2 ? (await c.text(2)).trim().toLowerCase() : 'asc';\n if (direction !== 'asc' && direction !== 'desc') throw new YuzuhaError('SORT', 'Direção deve ser asc ou desc.');\n return withLoopState(c, async () => {\n const keyed: { value: unknown; key: string | number }[] = [];\n for (let index = 0; index < values.length; index++) {\n iteration(c, values, index);\n const key = await c.fresh(1);\n if (typeof key !== 'string' && (typeof key !== 'number' || !Number.isFinite(key))) {\n throw new YuzuhaError('SORT_KEY', 'Chave de ordenação deve ser texto ou número finito.');\n }\n if (keyed.length && typeof keyed[0]!.key !== typeof key) {\n throw new YuzuhaError('SORT_KEY', 'Chaves de ordenação devem ter o mesmo tipo.');\n }\n keyed.push({ value: values[index], key });\n }\n const sign = direction === 'asc' ? 1 : -1;\n return keyed.sort((a, b) => {\n const left = typeof a.key === 'number' && typeof b.key === 'number' ? a.key : text(a.key);\n const right = typeof a.key === 'number' && typeof b.key === 'number' ? b.key : text(b.key);\n return (left < right ? -1 : left > right ? 1 : 0) * sign;\n }).map(item => item.value);\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/arrays.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc,uDA+HzB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { YuzuhaError } from '../../../errors.js';
|
|
2
2
|
import { toJson } from '../arguments.js';
|
|
3
|
-
import { text } from '../../values.js';
|
|
3
|
+
import { text } from '../../runtime/values.js';
|
|
4
4
|
import { defineFunctions } from '../definition.js';
|
|
5
5
|
import { deepEqual, integer, jsonClone, requireArray, typedScalar } from './common.js';
|
|
6
6
|
function compareValues(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../../src/scripting/builtins/language/arrays.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { toJson } from '../arguments.js';\nimport { text } from '../../values.js';\nimport { defineFunctions } from '../definition.js';\nimport { deepEqual, integer, jsonClone, requireArray, typedScalar } from './common.js';\n\nfunction compareValues(a: unknown, b: unknown): number {\n if (typeof a === 'number' && typeof b === 'number') return a < b ? -1 : a > b ? 1 : 0;\n const left = text(a), right = text(b);\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\nexport const arrayFunctions = defineFunctions(fn => {\n fn('array', 'language', 0, 64, '[valor;...]', 'Monta um array com os valores informados.', async c => {\n const result: unknown[] = [];\n for (let i = 0; i < c.count; i++) result.push(typedScalar(jsonClone(await c.arg(i))));\n return result;\n });\n fn('arrayPush', 'language', 2, 64, '[array;valor;...]', 'Retorna novo array com os valores adicionados.', async c => {\n const base = requireArray(await c.arg(0));\n const result = jsonClone(base) as unknown[];\n for (let i = 1; i < c.count; i++) result.push(typedScalar(jsonClone(await c.arg(i))));\n return result;\n });\n fn('arrayGet', 'language', 2, 3, '[array;índice;padrão?]', 'Obtém item por índice; retorna padrão se ausente.', async c => {\n const base = requireArray(await c.arg(0));\n const index = integer(await c.text(1), 'Índice');\n if (index < 0 || index >= base.length) return c.count > 2 ? await c.arg(2) : '';\n return base[index];\n });\n fn('arrayLength', 'language', 1, 1, '[array]', 'Quantidade de itens do array.', async c => requireArray(await c.arg(0)).length);\n fn('arraySlice', 'language', 2, 3, '[array;início;fim?]', 'Fatia do array; fim exclusivo.', async c => {\n const base = requireArray(await c.arg(0));\n const start = integer(await c.text(1), 'Início');\n const end = c.count > 2 ? integer(await c.text(2), 'Fim') : base.length;\n if (start < 0 || start > base.length) throw new YuzuhaError('INDEX', 'Início fora do intervalo.');\n if (end < start || end > base.length) throw new YuzuhaError('INDEX', 'Fim fora do intervalo.');\n return base.slice(start, end);\n });\n fn('arrayIncludes', 'language', 2, 2, '[array;valor]', 'Verifica se o array contém o valor.', async c => {\n const base = requireArray(await c.arg(0));\n const target = typedScalar(toJson(await c.arg(1)));\n return base.some(item => deepEqual(item, target));\n });\n fn('arrayIndexOf', 'language', 2, 2, '[array;valor]', 'Posição da primeira ocorrência, ou -1.', async c => {\n const base = requireArray(await c.arg(0));\n const target = typedScalar(toJson(await c.arg(1)));\n return base.findIndex(item => deepEqual(item, target));\n });\n fn('arrayJoin', 'language', 2, 2, '[array;separador]', 'Junta itens convertidos para texto.', async c => {\n const base = requireArray(await c.arg(0));\n const separator = await c.text(1);\n return base.map(item => text(item)).join(separator);\n });\n fn('arraySort', 'language', 1, 2, '[array;direção?]', 'Ordena cópia do array; direção asc ou desc.', async c => {\n const base = requireArray(await c.arg(0));\n const direction = c.count > 1 ? (await c.text(1)).trim().toLowerCase() : 'asc';\n if (direction !== 'asc' && direction !== 'desc') throw new YuzuhaError('SORT', 'Direção deve ser asc ou desc.');\n const result = [...base].sort(compareValues);\n if (direction === 'desc') result.reverse();\n return result;\n });\n fn('arrayReverse', 'language', 1, 1, '[array]', 'Retorna cópia invertida do array.', async c => [...requireArray(await c.arg(0))].reverse());\n fn('arrayUnique', 'language', 1, 1, '[array]', 'Remove duplicados, mantendo a primeira ocorrência.', async c => {\n const base = requireArray(await c.arg(0));\n const result: unknown[] = [];\n const primitives = new Set<unknown>(), objects: unknown[] = [];\n const negativeZero = Symbol();\n for (const item of base) {\n if (item !== null && typeof item === 'object') {\n if (objects.some(known => deepEqual(known, item))) continue;\n objects.push(item);\n } else {\n const key = Object.is(item, -0) ? negativeZero : item;\n if (primitives.has(key)) continue;\n primitives.add(key);\n }\n result.push(item);\n }\n return result;\n });\n for (const operation of ['Union', 'Intersection', 'Difference'] as const) {\n const descriptions = {\n Union: 'União sem duplicados; preserva a ordem da primeira ocorrência.',\n Intersection: 'Itens únicos do primeiro array presentes no segundo.',\n Difference: 'Itens únicos do primeiro array ausentes do segundo.',\n };\n fn(`array${operation}`, 'language', 2, 2, '[array;outroArray]', descriptions[operation] + ' Máximo de 1000 itens somados.', async c => {\n const left = requireArray(await c.arg(0)), right = requireArray(await c.arg(1));\n if (left.length + right.length > 1000) throw new YuzuhaError('ARRAY_SET', 'Operações de conjuntos aceitam até 1000 itens somados.');\n const result: unknown[] = [];\n for (const item of operation === 'Union' ? [...left, ...right] : left) {\n if (result.some(known => deepEqual(known, item))) continue;\n const contains = operation === 'Union' || right.some(known => deepEqual(known, item));\n if (operation === 'Difference' ? !contains : contains) result.push(item);\n }\n return result;\n });\n }\n fn('range', 'language', 2, 3, '[início;fim;passo?]', 'Sequência de números; no máximo 1000 itens.', async c => {\n const start = integer(await c.text(0), 'Início');\n const end = integer(await c.text(1), 'Fim');\n const step = c.count > 2 ? integer(await c.text(2), 'Passo') : start <= end ? 1 : -1;\n if (step === 0) throw new YuzuhaError('RANGE', 'Passo não pode ser zero.');\n if ((step > 0 && start > end) || (step < 0 && start < end)) throw new YuzuhaError('RANGE', 'Intervalo vazio para o passo informado.');\n const size = (BigInt(end) - BigInt(start)) / BigInt(step) + 1n;\n if (size > 1000n) throw new YuzuhaError('RANGE', 'Intervalo excede 1000 itens.');\n return Array.from({ length: Number(size) }, (_, index) => Number(BigInt(start) + BigInt(index) * BigInt(step)));\n });\n fn('paginate', 'language', 3, 3, '[array;página;tamanho]', 'Página 1-based do array.', async c => {\n const base = requireArray(await c.arg(0));\n const page = integer(await c.text(1), 'Página');\n const size = integer(await c.text(2), 'Tamanho');\n if (page < 1) throw new YuzuhaError('PAGINATE', 'Página começa em 1.');\n if (size < 1) throw new YuzuhaError('PAGINATE', 'Tamanho deve ser ao menos 1.');\n return base.slice((page - 1) * size, page * size);\n });\n fn('arrayConcat', 'language', 1, 64, '[array;...]', 'Concatena arrays sem alterar os originais.', async c => {\n const result: unknown[] = [];\n for (let index = 0; index < c.count; index++) {\n for (const item of requireArray(await c.arg(index))) result.push(item);\n c.checkOutput(result);\n }\n return result;\n });\n fn('arrayFlat', 'language', 1, 2, '[array;profundidade?]', 'Achata arrays; profundidade inteira entre 0 e 64.', async c => {\n const items = requireArray(await c.arg(0));\n const depth = c.count > 1 ? integer(await c.text(1), 'Profundidade') : 1;\n if (depth < 0 || depth > 64) throw new YuzuhaError('ARRAY_DEPTH', 'Profundidade deve estar entre 0 e 64.');\n return items.flat(depth);\n });\n fn('arrayChunk', 'language', 2, 2, '[array;tamanho]', 'Divide array em grupos do tamanho indicado.', async c => {\n const items = requireArray(await c.arg(0));\n const size = integer(await c.text(1), 'Tamanho');\n if (size < 1) throw new YuzuhaError('ARRAY_CHUNK', 'Tamanho deve ser ao menos 1.');\n const result: unknown[][] = [];\n for (let index = 0; index < items.length; index += size) result.push(items.slice(index, index + size));\n return result;\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/arrays.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { toJson } from '../arguments.js';\nimport { text } from '../../runtime/values.js';\nimport { defineFunctions } from '../definition.js';\nimport { deepEqual, integer, jsonClone, requireArray, typedScalar } from './common.js';\n\nfunction compareValues(a: unknown, b: unknown): number {\n if (typeof a === 'number' && typeof b === 'number') return a < b ? -1 : a > b ? 1 : 0;\n const left = text(a), right = text(b);\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\nexport const arrayFunctions = defineFunctions(fn => {\n fn('array', 'language', 0, 64, '[valor;...]', 'Monta um array com os valores informados.', async c => {\n const result: unknown[] = [];\n for (let i = 0; i < c.count; i++) result.push(typedScalar(jsonClone(await c.arg(i))));\n return result;\n });\n fn('arrayPush', 'language', 2, 64, '[array;valor;...]', 'Retorna novo array com os valores adicionados.', async c => {\n const base = requireArray(await c.arg(0));\n const result = jsonClone(base) as unknown[];\n for (let i = 1; i < c.count; i++) result.push(typedScalar(jsonClone(await c.arg(i))));\n return result;\n });\n fn('arrayGet', 'language', 2, 3, '[array;índice;padrão?]', 'Obtém item por índice; retorna padrão se ausente.', async c => {\n const base = requireArray(await c.arg(0));\n const index = integer(await c.text(1), 'Índice');\n if (index < 0 || index >= base.length) return c.count > 2 ? await c.arg(2) : '';\n return base[index];\n });\n fn('arrayLength', 'language', 1, 1, '[array]', 'Quantidade de itens do array.', async c => requireArray(await c.arg(0)).length);\n fn('arraySlice', 'language', 2, 3, '[array;início;fim?]', 'Fatia do array; fim exclusivo.', async c => {\n const base = requireArray(await c.arg(0));\n const start = integer(await c.text(1), 'Início');\n const end = c.count > 2 ? integer(await c.text(2), 'Fim') : base.length;\n if (start < 0 || start > base.length) throw new YuzuhaError('INDEX', 'Início fora do intervalo.');\n if (end < start || end > base.length) throw new YuzuhaError('INDEX', 'Fim fora do intervalo.');\n return base.slice(start, end);\n });\n fn('arrayIncludes', 'language', 2, 2, '[array;valor]', 'Verifica se o array contém o valor.', async c => {\n const base = requireArray(await c.arg(0));\n const target = typedScalar(toJson(await c.arg(1)));\n return base.some(item => deepEqual(item, target));\n });\n fn('arrayIndexOf', 'language', 2, 2, '[array;valor]', 'Posição da primeira ocorrência, ou -1.', async c => {\n const base = requireArray(await c.arg(0));\n const target = typedScalar(toJson(await c.arg(1)));\n return base.findIndex(item => deepEqual(item, target));\n });\n fn('arrayJoin', 'language', 2, 2, '[array;separador]', 'Junta itens convertidos para texto.', async c => {\n const base = requireArray(await c.arg(0));\n const separator = await c.text(1);\n return base.map(item => text(item)).join(separator);\n });\n fn('arraySort', 'language', 1, 2, '[array;direção?]', 'Ordena cópia do array; direção asc ou desc.', async c => {\n const base = requireArray(await c.arg(0));\n const direction = c.count > 1 ? (await c.text(1)).trim().toLowerCase() : 'asc';\n if (direction !== 'asc' && direction !== 'desc') throw new YuzuhaError('SORT', 'Direção deve ser asc ou desc.');\n const result = [...base].sort(compareValues);\n if (direction === 'desc') result.reverse();\n return result;\n });\n fn('arrayReverse', 'language', 1, 1, '[array]', 'Retorna cópia invertida do array.', async c => [...requireArray(await c.arg(0))].reverse());\n fn('arrayUnique', 'language', 1, 1, '[array]', 'Remove duplicados, mantendo a primeira ocorrência.', async c => {\n const base = requireArray(await c.arg(0));\n const result: unknown[] = [];\n const primitives = new Set<unknown>(), objects: unknown[] = [];\n const negativeZero = Symbol();\n for (const item of base) {\n if (item !== null && typeof item === 'object') {\n if (objects.some(known => deepEqual(known, item))) continue;\n objects.push(item);\n } else {\n const key = Object.is(item, -0) ? negativeZero : item;\n if (primitives.has(key)) continue;\n primitives.add(key);\n }\n result.push(item);\n }\n return result;\n });\n for (const operation of ['Union', 'Intersection', 'Difference'] as const) {\n const descriptions = {\n Union: 'União sem duplicados; preserva a ordem da primeira ocorrência.',\n Intersection: 'Itens únicos do primeiro array presentes no segundo.',\n Difference: 'Itens únicos do primeiro array ausentes do segundo.',\n };\n fn(`array${operation}`, 'language', 2, 2, '[array;outroArray]', descriptions[operation] + ' Máximo de 1000 itens somados.', async c => {\n const left = requireArray(await c.arg(0)), right = requireArray(await c.arg(1));\n if (left.length + right.length > 1000) throw new YuzuhaError('ARRAY_SET', 'Operações de conjuntos aceitam até 1000 itens somados.');\n const result: unknown[] = [];\n for (const item of operation === 'Union' ? [...left, ...right] : left) {\n if (result.some(known => deepEqual(known, item))) continue;\n const contains = operation === 'Union' || right.some(known => deepEqual(known, item));\n if (operation === 'Difference' ? !contains : contains) result.push(item);\n }\n return result;\n });\n }\n fn('range', 'language', 2, 3, '[início;fim;passo?]', 'Sequência de números; no máximo 1000 itens.', async c => {\n const start = integer(await c.text(0), 'Início');\n const end = integer(await c.text(1), 'Fim');\n const step = c.count > 2 ? integer(await c.text(2), 'Passo') : start <= end ? 1 : -1;\n if (step === 0) throw new YuzuhaError('RANGE', 'Passo não pode ser zero.');\n if ((step > 0 && start > end) || (step < 0 && start < end)) throw new YuzuhaError('RANGE', 'Intervalo vazio para o passo informado.');\n const size = (BigInt(end) - BigInt(start)) / BigInt(step) + 1n;\n if (size > 1000n) throw new YuzuhaError('RANGE', 'Intervalo excede 1000 itens.');\n return Array.from({ length: Number(size) }, (_, index) => Number(BigInt(start) + BigInt(index) * BigInt(step)));\n });\n fn('paginate', 'language', 3, 3, '[array;página;tamanho]', 'Página 1-based do array.', async c => {\n const base = requireArray(await c.arg(0));\n const page = integer(await c.text(1), 'Página');\n const size = integer(await c.text(2), 'Tamanho');\n if (page < 1) throw new YuzuhaError('PAGINATE', 'Página começa em 1.');\n if (size < 1) throw new YuzuhaError('PAGINATE', 'Tamanho deve ser ao menos 1.');\n return base.slice((page - 1) * size, page * size);\n });\n fn('arrayConcat', 'language', 1, 64, '[array;...]', 'Concatena arrays sem alterar os originais.', async c => {\n const result: unknown[] = [];\n for (let index = 0; index < c.count; index++) {\n for (const item of requireArray(await c.arg(index))) result.push(item);\n c.checkOutput(result);\n }\n return result;\n });\n fn('arrayFlat', 'language', 1, 2, '[array;profundidade?]', 'Achata arrays; profundidade inteira entre 0 e 64.', async c => {\n const items = requireArray(await c.arg(0));\n const depth = c.count > 1 ? integer(await c.text(1), 'Profundidade') : 1;\n if (depth < 0 || depth > 64) throw new YuzuhaError('ARRAY_DEPTH', 'Profundidade deve estar entre 0 e 64.');\n return items.flat(depth);\n });\n fn('arrayChunk', 'language', 2, 2, '[array;tamanho]', 'Divide array em grupos do tamanho indicado.', async c => {\n const items = requireArray(await c.arg(0));\n const size = integer(await c.text(1), 'Tamanho');\n if (size < 1) throw new YuzuhaError('ARRAY_CHUNK', 'Tamanho deve ser ao menos 1.');\n const result: unknown[][] = [];\n for (let index = 0; index < items.length; index += size) result.push(items.slice(index, index + size));\n return result;\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAGnD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAczD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAU,GAAG,MAAM,CAI5D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAU,GAAG,MAAM,CAIjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/common.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonValue } from '../../../domain/state.js';\nimport { YuzuhaError } from '../../../errors.js';\nimport { toJson } from '../arguments.js';\n\nexport function jsonClone(value: unknown): JsonValue {\n if (value === undefined) return null;\n return toJson(value);\n}\n\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== typeof b) return false;\n if (a !== null && b !== null && typeof a === 'object') {\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n return a.every((item, index) => deepEqual(item, b[index]));\n }\n const left = a as Record<string, unknown>, right = b as Record<string, unknown>;\n const keys = Object.keys(left);\n if (keys.length !== Object.keys(right).length) return false;\n return keys.every(key => Object.hasOwn(right, key) && deepEqual(left[key], right[key]));\n }\n return false;\n}\n\nexport function integer(raw: string, label = 'Valor'): number {\n const value = Number(raw);\n if (!raw.trim() || !Number.isSafeInteger(value)) throw new YuzuhaError('INDEX', `${label} deve ser um número inteiro.`);\n return value;\n}\n\nexport function finiteNumber(raw: string, label = 'Valor'): number {\n const value = Number(raw);\n if (!raw.trim() || !Number.isFinite(value)) throw new YuzuhaError('NUMBER', `${label} deve ser um número válido.`);\n return value;\n}\n\nexport function requireArray(value: unknown): unknown[] {\n if (!Array.isArray(value)) throw new YuzuhaError('ARRAY', 'Valor deve ser um array.');\n return value;\n}\n\n/**\n * Converte escalares textuais exatos em números, booleanos ou null.\n * Aplicado apenas a estruturas de dados ($array, $object, push/pull), onde\n * literais como 1 e true devem preservar o tipo no JSON.\n */\nexport function typedScalar(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n if (value === 'true') return true;\n if (value === 'false') return false;\n if (value === 'null') return null;\n if (/^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/.test(value)) {\n const number = Number(value);\n if (Number.isFinite(number) && String(number) === value) return number;\n }\n return value;\n}\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimals.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/decimals.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,uDAK3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decimals.js","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"decimals.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/decimals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE;IACnD,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,uBAAuB,EAAE,+HAA+H,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAClM,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3H,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,iEAAiE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChL,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,sFAAsF,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7N,CAAC,CAAC,CAAC","sourcesContent":["import { decimal, decimalCompare, decimalRound } from '../../../domain/decimal.js';\nimport { defineFunctions } from '../definition.js';\nimport { integer } from './common.js';\n\nexport const decimalFunctions = defineFunctions(fn => {\n fn('decimal', 'language', 3, 4, '[a;operador;b;casas?]', 'Aritmética decimal exata em texto, até 1000 dígitos; divisão usa 18 casas por padrão e empates arredondam para longe de zero.', async c =>\n decimal(await c.text(0), await c.text(1), await c.text(2), c.count > 3 ? integer(await c.text(3), 'Casas') : undefined));\n fn('decimalCompare', 'language', 2, 2, '[a;b]', 'Compara decimais sem conversão para Number; retorna -1, 0 ou 1.', async c => decimalCompare(await c.text(0), await c.text(1)));\n fn('decimalRound', 'language', 2, 2, '[valor;casas]', 'Arredonda decimal em texto; empates para longe de zero e zeros finais são removidos.', async c => decimalRound(await c.text(0), integer(await c.text(1), 'Casas')));\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAYjE,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAWjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD,GAAG,eAAe;IAClB,GAAG,cAAc;IACjB,GAAG,sBAAsB;IACzB,GAAG,mBAAmB;IACtB,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,mBAAmB;IACtB,GAAG,gBAAgB;IACnB,GAAG,aAAa;IAChB,GAAG,cAAc;CAClB,CAAC","sourcesContent":["import type { FunctionDefinition } from '../../runtime/types.js';\nimport { arrayFunctions } from './arrays.js';\nimport { arrayCallbackFunctions } from './array-callbacks.js';\nimport { loopFunctions } from './loops.js';\nimport { numberDateFunctions } from './numbers.js';\nimport { objectFunctions } from './objects.js';\nimport { stateFunctions } from './state.js';\nimport { textFunctions } from './texts.js';\nimport { comparatorFunctions } from './sort.js';\nimport { decimalFunctions } from './decimals.js';\nimport { regexFunctions } from './regex.js';\n\nexport const languageFunctions: FunctionDefinition[] = [\n ...objectFunctions,\n ...arrayFunctions,\n ...arrayCallbackFunctions,\n ...comparatorFunctions,\n ...textFunctions,\n ...regexFunctions,\n ...numberDateFunctions,\n ...decimalFunctions,\n ...loopFunctions,\n ...stateFunctions,\n];\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FunctionCall } from '../../runtime/types.js';
|
|
2
|
+
export declare function withLoopState<T>(c: FunctionCall, run: () => Promise<T>): Promise<T>;
|
|
3
|
+
export declare const loopFunctions: import("../../runtime/types.js").FunctionDefinition[];
|
|
4
|
+
//# sourceMappingURL=loops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loops.d.ts","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"loops.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/loops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAgB3D,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzF;AAiBD,eAAO,MAAM,aAAa,uDA8ExB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { YuzuhaError } from '../../../errors.js';
|
|
2
|
-
import { text } from '../../values.js';
|
|
3
|
-
import { truthy } from '../../values.js';
|
|
4
|
-
import { loopFrame, setLoopFrame, LoopControl } from '../../control-flow.js';
|
|
2
|
+
import { text } from '../../runtime/values.js';
|
|
3
|
+
import { truthy } from '../../runtime/values.js';
|
|
4
|
+
import { loopFrame, setLoopFrame, LoopControl } from '../../runtime/control-flow.js';
|
|
5
5
|
import { defineFunctions } from '../definition.js';
|
|
6
6
|
import { integer, requireArray } from './common.js';
|
|
7
7
|
import { LOOP_ACCUMULATOR_KEY, LOOP_INDEX_KEY, LOOP_MAX, LOOP_VALUE_KEY } from './state.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../../src/scripting/builtins/language/loops.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { text } from '../../values.js';\nimport { truthy } from '../../values.js';\nimport { loopFrame, setLoopFrame, LoopControl } from '../../control-flow.js';\nimport { defineFunctions } from '../definition.js';\nimport type { FunctionCall } from '../../types.js';\nimport { integer, requireArray } from './common.js';\nimport { LOOP_ACCUMULATOR_KEY, LOOP_INDEX_KEY, LOOP_MAX, LOOP_VALUE_KEY } from './state.js';\n\nfunction snapshot(vars: Map<string, unknown>): Map<string, unknown> {\n return new Map([LOOP_INDEX_KEY, LOOP_VALUE_KEY, LOOP_ACCUMULATOR_KEY]\n .filter(key => vars.has(key)).map(key => [key, vars.get(key)]));\n}\n\nfunction restore(vars: Map<string, unknown>, saved: ReturnType<typeof snapshot>): void {\n for (const key of [LOOP_INDEX_KEY, LOOP_VALUE_KEY, LOOP_ACCUMULATOR_KEY]) {\n if (saved.has(key)) vars.set(key, saved.get(key));\n else vars.delete(key);\n }\n}\n\nexport async function withLoopState<T>(c: FunctionCall, run: () => Promise<T>): Promise<T> {\n const saved = snapshot(c.ctx.vars);\n const frame = loopFrame(c.ctx);\n // Array callbacks have their own scope but are not break/continue targets.\n setLoopFrame(c.ctx, undefined);\n try { return await run(); }\n finally { restore(c.ctx.vars, saved); setLoopFrame(c.ctx, frame); }\n}\n\n/** Corpo pode ocupar vários argumentos; todos são reavaliados por iteração. */\nasync function runBody(c: FunctionCall, frame: object): Promise<{ value: string; stop: boolean }> {\n let result = '';\n try {\n for (let i = 1; i < c.count; i++) {\n result += text(await c.fresh(i));\n c.checkOutput(result);\n }\n } catch (error) {\n if (!(error instanceof LoopControl) || error.frame !== frame) throw error;\n return { value: result, stop: error.action === 'break' };\n }\n return { value: result, stop: false };\n}\n\nexport const loopFunctions = defineFunctions(fn => {\n for (const action of ['break', 'continue'] as const) {\n fn(action, 'language', 0, 0, '', action === 'break' ? 'Encerra o loop mais próximo; exige corpo de repeat, forEach ou while.' : 'Avança para a próxima iteração do loop mais próximo.', c => {\n const frame = loopFrame(c.ctx);\n if (typeof frame !== 'object' || frame === null) throw new YuzuhaError('LOOP_CONTEXT', `$${action} exige um corpo de loop ativo.`);\n throw new LoopControl(frame, action);\n });\n }\n fn('while', 'language', 2, 32, '[condição;corpo;...]', 'Reavalia condição e corpo; máximo 1000 iterações, com cancelamento e orçamento compartilhados.', async c => {\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let index = 0; ; index++) {\n setLoopFrame(c.ctx, undefined);\n c.ctx.vars.set(LOOP_INDEX_KEY, index);\n c.ctx.vars.delete(LOOP_VALUE_KEY);\n if (!truthy(await c.fresh(0))) return result;\n if (index === LOOP_MAX) throw new YuzuhaError('EXECUTION_LIMIT', `Loop excede ${LOOP_MAX} iterações.`);\n setLoopFrame(c.ctx, frame);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) return result;\n }\n } finally { restore(c.ctx.vars, saved); setLoopFrame(c.ctx, previousFrame); }\n });\n fn('repeat', 'language', 2, 32, '[vezes;corpo;...]', 'Repete o corpo reavaliando a cada iteração; retorna a concatenação.', async c => {\n const times = integer(await c.text(0), 'Vezes');\n if (times < 0) throw new YuzuhaError('REPEAT_COUNT', 'Vezes deve ser ao menos 0.');\n if (times > LOOP_MAX) throw new YuzuhaError('REPEAT_COUNT', `Vezes excede o limite de ${LOOP_MAX}.`);\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let i = 0; i < times; i++) {\n setLoopFrame(c.ctx, frame);\n c.ctx.vars.set(LOOP_INDEX_KEY, i);\n c.ctx.vars.delete(LOOP_VALUE_KEY);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) break;\n }\n return result;\n } finally {\n restore(c.ctx.vars, saved);\n setLoopFrame(c.ctx, previousFrame);\n }\n });\n fn('forEach', 'language', 2, 32, '[array;corpo;...]', 'Concatena o corpo para cada item, com $loopValue e $loopIndex.', async c => {\n const items = requireArray(await c.arg(0));\n if (items.length > LOOP_MAX) throw new YuzuhaError('FOREACH', `Array excede o limite de ${LOOP_MAX} itens.`);\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let i = 0; i < items.length; i++) {\n setLoopFrame(c.ctx, frame);\n c.ctx.vars.set(LOOP_INDEX_KEY, i);\n c.ctx.vars.set(LOOP_VALUE_KEY, items[i]);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) break;\n }\n return result;\n } finally {\n restore(c.ctx.vars, saved);\n setLoopFrame(c.ctx, previousFrame);\n }\n });\n fn('loopIndex', 'language', 0, 0, '', 'Índice da iteração atual; vazio fora de loops.', c => c.ctx.vars.get(LOOP_INDEX_KEY) ?? '');\n fn('loopValue', 'language', 0, 0, '', 'Valor da iteração atual; vazio fora de loops.', c => c.ctx.vars.has(LOOP_VALUE_KEY) ? c.ctx.vars.get(LOOP_VALUE_KEY) : '');\n fn('loopAccumulator', 'language', 0, 0, '', 'Acumulador atual de $arrayReduce; vazio fora da redução.', c => c.ctx.vars.has(LOOP_ACCUMULATOR_KEY) ? c.ctx.vars.get(LOOP_ACCUMULATOR_KEY) : '');\n});\n"]}
|
|
1
|
+
{"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/loops.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { text } from '../../runtime/values.js';\nimport { truthy } from '../../runtime/values.js';\nimport { loopFrame, setLoopFrame, LoopControl } from '../../runtime/control-flow.js';\nimport { defineFunctions } from '../definition.js';\nimport type { FunctionCall } from '../../runtime/types.js';\nimport { integer, requireArray } from './common.js';\nimport { LOOP_ACCUMULATOR_KEY, LOOP_INDEX_KEY, LOOP_MAX, LOOP_VALUE_KEY } from './state.js';\n\nfunction snapshot(vars: Map<string, unknown>): Map<string, unknown> {\n return new Map([LOOP_INDEX_KEY, LOOP_VALUE_KEY, LOOP_ACCUMULATOR_KEY]\n .filter(key => vars.has(key)).map(key => [key, vars.get(key)]));\n}\n\nfunction restore(vars: Map<string, unknown>, saved: ReturnType<typeof snapshot>): void {\n for (const key of [LOOP_INDEX_KEY, LOOP_VALUE_KEY, LOOP_ACCUMULATOR_KEY]) {\n if (saved.has(key)) vars.set(key, saved.get(key));\n else vars.delete(key);\n }\n}\n\nexport async function withLoopState<T>(c: FunctionCall, run: () => Promise<T>): Promise<T> {\n const saved = snapshot(c.ctx.vars);\n const frame = loopFrame(c.ctx);\n // Array callbacks have their own scope but are not break/continue targets.\n setLoopFrame(c.ctx, undefined);\n try { return await run(); }\n finally { restore(c.ctx.vars, saved); setLoopFrame(c.ctx, frame); }\n}\n\n/** Corpo pode ocupar vários argumentos; todos são reavaliados por iteração. */\nasync function runBody(c: FunctionCall, frame: object): Promise<{ value: string; stop: boolean }> {\n let result = '';\n try {\n for (let i = 1; i < c.count; i++) {\n result += text(await c.fresh(i));\n c.checkOutput(result);\n }\n } catch (error) {\n if (!(error instanceof LoopControl) || error.frame !== frame) throw error;\n return { value: result, stop: error.action === 'break' };\n }\n return { value: result, stop: false };\n}\n\nexport const loopFunctions = defineFunctions(fn => {\n for (const action of ['break', 'continue'] as const) {\n fn(action, 'language', 0, 0, '', action === 'break' ? 'Encerra o loop mais próximo; exige corpo de repeat, forEach ou while.' : 'Avança para a próxima iteração do loop mais próximo.', c => {\n const frame = loopFrame(c.ctx);\n if (typeof frame !== 'object' || frame === null) throw new YuzuhaError('LOOP_CONTEXT', `$${action} exige um corpo de loop ativo.`);\n throw new LoopControl(frame, action);\n });\n }\n fn('while', 'language', 2, 32, '[condição;corpo;...]', 'Reavalia condição e corpo; máximo 1000 iterações, com cancelamento e orçamento compartilhados.', async c => {\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let index = 0; ; index++) {\n setLoopFrame(c.ctx, undefined);\n c.ctx.vars.set(LOOP_INDEX_KEY, index);\n c.ctx.vars.delete(LOOP_VALUE_KEY);\n if (!truthy(await c.fresh(0))) return result;\n if (index === LOOP_MAX) throw new YuzuhaError('EXECUTION_LIMIT', `Loop excede ${LOOP_MAX} iterações.`);\n setLoopFrame(c.ctx, frame);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) return result;\n }\n } finally { restore(c.ctx.vars, saved); setLoopFrame(c.ctx, previousFrame); }\n });\n fn('repeat', 'language', 2, 32, '[vezes;corpo;...]', 'Repete o corpo reavaliando a cada iteração; retorna a concatenação.', async c => {\n const times = integer(await c.text(0), 'Vezes');\n if (times < 0) throw new YuzuhaError('REPEAT_COUNT', 'Vezes deve ser ao menos 0.');\n if (times > LOOP_MAX) throw new YuzuhaError('REPEAT_COUNT', `Vezes excede o limite de ${LOOP_MAX}.`);\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let i = 0; i < times; i++) {\n setLoopFrame(c.ctx, frame);\n c.ctx.vars.set(LOOP_INDEX_KEY, i);\n c.ctx.vars.delete(LOOP_VALUE_KEY);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) break;\n }\n return result;\n } finally {\n restore(c.ctx.vars, saved);\n setLoopFrame(c.ctx, previousFrame);\n }\n });\n fn('forEach', 'language', 2, 32, '[array;corpo;...]', 'Concatena o corpo para cada item, com $loopValue e $loopIndex.', async c => {\n const items = requireArray(await c.arg(0));\n if (items.length > LOOP_MAX) throw new YuzuhaError('FOREACH', `Array excede o limite de ${LOOP_MAX} itens.`);\n const saved = snapshot(c.ctx.vars);\n const previousFrame = loopFrame(c.ctx);\n const frame = {};\n let result = '';\n try {\n for (let i = 0; i < items.length; i++) {\n setLoopFrame(c.ctx, frame);\n c.ctx.vars.set(LOOP_INDEX_KEY, i);\n c.ctx.vars.set(LOOP_VALUE_KEY, items[i]);\n const part = await runBody(c, frame);\n result += part.value;\n c.checkOutput(result);\n if (part.stop) break;\n }\n return result;\n } finally {\n restore(c.ctx.vars, saved);\n setLoopFrame(c.ctx, previousFrame);\n }\n });\n fn('loopIndex', 'language', 0, 0, '', 'Índice da iteração atual; vazio fora de loops.', c => c.ctx.vars.get(LOOP_INDEX_KEY) ?? '');\n fn('loopValue', 'language', 0, 0, '', 'Valor da iteração atual; vazio fora de loops.', c => c.ctx.vars.has(LOOP_VALUE_KEY) ? c.ctx.vars.get(LOOP_VALUE_KEY) : '');\n fn('loopAccumulator', 'language', 0, 0, '', 'Acumulador atual de $arrayReduce; vazio fora da redução.', c => c.ctx.vars.has(LOOP_ACCUMULATOR_KEY) ? c.ctx.vars.get(LOOP_ACCUMULATOR_KEY) : '');\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/numbers.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,mBAAmB,uDA8G9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/scripting/builtins/language/numbers.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { defineFunctions } from '../definition.js';\nimport { finiteNumber, integer } from './common.js';\n\nfunction roundTo(value: number, places: number): number {\n const factor = 10 ** places;\n return Math.round(value * factor) / factor;\n}\n\nfunction parseMoment(raw: string): number {\n const trimmed = raw.trim();\n if (trimmed === '') return Date.now();\n const timestamp = Number(trimmed);\n if (!Number.isFinite(timestamp)) throw new YuzuhaError('DATE', 'Timestamp deve ser um número em milissegundos.');\n return timestamp;\n}\n\nfunction dateParts(value: Date, locale: string): { date: string; time: string; datetime: string } {\n const date = new Intl.DateTimeFormat(locale, { dateStyle: 'short' }).format(value);\n const time = new Intl.DateTimeFormat(locale, { timeStyle: 'medium' }).format(value);\n const datetime = new Intl.DateTimeFormat(locale, { dateStyle: 'short', timeStyle: 'medium' }).format(value);\n return { date, time, datetime };\n}\n\nexport const numberDateFunctions = defineFunctions(fn => {\n fn('round', 'language', 1, 2, '[valor;casas?]', 'Arredonda com casas decimais.', async c => {\n const value = finiteNumber(await c.text(0));\n const places = c.count > 1 ? integer(await c.text(1), 'Casas') : 0;\n if (places < 0 || places > 100) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 100.');\n return roundTo(value, places);\n });\n fn('floor', 'language', 1, 1, '[valor]', 'Arredonda para baixo.', async c => Math.floor(finiteNumber(await c.text(0))));\n fn('ceil', 'language', 1, 1, '[valor]', 'Arredonda para cima.', async c => Math.ceil(finiteNumber(await c.text(0))));\n fn('abs', 'language', 1, 1, '[valor]', 'Valor absoluto.', async c => Math.abs(finiteNumber(await c.text(0))));\n fn('clamp', 'language', 3, 3, '[valor;mínimo;máximo]', 'Limita valor ao intervalo.', async c => {\n const value = finiteNumber(await c.text(0));\n const min = finiteNumber(await c.text(1), 'Mínimo');\n const max = finiteNumber(await c.text(2), 'Máximo');\n if (min > max) throw new YuzuhaError('NUMBER', 'Mínimo não pode ser maior que o máximo.');\n return Math.min(max, Math.max(min, value));\n });\n fn('fixed', 'language', 1, 2, '[valor;casas?]', 'Texto com casas decimais fixas.', async c => {\n const value = finiteNumber(await c.text(0));\n const places = c.count > 1 ? integer(await c.text(1), 'Casas') : 0;\n if (places < 0 || places > 100) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 100.');\n return value.toFixed(places);\n });\n fn('formatNumber', 'language', 1, 2, '[valor;local?]', 'Formata número para o local informado.', async c => {\n const value = finiteNumber(await c.text(0));\n const locale = c.count > 1 ? (await c.text(1)).trim() || 'pt-BR' : 'pt-BR';\n try {\n return new Intl.NumberFormat(locale).format(value);\n } catch (cause) {\n throw new YuzuhaError('NUMBER', 'Local inválido.', { cause });\n }\n });\n fn('formatBytes', 'language', 1, 3, '[bytes;casas?;base?]', 'Formata bytes não negativos; casas 0–6, base 1024 (KiB) ou 1000 (kB).', async c => {\n const bytes = finiteNumber(await c.text(0), 'Bytes');\n if (!Number.isSafeInteger(bytes) || bytes < 0) throw new YuzuhaError('NUMBER', 'Bytes deve ser um inteiro não negativo seguro.');\n const places = decimalPlaces(c.count > 1 ? await c.text(1) : '2');\n const base = c.count > 2 ? integer(await c.text(2), 'Base') : 1024;\n if (base !== 1000 && base !== 1024) throw new YuzuhaError('NUMBER', 'Base de bytes deve ser 1000 ou 1024.');\n const units = base === 1024 ? ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'] : ['B', 'kB', 'MB', 'GB', 'TB', 'PB'];\n let scaled = bytes, unit = 0;\n while (scaled >= base && unit < units.length - 1) { scaled /= base; unit++; }\n return `${Number(scaled.toFixed(places))} ${units[unit]}`;\n });\n fn('percent', 'language', 2, 3, '[parte;total;casas?]', 'Formata parte/total × 100 com %; total positivo, casas 0–6 (padrão 2).', async c => {\n const part = finiteNumber(await c.text(0), 'Parte'), total = finiteNumber(await c.text(1), 'Total');\n if (total <= 0) throw new YuzuhaError('NUMBER', 'Total deve ser positivo.');\n const value = part / total * 100;\n if (!Number.isFinite(value)) throw new YuzuhaError('NUMBER', 'Percentual fora do intervalo finito.');\n return `${value.toFixed(decimalPlaces(c.count > 2 ? await c.text(2) : '2'))}%`;\n });\n fn('toBase', 'language', 2, 2, '[inteiroDecimal;base]', 'Converte inteiro seguro ou texto decimal exato para base 2–36; até 1024 dígitos de entrada.', async c => {\n const value = await c.arg(0), base = radix(await c.text(1));\n if (typeof value === 'number' && !Number.isSafeInteger(value)) throw new YuzuhaError('BASE', 'Número deve ser um inteiro seguro; use texto para inteiros grandes.');\n if (typeof value !== 'number' && typeof value !== 'string') throw new YuzuhaError('BASE', 'Valor deve ser inteiro ou texto decimal.');\n const digits = String(value);\n if (!/^-?\\d{1,1024}$/.test(digits)) throw new YuzuhaError('BASE', 'Informe um inteiro decimal com até 1024 dígitos, sem prefixos ou espaços.');\n return BigInt(digits).toString(base);\n });\n fn('fromBase', 'language', 2, 2, '[texto;base]', 'Converte texto de base 2–36 para texto decimal exato; até 1024 dígitos, sem prefixos.', async c => {\n const value = await c.arg(0), base = radix(await c.text(1));\n if (typeof value !== 'string' || !/^-?[0-9a-zA-Z]{1,1024}$/.test(value)) throw new YuzuhaError('BASE', 'Informe texto com até 1024 dígitos, sem prefixos ou espaços.');\n const negative = value.startsWith('-'), digits = negative ? value.slice(1) : value;\n let result = 0n;\n for (const digit of digits.toLowerCase()) {\n const index = '0123456789abcdefghijklmnopqrstuvwxyz'.indexOf(digit);\n if (index >= base) throw new YuzuhaError('BASE', `Dígito inválido para base ${base}.`);\n result = result * BigInt(base) + BigInt(index);\n }\n return (negative ? -result : result).toString(10);\n });\n fn('date', 'language', 0, 3, '[timestamp?;formato?;local?]', 'Formata data; timestamp em ms, formato date/time/datetime/iso/relative.', async c => {\n const timestamp = c.count > 0 ? parseMoment(await c.text(0)) : Date.now();\n const format = c.count > 1 ? (await c.text(1)).trim().toLowerCase() || 'iso' : 'iso';\n const locale = c.count > 2 ? (await c.text(2)).trim() || 'pt-BR' : 'pt-BR';\n const value = new Date(timestamp);\n if (Number.isNaN(value.getTime())) throw new YuzuhaError('DATE', 'Data inválida.');\n if (format === 'iso') return value.toISOString();\n if (format === 'date' || format === 'time' || format === 'datetime') {\n try {\n return dateParts(value, locale)[format];\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n }\n if (format === 'relative') {\n try {\n const { amount, unit } = relativeAmount(timestamp);\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(amount, unit);\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n }\n throw new YuzuhaError('DATE', 'Formato deve ser iso, date, time, datetime ou relative.');\n });\n fn('relativeTime', 'language', 1, 2, '[timestamp;local?]', 'Descreve distância até agora, ex. \"há 2 dias\".', async c => {\n const timestamp = parseMoment(await c.text(0));\n const locale = c.count > 1 ? (await c.text(1)).trim() || 'pt-BR' : 'pt-BR';\n try {\n const { amount, unit } = relativeAmount(timestamp);\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(amount, unit);\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n });\n fn('parseDate', 'language', 1, 1, '[texto]', 'Converte texto de data em milissegundos; erro se inválido.', async c => {\n const raw = (await c.text(0)).trim();\n const timestamp = Date.parse(raw);\n if (!raw || Number.isNaN(timestamp)) throw new YuzuhaError('DATE', 'Data inválida.');\n return timestamp;\n });\n});\n\nfunction relativeAmount(timestamp: number): { amount: number; unit: Intl.RelativeTimeFormatUnit } {\n const diff = timestamp - Date.now();\n const abs = Math.abs(diff);\n const table: { unit: Intl.RelativeTimeFormatUnit; ms: number }[] = [\n { unit: 'year', ms: 365 * 24 * 3_600_000 },\n { unit: 'month', ms: 30 * 24 * 3_600_000 },\n { unit: 'day', ms: 24 * 3_600_000 },\n { unit: 'hour', ms: 3_600_000 },\n { unit: 'minute', ms: 60_000 },\n { unit: 'second', ms: 1000 },\n ];\n for (const entry of table) {\n if (abs >= entry.ms || entry.unit === 'second') return { amount: Math.round(diff / entry.ms), unit: entry.unit };\n }\n return { amount: 0, unit: 'second' };\n}\n\nfunction decimalPlaces(raw: string): number {\n const places = integer(raw, 'Casas');\n if (places < 0 || places > 6) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 6.');\n return places;\n}\n\nfunction radix(raw: string): number {\n const base = integer(raw, 'Base');\n if (base < 2 || base > 36) throw new YuzuhaError('BASE', 'Base deve estar entre 2 e 36.');\n return base;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/numbers.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../../errors.js';\nimport { defineFunctions } from '../definition.js';\nimport { finiteNumber, integer } from './common.js';\n\nfunction roundTo(value: number, places: number): number {\n const factor = 10 ** places;\n return Math.round(value * factor) / factor;\n}\n\nfunction parseMoment(raw: string): number {\n const trimmed = raw.trim();\n if (trimmed === '') return Date.now();\n const timestamp = Number(trimmed);\n if (!Number.isFinite(timestamp)) throw new YuzuhaError('DATE', 'Timestamp deve ser um número em milissegundos.');\n return timestamp;\n}\n\nfunction dateParts(value: Date, locale: string): { date: string; time: string; datetime: string } {\n const date = new Intl.DateTimeFormat(locale, { dateStyle: 'short' }).format(value);\n const time = new Intl.DateTimeFormat(locale, { timeStyle: 'medium' }).format(value);\n const datetime = new Intl.DateTimeFormat(locale, { dateStyle: 'short', timeStyle: 'medium' }).format(value);\n return { date, time, datetime };\n}\n\nexport const numberDateFunctions = defineFunctions(fn => {\n fn('round', 'language', 1, 2, '[valor;casas?]', 'Arredonda com casas decimais.', async c => {\n const value = finiteNumber(await c.text(0));\n const places = c.count > 1 ? integer(await c.text(1), 'Casas') : 0;\n if (places < 0 || places > 100) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 100.');\n return roundTo(value, places);\n });\n fn('floor', 'language', 1, 1, '[valor]', 'Arredonda para baixo.', async c => Math.floor(finiteNumber(await c.text(0))));\n fn('ceil', 'language', 1, 1, '[valor]', 'Arredonda para cima.', async c => Math.ceil(finiteNumber(await c.text(0))));\n fn('abs', 'language', 1, 1, '[valor]', 'Valor absoluto.', async c => Math.abs(finiteNumber(await c.text(0))));\n fn('clamp', 'language', 3, 3, '[valor;mínimo;máximo]', 'Limita valor ao intervalo.', async c => {\n const value = finiteNumber(await c.text(0));\n const min = finiteNumber(await c.text(1), 'Mínimo');\n const max = finiteNumber(await c.text(2), 'Máximo');\n if (min > max) throw new YuzuhaError('NUMBER', 'Mínimo não pode ser maior que o máximo.');\n return Math.min(max, Math.max(min, value));\n });\n fn('fixed', 'language', 1, 2, '[valor;casas?]', 'Texto com casas decimais fixas.', async c => {\n const value = finiteNumber(await c.text(0));\n const places = c.count > 1 ? integer(await c.text(1), 'Casas') : 0;\n if (places < 0 || places > 100) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 100.');\n return value.toFixed(places);\n });\n fn('formatNumber', 'language', 1, 2, '[valor;local?]', 'Formata número para o local informado.', async c => {\n const value = finiteNumber(await c.text(0));\n const locale = c.count > 1 ? (await c.text(1)).trim() || 'pt-BR' : 'pt-BR';\n try {\n return new Intl.NumberFormat(locale).format(value);\n } catch (cause) {\n throw new YuzuhaError('NUMBER', 'Local inválido.', { cause });\n }\n });\n fn('formatBytes', 'language', 1, 3, '[bytes;casas?;base?]', 'Formata bytes não negativos; casas 0–6, base 1024 (KiB) ou 1000 (kB).', async c => {\n const bytes = finiteNumber(await c.text(0), 'Bytes');\n if (!Number.isSafeInteger(bytes) || bytes < 0) throw new YuzuhaError('NUMBER', 'Bytes deve ser um inteiro não negativo seguro.');\n const places = decimalPlaces(c.count > 1 ? await c.text(1) : '2');\n const base = c.count > 2 ? integer(await c.text(2), 'Base') : 1024;\n if (base !== 1000 && base !== 1024) throw new YuzuhaError('NUMBER', 'Base de bytes deve ser 1000 ou 1024.');\n const units = base === 1024 ? ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'] : ['B', 'kB', 'MB', 'GB', 'TB', 'PB'];\n let scaled = bytes, unit = 0;\n while (scaled >= base && unit < units.length - 1) { scaled /= base; unit++; }\n return `${Number(scaled.toFixed(places))} ${units[unit]}`;\n });\n fn('percent', 'language', 2, 3, '[parte;total;casas?]', 'Formata parte/total × 100 com %; total positivo, casas 0–6 (padrão 2).', async c => {\n const part = finiteNumber(await c.text(0), 'Parte'), total = finiteNumber(await c.text(1), 'Total');\n if (total <= 0) throw new YuzuhaError('NUMBER', 'Total deve ser positivo.');\n const value = part / total * 100;\n if (!Number.isFinite(value)) throw new YuzuhaError('NUMBER', 'Percentual fora do intervalo finito.');\n return `${value.toFixed(decimalPlaces(c.count > 2 ? await c.text(2) : '2'))}%`;\n });\n fn('toBase', 'language', 2, 2, '[inteiroDecimal;base]', 'Converte inteiro seguro ou texto decimal exato para base 2–36; até 1024 dígitos de entrada.', async c => {\n const value = await c.arg(0), base = radix(await c.text(1));\n if (typeof value === 'number' && !Number.isSafeInteger(value)) throw new YuzuhaError('BASE', 'Número deve ser um inteiro seguro; use texto para inteiros grandes.');\n if (typeof value !== 'number' && typeof value !== 'string') throw new YuzuhaError('BASE', 'Valor deve ser inteiro ou texto decimal.');\n const digits = String(value);\n if (!/^-?\\d{1,1024}$/.test(digits)) throw new YuzuhaError('BASE', 'Informe um inteiro decimal com até 1024 dígitos, sem prefixos ou espaços.');\n return BigInt(digits).toString(base);\n });\n fn('fromBase', 'language', 2, 2, '[texto;base]', 'Converte texto de base 2–36 para texto decimal exato; até 1024 dígitos, sem prefixos.', async c => {\n const value = await c.arg(0), base = radix(await c.text(1));\n if (typeof value !== 'string' || !/^-?[0-9a-zA-Z]{1,1024}$/.test(value)) throw new YuzuhaError('BASE', 'Informe texto com até 1024 dígitos, sem prefixos ou espaços.');\n const negative = value.startsWith('-'), digits = negative ? value.slice(1) : value;\n let result = 0n;\n for (const digit of digits.toLowerCase()) {\n const index = '0123456789abcdefghijklmnopqrstuvwxyz'.indexOf(digit);\n if (index >= base) throw new YuzuhaError('BASE', `Dígito inválido para base ${base}.`);\n result = result * BigInt(base) + BigInt(index);\n }\n return (negative ? -result : result).toString(10);\n });\n fn('date', 'language', 0, 3, '[timestamp?;formato?;local?]', 'Formata data; timestamp em ms, formato date/time/datetime/iso/relative.', async c => {\n const timestamp = c.count > 0 ? parseMoment(await c.text(0)) : Date.now();\n const format = c.count > 1 ? (await c.text(1)).trim().toLowerCase() || 'iso' : 'iso';\n const locale = c.count > 2 ? (await c.text(2)).trim() || 'pt-BR' : 'pt-BR';\n const value = new Date(timestamp);\n if (Number.isNaN(value.getTime())) throw new YuzuhaError('DATE', 'Data inválida.');\n if (format === 'iso') return value.toISOString();\n if (format === 'date' || format === 'time' || format === 'datetime') {\n try {\n return dateParts(value, locale)[format];\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n }\n if (format === 'relative') {\n try {\n const { amount, unit } = relativeAmount(timestamp);\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(amount, unit);\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n }\n throw new YuzuhaError('DATE', 'Formato deve ser iso, date, time, datetime ou relative.');\n });\n fn('relativeTime', 'language', 1, 2, '[timestamp;local?]', 'Descreve distância até agora, ex. \"há 2 dias\".', async c => {\n const timestamp = parseMoment(await c.text(0));\n const locale = c.count > 1 ? (await c.text(1)).trim() || 'pt-BR' : 'pt-BR';\n try {\n const { amount, unit } = relativeAmount(timestamp);\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(amount, unit);\n } catch (cause) {\n throw new YuzuhaError('DATE', 'Local inválido.', { cause });\n }\n });\n fn('parseDate', 'language', 1, 1, '[texto]', 'Converte texto de data em milissegundos; erro se inválido.', async c => {\n const raw = (await c.text(0)).trim();\n const timestamp = Date.parse(raw);\n if (!raw || Number.isNaN(timestamp)) throw new YuzuhaError('DATE', 'Data inválida.');\n return timestamp;\n });\n});\n\nfunction relativeAmount(timestamp: number): { amount: number; unit: Intl.RelativeTimeFormatUnit } {\n const diff = timestamp - Date.now();\n const abs = Math.abs(diff);\n const table: { unit: Intl.RelativeTimeFormatUnit; ms: number }[] = [\n { unit: 'year', ms: 365 * 24 * 3_600_000 },\n { unit: 'month', ms: 30 * 24 * 3_600_000 },\n { unit: 'day', ms: 24 * 3_600_000 },\n { unit: 'hour', ms: 3_600_000 },\n { unit: 'minute', ms: 60_000 },\n { unit: 'second', ms: 1000 },\n ];\n for (const entry of table) {\n if (abs >= entry.ms || entry.unit === 'second') return { amount: Math.round(diff / entry.ms), unit: entry.unit };\n }\n return { amount: 0, unit: 'second' };\n}\n\nfunction decimalPlaces(raw: string): number {\n const places = integer(raw, 'Casas');\n if (places < 0 || places > 6) throw new YuzuhaError('NUMBER', 'Casas deve estar entre 0 e 6.');\n return places;\n}\n\nfunction radix(raw: string): number {\n const base = integer(raw, 'Base');\n if (base < 2 || base > 36) throw new YuzuhaError('BASE', 'Base deve estar entre 2 e 36.');\n return base;\n}\n"]}
|
|
@@ -3,5 +3,5 @@ export declare function parsePath(path: string): string[];
|
|
|
3
3
|
export declare function isIndex(segment: string): boolean;
|
|
4
4
|
export declare function setJsonPath(base: unknown, segments: string[], fresh: unknown): JsonValue;
|
|
5
5
|
export declare function deleteJsonPath(base: unknown, segments: string[]): JsonValue;
|
|
6
|
-
export declare const objectFunctions: import("../../types.js").FunctionDefinition[];
|
|
6
|
+
export declare const objectFunctions: import("../../runtime/types.js").FunctionDefinition[];
|
|
7
7
|
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../../src/
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/objects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAkB1D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMhD;AAsBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAiDxF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CA+B3E;AAeD,eAAO,MAAM,eAAe,uDAqE1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../../src/scripting/builtins/language/objects.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonValue } from '../../../domain/state.js';\nimport { YuzuhaError } from '../../../errors.js';\nimport { toJson } from '../arguments.js';\nimport { defineFunctions } from '../definition.js';\nimport { typedScalar } from './common.js';\n\nfunction setOwn(target: object, key: string, value: unknown): void {\n Object.defineProperty(target, key, { value, enumerable: true, writable: true, configurable: true });\n}\n\nfunction arrayIndex(segment: string): number {\n const index = Number(segment);\n if (!isIndex(segment) || !Number.isSafeInteger(index) || index < 0 || index >= 10_000) {\n throw new YuzuhaError('JSON_PATH', 'Índice no caminho JSON deve estar entre 0 e 9999.');\n }\n return index;\n}\n\nexport function parsePath(path: string): string[] {\n if (path === '') return [];\n const segments = path.split('.');\n for (const segment of segments) {\n if (segment.length === 0) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido. Use pontos e índices, ex. \"a.0.b\".');\n }\n return segments;\n}\n\nexport function isIndex(segment: string): boolean {\n if (segment.length === 0) return false;\n for (const char of segment) {\n if (char < '0' || char > '9') return false;\n }\n return true;\n}\n\nfunction getByPath(value: unknown, segments: string[]): { found: boolean; value: unknown } {\n let current = value;\n for (const segment of segments) {\n if (Array.isArray(current)) {\n if (!isIndex(segment)) return { found: false, value: undefined };\n const index = Number(segment);\n if (!Number.isSafeInteger(index) || index < 0 || index >= current.length) return { found: false, value: undefined };\n current = current[index];\n continue;\n }\n if (current !== null && typeof current === 'object') {\n if (!Object.hasOwn(current, segment)) return { found: false, value: undefined };\n current = (current as Record<string, unknown>)[segment];\n continue;\n }\n return { found: false, value: undefined };\n }\n return { found: true, value: current };\n}\n\nexport function setJsonPath(base: unknown, segments: string[], fresh: unknown): JsonValue {\n if (segments.length === 0) return toJson(fresh);\n const root: unknown = base !== null && typeof base === 'object' ? structuredClone(base) : {};\n let current = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n const next = segments[i + 1]!;\n const nextIsIndex = isIndex(next);\n if (Array.isArray(current)) {\n if (!isIndex(segment)) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido para array.');\n const index = arrayIndex(segment);\n while (current.length <= index) current.push(nextIsIndex ? [] : {});\n const child = current[index];\n if (child !== null && typeof child === 'object') {\n current = child;\n } else {\n const created: unknown = nextIsIndex ? [] : {};\n current[index] = created;\n current = created;\n }\n continue;\n }\n if (current !== null && typeof current === 'object') {\n const record = current as Record<string, unknown>;\n const child = Object.hasOwn(record, segment) ? record[segment] : undefined;\n if (child !== null && typeof child === 'object') {\n current = child;\n } else {\n const created: unknown = nextIsIndex ? [] : {};\n setOwn(record, segment, created);\n current = created;\n }\n continue;\n }\n throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido.');\n }\n const last = segments.at(-1)!;\n if (Array.isArray(current)) {\n if (!isIndex(last)) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido para array.');\n const index = arrayIndex(last);\n while (current.length <= index) current.push(null);\n current[index] = toJson(fresh);\n return root as JsonValue;\n }\n if (current !== null && typeof current === 'object') {\n setOwn(current, last, toJson(fresh));\n return root as JsonValue;\n }\n throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido.');\n}\n\nexport function deleteJsonPath(base: unknown, segments: string[]): JsonValue {\n if (segments.length === 0) return null;\n if (base === null || typeof base !== 'object') return toJson(base);\n const root = structuredClone(base) as Record<string, unknown>;\n let current: unknown = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n if (Array.isArray(current)) {\n if (!isIndex(segment)) return root as JsonValue;\n const index = Number(segment);\n if (!Number.isSafeInteger(index) || index < 0 || index >= current.length) return root as JsonValue;\n current = current[index];\n continue;\n }\n if (current !== null && typeof current === 'object') {\n const record = current as Record<string, unknown>;\n if (!Object.hasOwn(record, segment)) return root as JsonValue;\n current = record[segment];\n continue;\n }\n return root as JsonValue;\n }\n const last = segments.at(-1)!;\n if (Array.isArray(current)) {\n if (!isIndex(last)) return root as JsonValue;\n const index = Number(last);\n if (Number.isSafeInteger(index) && index >= 0 && index < current.length) current.splice(index, 1);\n return root as JsonValue;\n }\n if (current !== null && typeof current === 'object') delete (current as Record<string, unknown>)[last];\n return root as JsonValue;\n}\n\nfunction mergeJson(base: unknown, patch: unknown): JsonValue {\n if (base !== null && patch !== null && typeof base === 'object' && typeof patch === 'object'\n && !Array.isArray(base) && !Array.isArray(patch)) {\n const result: Record<string, JsonValue> = {};\n for (const [key, value] of Object.entries(base)) setOwn(result, key, toJson(value));\n for (const [key, value] of Object.entries(patch)) {\n setOwn(result, key, Object.hasOwn(base, key) ? mergeJson((base as Record<string, unknown>)[key], value) : toJson(value));\n }\n return result;\n }\n return toJson(patch);\n}\n\nexport const objectFunctions = defineFunctions(fn => {\n for (const [name, operation] of [['jsonValues', Object.values], ['jsonEntries', Object.entries]] as const) {\n fn(name, 'language', 1, 1, '[valor]', 'Lista valores ou pares de chaves e valores próprios de objeto ou array.', async c => {\n const value = await c.arg(0);\n if (value === null || typeof value !== 'object') throw new YuzuhaError('JSON_OBJECT', 'Valor não é objeto nem array.');\n return operation(value);\n });\n }\n fn('object', 'language', 0, 64, '[chave;valor;...]', 'Monta objeto com pares chave;valor. Número ímpar de argumentos é erro.', async c => {\n if (c.count % 2 === 1) throw new YuzuhaError('OBJECT', 'Número ímpar de argumentos em $object. Use pares chave;valor.');\n const result: Record<string, unknown> = {};\n for (let i = 0; i < c.count; i += 2) {\n const key = await c.text(i);\n setOwn(result, key, typedScalar(toJson(await c.arg(i + 1))));\n }\n return result;\n });\n fn('jsonEncode', 'language', 1, 1, '[valor]', 'Codifica valor como texto JSON.', async c => {\n const value = await c.arg(0);\n try {\n const encoded = JSON.stringify(value);\n return encoded === undefined ? '' : encoded;\n } catch (cause) {\n throw new YuzuhaError('JSON_ENCODE', 'Valor não pode ser codificado como JSON.', { cause });\n }\n });\n fn('jsonDecode', 'language', 1, 1, '[texto]', 'Decodifica texto JSON. Erro se inválido.', async c => {\n const raw = await c.text(0);\n try {\n return JSON.parse(raw);\n } catch (cause) {\n throw new YuzuhaError('JSON_DECODE', 'JSON inválido.', { cause });\n }\n });\n fn('jsonGet', 'language', 2, 3, '[valor;caminho;padrão?]', 'Lê caminho com pontos e índices, ex. \"a.0.b\". Retorna padrão se ausente.', async c => {\n const value = await c.arg(0);\n const path = await c.text(1);\n const segments = parsePath(path);\n if (segments.length === 0) return value;\n const result = getByPath(value, segments);\n if (result.found) return result.value as unknown;\n return c.count > 2 ? await c.arg(2) : '';\n });\n fn('jsonSet', 'language', 3, 3, '[valor;caminho;novo]', 'Retorna cópia com caminho alterado, sem mutar o original.', async c => {\n const base = await c.arg(0);\n const path = await c.text(1);\n const fresh = toJson(await c.arg(2));\n return setJsonPath(base, parsePath(path), fresh);\n });\n fn('jsonDelete', 'language', 2, 2, '[valor;caminho]', 'Retorna cópia sem o caminho; remove índice de array. Caminho ausente não altera.', async c => {\n const base = await c.arg(0);\n const path = await c.text(1);\n return deleteJsonPath(base, parsePath(path));\n });\n fn('jsonMerge', 'language', 1, 64, '[valor;...]', 'Mescla objetos em profundidade, sem mutar; o último valor vence e arrays são substituídos.', async c => {\n let result: JsonValue = toJson(await c.arg(0));\n for (let i = 1; i < c.count; i++) result = mergeJson(result, await c.arg(i));\n return result;\n });\n fn('jsonKeys', 'language', 1, 1, '[valor]', 'Lista chaves próprias de objeto ou índices de array.', async c => {\n const value = await c.arg(0);\n if (value === null || typeof value !== 'object') throw new YuzuhaError('JSON_KEYS', 'Valor não é objeto nem array.');\n return Object.keys(value);\n });\n fn('hasProp', 'language', 2, 2, '[valor;chave]', 'Verifica propriedade própria de objeto.', async c => {\n const value = await c.arg(0);\n const key = await c.text(1);\n return value !== null && typeof value === 'object' && Object.hasOwn(value, key);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../../src/functions/builtins/language/objects.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonValue } from '../../../domain/state.js';\nimport { YuzuhaError } from '../../../errors.js';\nimport { toJson } from '../arguments.js';\nimport { defineFunctions } from '../definition.js';\nimport { typedScalar } from './common.js';\n\nfunction setOwn(target: object, key: string, value: unknown): void {\n Object.defineProperty(target, key, { value, enumerable: true, writable: true, configurable: true });\n}\n\nfunction arrayIndex(segment: string): number {\n const index = Number(segment);\n if (!isIndex(segment) || !Number.isSafeInteger(index) || index < 0 || index >= 10_000) {\n throw new YuzuhaError('JSON_PATH', 'Índice no caminho JSON deve estar entre 0 e 9999.');\n }\n return index;\n}\n\nexport function parsePath(path: string): string[] {\n if (path === '') return [];\n const segments = path.split('.');\n for (const segment of segments) {\n if (segment.length === 0) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido. Use pontos e índices, ex. \"a.0.b\".');\n }\n return segments;\n}\n\nexport function isIndex(segment: string): boolean {\n if (segment.length === 0) return false;\n for (const char of segment) {\n if (char < '0' || char > '9') return false;\n }\n return true;\n}\n\nfunction getByPath(value: unknown, segments: string[]): { found: boolean; value: unknown } {\n let current = value;\n for (const segment of segments) {\n if (Array.isArray(current)) {\n if (!isIndex(segment)) return { found: false, value: undefined };\n const index = Number(segment);\n if (!Number.isSafeInteger(index) || index < 0 || index >= current.length) return { found: false, value: undefined };\n current = current[index];\n continue;\n }\n if (current !== null && typeof current === 'object') {\n if (!Object.hasOwn(current, segment)) return { found: false, value: undefined };\n current = (current as Record<string, unknown>)[segment];\n continue;\n }\n return { found: false, value: undefined };\n }\n return { found: true, value: current };\n}\n\nexport function setJsonPath(base: unknown, segments: string[], fresh: unknown): JsonValue {\n if (segments.length === 0) return toJson(fresh);\n const root: unknown = base !== null && typeof base === 'object' ? structuredClone(base) : {};\n let current = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n const next = segments[i + 1]!;\n const nextIsIndex = isIndex(next);\n if (Array.isArray(current)) {\n if (!isIndex(segment)) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido para array.');\n const index = arrayIndex(segment);\n while (current.length <= index) current.push(nextIsIndex ? [] : {});\n const child = current[index];\n if (child !== null && typeof child === 'object') {\n current = child;\n } else {\n const created: unknown = nextIsIndex ? [] : {};\n current[index] = created;\n current = created;\n }\n continue;\n }\n if (current !== null && typeof current === 'object') {\n const record = current as Record<string, unknown>;\n const child = Object.hasOwn(record, segment) ? record[segment] : undefined;\n if (child !== null && typeof child === 'object') {\n current = child;\n } else {\n const created: unknown = nextIsIndex ? [] : {};\n setOwn(record, segment, created);\n current = created;\n }\n continue;\n }\n throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido.');\n }\n const last = segments.at(-1)!;\n if (Array.isArray(current)) {\n if (!isIndex(last)) throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido para array.');\n const index = arrayIndex(last);\n while (current.length <= index) current.push(null);\n current[index] = toJson(fresh);\n return root as JsonValue;\n }\n if (current !== null && typeof current === 'object') {\n setOwn(current, last, toJson(fresh));\n return root as JsonValue;\n }\n throw new YuzuhaError('JSON_PATH', 'Caminho JSON inválido.');\n}\n\nexport function deleteJsonPath(base: unknown, segments: string[]): JsonValue {\n if (segments.length === 0) return null;\n if (base === null || typeof base !== 'object') return toJson(base);\n const root = structuredClone(base) as Record<string, unknown>;\n let current: unknown = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n if (Array.isArray(current)) {\n if (!isIndex(segment)) return root as JsonValue;\n const index = Number(segment);\n if (!Number.isSafeInteger(index) || index < 0 || index >= current.length) return root as JsonValue;\n current = current[index];\n continue;\n }\n if (current !== null && typeof current === 'object') {\n const record = current as Record<string, unknown>;\n if (!Object.hasOwn(record, segment)) return root as JsonValue;\n current = record[segment];\n continue;\n }\n return root as JsonValue;\n }\n const last = segments.at(-1)!;\n if (Array.isArray(current)) {\n if (!isIndex(last)) return root as JsonValue;\n const index = Number(last);\n if (Number.isSafeInteger(index) && index >= 0 && index < current.length) current.splice(index, 1);\n return root as JsonValue;\n }\n if (current !== null && typeof current === 'object') delete (current as Record<string, unknown>)[last];\n return root as JsonValue;\n}\n\nfunction mergeJson(base: unknown, patch: unknown): JsonValue {\n if (base !== null && patch !== null && typeof base === 'object' && typeof patch === 'object'\n && !Array.isArray(base) && !Array.isArray(patch)) {\n const result: Record<string, JsonValue> = {};\n for (const [key, value] of Object.entries(base)) setOwn(result, key, toJson(value));\n for (const [key, value] of Object.entries(patch)) {\n setOwn(result, key, Object.hasOwn(base, key) ? mergeJson((base as Record<string, unknown>)[key], value) : toJson(value));\n }\n return result;\n }\n return toJson(patch);\n}\n\nexport const objectFunctions = defineFunctions(fn => {\n for (const [name, operation] of [['jsonValues', Object.values], ['jsonEntries', Object.entries]] as const) {\n fn(name, 'language', 1, 1, '[valor]', 'Lista valores ou pares de chaves e valores próprios de objeto ou array.', async c => {\n const value = await c.arg(0);\n if (value === null || typeof value !== 'object') throw new YuzuhaError('JSON_OBJECT', 'Valor não é objeto nem array.');\n return operation(value);\n });\n }\n fn('object', 'language', 0, 64, '[chave;valor;...]', 'Monta objeto com pares chave;valor. Número ímpar de argumentos é erro.', async c => {\n if (c.count % 2 === 1) throw new YuzuhaError('OBJECT', 'Número ímpar de argumentos em $object. Use pares chave;valor.');\n const result: Record<string, unknown> = {};\n for (let i = 0; i < c.count; i += 2) {\n const key = await c.text(i);\n setOwn(result, key, typedScalar(toJson(await c.arg(i + 1))));\n }\n return result;\n });\n fn('jsonEncode', 'language', 1, 1, '[valor]', 'Codifica valor como texto JSON.', async c => {\n const value = await c.arg(0);\n try {\n const encoded = JSON.stringify(value);\n return encoded === undefined ? '' : encoded;\n } catch (cause) {\n throw new YuzuhaError('JSON_ENCODE', 'Valor não pode ser codificado como JSON.', { cause });\n }\n });\n fn('jsonDecode', 'language', 1, 1, '[texto]', 'Decodifica texto JSON. Erro se inválido.', async c => {\n const raw = await c.text(0);\n try {\n return JSON.parse(raw);\n } catch (cause) {\n throw new YuzuhaError('JSON_DECODE', 'JSON inválido.', { cause });\n }\n });\n fn('jsonGet', 'language', 2, 3, '[valor;caminho;padrão?]', 'Lê caminho com pontos e índices, ex. \"a.0.b\". Retorna padrão se ausente.', async c => {\n const value = await c.arg(0);\n const path = await c.text(1);\n const segments = parsePath(path);\n if (segments.length === 0) return value;\n const result = getByPath(value, segments);\n if (result.found) return result.value as unknown;\n return c.count > 2 ? await c.arg(2) : '';\n });\n fn('jsonSet', 'language', 3, 3, '[valor;caminho;novo]', 'Retorna cópia com caminho alterado, sem mutar o original.', async c => {\n const base = await c.arg(0);\n const path = await c.text(1);\n const fresh = toJson(await c.arg(2));\n return setJsonPath(base, parsePath(path), fresh);\n });\n fn('jsonDelete', 'language', 2, 2, '[valor;caminho]', 'Retorna cópia sem o caminho; remove índice de array. Caminho ausente não altera.', async c => {\n const base = await c.arg(0);\n const path = await c.text(1);\n return deleteJsonPath(base, parsePath(path));\n });\n fn('jsonMerge', 'language', 1, 64, '[valor;...]', 'Mescla objetos em profundidade, sem mutar; o último valor vence e arrays são substituídos.', async c => {\n let result: JsonValue = toJson(await c.arg(0));\n for (let i = 1; i < c.count; i++) result = mergeJson(result, await c.arg(i));\n return result;\n });\n fn('jsonKeys', 'language', 1, 1, '[valor]', 'Lista chaves próprias de objeto ou índices de array.', async c => {\n const value = await c.arg(0);\n if (value === null || typeof value !== 'object') throw new YuzuhaError('JSON_KEYS', 'Valor não é objeto nem array.');\n return Object.keys(value);\n });\n fn('hasProp', 'language', 2, 2, '[valor;chave]', 'Verifica propriedade própria de objeto.', async c => {\n const value = await c.arg(0);\n const key = await c.text(1);\n return value !== null && typeof value === 'object' && Object.hasOwn(value, key);\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../../src/functions/builtins/language/regex.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,uDAczB,CAAC"}
|