beeai-framework 0.1.3 → 0.1.5
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/README.md +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +1 -1
- package/dist/adapters/anthropic/backend/chat.d.ts +1 -1
- package/dist/adapters/anthropic/backend/chat.js.map +1 -1
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/client.js.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.cts +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.ts +1 -1
- package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/chat.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/client.js.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.ts +1 -1
- package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
- package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
- package/dist/adapters/dummy/backend/chat.d.cts +1 -1
- package/dist/adapters/dummy/backend/chat.d.ts +1 -1
- package/dist/adapters/dummy/backend/chat.js.map +1 -1
- package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
- package/dist/adapters/dummy/backend/embedding.d.cts +1 -1
- package/dist/adapters/dummy/backend/embedding.d.ts +1 -1
- package/dist/adapters/dummy/backend/embedding.js.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.ts +1 -1
- package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/client.js.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.cts +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.ts +1 -1
- package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +1 -1
- package/dist/adapters/groq/backend/chat.d.ts +1 -1
- package/dist/adapters/groq/backend/chat.js.map +1 -1
- package/dist/adapters/groq/backend/client.cjs.map +1 -1
- package/dist/adapters/groq/backend/client.js.map +1 -1
- package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +1 -1
- package/dist/adapters/groq/backend/embedding.d.ts +1 -1
- package/dist/adapters/groq/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +1 -1
- package/dist/adapters/langchain/backend/chat.d.ts +1 -1
- package/dist/adapters/langchain/backend/chat.js.map +1 -1
- package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
- package/dist/adapters/langchain/backend/embedding.d.cts +1 -1
- package/dist/adapters/langchain/backend/embedding.d.ts +1 -1
- package/dist/adapters/langchain/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/tools.cjs.map +1 -1
- package/dist/adapters/langchain/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/langchain/tools.js.map +1 -1
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +1 -1
- package/dist/adapters/ollama/backend/chat.d.ts +1 -1
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.js.map +1 -1
- package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
- package/dist/adapters/ollama/backend/embedding.d.cts +1 -1
- package/dist/adapters/ollama/backend/embedding.d.ts +1 -1
- package/dist/adapters/ollama/backend/embedding.js.map +1 -1
- package/dist/adapters/openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +1 -1
- package/dist/adapters/openai/backend/chat.d.ts +1 -1
- package/dist/adapters/openai/backend/chat.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/openai/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs +2 -2
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +1 -1
- package/dist/adapters/vercel/backend/chat.d.ts +1 -1
- package/dist/adapters/vercel/backend/chat.js +2 -2
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +5 -5
- package/dist/adapters/vercel/backend/embedding.d.ts +5 -5
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +1 -1
- package/dist/adapters/watsonx/backend/chat.d.ts +1 -1
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/client.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.ts +1 -1
- package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
- package/dist/{agent-D9gpIPf2.d.ts → agent-DNfflu8t.d.ts} +4 -4
- package/dist/{agent-xmwFrFrh.d.cts → agent-wkCuP7e1.d.cts} +4 -4
- package/dist/agents/base.cjs +1 -1
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js +1 -1
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/bee/agent.cjs.map +1 -1
- package/dist/agents/bee/agent.d.cts +3 -3
- package/dist/agents/bee/agent.d.ts +3 -3
- package/dist/agents/bee/agent.js.map +1 -1
- package/dist/agents/bee/prompts.cjs.map +1 -1
- package/dist/agents/bee/prompts.js.map +1 -1
- package/dist/agents/bee/runners/base.cjs.map +1 -1
- package/dist/agents/bee/runners/base.d.cts +3 -3
- package/dist/agents/bee/runners/base.d.ts +3 -3
- package/dist/agents/bee/runners/base.js.map +1 -1
- package/dist/agents/bee/runners/deep-think/prompts.cjs.map +1 -1
- package/dist/agents/bee/runners/deep-think/prompts.js.map +1 -1
- package/dist/agents/bee/runners/deep-think/runner.cjs +11 -11
- package/dist/agents/bee/runners/deep-think/runner.cjs.map +1 -1
- package/dist/agents/bee/runners/deep-think/runner.d.cts +3 -3
- package/dist/agents/bee/runners/deep-think/runner.d.ts +3 -3
- package/dist/agents/bee/runners/deep-think/runner.js +2 -2
- package/dist/agents/bee/runners/deep-think/runner.js.map +1 -1
- package/dist/agents/bee/runners/default/runner.cjs.map +1 -1
- package/dist/agents/bee/runners/default/runner.d.cts +3 -3
- package/dist/agents/bee/runners/default/runner.d.ts +3 -3
- package/dist/agents/bee/runners/default/runner.js +1 -1
- package/dist/agents/bee/runners/default/runner.js.map +1 -1
- package/dist/agents/bee/runners/default/runner.spec.cjs.map +1 -1
- package/dist/agents/bee/runners/default/runner.spec.js.map +1 -1
- package/dist/agents/bee/runners/granite/prompts.cjs.map +1 -1
- package/dist/agents/bee/runners/granite/prompts.js.map +1 -1
- package/dist/agents/bee/runners/granite/runner.cjs +11 -11
- package/dist/agents/bee/runners/granite/runner.cjs.map +1 -1
- package/dist/agents/bee/runners/granite/runner.d.cts +3 -3
- package/dist/agents/bee/runners/granite/runner.d.ts +3 -3
- package/dist/agents/bee/runners/granite/runner.js +2 -2
- package/dist/agents/bee/runners/granite/runner.js.map +1 -1
- package/dist/agents/bee/types.d.cts +1 -1
- package/dist/agents/bee/types.d.ts +1 -1
- package/dist/agents/experimental/replan/agent.cjs.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +2 -2
- package/dist/agents/experimental/replan/agent.d.ts +2 -2
- package/dist/agents/experimental/replan/agent.js.map +1 -1
- package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/replan/prompts.js.map +1 -1
- package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +2 -2
- package/dist/agents/experimental/streamlit/agent.d.ts +2 -2
- package/dist/agents/experimental/streamlit/agent.js.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.cjs.map +1 -1
- package/dist/backend/backend.d.cts +1 -1
- package/dist/backend/backend.d.ts +1 -1
- package/dist/backend/backend.js.map +1 -1
- package/dist/backend/chat.cjs +1 -1
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +1 -1
- package/dist/backend/chat.d.ts +1 -1
- package/dist/backend/chat.js +1 -1
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/client.cjs.map +1 -1
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/constants.cjs.map +1 -1
- package/dist/backend/constants.js.map +1 -1
- package/dist/backend/core.d.cts +1 -1
- package/dist/backend/core.d.ts +1 -1
- package/dist/backend/embedding.cjs +1 -1
- package/dist/backend/embedding.cjs.map +1 -1
- package/dist/backend/embedding.d.cts +1 -1
- package/dist/backend/embedding.d.ts +1 -1
- package/dist/backend/embedding.js +1 -1
- package/dist/backend/embedding.js.map +1 -1
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.cjs +2 -1
- package/dist/backend/utils.cjs.map +1 -1
- package/dist/backend/utils.js +2 -1
- package/dist/backend/utils.js.map +1 -1
- package/dist/{base-daM6fHUP.d.cts → base-Csr9guq2.d.cts} +1 -1
- package/dist/{base-mmG-8Pk9.d.ts → base-DHhpWHQm.d.ts} +1 -1
- package/dist/cache/base.cjs.map +1 -1
- package/dist/cache/base.js.map +1 -1
- package/dist/cache/decoratorCache.cjs.map +1 -1
- package/dist/cache/decoratorCache.js.map +1 -1
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/cache/nullCache.cjs.map +1 -1
- package/dist/cache/nullCache.js.map +1 -1
- package/dist/cache/slidingCache.cjs.map +1 -1
- package/dist/cache/slidingCache.js.map +1 -1
- package/dist/cache/unconstrainedCache.cjs.map +1 -1
- package/dist/cache/unconstrainedCache.js.map +1 -1
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/errors.cjs.map +1 -1
- package/dist/emitter/errors.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/emitter/utils.cjs.map +1 -1
- package/dist/emitter/utils.js.map +1 -1
- package/dist/errors.cjs +4 -4
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +4 -4
- package/dist/errors.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/instrumentation/config.cjs.map +1 -1
- package/dist/instrumentation/config.js.map +1 -1
- package/dist/instrumentation/create-telemetry-middleware.cjs +1 -1
- package/dist/instrumentation/create-telemetry-middleware.cjs.map +1 -1
- package/dist/instrumentation/create-telemetry-middleware.d.cts +1 -1
- package/dist/instrumentation/create-telemetry-middleware.d.ts +1 -1
- package/dist/instrumentation/create-telemetry-middleware.js +1 -1
- package/dist/instrumentation/create-telemetry-middleware.js.map +1 -1
- package/dist/instrumentation/helpers/create-span.cjs.map +1 -1
- package/dist/instrumentation/helpers/create-span.js.map +1 -1
- package/dist/instrumentation/helpers/get-error-safe.cjs.map +1 -1
- package/dist/instrumentation/helpers/get-error-safe.js.map +1 -1
- package/dist/instrumentation/helpers/get-serialized-object-safe.cjs.map +1 -1
- package/dist/instrumentation/helpers/get-serialized-object-safe.js.map +1 -1
- package/dist/instrumentation/helpers/id-name-manager.cjs.map +1 -1
- package/dist/instrumentation/helpers/id-name-manager.js.map +1 -1
- package/dist/instrumentation/helpers/trace-serializer.cjs.map +1 -1
- package/dist/instrumentation/helpers/trace-serializer.js.map +1 -1
- package/dist/instrumentation/helpers/utils.cjs.map +1 -1
- package/dist/instrumentation/helpers/utils.d.cts +1 -1
- package/dist/instrumentation/helpers/utils.d.ts +1 -1
- package/dist/instrumentation/helpers/utils.js.map +1 -1
- package/dist/instrumentation/logger.cjs.map +1 -1
- package/dist/instrumentation/logger.js.map +1 -1
- package/dist/instrumentation/tracer.cjs.map +1 -1
- package/dist/instrumentation/tracer.js.map +1 -1
- package/dist/internals/env.cjs +2 -2
- package/dist/internals/env.cjs.map +1 -1
- package/dist/internals/env.js +2 -2
- package/dist/internals/env.js.map +1 -1
- package/dist/internals/fetcher.cjs.map +1 -1
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/internals/fetcher.js.map +1 -1
- package/dist/internals/helpers/array.cjs.map +1 -1
- package/dist/internals/helpers/array.js.map +1 -1
- package/dist/internals/helpers/cancellation.cjs.map +1 -1
- package/dist/internals/helpers/cancellation.js.map +1 -1
- package/dist/internals/helpers/counter.cjs.map +1 -1
- package/dist/internals/helpers/counter.js.map +1 -1
- package/dist/internals/helpers/general.cjs.map +1 -1
- package/dist/internals/helpers/general.js.map +1 -1
- package/dist/internals/helpers/guards.cjs.map +1 -1
- package/dist/internals/helpers/guards.js.map +1 -1
- package/dist/internals/helpers/hash.cjs.map +1 -1
- package/dist/internals/helpers/hash.js.map +1 -1
- package/dist/internals/helpers/map.cjs.map +1 -1
- package/dist/internals/helpers/map.js.map +1 -1
- package/dist/internals/helpers/math.cjs.map +1 -1
- package/dist/internals/helpers/math.js.map +1 -1
- package/dist/internals/helpers/number.cjs.map +1 -1
- package/dist/internals/helpers/number.js.map +1 -1
- package/dist/internals/helpers/object.cjs.map +1 -1
- package/dist/internals/helpers/object.js.map +1 -1
- package/dist/internals/helpers/paginate.cjs.map +1 -1
- package/dist/internals/helpers/paginate.js.map +1 -1
- package/dist/internals/helpers/promise.cjs.map +1 -1
- package/dist/internals/helpers/promise.js.map +1 -1
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/helpers/retry.cjs.map +1 -1
- package/dist/internals/helpers/retry.js.map +1 -1
- package/dist/internals/helpers/retryable.cjs.map +1 -1
- package/dist/internals/helpers/retryable.js.map +1 -1
- package/dist/internals/helpers/schema.cjs.map +1 -1
- package/dist/internals/helpers/schema.d.cts +1 -1
- package/dist/internals/helpers/schema.d.ts +1 -1
- package/dist/internals/helpers/schema.js.map +1 -1
- package/dist/internals/helpers/stream.cjs.map +1 -1
- package/dist/internals/helpers/stream.js.map +1 -1
- package/dist/internals/helpers/string.cjs.map +1 -1
- package/dist/internals/helpers/string.js.map +1 -1
- package/dist/internals/helpers/weakRef.cjs.map +1 -1
- package/dist/internals/helpers/weakRef.js.map +1 -1
- package/dist/internals/serializable.cjs.map +1 -1
- package/dist/internals/serializable.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/pretty.cjs.map +1 -1
- package/dist/logger/pretty.js.map +1 -1
- package/dist/memory/base.cjs.map +1 -1
- package/dist/memory/base.js.map +1 -1
- package/dist/memory/slidingMemory.cjs.map +1 -1
- package/dist/memory/slidingMemory.js.map +1 -1
- package/dist/memory/summarizeMemory.cjs.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +1 -1
- package/dist/memory/summarizeMemory.d.ts +1 -1
- package/dist/memory/summarizeMemory.js.map +1 -1
- package/dist/memory/tokenMemory.cjs.map +1 -1
- package/dist/memory/tokenMemory.js.map +1 -1
- package/dist/memory/unconstrainedMemory.cjs.map +1 -1
- package/dist/memory/unconstrainedMemory.js.map +1 -1
- package/dist/parsers/errors.cjs.map +1 -1
- package/dist/parsers/errors.js.map +1 -1
- package/dist/parsers/field.cjs.map +1 -1
- package/dist/parsers/field.js.map +1 -1
- package/dist/parsers/linePrefix.cjs.map +1 -1
- package/dist/parsers/linePrefix.d.cts +1 -1
- package/dist/parsers/linePrefix.d.ts +1 -1
- package/dist/parsers/linePrefix.js.map +1 -1
- package/dist/serializer/error.cjs.map +1 -1
- package/dist/serializer/error.js.map +1 -1
- package/dist/serializer/serializer.cjs +3 -3
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.js +2 -2
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.js.map +1 -1
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -1
- package/dist/template.d.ts +1 -1
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.cjs.map +1 -1
- package/dist/tools/arxiv.d.cts +2 -2
- package/dist/tools/arxiv.d.ts +2 -2
- package/dist/tools/arxiv.js.map +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +2 -2
- package/dist/tools/base.d.ts +2 -2
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calculator.cjs.map +1 -1
- package/dist/tools/calculator.d.cts +1 -1
- package/dist/tools/calculator.d.ts +1 -1
- package/dist/tools/calculator.js.map +1 -1
- package/dist/tools/custom.cjs.map +1 -1
- package/dist/tools/custom.d.cts +1 -1
- package/dist/tools/custom.d.ts +1 -1
- package/dist/tools/custom.js.map +1 -1
- package/dist/tools/database/elasticsearch.cjs.map +1 -1
- package/dist/tools/database/elasticsearch.d.cts +1 -1
- package/dist/tools/database/elasticsearch.d.ts +1 -1
- package/dist/tools/database/elasticsearch.js.map +1 -1
- package/dist/tools/database/metadata.cjs.map +1 -1
- package/dist/tools/database/metadata.js.map +1 -1
- package/dist/tools/database/milvus.cjs.map +1 -1
- package/dist/tools/database/milvus.d.cts +1 -1
- package/dist/tools/database/milvus.d.ts +1 -1
- package/dist/tools/database/milvus.js.map +1 -1
- package/dist/tools/database/sql.cjs.map +1 -1
- package/dist/tools/database/sql.d.cts +3 -3
- package/dist/tools/database/sql.d.ts +3 -3
- package/dist/tools/database/sql.js.map +1 -1
- package/dist/tools/llm.cjs.map +1 -1
- package/dist/tools/llm.d.cts +1 -1
- package/dist/tools/llm.d.ts +1 -1
- package/dist/tools/llm.js +1 -1
- package/dist/tools/llm.js.map +1 -1
- package/dist/tools/mcp.cjs.map +1 -1
- package/dist/tools/mcp.d.cts +1 -1
- package/dist/tools/mcp.d.ts +1 -1
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/openapi.cjs.map +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/openapi.js +1 -1
- package/dist/tools/openapi.js.map +1 -1
- package/dist/tools/python/output.cjs.map +1 -1
- package/dist/tools/python/output.d.cts +1 -1
- package/dist/tools/python/output.d.ts +1 -1
- package/dist/tools/python/output.js.map +1 -1
- package/dist/tools/python/python.cjs.map +1 -1
- package/dist/tools/python/python.d.cts +1 -1
- package/dist/tools/python/python.d.ts +1 -1
- package/dist/tools/python/python.js.map +1 -1
- package/dist/tools/python/storage.cjs.map +1 -1
- package/dist/tools/python/storage.js.map +1 -1
- package/dist/tools/search/base.cjs.map +1 -1
- package/dist/tools/search/base.d.cts +1 -1
- package/dist/tools/search/base.d.ts +1 -1
- package/dist/tools/search/base.js.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.cjs +19 -19
- package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +2 -4
- package/dist/tools/search/duckDuckGoSearch.d.ts +2 -4
- package/dist/tools/search/duckDuckGoSearch.js +17 -13
- package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
- package/dist/tools/search/googleSearch.cjs.map +1 -1
- package/dist/tools/search/googleSearch.d.cts +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.js.map +1 -1
- package/dist/tools/search/searXNGSearch.cjs.map +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +1 -1
- package/dist/tools/search/searXNGSearch.d.ts +1 -1
- package/dist/tools/search/searXNGSearch.js.map +1 -1
- package/dist/tools/search/wikipedia.cjs.map +1 -1
- package/dist/tools/search/wikipedia.d.cts +1 -1
- package/dist/tools/search/wikipedia.d.ts +1 -1
- package/dist/tools/search/wikipedia.js.map +1 -1
- package/dist/tools/similarity.cjs.map +1 -1
- package/dist/tools/similarity.d.cts +2 -2
- package/dist/tools/similarity.d.ts +2 -2
- package/dist/tools/similarity.js.map +1 -1
- package/dist/tools/weather/openMeteo.cjs.map +1 -1
- package/dist/tools/weather/openMeteo.d.cts +2 -2
- package/dist/tools/weather/openMeteo.d.ts +2 -2
- package/dist/tools/weather/openMeteo.js.map +1 -1
- package/dist/tools/web/webCrawler.cjs.map +1 -1
- package/dist/tools/web/webCrawler.d.cts +2 -2
- package/dist/tools/web/webCrawler.d.ts +2 -2
- package/dist/tools/web/webCrawler.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/workflows/agent.cjs.map +1 -1
- package/dist/workflows/agent.d.cts +2 -2
- package/dist/workflows/agent.d.ts +2 -2
- package/dist/workflows/agent.js.map +1 -1
- package/dist/workflows/workflow.cjs.map +1 -1
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/dist/workflows/workflow.js.map +1 -1
- package/package.json +28 -20
- package/dist/{emitter-C9EN5B0j.d.cts → emitter-BWtGHYn0.d.cts} +1 -1
- package/dist/{emitter-BxVxGBbJ.d.ts → emitter-l0W9gC1A.d.ts} +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["fileCache.ts"],"names":["FileCache","BaseCache","constructor","input","register","source","fullPath","fromProvider","provider","fs","promises","writeFile","serialize","getProvider","exists","stat","then","r","isFile","catch","serialized","readFile","target","snapshot","Serializer","deserialize","Target","getFactory","ref","instance","fromSnapshot","TypeError","SlidingCache","size","Infinity","ttl","reload","Cache","getInstance","clear","save","set","key","value","get","finally","has","delete","result","createSnapshot","loadSnapshot","Object","assign"],"mappings":"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","file":"fileCache.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseCache } from \"@/cache/base.js\";\nimport fs from \"node:fs\";\nimport { SlidingCache } from \"@/cache/slidingCache.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { SerializableClass } from \"@/internals/serializable.js\";\n\ninterface Input {\n fullPath: string;\n}\n\nexport class FileCache<T> extends BaseCache<T> {\n constructor(protected readonly input: Input) {\n super();\n }\n\n static {\n this.register();\n }\n\n get source() {\n return this.input.fullPath;\n }\n\n static async fromProvider<A>(provider: BaseCache<A>, input: Input) {\n await fs.promises.writeFile(input.fullPath, await provider.serialize());\n return new FileCache<A>(input);\n }\n\n @Cache()\n protected async getProvider(): Promise<BaseCache<T>> {\n const exists = await fs.promises\n .stat(this.input.fullPath)\n .then((r) => r.isFile())\n .catch(() => false);\n\n if (exists) {\n const serialized = await fs.promises.readFile(this.input.fullPath, \"utf8\");\n const { target, snapshot } = await Serializer.deserialize<any>(serialized);\n const Target = Serializer.getFactory(target).ref as SerializableClass<BaseCache<T>>;\n const instance = await Target.fromSnapshot(snapshot);\n if (!(instance instanceof BaseCache)) {\n throw new TypeError(\"Provided file does not serialize any instance of BaseCache class.\");\n }\n return instance;\n } else {\n return new SlidingCache({\n size: Infinity,\n ttl: Infinity,\n });\n }\n }\n\n async reload() {\n // @ts-expect-error protected property\n Cache.getInstance(this, \"getProvider\").clear();\n void (await this.getProvider());\n }\n\n protected async save() {\n const provider = await this.getProvider();\n return await fs.promises.writeFile(this.input.fullPath, await provider.serialize());\n }\n\n async size() {\n const provider = await this.getProvider();\n return provider.size();\n }\n\n async set(key: string, value: T) {\n const provider = await this.getProvider();\n await provider.set(key, value);\n void provider.get(key).finally(() => {\n void this.save();\n });\n }\n\n async get(key: string) {\n const provider = await this.getProvider();\n return await provider.get(key);\n }\n\n async has(key: string) {\n const provider = await this.getProvider();\n return await provider.has(key);\n }\n\n async delete(key: string) {\n const provider = await this.getProvider();\n const result = await provider.delete(key);\n await this.save();\n return result;\n }\n\n async clear() {\n const provider = await this.getProvider();\n await provider.clear();\n await this.save();\n }\n\n async createSnapshot() {\n return {\n input: { fullPath: this.input.fullPath },\n provider: await this.getProvider(),\n };\n }\n\n loadSnapshot(snapshot: Awaited<ReturnType<typeof this.createSnapshot>>): void {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["nullCache.ts"],"names":["NullCache","BaseCache","enabled","set","_key","_value","get","undefined","has","delete","clear","size","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;AAkBO,MAAMA,kBAAqBC,kBAAAA,CAAAA;EAlBlC;;;EAmBEC,OAAU,GAAA,KAAA;EAEV,MAAMC,GAAAA,CAAIC,MAAcC,MAAW,EAAA;AAAC;AAEpC,EAAA,MAAMC,IAAIF,IAAc,EAAA;AACtB,IAAOG,OAAAA,MAAAA;AACT;AAEA,EAAA,MAAMC,IAAIJ,IAAc,EAAA;AACtB,IAAO,OAAA,KAAA;AACT;AAEA,EAAA,MAAMK,OAAOL,IAAc,EAAA;AACzB,IAAO,OAAA,IAAA;AACT;AAEA,EAAA,MAAMM,KAAQ,GAAA;AAAC;AAEf,EAAA,MAAMC,IAAO,GAAA;AACX,IAAO,OAAA,CAAA;AACT;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLV,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAW,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"nullCache.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseCache } from \"@/cache/base.js\";\n\nexport class NullCache<T> extends BaseCache<T> {\n enabled = false;\n\n async set(_key: string, _value: T) {}\n\n async get(_key: string) {\n return undefined;\n }\n\n async has(_key: string) {\n return false;\n }\n\n async delete(_key: string) {\n return true;\n }\n\n async clear() {}\n\n async size() {\n return 0;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["nullCache.ts"],"names":["NullCache","BaseCache","enabled","set","_key","_value","get","undefined","has","delete","clear","size","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;AAkBO,MAAMA,kBAAqBC,SAAAA,CAAAA;EAlBlC;;;EAmBEC,OAAU,GAAA,KAAA;EAEV,MAAMC,GAAAA,CAAIC,MAAcC,MAAW,EAAA;AAAC;AAEpC,EAAA,MAAMC,IAAIF,IAAc,EAAA;AACtB,IAAOG,OAAAA,MAAAA;AACT;AAEA,EAAA,MAAMC,IAAIJ,IAAc,EAAA;AACtB,IAAO,OAAA,KAAA;AACT;AAEA,EAAA,MAAMK,OAAOL,IAAc,EAAA;AACzB,IAAO,OAAA,IAAA;AACT;AAEA,EAAA,MAAMM,KAAQ,GAAA;AAAC;AAEf,EAAA,MAAMC,IAAO,GAAA;AACX,IAAO,OAAA,CAAA;AACT;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLV,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAW,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"nullCache.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseCache } from \"@/cache/base.js\";\n\nexport class NullCache<T> extends BaseCache<T> {\n enabled = false;\n\n async set(_key: string, _value: T) {}\n\n async get(_key: string) {\n return undefined;\n }\n\n async has(_key: string) {\n return false;\n }\n\n async delete(_key: string) {\n return true;\n }\n\n async clear() {}\n\n async size() {\n return 0;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["slidingCache.ts"],"names":["SlidingCacheEntry","Serializable","constructor","value","register","destructor","Task","unwrap","createSnapshot","loadSnapshot","snapshot","Object","assign","SlidingCache","BaseCache","provider","input","SlidingTaskMap","size","ttl","get","key","has","clear","delete","set","enabled"],"mappings":";;;;;;;;AAyBA,IAAMA,iBAAAA,GAAN,MAAMA,kBAAAA,SAA6BC,6BAAAA,CAAAA;EAzBnC;;;;AA0BEC,EAAAA,WAAAA,CAA+BC,KAAU,EAAA;AACvC,IAAK,KAAA,EAAA,EAAA,KADwBA,KAAAA,GAAAA,KAAAA;AAE/B;EAEA;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,UAAa,GAAA;AACX,IAAI,IAAA,IAAA,CAAKF,iBAAiBG,qBAAM,EAAA;AAC9B,MAAA,IAAA,CAAKH,MAAME,UAAU,EAAA;AACvB;AACF;EAEAE,MAAY,GAAA;AACV,IAAA,OAAO,IAAKJ,CAAAA,KAAAA;AACd;EAEAK,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEL,MAAAA,KAAAA,EAAO,IAAKA,CAAAA;AAAM,KAAA;AAC7B;AAEAM,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF,CAAA;AAEO,MAAMG,qBAAwBC,kBAAAA,CAAAA;EArDrC;;;AAsDqBC,EAAAA,QAAAA;AAEnBb,EAAAA,WAAAA,CAAYc,KAA0B,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKD,WAAW,IAAIE,+BAAAA,CAA6CD,KAAME,CAAAA,IAAAA,EAAMF,MAAMG,GAAG,CAAA;AACxF;EAEA;AACE,IAAA,IAAA,CAAKf,QAAQ,EAAA;AACf;AAEA,EAAA,MAAMgB,IAAIC,GAAa,EAAA;AACrB,IAAA,MAAMlB,KAAQ,GAAA,IAAA,CAAKY,QAASK,CAAAA,GAAAA,CAAIC,GAAAA,CAAAA;AAChC,IAAA,OAAOlB,OAAOI,MAAAA,IAAAA;AAChB;AAEA,EAAA,MAAMe,IAAID,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKN,QAASO,CAAAA,GAAAA,CAAID,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAME,KAAQ,GAAA;AACZ,IAAA,IAAA,CAAKR,SAASQ,KAAK,EAAA;AACrB;AAEA,EAAA,MAAMC,OAAOH,GAAa,EAAA;AACxB,IAAO,OAAA,IAAA,CAAKN,QAASS,CAAAA,MAAAA,CAAOH,GAAAA,CAAAA;AAC9B;EAEA,MAAMI,GAAAA,CAAIJ,KAAalB,KAAU,EAAA;AAC/B,IAAA,IAAA,CAAKY,SAASU,GAAIJ,CAAAA,GAAAA,EAAK,IAAIrB,iBAAAA,CAAkBG,KAAAA,CAAAA,CAAAA;AAC/C;AAEA,EAAA,MAAMe,IAAO,GAAA;AACX,IAAA,OAAO,KAAKH,QAASG,CAAAA,IAAAA;AACvB;EAEAV,cAAiB,GAAA;AACf,IAAO,OAAA;AACLkB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdX,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEAN,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"slidingCache.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SlidingTaskMap, Task } from \"promise-based-task\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport interface SlidingCacheInput {\n size: number;\n ttl?: number;\n}\n\nclass SlidingCacheEntry<T> extends Serializable {\n constructor(protected readonly value: T) {\n super();\n }\n\n static {\n this.register();\n }\n\n destructor() {\n if (this.value instanceof Task) {\n this.value.destructor();\n }\n }\n\n unwrap(): T {\n return this.value;\n }\n\n createSnapshot() {\n return { value: this.value };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class SlidingCache<T> extends BaseCache<T> {\n protected readonly provider;\n\n constructor(input: SlidingCacheInput) {\n super();\n this.provider = new SlidingTaskMap<string, SlidingCacheEntry<T>>(input.size, input.ttl);\n }\n\n static {\n this.register();\n }\n\n async get(key: string) {\n const value = this.provider.get(key);\n return value?.unwrap?.();\n }\n\n async has(key: string) {\n return this.provider.has(key);\n }\n\n async clear() {\n this.provider.clear();\n }\n\n async delete(key: string) {\n return this.provider.delete(key);\n }\n\n async set(key: string, value: T) {\n this.provider.set(key, new SlidingCacheEntry(value));\n }\n\n async size() {\n return this.provider.size;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n provider: this.provider,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["slidingCache.ts"],"names":["SlidingCacheEntry","Serializable","constructor","value","register","destructor","Task","unwrap","createSnapshot","loadSnapshot","snapshot","Object","assign","SlidingCache","BaseCache","provider","input","SlidingTaskMap","size","ttl","get","key","has","clear","delete","set","enabled"],"mappings":";;;;;;AAyBA,IAAMA,iBAAAA,GAAN,MAAMA,kBAAAA,SAA6BC,YAAAA,CAAAA;EAzBnC;;;;AA0BEC,EAAAA,WAAAA,CAA+BC,KAAU,EAAA;AACvC,IAAK,KAAA,EAAA,EAAA,KADwBA,KAAAA,GAAAA,KAAAA;AAE/B;EAEA;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,UAAa,GAAA;AACX,IAAI,IAAA,IAAA,CAAKF,iBAAiBG,IAAM,EAAA;AAC9B,MAAA,IAAA,CAAKH,MAAME,UAAU,EAAA;AACvB;AACF;EAEAE,MAAY,GAAA;AACV,IAAA,OAAO,IAAKJ,CAAAA,KAAAA;AACd;EAEAK,cAAiB,GAAA;AACf,IAAO,OAAA;AAAEL,MAAAA,KAAAA,EAAO,IAAKA,CAAAA;AAAM,KAAA;AAC7B;AAEAM,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF,CAAA;AAEO,MAAMG,qBAAwBC,SAAAA,CAAAA;EArDrC;;;AAsDqBC,EAAAA,QAAAA;AAEnBb,EAAAA,WAAAA,CAAYc,KAA0B,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKD,WAAW,IAAIE,cAAAA,CAA6CD,KAAME,CAAAA,IAAAA,EAAMF,MAAMG,GAAG,CAAA;AACxF;EAEA;AACE,IAAA,IAAA,CAAKf,QAAQ,EAAA;AACf;AAEA,EAAA,MAAMgB,IAAIC,GAAa,EAAA;AACrB,IAAA,MAAMlB,KAAQ,GAAA,IAAA,CAAKY,QAASK,CAAAA,GAAAA,CAAIC,GAAAA,CAAAA;AAChC,IAAA,OAAOlB,OAAOI,MAAAA,IAAAA;AAChB;AAEA,EAAA,MAAMe,IAAID,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKN,QAASO,CAAAA,GAAAA,CAAID,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAME,KAAQ,GAAA;AACZ,IAAA,IAAA,CAAKR,SAASQ,KAAK,EAAA;AACrB;AAEA,EAAA,MAAMC,OAAOH,GAAa,EAAA;AACxB,IAAO,OAAA,IAAA,CAAKN,QAASS,CAAAA,MAAAA,CAAOH,GAAAA,CAAAA;AAC9B;EAEA,MAAMI,GAAAA,CAAIJ,KAAalB,KAAU,EAAA;AAC/B,IAAA,IAAA,CAAKY,SAASU,GAAIJ,CAAAA,GAAAA,EAAK,IAAIrB,iBAAAA,CAAkBG,KAAAA,CAAAA,CAAAA;AAC/C;AAEA,EAAA,MAAMe,IAAO,GAAA;AACX,IAAA,OAAO,KAAKH,QAASG,CAAAA,IAAAA;AACvB;EAEAV,cAAiB,GAAA;AACf,IAAO,OAAA;AACLkB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdX,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEAN,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"slidingCache.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SlidingTaskMap, Task } from \"promise-based-task\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport interface SlidingCacheInput {\n size: number;\n ttl?: number;\n}\n\nclass SlidingCacheEntry<T> extends Serializable {\n constructor(protected readonly value: T) {\n super();\n }\n\n static {\n this.register();\n }\n\n destructor() {\n if (this.value instanceof Task) {\n this.value.destructor();\n }\n }\n\n unwrap(): T {\n return this.value;\n }\n\n createSnapshot() {\n return { value: this.value };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class SlidingCache<T> extends BaseCache<T> {\n protected readonly provider;\n\n constructor(input: SlidingCacheInput) {\n super();\n this.provider = new SlidingTaskMap<string, SlidingCacheEntry<T>>(input.size, input.ttl);\n }\n\n static {\n this.register();\n }\n\n async get(key: string) {\n const value = this.provider.get(key);\n return value?.unwrap?.();\n }\n\n async has(key: string) {\n return this.provider.has(key);\n }\n\n async clear() {\n this.provider.clear();\n }\n\n async delete(key: string) {\n return this.provider.delete(key);\n }\n\n async set(key: string, value: T) {\n this.provider.set(key, new SlidingCacheEntry(value));\n }\n\n async size() {\n return this.provider.size;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n provider: this.provider,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["unconstrainedCache.ts"],"names":["UnconstrainedCache","BaseCache","provider","Map","register","get","key","has","clear","delete","set","value","size","createSnapshot","enabled","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;;;AAkBO,MAAMA,2BAA8BC,kBAAAA,CAAAA;EAlB3C;;;AAmBqBC,EAAAA,QAAAA,uBAAeC,GAAAA,EAAAA;EAElC;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;AAEA,EAAA,MAAMC,IAAIC,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKJ,QAASG,CAAAA,GAAAA,CAAIC,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAMC,IAAID,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKJ,QAASK,CAAAA,GAAAA,CAAID,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAME,KAAQ,GAAA;AACZ,IAAA,IAAA,CAAKN,SAASM,KAAK,EAAA;AACrB;AAEA,EAAA,MAAMC,OAAOH,GAAa,EAAA;AACxB,IAAO,OAAA,IAAA,CAAKJ,QAASO,CAAAA,MAAAA,CAAOH,GAAAA,CAAAA;AAC9B;EAEA,MAAMI,GAAAA,CAAIJ,KAAaK,KAAU,EAAA;AAC/B,IAAKT,IAAAA,CAAAA,QAAAA,CAASQ,GAAIJ,CAAAA,GAAAA,EAAKK,KAAAA,CAAAA;AACzB;AAEA,EAAA,MAAMC,IAAO,GAAA;AACX,IAAA,OAAO,KAAKV,QAASU,CAAAA,IAAAA;AACvB;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdZ,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEAa,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"unconstrainedCache.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseCache } from \"@/cache/base.js\";\n\nexport class UnconstrainedCache<T> extends BaseCache<T> {\n protected readonly provider = new Map<string, T>();\n\n static {\n this.register();\n }\n\n async get(key: string) {\n return this.provider.get(key);\n }\n\n async has(key: string) {\n return this.provider.has(key);\n }\n\n async clear() {\n this.provider.clear();\n }\n\n async delete(key: string) {\n return this.provider.delete(key);\n }\n\n async set(key: string, value: T) {\n this.provider.set(key, value);\n }\n\n async size() {\n return this.provider.size;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n provider: this.provider,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["unconstrainedCache.ts"],"names":["UnconstrainedCache","BaseCache","provider","Map","register","get","key","has","clear","delete","set","value","size","createSnapshot","enabled","loadSnapshot","snapshot","Object","assign"],"mappings":";;;;AAkBO,MAAMA,2BAA8BC,SAAAA,CAAAA;EAlB3C;;;AAmBqBC,EAAAA,QAAAA,uBAAeC,GAAAA,EAAAA;EAElC;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;AAEA,EAAA,MAAMC,IAAIC,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKJ,QAASG,CAAAA,GAAAA,CAAIC,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAMC,IAAID,GAAa,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKJ,QAASK,CAAAA,GAAAA,CAAID,GAAAA,CAAAA;AAC3B;AAEA,EAAA,MAAME,KAAQ,GAAA;AACZ,IAAA,IAAA,CAAKN,SAASM,KAAK,EAAA;AACrB;AAEA,EAAA,MAAMC,OAAOH,GAAa,EAAA;AACxB,IAAO,OAAA,IAAA,CAAKJ,QAASO,CAAAA,MAAAA,CAAOH,GAAAA,CAAAA;AAC9B;EAEA,MAAMI,GAAAA,CAAIJ,KAAaK,KAAU,EAAA;AAC/B,IAAKT,IAAAA,CAAAA,QAAAA,CAASQ,GAAIJ,CAAAA,GAAAA,EAAKK,KAAAA,CAAAA;AACzB;AAEA,EAAA,MAAMC,IAAO,GAAA;AACX,IAAA,OAAO,KAAKV,QAASU,CAAAA,IAAAA;AACvB;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdZ,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEAa,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF","file":"unconstrainedCache.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseCache } from \"@/cache/base.js\";\n\nexport class UnconstrainedCache<T> extends BaseCache<T> {\n protected readonly provider = new Map<string, T>();\n\n static {\n this.register();\n }\n\n async get(key: string) {\n return this.provider.get(key);\n }\n\n async has(key: string) {\n return this.provider.has(key);\n }\n\n async clear() {\n this.provider.clear();\n }\n\n async delete(key: string) {\n return this.provider.delete(key);\n }\n\n async set(key: string, value: T) {\n this.provider.set(key, value);\n }\n\n async size() {\n return this.provider.size;\n }\n\n createSnapshot() {\n return {\n enabled: this.enabled,\n provider: this.provider,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
package/dist/context.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public readonly runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public readonly runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
package/dist/context.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as Emitter, C as Callback } from './emitter-
|
|
1
|
+
import { E as Emitter, C as Callback } from './emitter-BWtGHYn0.cjs';
|
|
2
2
|
import { Serializable } from './internals/serializable.cjs';
|
|
3
3
|
import { LazyPromise } from './internals/helpers/promise.cjs';
|
|
4
4
|
import './internals/types.cjs';
|
package/dist/context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as Emitter, C as Callback } from './emitter-
|
|
1
|
+
import { E as Emitter, C as Callback } from './emitter-l0W9gC1A.js';
|
|
2
2
|
import { Serializable } from './internals/serializable.js';
|
|
3
3
|
import { LazyPromise } from './internals/helpers/promise.js';
|
|
4
4
|
import './internals/types.js';
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public readonly runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public readonly runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners = new Set<Listener>();\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: Array.from(this.listeners).map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: new Set() });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0DO,MAAMA,gBAA0DC,6BAAAA,CAAAA;AAAAA,EAAAA;;;AAC3DC,EAAAA,SAAAA,uBAAgBC,GAAAA,EAAAA;AACPC,EAAAA,OAAAA;AACHC,EAAAA,SAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,KAAAA;AACGC,EAAAA,QAAAA,GAAwB,EAAA;EAE3CC,WAAYC,CAAAA,KAAAA,GAAsB,EAAI,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKP,UAAUO,KAAOP,EAAAA,OAAAA;AACtB,IAAKC,IAAAA,CAAAA,SAAAA,GAAYM,KAAON,EAAAA,SAAAA,IAAa,EAAA;AACrC,IAAKC,IAAAA,CAAAA,OAAAA,GAAUK,KAAML,CAAAA,OAAAA,IAAWM,MAAOC,CAAAA,SAAAA;AACvC,IAAKN,IAAAA,CAAAA,OAAAA,GAAUI,KAAOJ,EAAAA,OAAAA,IAAW,EAAC;AAClC,IAAA,IAAA,CAAKC,QAAQG,KAAMH,CAAAA,KAAAA;AACnBM,IAAAA,8BAAAA,CAAqB,KAAKT,SAAS,CAAA;AACrC;EAEA;AACE,IAAA,IAAA,CAAKU,QAAQ,EAAA;AACf;AAEA,EAAA,WACWC,IAAO,GAAA;AAChB,IAAA,OAAO,IAAIhB,OAAuC,CAAA;MAAEM,OAASM,kBAAAA,MAAAA,CAAOK,OAAO,IAAA;KAAM,CAAA;AACnF;EAEAC,KAAaP,CAAAA,KAAAA,GAA2B,EAAgB,EAAA;AACtD,IAAMO,MAAAA,KAAAA,GAAQ,IAAIlB,OAAW,CAAA;MAC3BQ,KAAOG,EAAAA,KAAAA,CAAMH,SAAS,IAAKA,CAAAA,KAAAA;MAC3BJ,OAASO,EAAAA,KAAAA,EAAOP,WAAW,IAAKA,CAAAA,OAAAA;MAChCG,OAAS,EAAA;AAAE,QAAA,GAAG,IAAKA,CAAAA,OAAAA;AAAS,QAAA,GAAGI,KAAOJ,EAAAA;AAAQ,OAAA;MAC9CD,OAASK,EAAAA,KAAAA,EAAOL,WAAW,IAAKA,CAAAA,OAAAA;AAChCD,MAAAA,SAAAA,EAAWM,OAAON,SACd,GAAA;WAAI,IAAKA,CAAAA,SAAAA;WAAcM,KAAMN,CAAAA;AAC7B,OAAA,GAAA,IAAA,CAAKA,UAAUc,KAAK;KAC1B,CAAA;AAEA,IAAMC,MAAAA,OAAAA,GAAUF,KAAMG,CAAAA,IAAAA,CAAK,IAAI,CAAA;AAC/B,IAAKZ,IAAAA,CAAAA,QAAAA,CAASa,KAAKF,OAAAA,CAAAA;AAEnB,IAAOF,OAAAA,KAAAA;AACT;AAEAG,EAAAA,IAAAA,CAAKE,MAAiC,EAAA;AACpC,IAAA,OAAO,IAAKC,CAAAA,EAAAA;;AAEV,MAAA,KAAA;AACAC,MAAAA,6BAAAA;;AAEE,QAAA,CAAA,GAAIC,IAASH,KAAAA,MAAAA,CAAOI,MAAM,CAAA,GAAID,IAAAA,CAAAA;AAC9B,QAAA;AAAC,UAAA;YAAEE,KAAOL,EAAAA,MAAAA;YAAQM,IAAM,EAAA;AAAS;;AAAE,OAAA;AAErC,MAAA;QACEC,UAAY,EAAA,IAAA;QACZC,IAAM,EAAA,KAAA;QACNC,UAAY,EAAA;AACd;AAAA,KAAA;AAEJ;EAEAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAK/B,UAAUgC,KAAK,EAAA;AACpB,IAAA,IAAA,CAAKzB,QAAS0B,CAAAA,OAAAA,CAAQ,CAACjB,KAAAA,KAAUA,OAAAA,CAAAA;AACjC,IAAA,IAAA,CAAKT,SAAS2B,MAAS,GAAA,CAAA;AACzB;EAEAC,KAAQ,GAAA;AACN,IAAWC,KAAAA,MAAAA,QAAAA,IAAY,KAAKpC,SAAW,EAAA;AACrC,MAAI,IAAA,CAACoC,QAASC,CAAAA,OAAAA,EAASP,UAAY,EAAA;AACjC,QAAK9B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AACF;AACF;AAEAG,EAAAA,iBAAAA,CACEC,WAGAH,OACW,EAAA;AACX,IAAA,MAAMrC,YAAyB,EAAA;AAC/BU,IAAO+B,MAAAA,CAAAA,OAAAA,CAAQD,SAAAA,CAAWP,CAAAA,OAAAA,CAAQ,CAAC,CAACS,GAAAA,EAAKhB,KAAAA,CAAM,KAAA;AAC7C,MAAA,IAAIA,KAAO,EAAA;AAET1B,QAAUoB,SAAAA,CAAAA,IAAAA,CAAK,KAAKE,EAAGoB,CAAAA,GAAAA,EAAKhB,OAAOW,OAAUK,GAAAA,GAAAA,CAAI,CAAA,CAAA;AACnD;KACF,CAAA;AACA,IAAA,OAAO,MAAM1C,SAAUiC,CAAAA,OAAAA,CAAQ,CAACf,OAAAA,KAAYA,SAAAA,CAAAA;AAC9C;EAEAI,EACEqB,CAAAA,KAAAA,EACAC,UACAP,OACW,EAAA;AACX,IAAA,OAAO,IAAKQ,CAAAA,KAAAA,CAAMF,KAAkBC,EAAAA,QAAAA,EAA2BP,OAAAA,CAAAA;AACjE;EAEAQ,KAASC,CAAAA,OAAAA,EAAkBF,UAAuBP,OAAqC,EAAA;AACrF,IAAA,MAAMU,gCAAgB,MAAA,CAAA,MAAA;AACpB,MAAA,MAAMC,WAAwB,EAAA;AAC9B,MAAA,IAAIC,cAAcZ,OAASY,EAAAA,WAAAA;AAE3B,MAAA,IAAIH,YAAY,GAAK,EAAA;AACnBG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,CAACuB,KAAAA,KAAUA,KAAMO,CAAAA,IAAAA,KAASC,yBAAe,IAAKhD,CAAAA,SAAAA,EAAWwC,KAAMhB,CAAAA,IAAI,CAAA,CAAA;AACnF,OAAA,MAAA,IAAWmB,YAAY,KAAO,EAAA;AAC5BG,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,MAAM,IAAA,CAAA;AACtB,OAAA,MAAA,IAAW0B,mBAAmBM,MAAQ,EAAA;AACpCH,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK,CAACuB,KAAAA,KAAUG,QAAQO,IAAKV,CAAAA,KAAAA,CAAMO,IAAI,CAAA,CAAA;OACvC,MAAA,IAAA,OAAOJ,YAAY,UAAY,EAAA;AACxCG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK0B,OAAAA,CAAAA;OACL,MAAA,IAAA,OAAOA,YAAY,QAAU,EAAA;AACtC,QAAIQ,IAAAA,gBAAAA,CAAOR,OAAAA,CAAU,EAAA;AACnBG,UAAgB,WAAA,KAAA,IAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IAAK,CAAA,CAACuB,KAAUA,KAAAA,KAAAA,CAAMO,SAASJ,OAAAA,CAAAA;SACnC,MAAA;AACLG,UAAgB,WAAA,KAAA,KAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IACP,CAAA,CAACuB,KACCA,KAAAA,KAAAA,CAAMhB,IAASmB,KAAAA,OAAAA,IAAWH,KAAMO,CAAAA,IAAAA,KAASC,wBAAe,CAAA,IAAA,CAAKhD,SAAWwC,EAAAA,KAAAA,CAAMhB,IAAI,CAAA,CAAA;AAExF;OACK,MAAA;AACL,QAAM,MAAA,IAAI4B,wBAAa,2BAAA,CAAA;AACzB;AAEA,MAAA,IAAI,CAACN,WAAa,EAAA;AAChB,QAAMO,MAAAA,YAAAA,2BAAgBb,KAAAA,KAAAA;AAEpB,UAAO,OAAA,CAAC,KAAKrC,KAAOmD,EAAAA,KAAAA,GAAQ,OAAO,IAAKnD,CAAAA,KAAAA,EAAOmD,KAAUd,KAAAA,KAAAA,CAAMrC,KAAOmD,EAAAA,KAAAA;SAFnD,EAAA,cAAA,CAAA;AAIrBT,QAAAA,QAAAA,CAASU,QAAQF,YAAAA,CAAAA;AACnB;AAEA,MAAO,OAAA,CAACb,UAAUK,QAASW,CAAAA,KAAAA,CAAM,CAACb,QAAYA,KAAAA,QAAAA,CAAQH,KAAAA,CAAAA,CAAAA;KAvClC,EAAA,eAAA,CAAA;AA0CtB,IAAA,MAAMP,QAAqB,GAAA;AACzBC,MAAAA,OAAAA;AACAO,MAAAA,QAAAA;MACAgB,GAAKd,EAAAA,OAAAA;AACLD,MAAAA,KAAAA,EAAOE,aAAAA;AACT,KAAA;AACA,IAAK/C,IAAAA,CAAAA,SAAAA,CAAU6D,IAAIzB,QAAAA,CAAAA;AAEnB,IAAA,OAAO,MAAM,IAAA,CAAKpC,SAAUsC,CAAAA,MAAAA,CAAOF,QAAAA,CAAAA;AACrC;EAEA,MAAM0B,IAAAA,CACJnC,MACAD,KACe,EAAA;AACfqC,IAAAA,yBAAAA,CAAgBpC,IAAAA,CAAAA;AAEhB,IAAMgB,MAAAA,KAAAA,GAAQ,IAAKqB,CAAAA,WAAAA,CAAYrC,IAAAA,CAAAA;AAC/B,IAAA,OAAO,MAAM,IAAA,CAAKF,MAAOC,CAAAA,KAAAA,EAAOiB,KAAAA,CAAAA;AAClC;EAEA,MAAgBlB,MAAAA,CAAOwC,MAAetB,KAAkB,EAAA;AACtD,IAAA,MAAMuB,aAAwB,EAAA;AAC9B,IAAA,KAAA,MAAW9B,QAAY,IAAA,IAAA,CAAKpC,SAAUmE,CAAAA,MAAAA,EAAU,EAAA;AAC9C,MAAA,IAAI,CAAC/B,QAAAA,CAASS,KAAMF,CAAAA,KAAAA,CAAQ,EAAA;AAC1B,QAAA;AACF;AAEA,MAAIP,IAAAA,QAAAA,CAASC,SAASR,IAAM,EAAA;AAC1B,QAAK7B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AAEA,MAAA,MAAMgC,sBAAkBhC,MAAAA,CAAAA,YAAAA,QAAAA,CAASQ,QAASqB,CAAAA,IAAAA,EAAMtB,KAAAA,CAApC,EAAA,KAAA,CAAA;AACZuB,MAAW9C,UAAAA,CAAAA,IAAAA,CAAKgB,SAASC,OAAST,EAAAA,UAAAA,GAAa,MAAMwC,GAAAA,EAAAA,GAAQA,KAAAA,CAAAA;AAC/D;AACA,IAAMC,MAAAA,OAAAA,CAAQC,IAAIJ,UAAAA,CAAAA;AACpB;AAEUF,EAAAA,WAAAA,CAAYrC,IAAyB,EAAA;AAC7C,IAAO,OAAA;AACL4C,MAAAA,EAAAA,EAAIC,yBAAAA,EAAAA;AACJtE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdyB,MAAAA,IAAAA;MACAuB,IAAMC,EAAAA,wBAAAA,CAAe,IAAKhD,CAAAA,SAAAA,EAAWwB,IAAAA,CAAAA;AACrC8C,MAAAA,SAAAA,sBAAeC,IAAAA,EAAAA;MACfC,MAAQ,EAAA,IAAA;AACRvE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAASK,OAAOkE,MAAO,CAAA,IAAI,IAAKvE,CAAAA,OAAAA,EAAS,EAAC,CAAA;MAC1CC,KAAOuE,EAAAA,uBAAAA,CAAY,KAAKvE,KAAK;AAC/B,KAAA;AACF;;EAEAwE,cAAiB,GAAA;AACf,IAAO,OAAA;AACL5E,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;MACdC,SAAW0E,EAAAA,uBAAAA,CAAY,KAAK1E,SAAS,CAAA;AACrCC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZN,MAAAA,SAAAA,EAAW+E,MAAMC,IAAK,CAAA,IAAA,CAAKhF,SAAS,CAAA,CAAEiF,IAAIC,WAAK,CAAA;AAAC,QAAA,KAAA;AAAO,QAAA,SAAA;AAAW,QAAA;OAAW,CAAA,CAAA;AAC7E3E,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEA4E,EAAAA,YAAAA,CAAa,EAAEnF,SAAAA,EAAW,GAAGoF,QAAAA,EAA0D,EAAA;AACrF1E,IAAOkE,MAAAA,CAAAA,MAAAA,CAAO,MAAMQ,QAAU,EAAA;AAAEpF,MAAAA,SAAAA,sBAAeC,GAAAA;KAAM,CAAA;AACrDD,IAAAA,SAAAA,CAAUiC,OAAQ,CAAA,CAAC,EAAE2B,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,EAAc,KAAA,IAAA,CAAKQ,KAAMe,CAAAA,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,CAAAA,CAAAA;AAC9E;AACF","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners = new Set<Listener>();\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: Array.from(this.listeners).map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: new Set() });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-
|
|
1
|
+
export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-BWtGHYn0.cjs';
|
|
2
2
|
import '../internals/types.cjs';
|
|
3
3
|
import '../internals/serializable.cjs';
|
|
4
4
|
import '../internals/helpers/guards.cjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-
|
|
1
|
+
export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-l0W9gC1A.js';
|
|
2
2
|
import '../internals/types.js';
|
|
3
3
|
import '../internals/serializable.js';
|
|
4
4
|
import '../internals/helpers/guards.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners = new Set<Listener>();\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: Array.from(this.listeners).map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: new Set() });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners = new Set<Listener>();\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: Array.from(this.listeners).map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: new Set() });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["errors.ts"],"names":["EmitterError","FrameworkError"],"mappings":";;;;;;AAkBO,MAAMA,qBAAqBC,yBAAAA,CAAAA;EAlBlC;;;AAkBkD","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\n\nexport class EmitterError extends FrameworkError {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["errors.ts"],"names":["EmitterError","FrameworkError"],"mappings":";;;;AAkBO,MAAMA,qBAAqBC,cAAAA,CAAAA;EAlBlC;;;AAkBkD","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\n\nexport class EmitterError extends FrameworkError {}\n"]}
|
package/dist/emitter/types.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import '../internals/types.cjs';
|
|
2
|
-
export { C as Callback, b as CleanupFn, c as EmitterOptions, e as EventMeta, d as EventTrace, I as InferCallbackValue, a as Matcher, M as MatcherFn, S as StringKey } from '../emitter-
|
|
2
|
+
export { C as Callback, b as CleanupFn, c as EmitterOptions, e as EventMeta, d as EventTrace, I as InferCallbackValue, a as Matcher, M as MatcherFn, S as StringKey } from '../emitter-BWtGHYn0.cjs';
|
|
3
3
|
import '../internals/helpers/guards.cjs';
|
|
4
4
|
import '../internals/serializable.cjs';
|
package/dist/emitter/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import '../internals/types.js';
|
|
2
|
-
export { C as Callback, b as CleanupFn, c as EmitterOptions, e as EventMeta, d as EventTrace, I as InferCallbackValue, a as Matcher, M as MatcherFn, S as StringKey } from '../emitter-
|
|
2
|
+
export { C as Callback, b as CleanupFn, c as EmitterOptions, e as EventMeta, d as EventTrace, I as InferCallbackValue, a as Matcher, M as MatcherFn, S as StringKey } from '../emitter-l0W9gC1A.js';
|
|
3
3
|
import '../internals/helpers/guards.js';
|
|
4
4
|
import '../internals/serializable.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;;;AAkBO,SAASA,qBAAqBC,IAAc,EAAA;AACjD,EAAA,IAAI,CAACA,IAAQ,IAAA,CAACC,KAAMC,CAAAA,OAAAA,CAAQF,IAAAA,CAAO,EAAA;AACjC,IAAM,MAAA,IAAIG,wBAAa,6BAAA,CAAA;AACzB;AACAH,EAAAA,IAAAA,CAAKI,OAAQ,CAAA,CAACC,IAASC,KAAAA,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAY,EAAA;AAC1C,EAAA,IAAI,CAACA,IAAQ,IAAA,CAAC,mBAAoBC,CAAAA,IAAAA,CAAKD,IAAAA,CAAO,EAAA;AAC5C,IAAA,MAAM,IAAIJ,uBAAAA,CACR,+FACA,EAAA,EACA,EAAA;MACEM,OAAS,EAAA;QAAEC,KAAOH,EAAAA;AAAK;KACzB,CAAA;AAEJ;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAY,EAAA;AACzD,EAAOA,OAAAA,IAAAA,GAAOP,IAAKY,CAAAA,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAKa,CAAAA,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAY,EAAA;AACjC,EAAOA,OAAAA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;AAkBO,SAASA,qBAAqBC,IAAc,EAAA;AACjD,EAAA,IAAI,CAACA,IAAQ,IAAA,CAACC,KAAMC,CAAAA,OAAAA,CAAQF,IAAAA,CAAO,EAAA;AACjC,IAAM,MAAA,IAAIG,aAAa,6BAAA,CAAA;AACzB;AACAH,EAAAA,IAAAA,CAAKI,OAAQ,CAAA,CAACC,IAASC,KAAAA,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAY,EAAA;AAC1C,EAAA,IAAI,CAACA,IAAQ,IAAA,CAAC,mBAAoBC,CAAAA,IAAAA,CAAKD,IAAAA,CAAO,EAAA;AAC5C,IAAA,MAAM,IAAIJ,YAAAA,CACR,+FACA,EAAA,EACA,EAAA;MACEM,OAAS,EAAA;QAAEC,KAAOH,EAAAA;AAAK;KACzB,CAAA;AAEJ;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAY,EAAA;AACzD,EAAOA,OAAAA,IAAAA,GAAOP,IAAKY,CAAAA,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAKa,CAAAA,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAY,EAAA;AACjC,EAAOA,OAAAA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
|
package/dist/errors.cjs
CHANGED
|
@@ -35,7 +35,7 @@ class FrameworkError extends AggregateError {
|
|
|
35
35
|
isFatal = false;
|
|
36
36
|
isRetryable = true;
|
|
37
37
|
context;
|
|
38
|
-
constructor(message = "Framework
|
|
38
|
+
constructor(message = "The BeeAI Framework has encountered an error.", errors = [], options = {}) {
|
|
39
39
|
super(errors || [], message);
|
|
40
40
|
this.name = this.constructor.name;
|
|
41
41
|
Error.captureStackTrace(this, AggregateError);
|
|
@@ -91,7 +91,7 @@ class FrameworkError extends AggregateError {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
static ensure(error) {
|
|
94
|
-
return error instanceof FrameworkError ? error : new FrameworkError(
|
|
94
|
+
return error instanceof FrameworkError ? error : new FrameworkError(void 0, [
|
|
95
95
|
error
|
|
96
96
|
]);
|
|
97
97
|
}
|
|
@@ -123,7 +123,7 @@ class ValueError extends FrameworkError {
|
|
|
123
123
|
static {
|
|
124
124
|
__name(this, "ValueError");
|
|
125
125
|
}
|
|
126
|
-
constructor(message = "
|
|
126
|
+
constructor(message = "The provided value is not supported!", errors = [], options) {
|
|
127
127
|
super(message, errors, options);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -131,7 +131,7 @@ class AbortError extends FrameworkError {
|
|
|
131
131
|
static {
|
|
132
132
|
__name(this, "AbortError");
|
|
133
133
|
}
|
|
134
|
-
constructor(message = "
|
|
134
|
+
constructor(message = "The operation has been aborted!", errors = [], options) {
|
|
135
135
|
super(message, errors, options);
|
|
136
136
|
}
|
|
137
137
|
}
|