@ductape/sdk 0.0.4 → 0.0.6
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 +87 -53
- package/dist/agents/agent-context.d.ts +100 -0
- package/dist/agents/agent-context.js +604 -0
- package/dist/agents/agent-context.js.map +1 -0
- package/dist/agents/agent-executor.d.ts +180 -0
- package/dist/agents/agent-executor.js +715 -0
- package/dist/agents/agent-executor.js.map +1 -0
- package/dist/agents/agents.service.d.ts +310 -0
- package/dist/agents/agents.service.js +1253 -0
- package/dist/agents/agents.service.js.map +1 -0
- package/dist/agents/index.d.ts +55 -0
- package/dist/agents/index.js +110 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/memory-manager.d.ts +182 -0
- package/dist/agents/memory-manager.js +383 -0
- package/dist/agents/memory-manager.js.map +1 -0
- package/dist/agents/tool-registry.d.ts +141 -0
- package/dist/agents/tool-registry.js +355 -0
- package/dist/agents/tool-registry.js.map +1 -0
- package/dist/agents/types/agents.types.d.ts +1240 -0
- package/dist/agents/types/agents.types.js +12 -0
- package/dist/agents/types/agents.types.js.map +1 -0
- package/dist/agents/types/index.d.ts +6 -0
- package/dist/agents/types/index.js +23 -0
- package/dist/agents/types/index.js.map +1 -0
- package/dist/agents/vector-store-adapter.d.ts +108 -0
- package/dist/agents/vector-store-adapter.js +213 -0
- package/dist/agents/vector-store-adapter.js.map +1 -0
- package/dist/api/services/appApi.service.d.ts +51 -5
- package/dist/api/services/appApi.service.js +116 -9
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/logsApi.service.d.ts +51 -0
- package/dist/api/services/logsApi.service.js +19 -2
- package/dist/api/services/logsApi.service.js.map +1 -1
- package/dist/api/services/pricingApi.service.d.ts +10 -0
- package/dist/api/services/pricingApi.service.js +34 -0
- package/dist/api/services/pricingApi.service.js.map +1 -0
- package/dist/api/services/processorApi.service.d.ts +900 -2
- package/dist/api/services/processorApi.service.js +665 -12
- package/dist/api/services/processorApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +130 -1
- package/dist/api/services/productsApi.service.js +198 -11
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/resilienceApi.service.d.ts +106 -0
- package/dist/api/services/resilienceApi.service.js +224 -0
- package/dist/api/services/resilienceApi.service.js.map +1 -0
- package/dist/api/services/secretsApi.service.d.ts +50 -0
- package/dist/api/services/secretsApi.service.js +113 -0
- package/dist/api/services/secretsApi.service.js.map +1 -0
- package/dist/api/services/webhooksApi.service.js +13 -6
- package/dist/api/services/webhooksApi.service.js.map +1 -1
- package/dist/api/services/workflowApi.service.d.ts +199 -0
- package/dist/api/services/workflowApi.service.js +201 -0
- package/dist/api/services/workflowApi.service.js.map +1 -0
- package/dist/api/services/workspaceApi.service.d.ts +8 -0
- package/dist/api/services/workspaceApi.service.js +20 -0
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +92 -1
- package/dist/api/urls.js +118 -18
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/auth.utils.d.ts +1 -3
- package/dist/api/utils/auth.utils.js.map +1 -1
- package/dist/api/utils/cache.utils.d.ts +1 -1
- package/dist/api/utils/cache.utils.js +2 -2
- package/dist/api/utils/cache.utils.js.map +1 -1
- package/dist/api/utils/strings.utils.d.ts +2 -0
- package/dist/api/utils/strings.utils.js +14 -0
- package/dist/api/utils/strings.utils.js.map +1 -1
- package/dist/apps/services/app.service.d.ts +42 -33
- package/dist/apps/services/app.service.js +574 -223
- package/dist/apps/services/app.service.js.map +1 -1
- package/dist/apps/utils/auth-context-manager.d.ts +137 -0
- package/dist/apps/utils/auth-context-manager.js +248 -0
- package/dist/apps/utils/auth-context-manager.js.map +1 -0
- package/dist/apps/utils/credential-manager.d.ts +128 -0
- package/dist/apps/utils/credential-manager.js +199 -0
- package/dist/apps/utils/credential-manager.js.map +1 -0
- package/dist/apps/utils/index.d.ts +10 -0
- package/dist/apps/utils/index.js +54 -0
- package/dist/apps/utils/index.js.map +1 -0
- package/dist/apps/utils/input-helpers.d.ts +67 -0
- package/dist/apps/utils/input-helpers.js +185 -0
- package/dist/apps/utils/input-helpers.js.map +1 -0
- package/dist/apps/utils/input-resolver.d.ts +165 -0
- package/dist/apps/utils/input-resolver.js +477 -0
- package/dist/apps/utils/input-resolver.js.map +1 -0
- package/dist/apps/utils/oauth-manager.d.ts +196 -0
- package/dist/apps/utils/oauth-manager.js +429 -0
- package/dist/apps/utils/oauth-manager.js.map +1 -0
- package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +1 -2
- package/dist/apps/validators/joi-validators/create.appAction.validator.js +22 -2
- package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.app.validator.js +2 -0
- package/dist/apps/validators/joi-validators/update.app.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.appAction.validator.js +23 -2
- package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +1 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +1 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +34 -1
- package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +1 -1
- package/dist/bin.d.ts +26 -0
- package/dist/bin.js +28 -0
- package/dist/bin.js.map +1 -0
- package/dist/brokers/brokers.service.d.ts +435 -0
- package/dist/brokers/brokers.service.js +1205 -0
- package/dist/brokers/brokers.service.js.map +1 -0
- package/dist/brokers/index.d.ts +46 -0
- package/dist/brokers/index.js +83 -0
- package/dist/brokers/index.js.map +1 -0
- package/dist/brokers/types/index.d.ts +567 -0
- package/dist/brokers/types/index.js +8 -0
- package/dist/brokers/types/index.js.map +1 -0
- package/dist/brokers/utils/broker.util.d.ts +33 -0
- package/dist/brokers/utils/broker.util.js +125 -0
- package/dist/brokers/utils/broker.util.js.map +1 -0
- package/dist/{processor/services/messagebrokers → brokers/utils/providers}/aws-sqs.service.d.ts +3 -2
- package/dist/brokers/utils/providers/aws-sqs.service.js +71 -0
- package/dist/brokers/utils/providers/aws-sqs.service.js.map +1 -0
- package/dist/{processor/services/messagebrokers → brokers/utils/providers}/google-pubsub.service.d.ts +2 -2
- package/dist/{processor/services/messagebrokers → brokers/utils/providers}/google-pubsub.service.js +16 -7
- package/dist/brokers/utils/providers/google-pubsub.service.js.map +1 -0
- package/dist/brokers/utils/providers/index.d.ts +6 -0
- package/dist/brokers/utils/providers/index.js +16 -0
- package/dist/brokers/utils/providers/index.js.map +1 -0
- package/dist/brokers/utils/providers/kafka.service.d.ts +23 -0
- package/dist/brokers/utils/providers/kafka.service.js +131 -0
- package/dist/brokers/utils/providers/kafka.service.js.map +1 -0
- package/dist/brokers/utils/providers/nats.service.d.ts +18 -0
- package/dist/brokers/utils/providers/nats.service.js +63 -0
- package/dist/brokers/utils/providers/nats.service.js.map +1 -0
- package/dist/brokers/utils/providers/rabbitmq.service.d.ts +25 -0
- package/dist/brokers/utils/providers/rabbitmq.service.js +138 -0
- package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -0
- package/dist/{processor/services/messagebrokers → brokers/utils/providers}/redis.service.d.ts +3 -3
- package/dist/{processor/services/messagebrokers → brokers/utils/providers}/redis.service.js +25 -14
- package/dist/brokers/utils/providers/redis.service.js.map +1 -0
- package/dist/cache/cache.manager.d.ts +308 -0
- package/dist/cache/cache.manager.js +900 -0
- package/dist/cache/cache.manager.js.map +1 -0
- package/dist/cache/cache.service.d.ts +191 -0
- package/dist/cache/cache.service.js +594 -0
- package/dist/cache/cache.service.js.map +1 -0
- package/dist/cache/index.d.ts +52 -0
- package/dist/cache/index.js +81 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/types/index.d.ts +110 -0
- package/dist/cache/types/index.js +6 -0
- package/dist/cache/types/index.js.map +1 -0
- package/dist/clients/apps.client.js +1 -1
- package/dist/clients/apps.client.js.map +1 -1
- package/dist/clients/pricing.client.d.ts +3 -0
- package/dist/clients/pricing.client.js +33 -0
- package/dist/clients/pricing.client.js.map +1 -0
- package/dist/database/actions/action-manager.d.ts +170 -0
- package/dist/database/actions/action-manager.js +465 -0
- package/dist/database/actions/action-manager.js.map +1 -0
- package/dist/database/actions/index.d.ts +6 -0
- package/dist/database/actions/index.js +13 -0
- package/dist/database/actions/index.js.map +1 -0
- package/dist/database/adapters/adapter.factory.d.ts +62 -0
- package/dist/database/adapters/adapter.factory.js +97 -0
- package/dist/database/adapters/adapter.factory.js.map +1 -0
- package/dist/database/adapters/base.adapter.d.ts +423 -0
- package/dist/database/adapters/base.adapter.js +260 -0
- package/dist/database/adapters/base.adapter.js.map +1 -0
- package/dist/database/adapters/cassandra.adapter.d.ts +92 -0
- package/dist/database/adapters/cassandra.adapter.js +1091 -0
- package/dist/database/adapters/cassandra.adapter.js.map +1 -0
- package/dist/database/adapters/dynamodb.adapter.d.ts +110 -0
- package/dist/database/adapters/dynamodb.adapter.js +1564 -0
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
- package/dist/database/adapters/index.d.ts +11 -0
- package/dist/database/adapters/index.js +27 -0
- package/dist/database/adapters/index.js.map +1 -0
- package/dist/database/adapters/mariadb.adapter.d.ts +100 -0
- package/dist/database/adapters/mariadb.adapter.js +247 -0
- package/dist/database/adapters/mariadb.adapter.js.map +1 -0
- package/dist/database/adapters/mongodb.adapter.d.ts +121 -0
- package/dist/database/adapters/mongodb.adapter.js +1284 -0
- package/dist/database/adapters/mongodb.adapter.js.map +1 -0
- package/dist/database/adapters/mysql.adapter.d.ts +86 -0
- package/dist/database/adapters/mysql.adapter.js +1371 -0
- package/dist/database/adapters/mysql.adapter.js.map +1 -0
- package/dist/database/adapters/postgresql.adapter.d.ts +90 -0
- package/dist/database/adapters/postgresql.adapter.js +1487 -0
- package/dist/database/adapters/postgresql.adapter.js.map +1 -0
- package/dist/database/databases.service.d.ts +1476 -0
- package/dist/database/databases.service.js +3068 -0
- package/dist/database/databases.service.js.map +1 -0
- package/dist/database/index.d.ts +46 -0
- package/dist/database/index.js +109 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/migrations/index.d.ts +6 -0
- package/dist/database/migrations/index.js +12 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/migrations/migration-engine.d.ts +136 -0
- package/dist/database/migrations/migration-engine.js +1421 -0
- package/dist/database/migrations/migration-engine.js.map +1 -0
- package/dist/database/operators/aggregation-builder.d.ts +67 -0
- package/dist/database/operators/aggregation-builder.js +841 -0
- package/dist/database/operators/aggregation-builder.js.map +1 -0
- package/dist/database/operators/index.d.ts +7 -0
- package/dist/database/operators/index.js +15 -0
- package/dist/database/operators/index.js.map +1 -0
- package/dist/database/operators/query-builder.d.ts +69 -0
- package/dist/database/operators/query-builder.js +447 -0
- package/dist/database/operators/query-builder.js.map +1 -0
- package/dist/database/presave/decrypt.d.ts +25 -0
- package/dist/database/presave/decrypt.js +146 -0
- package/dist/database/presave/decrypt.js.map +1 -0
- package/dist/database/presave/index.d.ts +9 -0
- package/dist/database/presave/index.js +18 -0
- package/dist/database/presave/index.js.map +1 -0
- package/dist/database/presave/presave-processor.d.ts +148 -0
- package/dist/database/presave/presave-processor.js +702 -0
- package/dist/database/presave/presave-processor.js.map +1 -0
- package/dist/database/schema/index.d.ts +7 -0
- package/dist/database/schema/index.js +13 -0
- package/dist/database/schema/index.js.map +1 -0
- package/dist/database/schema/schema-manager.d.ts +258 -0
- package/dist/database/schema/schema-manager.js +638 -0
- package/dist/database/schema/schema-manager.js.map +1 -0
- package/dist/database/transactions/index.d.ts +6 -0
- package/dist/database/transactions/index.js +13 -0
- package/dist/database/transactions/index.js.map +1 -0
- package/dist/database/transactions/transaction-manager.d.ts +113 -0
- package/dist/database/transactions/transaction-manager.js +344 -0
- package/dist/database/transactions/transaction-manager.js.map +1 -0
- package/dist/database/triggers/index.d.ts +7 -0
- package/dist/database/triggers/index.js +14 -0
- package/dist/database/triggers/index.js.map +1 -0
- package/dist/database/triggers/trigger-processor.d.ts +239 -0
- package/dist/database/triggers/trigger-processor.js +1034 -0
- package/dist/database/triggers/trigger-processor.js.map +1 -0
- package/dist/database/types/action.interface.d.ts +148 -0
- package/dist/database/types/action.interface.js +6 -0
- package/dist/database/types/action.interface.js.map +1 -0
- package/dist/database/types/aggregation.interface.d.ts +185 -0
- package/dist/database/types/aggregation.interface.js +6 -0
- package/dist/database/types/aggregation.interface.js.map +1 -0
- package/dist/database/types/connection.interface.d.ts +137 -0
- package/dist/database/types/connection.interface.js +6 -0
- package/dist/database/types/connection.interface.js.map +1 -0
- package/dist/database/types/dashboard.interface.d.ts +74 -0
- package/dist/database/types/dashboard.interface.js +7 -0
- package/dist/database/types/dashboard.interface.js.map +1 -0
- package/dist/database/types/enums.d.ts +195 -0
- package/dist/database/types/enums.js +244 -0
- package/dist/database/types/enums.js.map +1 -0
- package/dist/database/types/index.d.ts +15 -0
- package/dist/database/types/index.js +31 -0
- package/dist/database/types/index.js.map +1 -0
- package/dist/database/types/migration.interface.d.ts +686 -0
- package/dist/database/types/migration.interface.js +9 -0
- package/dist/database/types/migration.interface.js.map +1 -0
- package/dist/database/types/presave.interface.d.ts +292 -0
- package/dist/database/types/presave.interface.js +60 -0
- package/dist/database/types/presave.interface.js.map +1 -0
- package/dist/database/types/query.interface.d.ts +205 -0
- package/dist/database/types/query.interface.js +6 -0
- package/dist/database/types/query.interface.js.map +1 -0
- package/dist/database/types/schema.interface.d.ts +412 -0
- package/dist/database/types/schema.interface.js +6 -0
- package/dist/database/types/schema.interface.js.map +1 -0
- package/dist/database/types/transaction.interface.d.ts +84 -0
- package/dist/database/types/transaction.interface.js +6 -0
- package/dist/database/types/transaction.interface.js.map +1 -0
- package/dist/database/types/trigger.interface.d.ts +612 -0
- package/dist/database/types/trigger.interface.js +121 -0
- package/dist/database/types/trigger.interface.js.map +1 -0
- package/dist/database/types/write.interface.d.ts +216 -0
- package/dist/database/types/write.interface.js +6 -0
- package/dist/database/types/write.interface.js.map +1 -0
- package/dist/database/utils/database-error.d.ts +96 -0
- package/dist/database/utils/database-error.js +221 -0
- package/dist/database/utils/database-error.js.map +1 -0
- package/dist/database/utils/index.d.ts +6 -0
- package/dist/database/utils/index.js +11 -0
- package/dist/database/utils/index.js.map +1 -0
- package/dist/graph/adapters/adapter.factory.d.ts +47 -0
- package/dist/graph/adapters/adapter.factory.js +77 -0
- package/dist/graph/adapters/adapter.factory.js.map +1 -0
- package/dist/graph/adapters/arangodb.adapter.d.ts +86 -0
- package/dist/graph/adapters/arangodb.adapter.js +1588 -0
- package/dist/graph/adapters/arangodb.adapter.js.map +1 -0
- package/dist/graph/adapters/base.adapter.d.ts +264 -0
- package/dist/graph/adapters/base.adapter.js +156 -0
- package/dist/graph/adapters/base.adapter.js.map +1 -0
- package/dist/graph/adapters/index.d.ts +11 -0
- package/dist/graph/adapters/index.js +21 -0
- package/dist/graph/adapters/index.js.map +1 -0
- package/dist/graph/adapters/memgraph.adapter.d.ts +110 -0
- package/dist/graph/adapters/memgraph.adapter.js +1452 -0
- package/dist/graph/adapters/memgraph.adapter.js.map +1 -0
- package/dist/graph/adapters/neo4j.adapter.d.ts +81 -0
- package/dist/graph/adapters/neo4j.adapter.js +1317 -0
- package/dist/graph/adapters/neo4j.adapter.js.map +1 -0
- package/dist/graph/adapters/neptune.adapter.d.ts +82 -0
- package/dist/graph/adapters/neptune.adapter.js +1369 -0
- package/dist/graph/adapters/neptune.adapter.js.map +1 -0
- package/dist/graph/graphs.service.d.ts +606 -0
- package/dist/graph/graphs.service.js +2434 -0
- package/dist/graph/graphs.service.js.map +1 -0
- package/dist/graph/index.d.ts +57 -0
- package/dist/graph/index.js +77 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/transactions/index.d.ts +4 -0
- package/dist/graph/transactions/index.js +9 -0
- package/dist/graph/transactions/index.js.map +1 -0
- package/dist/graph/transactions/transaction-manager.d.ts +61 -0
- package/dist/graph/transactions/transaction-manager.js +126 -0
- package/dist/graph/transactions/transaction-manager.js.map +1 -0
- package/dist/graph/types/connection.interface.d.ts +149 -0
- package/dist/graph/types/connection.interface.js +9 -0
- package/dist/graph/types/connection.interface.js.map +1 -0
- package/dist/graph/types/enums.d.ts +101 -0
- package/dist/graph/types/enums.js +114 -0
- package/dist/graph/types/enums.js.map +1 -0
- package/dist/graph/types/index.d.ts +13 -0
- package/dist/graph/types/index.js +20 -0
- package/dist/graph/types/index.js.map +1 -0
- package/dist/graph/types/node.interface.d.ts +248 -0
- package/dist/graph/types/node.interface.js +9 -0
- package/dist/graph/types/node.interface.js.map +1 -0
- package/dist/graph/types/query.interface.d.ts +175 -0
- package/dist/graph/types/query.interface.js +9 -0
- package/dist/graph/types/query.interface.js.map +1 -0
- package/dist/graph/types/relationship.interface.d.ts +207 -0
- package/dist/graph/types/relationship.interface.js +9 -0
- package/dist/graph/types/relationship.interface.js.map +1 -0
- package/dist/graph/types/schema.interface.d.ts +295 -0
- package/dist/graph/types/schema.interface.js +9 -0
- package/dist/graph/types/schema.interface.js.map +1 -0
- package/dist/graph/types/transaction.interface.d.ts +55 -0
- package/dist/graph/types/transaction.interface.js +9 -0
- package/dist/graph/types/transaction.interface.js.map +1 -0
- package/dist/graph/types/traversal.interface.d.ts +181 -0
- package/dist/graph/types/traversal.interface.js +9 -0
- package/dist/graph/types/traversal.interface.js.map +1 -0
- package/dist/graph/utils/graph-error.d.ts +71 -0
- package/dist/graph/utils/graph-error.js +142 -0
- package/dist/graph/utils/graph-error.js.map +1 -0
- package/dist/graph/utils/index.d.ts +4 -0
- package/dist/graph/utils/index.js +9 -0
- package/dist/graph/utils/index.js.map +1 -0
- package/dist/imports/imports.service.d.ts +3 -3
- package/dist/imports/imports.service.js +8 -7
- package/dist/imports/imports.service.js.map +1 -1
- package/dist/imports/imports.types.d.ts +8 -0
- package/dist/imports/repos/openApi.repo.d.ts +1 -2
- package/dist/imports/repos/openApi.repo.js +409 -70
- package/dist/imports/repos/openApi.repo.js.map +1 -1
- package/dist/imports/repos/postmanV21.repo.d.ts +1 -1
- package/dist/imports/repos/postmanV21.repo.js +126 -83
- package/dist/imports/repos/postmanV21.repo.js.map +1 -1
- package/dist/index.d.ts +3926 -269
- package/dist/index.js +5475 -682
- package/dist/index.js.map +1 -1
- package/dist/init.interface.d.ts +407 -0
- package/dist/{processor/services/messagebrokers/messagebrokers.type.js → init.interface.js} +1 -1
- package/dist/init.interface.js.map +1 -0
- package/dist/inputs/inputs.service.d.ts +1 -1
- package/dist/inputs/inputs.service.js +2 -2
- package/dist/inputs/inputs.service.js.map +1 -1
- package/dist/inputs/utils/inputs.utils.create.js +1 -1
- package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
- package/dist/jobs/index.d.ts +38 -0
- package/dist/jobs/index.js +50 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/jobs.service.d.ts +154 -0
- package/dist/jobs/jobs.service.js +491 -0
- package/dist/jobs/jobs.service.js.map +1 -0
- package/dist/jobs/jobs.state.d.ts +113 -0
- package/dist/jobs/jobs.state.js +447 -0
- package/dist/jobs/jobs.state.js.map +1 -0
- package/dist/jobs/types.d.ts +449 -0
- package/dist/jobs/types.js +74 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/logs/logs.service.js +6 -1
- package/dist/logs/logs.service.js.map +1 -1
- package/dist/logs/logs.types.d.ts +33 -1
- package/dist/logs/logs.types.js +17 -0
- package/dist/logs/logs.types.js.map +1 -1
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.js +11 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/models.service.d.ts +137 -0
- package/dist/models/models.service.js +195 -0
- package/dist/models/models.service.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.js +26 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/notifications.service.d.ts +268 -0
- package/dist/notifications/notifications.service.js +905 -0
- package/dist/notifications/notifications.service.js.map +1 -0
- package/dist/notifications/types/index.d.ts +4 -0
- package/dist/notifications/types/index.js +21 -0
- package/dist/notifications/types/index.js.map +1 -0
- package/dist/notifications/types/notifications.types.d.ts +452 -0
- package/dist/notifications/types/notifications.types.js +49 -0
- package/dist/notifications/types/notifications.types.js.map +1 -0
- package/dist/parsers/index.d.ts +3 -0
- package/dist/parsers/index.js +27 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
- package/dist/parsers/pipelines/postman.pipelines.js +103 -0
- package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
- package/dist/parsers/types/postman.types.d.ts +200 -0
- package/dist/parsers/types/postman.types.js +3 -0
- package/dist/parsers/types/postman.types.js.map +1 -0
- package/dist/parsers/utils/postman.utils.d.ts +12 -0
- package/dist/parsers/utils/postman.utils.js +116 -0
- package/dist/parsers/utils/postman.utils.js.map +1 -0
- package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
- package/dist/parsers/validators/postman-auth.validators.js +127 -0
- package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
- package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
- package/dist/parsers/validators/postman-request.validators.js +139 -0
- package/dist/parsers/validators/postman-request.validators.js.map +1 -0
- package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
- package/dist/parsers/validators/postman-response.validators.js +150 -0
- package/dist/parsers/validators/postman-response.validators.js.map +1 -0
- package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
- package/dist/parsers/validators/postman-variable.validators.js +163 -0
- package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
- package/dist/pricing/pricing.repo.js +1 -0
- package/dist/pricing/pricing.repo.js.map +1 -0
- package/dist/pricing/pricing.service.d.ts +24 -0
- package/dist/pricing/pricing.service.js +51 -0
- package/dist/pricing/pricing.service.js.map +1 -0
- package/dist/pricing/pricing.types.d.ts +76 -0
- package/dist/pricing/pricing.types.js +21 -0
- package/dist/pricing/pricing.types.js.map +1 -0
- package/dist/pricing/utils/string.utils.d.ts +1 -0
- package/dist/pricing/utils/string.utils.js +9 -0
- package/dist/pricing/utils/string.utils.js.map +1 -0
- package/dist/processor/repos/sms.repo.d.ts +4 -4
- package/dist/processor/repos/sms.repo.js +23 -10
- package/dist/processor/repos/sms.repo.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +251 -78
- package/dist/processor/services/processor.service.js +2803 -1495
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/processor/services/request.service.d.ts +36 -0
- package/dist/processor/services/request.service.js +304 -0
- package/dist/processor/services/request.service.js.map +1 -0
- package/dist/processor/types/request.types.d.ts +14 -0
- package/dist/processor/types/request.types.js +3 -0
- package/dist/processor/types/request.types.js.map +1 -0
- package/dist/processor/utils/processor.utils.d.ts +8 -0
- package/dist/processor/utils/processor.utils.js +152 -12
- package/dist/processor/utils/processor.utils.js.map +1 -1
- package/dist/processor/utils/request.utils.d.ts +20 -0
- package/dist/processor/utils/request.utils.js +113 -0
- package/dist/processor/utils/request.utils.js.map +1 -0
- package/dist/processor/utils/storage.util.js +63 -40
- package/dist/processor/utils/storage.util.js.map +1 -1
- package/dist/products/services/products.service.d.ts +386 -76
- package/dist/products/services/products.service.js +3221 -419
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/utils/string.utils.d.ts +1 -1
- package/dist/products/utils/string.utils.js +14 -2
- package/dist/products/utils/string.utils.js.map +1 -1
- package/dist/products/validators/index.d.ts +7 -1
- package/dist/products/validators/index.js +16 -1
- package/dist/products/validators/index.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productAgent.validator.js +266 -0
- package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productApp.validator.js +2 -2
- package/dist/products/validators/joi-validators/create.productApp.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productDatabase.validator.js +5 -0
- package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productEnv.validator.js +1 -0
- package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productFeature.validator.js +1 -1
- package/dist/products/validators/joi-validators/create.productGraph.validator.js +89 -0
- package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +4 -0
- package/dist/{processor/services/messagebrokers/rabbitmq.service.js → products/validators/joi-validators/create.productHealthcheck.validator.js} +23 -32
- package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productJob.validator.js +2 -2
- package/dist/products/validators/joi-validators/create.productJob.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js +1 -0
- package/dist/products/validators/joi-validators/create.productMessageBrokerTopic.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +81 -25
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productModel.validator.js +132 -0
- package/dist/products/validators/joi-validators/create.productModel.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.productNotification.validator.js +150 -51
- package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productStorage.validator.js +77 -18
- package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +3 -0
- package/dist/products/validators/joi-validators/create.productVector.validator.js +136 -0
- package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/create.userAuth.validator.js +1 -0
- package/dist/products/validators/joi-validators/create.userAuth.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.dataValue.validator.js +1 -0
- package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productDatabase.validator.js +5 -0
- package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productEnv.validator.js +3 -0
- package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productGraph.validator.js +88 -0
- package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -0
- package/dist/products/validators/joi-validators/update.userAuth.validator.js +1 -0
- package/dist/products/validators/joi-validators/update.userAuth.validator.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +141 -0
- package/dist/resilience/fallback.service.js +766 -0
- package/dist/resilience/fallback.service.js.map +1 -0
- package/dist/resilience/healthcheck.service.d.ts +159 -0
- package/dist/resilience/healthcheck.service.js +943 -0
- package/dist/resilience/healthcheck.service.js.map +1 -0
- package/dist/resilience/index.d.ts +104 -0
- package/dist/resilience/index.js +140 -0
- package/dist/resilience/index.js.map +1 -0
- package/dist/resilience/quota.service.d.ts +83 -0
- package/dist/resilience/quota.service.js +518 -0
- package/dist/resilience/quota.service.js.map +1 -0
- package/dist/resilience/resilience.service.d.ts +98 -0
- package/dist/resilience/resilience.service.js +560 -0
- package/dist/resilience/resilience.service.js.map +1 -0
- package/dist/resilience/types/index.d.ts +513 -0
- package/dist/resilience/types/index.js +29 -0
- package/dist/resilience/types/index.js.map +1 -0
- package/dist/secrets/index.d.ts +10 -0
- package/dist/secrets/index.js +33 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/secrets.resolver.d.ts +52 -0
- package/dist/secrets/secrets.resolver.js +236 -0
- package/dist/secrets/secrets.resolver.js.map +1 -0
- package/dist/secrets/secrets.service.d.ts +93 -0
- package/dist/secrets/secrets.service.js +246 -0
- package/dist/secrets/secrets.service.js.map +1 -0
- package/dist/secrets/secrets.types.d.ts +188 -0
- package/dist/secrets/secrets.types.js +87 -0
- package/dist/secrets/secrets.types.js.map +1 -0
- package/dist/sessions/index.d.ts +50 -0
- package/dist/sessions/index.js +96 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/sessions.helper.d.ts +88 -0
- package/dist/sessions/sessions.helper.js +133 -0
- package/dist/sessions/sessions.helper.js.map +1 -0
- package/dist/sessions/sessions.resolver.d.ts +188 -0
- package/dist/sessions/sessions.resolver.js +603 -0
- package/dist/sessions/sessions.resolver.js.map +1 -0
- package/dist/sessions/sessions.service.d.ts +194 -0
- package/dist/sessions/sessions.service.js +987 -0
- package/dist/sessions/sessions.service.js.map +1 -0
- package/dist/sessions/types/index.d.ts +342 -0
- package/dist/sessions/types/index.js +6 -0
- package/dist/sessions/types/index.js.map +1 -0
- package/dist/storage/index.d.ts +66 -0
- package/dist/storage/index.js +99 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.service.d.ts +177 -0
- package/dist/storage/storage.service.js +897 -0
- package/dist/storage/storage.service.js.map +1 -0
- package/dist/storage/types/index.d.ts +267 -0
- package/dist/storage/types/index.js +6 -0
- package/dist/storage/types/index.js.map +1 -0
- package/dist/storage/utils/storage.util.d.ts +62 -0
- package/dist/storage/utils/storage.util.js +593 -0
- package/dist/storage/utils/storage.util.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +13 -14
- package/dist/types/enums.d.ts +11 -1
- package/dist/types/enums.js +10 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/index.types.d.ts +9 -4
- package/dist/types/index.types.js +0 -1
- package/dist/types/index.types.js.map +1 -1
- package/dist/types/inputs.types.d.ts +1 -0
- package/dist/types/inputs.types.js +4 -3
- package/dist/types/inputs.types.js.map +1 -1
- package/dist/types/pricing.types.d.ts +4 -0
- package/dist/types/pricing.types.js +3 -0
- package/dist/types/pricing.types.js.map +1 -0
- package/dist/types/processor.types.d.ts +324 -18
- package/dist/types/processor.types.js +9 -1
- package/dist/types/processor.types.js.map +1 -1
- package/dist/types/productsBuilder.types.d.ts +1007 -23
- package/dist/types/productsBuilder.types.js +216 -2
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/types/request-tracker.interface.js +1 -0
- package/dist/types/request-tracker.interface.js.map +1 -0
- package/dist/types/requests.types.d.ts +2 -0
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.js +5 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.js +24 -52
- package/dist/utils/index.js.map +1 -1
- package/dist/vector/actions/action-manager.d.ts +140 -0
- package/dist/vector/actions/action-manager.js +356 -0
- package/dist/vector/actions/action-manager.js.map +1 -0
- package/dist/vector/adapters/base.adapter.d.ts +169 -0
- package/dist/vector/adapters/base.adapter.js +218 -0
- package/dist/vector/adapters/base.adapter.js.map +1 -0
- package/dist/vector/adapters/index.d.ts +10 -0
- package/dist/vector/adapters/index.js +19 -0
- package/dist/vector/adapters/index.js.map +1 -0
- package/dist/vector/adapters/memory.adapter.d.ts +85 -0
- package/dist/vector/adapters/memory.adapter.js +505 -0
- package/dist/vector/adapters/memory.adapter.js.map +1 -0
- package/dist/vector/adapters/pinecone.adapter.d.ts +52 -0
- package/dist/vector/adapters/pinecone.adapter.js +433 -0
- package/dist/vector/adapters/pinecone.adapter.js.map +1 -0
- package/dist/vector/adapters/qdrant.adapter.d.ts +56 -0
- package/dist/vector/adapters/qdrant.adapter.js +442 -0
- package/dist/vector/adapters/qdrant.adapter.js.map +1 -0
- package/dist/vector/adapters/weaviate.adapter.d.ts +68 -0
- package/dist/vector/adapters/weaviate.adapter.js +661 -0
- package/dist/vector/adapters/weaviate.adapter.js.map +1 -0
- package/dist/vector/index.d.ts +36 -0
- package/dist/vector/index.js +70 -0
- package/dist/vector/index.js.map +1 -0
- package/dist/vector/types/action.interface.d.ts +195 -0
- package/dist/vector/types/action.interface.js +100 -0
- package/dist/vector/types/action.interface.js.map +1 -0
- package/dist/vector/types/connection.interface.d.ts +151 -0
- package/dist/vector/types/connection.interface.js +8 -0
- package/dist/vector/types/connection.interface.js.map +1 -0
- package/dist/vector/types/embedding.interface.d.ts +144 -0
- package/dist/vector/types/embedding.interface.js +8 -0
- package/dist/vector/types/embedding.interface.js.map +1 -0
- package/dist/vector/types/enums.d.ts +104 -0
- package/dist/vector/types/enums.js +113 -0
- package/dist/vector/types/enums.js.map +1 -0
- package/dist/vector/types/index.d.ts +11 -0
- package/dist/vector/types/index.js +23 -0
- package/dist/vector/types/index.js.map +1 -0
- package/dist/vector/types/vector.interface.d.ts +315 -0
- package/dist/vector/types/vector.interface.js +8 -0
- package/dist/vector/types/vector.interface.js.map +1 -0
- package/dist/vector/utils/index.d.ts +6 -0
- package/dist/vector/utils/index.js +11 -0
- package/dist/vector/utils/index.js.map +1 -0
- package/dist/vector/utils/vector-error.d.ts +69 -0
- package/dist/vector/utils/vector-error.js +116 -0
- package/dist/vector/utils/vector-error.js.map +1 -0
- package/dist/vector/vector-database.service.d.ts +476 -0
- package/dist/vector/vector-database.service.js +892 -0
- package/dist/vector/vector-database.service.js.map +1 -0
- package/dist/vector/vector.service.d.ts +283 -0
- package/dist/vector/vector.service.js +544 -0
- package/dist/vector/vector.service.js.map +1 -0
- package/dist/warehouse/executor/index.d.ts +5 -0
- package/dist/warehouse/executor/index.js +12 -0
- package/dist/warehouse/executor/index.js.map +1 -0
- package/dist/warehouse/executor/joins/index.d.ts +5 -0
- package/dist/warehouse/executor/joins/index.js +11 -0
- package/dist/warehouse/executor/joins/index.js.map +1 -0
- package/dist/warehouse/executor/joins/join-executor.d.ts +101 -0
- package/dist/warehouse/executor/joins/join-executor.js +493 -0
- package/dist/warehouse/executor/joins/join-executor.js.map +1 -0
- package/dist/warehouse/executor/joins/semantic-join.d.ts +64 -0
- package/dist/warehouse/executor/joins/semantic-join.js +241 -0
- package/dist/warehouse/executor/joins/semantic-join.js.map +1 -0
- package/dist/warehouse/executor/single-source-executor.d.ts +155 -0
- package/dist/warehouse/executor/single-source-executor.js +573 -0
- package/dist/warehouse/executor/single-source-executor.js.map +1 -0
- package/dist/warehouse/index.d.ts +79 -0
- package/dist/warehouse/index.js +111 -0
- package/dist/warehouse/index.js.map +1 -0
- package/dist/warehouse/parser/index.d.ts +4 -0
- package/dist/warehouse/parser/index.js +10 -0
- package/dist/warehouse/parser/index.js.map +1 -0
- package/dist/warehouse/parser/query-parser.d.ts +181 -0
- package/dist/warehouse/parser/query-parser.js +415 -0
- package/dist/warehouse/parser/query-parser.js.map +1 -0
- package/dist/warehouse/registry/data-source-registry.d.ts +207 -0
- package/dist/warehouse/registry/data-source-registry.js +396 -0
- package/dist/warehouse/registry/data-source-registry.js.map +1 -0
- package/dist/warehouse/registry/index.d.ts +4 -0
- package/dist/warehouse/registry/index.js +9 -0
- package/dist/warehouse/registry/index.js.map +1 -0
- package/dist/warehouse/transactions/index.d.ts +4 -0
- package/dist/warehouse/transactions/index.js +9 -0
- package/dist/warehouse/transactions/index.js.map +1 -0
- package/dist/warehouse/transactions/saga-orchestrator.d.ts +92 -0
- package/dist/warehouse/transactions/saga-orchestrator.js +383 -0
- package/dist/warehouse/transactions/saga-orchestrator.js.map +1 -0
- package/dist/warehouse/types/index.d.ts +9 -0
- package/dist/warehouse/types/index.js +33 -0
- package/dist/warehouse/types/index.js.map +1 -0
- package/dist/warehouse/types/join.interface.d.ts +225 -0
- package/dist/warehouse/types/join.interface.js +87 -0
- package/dist/warehouse/types/join.interface.js.map +1 -0
- package/dist/warehouse/types/query.interface.d.ts +232 -0
- package/dist/warehouse/types/query.interface.js +9 -0
- package/dist/warehouse/types/query.interface.js.map +1 -0
- package/dist/warehouse/types/transaction.interface.d.ts +236 -0
- package/dist/warehouse/types/transaction.interface.js +74 -0
- package/dist/warehouse/types/transaction.interface.js.map +1 -0
- package/dist/warehouse/types/where.interface.d.ts +208 -0
- package/dist/warehouse/types/where.interface.js +89 -0
- package/dist/warehouse/types/where.interface.js.map +1 -0
- package/dist/warehouse/warehouse.service.d.ts +200 -0
- package/dist/warehouse/warehouse.service.js +470 -0
- package/dist/warehouse/warehouse.service.js.map +1 -0
- package/dist/workflows/index.d.ts +30 -0
- package/dist/workflows/index.js +64 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/types/index.d.ts +6 -0
- package/dist/workflows/types/index.js +23 -0
- package/dist/workflows/types/index.js.map +1 -0
- package/dist/workflows/types/workflows.types.d.ts +1095 -0
- package/dist/workflows/types/workflows.types.js +13 -0
- package/dist/workflows/types/workflows.types.js.map +1 -0
- package/dist/workflows/workflow-builder.d.ts +70 -0
- package/dist/workflows/workflow-builder.js +353 -0
- package/dist/workflows/workflow-builder.js.map +1 -0
- package/dist/workflows/workflow-executor.d.ts +287 -0
- package/dist/workflows/workflow-executor.js +2399 -0
- package/dist/workflows/workflow-executor.js.map +1 -0
- package/dist/workflows/workflows.service.d.ts +412 -0
- package/dist/workflows/workflows.service.js +2188 -0
- package/dist/workflows/workflows.service.js.map +1 -0
- package/package.json +83 -11
- package/dist/actions/actions.repo.js +0 -13
- package/dist/actions/actions.repo.js.map +0 -1
- package/dist/actions/actions.service.js +0 -24
- package/dist/actions/actions.service.js.map +0 -1
- package/dist/actions/utils/actions.util.read.d.ts +0 -0
- package/dist/actions/utils/actions.util.read.js +0 -427
- package/dist/actions/utils/actions.util.read.js.map +0 -1
- package/dist/api/services/integrationsApi.service.d.ts +0 -18
- package/dist/api/services/integrationsApi.service.js +0 -80
- package/dist/api/services/integrationsApi.service.js.map +0 -1
- package/dist/appBuilder/services/app.service.d.ts +0 -111
- package/dist/appBuilder/services/app.service.js +0 -737
- package/dist/appBuilder/services/app.service.js.map +0 -1
- package/dist/appBuilder/services/appBuilder.service.d.ts +0 -111
- package/dist/appBuilder/services/appBuilder.service.js +0 -662
- package/dist/appBuilder/services/appBuilder.service.js.map +0 -1
- package/dist/appBuilder/utils/objects.utils.d.ts +0 -3
- package/dist/appBuilder/utils/objects.utils.js +0 -9
- package/dist/appBuilder/utils/objects.utils.js.map +0 -1
- package/dist/appBuilder/utils/string.utils.d.ts +0 -2
- package/dist/appBuilder/utils/string.utils.js +0 -57
- package/dist/appBuilder/utils/string.utils.js.map +0 -1
- package/dist/appBuilder/validators/index.d.ts +0 -19
- package/dist/appBuilder/validators/index.js +0 -40
- package/dist/appBuilder/validators/index.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.app.validator.js +0 -10
- package/dist/appBuilder/validators/joi-validators/create.app.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js +0 -20
- package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js +0 -44
- package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js +0 -31
- package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js +0 -11
- package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js +0 -12
- package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js +0 -17
- package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js +0 -30
- package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js +0 -14
- package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/sample.validator.d.ts +0 -5
- package/dist/appBuilder/validators/joi-validators/sample.validator.js +0 -26
- package/dist/appBuilder/validators/joi-validators/sample.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.app.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.app.validator.js +0 -34
- package/dist/appBuilder/validators/joi-validators/update.app.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js +0 -23
- package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js +0 -21
- package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js +0 -19
- package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js +0 -12
- package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js +0 -17
- package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js +0 -16
- package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js +0 -14
- package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js.map +0 -1
- package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js +0 -27
- package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
- package/dist/apps/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
- package/dist/apps/validators/joi-validators/create.appEvent.validator.js +0 -30
- package/dist/apps/validators/joi-validators/create.appEvent.validator.js.map +0 -1
- package/dist/apps/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
- package/dist/apps/validators/joi-validators/update.appEvent.validator.js +0 -16
- package/dist/apps/validators/joi-validators/update.appEvent.validator.js.map +0 -1
- package/dist/clients/integrations.client.d.ts +0 -2
- package/dist/clients/integrations.client.js +0 -26
- package/dist/clients/integrations.client.js.map +0 -1
- package/dist/integrationsBuilder/services/integration.service.d.ts +0 -138
- package/dist/integrationsBuilder/services/integration.service.js +0 -1148
- package/dist/integrationsBuilder/services/integration.service.js.map +0 -1
- package/dist/integrationsBuilder/services/integrationBuilder.service.d.ts +0 -130
- package/dist/integrationsBuilder/services/integrationBuilder.service.js +0 -1017
- package/dist/integrationsBuilder/services/integrationBuilder.service.js.map +0 -1
- package/dist/integrationsBuilder/utils/objects.utils.d.ts +0 -2
- package/dist/integrationsBuilder/utils/objects.utils.js +0 -48
- package/dist/integrationsBuilder/utils/objects.utils.js.map +0 -1
- package/dist/integrationsBuilder/utils/string.utils.d.ts +0 -1
- package/dist/integrationsBuilder/utils/string.utils.js +0 -9
- package/dist/integrationsBuilder/utils/string.utils.js.map +0 -1
- package/dist/integrationsBuilder/validators/index.d.ts +0 -18
- package/dist/integrationsBuilder/validators/index.js +0 -38
- package/dist/integrationsBuilder/validators/index.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js +0 -10
- package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.d.ts +0 -4
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js +0 -26
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js +0 -10
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js +0 -60
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js +0 -9
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js.map +0 -1
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.d.ts +0 -3
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js +0 -8
- package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js.map +0 -1
- package/dist/postman.d.ts +0 -1
- package/dist/postman.js +0 -21674
- package/dist/postman.js.map +0 -1
- package/dist/processor/services/fallback.service.d.ts +0 -5
- package/dist/processor/services/fallback.service.js +0 -43
- package/dist/processor/services/fallback.service.js.map +0 -1
- package/dist/processor/services/messagebrokers/aws-sqs.service.js +0 -77
- package/dist/processor/services/messagebrokers/aws-sqs.service.js.map +0 -1
- package/dist/processor/services/messagebrokers/google-pubsub.service.js.map +0 -1
- package/dist/processor/services/messagebrokers/index.d.ts +0 -3
- package/dist/processor/services/messagebrokers/index.js +0 -26
- package/dist/processor/services/messagebrokers/index.js.map +0 -1
- package/dist/processor/services/messagebrokers/kafka.service.d.ts +0 -14
- package/dist/processor/services/messagebrokers/kafka.service.js +0 -45
- package/dist/processor/services/messagebrokers/kafka.service.js.map +0 -1
- package/dist/processor/services/messagebrokers/messagebrokers.type.d.ts +0 -6
- package/dist/processor/services/messagebrokers/messagebrokers.type.js.map +0 -1
- package/dist/processor/services/messagebrokers/rabbitmq.service.d.ts +0 -14
- package/dist/processor/services/messagebrokers/rabbitmq.service.js.map +0 -1
- package/dist/processor/services/messagebrokers/redis.service.js.map +0 -1
- package/dist/processor/services/quota.service.d.ts +0 -15
- package/dist/processor/services/quota.service.js +0 -63
- package/dist/processor/services/quota.service.js.map +0 -1
- package/dist/processor/utils/mongo.util.d.ts +0 -0
- package/dist/processor/utils/mongo.util.js +0 -152
- package/dist/processor/utils/mongo.util.js.map +0 -1
- package/dist/processor/utils/postgres.util.d.ts +0 -14
- package/dist/processor/utils/postgres.util.js +0 -83
- package/dist/processor/utils/postgres.util.js.map +0 -1
- package/dist/products/validators/joi-validators/create.product.validator.d.ts +0 -3
- package/dist/products/validators/joi-validators/create.product.validator.js +0 -10
- package/dist/products/validators/joi-validators/create.product.validator.js.map +0 -1
- package/dist/test/test.appBuilder.d.ts +0 -1
- package/dist/test/test.appBuilder.js +0 -16
- package/dist/test/test.appBuilder.js.map +0 -1
- package/dist/test/test.import.d.ts +0 -1
- package/dist/test/test.import.js +0 -1460
- package/dist/test/test.import.js.map +0 -1
- package/dist/test/test.import.openapi.d.ts +0 -1
- package/dist/test/test.import.openapi.js +0 -76
- package/dist/test/test.import.openapi.js.map +0 -1
- package/dist/test/test.imports.d.ts +0 -1
- package/dist/test/test.imports.js +0 -62
- package/dist/test/test.imports.js.map +0 -1
- package/dist/test/test.logs.d.ts +0 -1
- package/dist/test/test.logs.js +0 -18
- package/dist/test/test.logs.js.map +0 -1
- package/dist/test/test.processor.d.ts +0 -1
- package/dist/test/test.processor.js +0 -123
- package/dist/test/test.processor.js.map +0 -1
- package/dist/test/test.productBuilder.d.ts +0 -1
- package/dist/test/test.productBuilder.js +0 -661
- package/dist/test/test.productBuilder.js.map +0 -1
- package/dist/test.appBuilder.d.ts +0 -1
- package/dist/test.appBuilder.js +0 -14
- package/dist/test.appBuilder.js.map +0 -1
- package/dist/test.import.d.ts +0 -0
- package/dist/test.import.js +0 -24
- package/dist/test.import.js.map +0 -1
- package/dist/test.imports.d.ts +0 -1
- package/dist/test.imports.js +0 -28
- package/dist/test.imports.js.map +0 -1
- package/dist/test.integrationBuilder.d.ts +0 -1
- package/dist/test.integrationBuilder.js +0 -276
- package/dist/test.integrationBuilder.js.map +0 -1
- package/dist/test.processor.d.ts +0 -1
- package/dist/test.processor.js +0 -23
- package/dist/test.processor.js.map +0 -1
- package/dist/test.utils.d.ts +0 -1
- package/dist/test.utils.js +0 -25
- package/dist/test.utils.js.map +0 -1
- package/dist/types/integrationsBuilder.types.d.ts +0 -276
- package/dist/types/integrationsBuilder.types.js +0 -51
- package/dist/types/integrationsBuilder.types.js.map +0 -1
- /package/dist/{actions/actions.repo.d.ts → pricing/pricing.repo.d.ts} +0 -0
- /package/dist/{appBuilder/validators/joi-validators/create.app.validator.d.ts → products/validators/joi-validators/create.productGraph.validator.d.ts} +0 -0
- /package/dist/{appBuilder/validators/joi-validators/update.validation.entityData.validator.d.ts → products/validators/joi-validators/update.productGraph.validator.d.ts} +0 -0
- /package/dist/{actions/actions.service.d.ts → types/request-tracker.interface.d.ts} +0 -0
|
@@ -0,0 +1,1205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BrokersService - Main Message Broker Service Class
|
|
4
|
+
*
|
|
5
|
+
* Provides a unified interface for message broker operations including
|
|
6
|
+
* publish and subscribe functionality.
|
|
7
|
+
*
|
|
8
|
+
* Supported providers: RabbitMQ, Kafka, AWS SQS, Redis, Google Pub/Sub
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.BrokersService = exports.BrokerError = void 0;
|
|
15
|
+
const broker_util_1 = require("./utils/broker.util");
|
|
16
|
+
const products_service_1 = __importDefault(require("../products/services/products.service"));
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
const logs_service_1 = __importDefault(require("../logs/logs.service"));
|
|
19
|
+
const types_2 = require("../types");
|
|
20
|
+
const processor_utils_1 = require("../processor/utils/processor.utils");
|
|
21
|
+
const processorApi_service_1 = require("../api/services/processorApi.service");
|
|
22
|
+
const secrets_1 = require("../secrets");
|
|
23
|
+
const cache_manager_1 = require("../cache/cache.manager");
|
|
24
|
+
const sessions_1 = require("../sessions");
|
|
25
|
+
/** Log prefix for broker operations */
|
|
26
|
+
const LOG_PREFIX = '[BrokersService]';
|
|
27
|
+
/**
|
|
28
|
+
* Error class for broker operations
|
|
29
|
+
*/
|
|
30
|
+
class BrokerError extends Error {
|
|
31
|
+
constructor(message, code, details) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.code = code;
|
|
34
|
+
this.details = details;
|
|
35
|
+
this.name = 'BrokerError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.BrokerError = BrokerError;
|
|
39
|
+
/**
|
|
40
|
+
* BrokersService
|
|
41
|
+
*
|
|
42
|
+
* Unified API for all message broker operations.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import { BrokersService } from '@ductape/sdk';
|
|
47
|
+
*
|
|
48
|
+
* const brokers = new BrokersService({
|
|
49
|
+
* workspace_id: 'your-workspace-id',
|
|
50
|
+
* public_key: 'your-public-key',
|
|
51
|
+
* user_id: 'your-user-id',
|
|
52
|
+
* token: 'your-token',
|
|
53
|
+
* env_type: 'prd',
|
|
54
|
+
* });
|
|
55
|
+
*
|
|
56
|
+
* // Publish a message
|
|
57
|
+
* await brokers.publish({
|
|
58
|
+
* product: 'my-product',
|
|
59
|
+
* env: 'production',
|
|
60
|
+
* event: 'orders-broker:new-order',
|
|
61
|
+
* message: { orderId: '123', amount: 99.99 },
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* // Subscribe to messages
|
|
65
|
+
* await brokers.subscribe({
|
|
66
|
+
* product: 'my-product',
|
|
67
|
+
* env: 'production',
|
|
68
|
+
* event: 'orders-broker:new-order',
|
|
69
|
+
* callback: async (message) => {
|
|
70
|
+
* console.log('Received:', message);
|
|
71
|
+
* },
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
class BrokersService {
|
|
76
|
+
constructor(config) {
|
|
77
|
+
var _a;
|
|
78
|
+
this.logService = null;
|
|
79
|
+
this.productId = '';
|
|
80
|
+
this.productTag = '';
|
|
81
|
+
this.privateKey = '';
|
|
82
|
+
/** Cache manager for 3-tier caching */
|
|
83
|
+
this.cacheManager = null;
|
|
84
|
+
/** Private keys per product for cache encryption */
|
|
85
|
+
this.privateKeys = new Map();
|
|
86
|
+
/** Connection pool for broker services - keyed by broker type + config hash */
|
|
87
|
+
this.brokerServicePool = new Map();
|
|
88
|
+
/** Cache for initialized broker configs - keyed by "productTag:brokerTag:envSlug" */
|
|
89
|
+
this.initializedBrokerCache = new Map();
|
|
90
|
+
/** Cache for initialized products - keyed by productTag */
|
|
91
|
+
this.initializedProducts = new Set();
|
|
92
|
+
/** Cache for registered broker consumers - keyed by consumerTag to track which consumers have been registered */
|
|
93
|
+
this.registeredConsumers = new Set();
|
|
94
|
+
/** Local cache for cache configurations to avoid repeated API calls */
|
|
95
|
+
this.cacheConfigCache = new Map();
|
|
96
|
+
/** Dedupe "Publish to broker - success" when same event is published twice in quick succession (e.g. workflow step run twice) */
|
|
97
|
+
this.lastPublishSuccessLogKey = null;
|
|
98
|
+
this.lastPublishSuccessLogTime = 0;
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// BROKER MESSAGE QUERY METHODS (for workbench with decryption)
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Messages namespace for workbench broker message queries
|
|
104
|
+
* All methods decrypt message content before returning
|
|
105
|
+
*/
|
|
106
|
+
this.messages = {
|
|
107
|
+
/**
|
|
108
|
+
* Query broker messages with filtering and pagination
|
|
109
|
+
* Decrypts message content before returning
|
|
110
|
+
*/
|
|
111
|
+
query: async (options) => {
|
|
112
|
+
try {
|
|
113
|
+
await this.initializeProductForEvents(options.product);
|
|
114
|
+
const result = await this.processorApiService.queryBrokerMessages({
|
|
115
|
+
product_tag: options.product,
|
|
116
|
+
env: options.env,
|
|
117
|
+
broker_tag: options.brokerTag,
|
|
118
|
+
topic_tag: options.topicTag,
|
|
119
|
+
producer_tag: options.producerTag,
|
|
120
|
+
consumer_tag: options.consumerTag,
|
|
121
|
+
status: options.status,
|
|
122
|
+
start_date: options.startDate,
|
|
123
|
+
end_date: options.endDate,
|
|
124
|
+
page: options.page,
|
|
125
|
+
limit: options.limit,
|
|
126
|
+
}, this.getUserAccess());
|
|
127
|
+
// Decrypt message content for each message
|
|
128
|
+
const messages = result.messages.map((msg) => (Object.assign(Object.assign({}, msg), { message_decrypted: msg.message_encrypted
|
|
129
|
+
? this.decryptPayload(msg.message_encrypted)
|
|
130
|
+
: undefined })));
|
|
131
|
+
return {
|
|
132
|
+
messages,
|
|
133
|
+
total: result.total,
|
|
134
|
+
page: result.page,
|
|
135
|
+
limit: result.limit,
|
|
136
|
+
hasMore: result.hasMore,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
if (error instanceof BrokerError)
|
|
141
|
+
throw error;
|
|
142
|
+
throw new BrokerError(`Failed to query broker messages: ${error}`, 'QUERY_MESSAGES_FAILED', error);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* Get broker producers with pagination
|
|
147
|
+
*/
|
|
148
|
+
getProducers: async (options) => {
|
|
149
|
+
try {
|
|
150
|
+
await this.initializeProductForEvents(options.product);
|
|
151
|
+
return await this.processorApiService.getBrokerProducers({
|
|
152
|
+
product_tag: options.product,
|
|
153
|
+
env: options.env,
|
|
154
|
+
broker_tag: options.brokerTag,
|
|
155
|
+
topic_tag: options.topicTag,
|
|
156
|
+
page: options.page,
|
|
157
|
+
limit: options.limit,
|
|
158
|
+
}, this.getUserAccess());
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (error instanceof BrokerError)
|
|
162
|
+
throw error;
|
|
163
|
+
throw new BrokerError(`Failed to get broker producers: ${error}`, 'GET_PRODUCERS_FAILED', error);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
/**
|
|
167
|
+
* Get broker consumers with pagination
|
|
168
|
+
*/
|
|
169
|
+
getConsumers: async (options) => {
|
|
170
|
+
try {
|
|
171
|
+
await this.initializeProductForEvents(options.product);
|
|
172
|
+
return await this.processorApiService.getBrokerConsumers({
|
|
173
|
+
product_tag: options.product,
|
|
174
|
+
env: options.env,
|
|
175
|
+
broker_tag: options.brokerTag,
|
|
176
|
+
topic_tag: options.topicTag,
|
|
177
|
+
page: options.page,
|
|
178
|
+
limit: options.limit,
|
|
179
|
+
}, this.getUserAccess());
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (error instanceof BrokerError)
|
|
183
|
+
throw error;
|
|
184
|
+
throw new BrokerError(`Failed to get broker consumers: ${error}`, 'GET_CONSUMERS_FAILED', error);
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
/**
|
|
188
|
+
* Get broker dead letters with pagination
|
|
189
|
+
* Decrypts message content before returning
|
|
190
|
+
*/
|
|
191
|
+
getDeadLetters: async (options) => {
|
|
192
|
+
try {
|
|
193
|
+
await this.initializeProductForEvents(options.product);
|
|
194
|
+
const result = await this.processorApiService.getBrokerDeadLetters({
|
|
195
|
+
product_tag: options.product,
|
|
196
|
+
env: options.env,
|
|
197
|
+
broker_tag: options.brokerTag,
|
|
198
|
+
topic_tag: options.topicTag,
|
|
199
|
+
consumer_tag: options.consumerTag,
|
|
200
|
+
start_date: options.startDate,
|
|
201
|
+
end_date: options.endDate,
|
|
202
|
+
page: options.page,
|
|
203
|
+
limit: options.limit,
|
|
204
|
+
}, this.getUserAccess());
|
|
205
|
+
// Decrypt message content for dead letters
|
|
206
|
+
const deadLetters = result.deadLetters.map((dl) => (Object.assign(Object.assign({}, dl), { original_message: dl.original_message ? Object.assign(Object.assign({}, dl.original_message), { message_decrypted: dl.original_message.message_encrypted
|
|
207
|
+
? this.decryptPayload(dl.original_message.message_encrypted)
|
|
208
|
+
: undefined }) : dl.original_message })));
|
|
209
|
+
return {
|
|
210
|
+
deadLetters,
|
|
211
|
+
total: result.total,
|
|
212
|
+
page: result.page,
|
|
213
|
+
limit: result.limit,
|
|
214
|
+
hasMore: result.hasMore,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
if (error instanceof BrokerError)
|
|
219
|
+
throw error;
|
|
220
|
+
throw new BrokerError(`Failed to get broker dead letters: ${error}`, 'GET_DEAD_LETTERS_FAILED', error);
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
/**
|
|
224
|
+
* Get comprehensive broker message statistics
|
|
225
|
+
*/
|
|
226
|
+
getStats: async (options) => {
|
|
227
|
+
try {
|
|
228
|
+
await this.initializeProductForEvents(options.product);
|
|
229
|
+
return await this.processorApiService.getBrokerComprehensiveStats({
|
|
230
|
+
product_tag: options.product,
|
|
231
|
+
env: options.env,
|
|
232
|
+
broker_tag: options.brokerTag,
|
|
233
|
+
}, this.getUserAccess());
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
if (error instanceof BrokerError)
|
|
237
|
+
throw error;
|
|
238
|
+
throw new BrokerError(`Failed to get broker stats: ${error}`, 'GET_STATS_FAILED', error);
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
/**
|
|
242
|
+
* Get broker dashboard overview data
|
|
243
|
+
* Decrypts message content for recent messages
|
|
244
|
+
*/
|
|
245
|
+
getDashboard: async (options) => {
|
|
246
|
+
try {
|
|
247
|
+
await this.initializeProductForEvents(options.product);
|
|
248
|
+
const result = await this.processorApiService.getBrokerDashboard({
|
|
249
|
+
product_tag: options.product,
|
|
250
|
+
env: options.env,
|
|
251
|
+
broker_tag: options.brokerTag,
|
|
252
|
+
}, this.getUserAccess());
|
|
253
|
+
// Decrypt recent messages
|
|
254
|
+
const recentMessages = (result.recent_messages || []).map((msg) => (Object.assign(Object.assign({}, msg), { message_decrypted: msg.message_encrypted
|
|
255
|
+
? this.decryptPayload(msg.message_encrypted)
|
|
256
|
+
: undefined })));
|
|
257
|
+
return Object.assign(Object.assign({}, result), { recent_messages: recentMessages });
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
if (error instanceof BrokerError)
|
|
261
|
+
throw error;
|
|
262
|
+
throw new BrokerError(`Failed to get broker dashboard: ${error}`, 'GET_DASHBOARD_FAILED', error);
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
this.config = config;
|
|
267
|
+
this.productBuilderService = (_a = config.preInitializedProductBuilder) !== null && _a !== void 0 ? _a : new products_service_1.default({
|
|
268
|
+
workspace_id: config.workspace_id,
|
|
269
|
+
public_key: config.public_key,
|
|
270
|
+
user_id: config.user_id,
|
|
271
|
+
token: config.token,
|
|
272
|
+
env_type: config.env_type,
|
|
273
|
+
redis_client: config.redis_client,
|
|
274
|
+
access_key: config.access_key,
|
|
275
|
+
});
|
|
276
|
+
this.processorApiService = new processorApi_service_1.ProcessorApiService(config.env_type);
|
|
277
|
+
// Initialize CacheManager if Redis client is provided
|
|
278
|
+
if (config.redis_client) {
|
|
279
|
+
this.cacheManager = new cache_manager_1.CacheManager({
|
|
280
|
+
workspace_id: config.workspace_id,
|
|
281
|
+
public_key: config.public_key,
|
|
282
|
+
user_id: config.user_id,
|
|
283
|
+
token: config.token,
|
|
284
|
+
env_type: config.env_type || '',
|
|
285
|
+
redis_client: config.redis_client,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Get user access credentials
|
|
291
|
+
*/
|
|
292
|
+
getUserAccess() {
|
|
293
|
+
return {
|
|
294
|
+
user_id: this.config.user_id,
|
|
295
|
+
token: this.config.token,
|
|
296
|
+
workspace_id: this.config.workspace_id,
|
|
297
|
+
public_key: this.config.public_key,
|
|
298
|
+
access_key: this.config.access_key,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Initialize product and get broker configuration (with caching)
|
|
303
|
+
*/
|
|
304
|
+
async initializeBroker(productTag, envSlug, event, message) {
|
|
305
|
+
var _a, _b;
|
|
306
|
+
// Parse event to get broker and topic tags
|
|
307
|
+
const { brokerTag, topicTag } = (0, broker_util_1.parseEventString)(event);
|
|
308
|
+
// Check cache first (keyed by product:broker:env)
|
|
309
|
+
const cacheKey = `${productTag}:${brokerTag}:${envSlug}`;
|
|
310
|
+
const cached = this.initializedBrokerCache.get(cacheKey);
|
|
311
|
+
if (cached) {
|
|
312
|
+
// For cached brokers, just check if topic exists (might be new topic)
|
|
313
|
+
let topic = (_a = cached.broker.topics) === null || _a === void 0 ? void 0 : _a.find(t => t.tag === topicTag);
|
|
314
|
+
if (!topic) {
|
|
315
|
+
if (message) {
|
|
316
|
+
this.ensureTopicRegistered(brokerTag, topicTag, message);
|
|
317
|
+
}
|
|
318
|
+
topic = { tag: topicTag, name: topicTag, sample: message || {} };
|
|
319
|
+
}
|
|
320
|
+
// Determine topic URL
|
|
321
|
+
let topicUrl = topic.name;
|
|
322
|
+
if (cached.brokerEnv.type === types_1.MessageBrokerTypes.AWS_SQS) {
|
|
323
|
+
topicUrl = (0, broker_util_1.getSqsQueueUrl)(topic, envSlug);
|
|
324
|
+
}
|
|
325
|
+
return Object.assign(Object.assign({}, cached), { topic, topicUrl });
|
|
326
|
+
}
|
|
327
|
+
// Initialize product only if not already done
|
|
328
|
+
if (!this.initializedProducts.has(productTag)) {
|
|
329
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
330
|
+
this.initializedProducts.add(productTag);
|
|
331
|
+
}
|
|
332
|
+
this.productTag = productTag;
|
|
333
|
+
this.productId = this.productBuilderService.fetchProductId() || '';
|
|
334
|
+
this.privateKey = this.productBuilderService.fetchPrivateKey();
|
|
335
|
+
// Fetch broker configuration
|
|
336
|
+
const broker = await this.productBuilderService.fetchMessageBroker(brokerTag);
|
|
337
|
+
if (!broker) {
|
|
338
|
+
throw new BrokerError(`Message Broker ${brokerTag} not found`, 'BROKER_NOT_FOUND');
|
|
339
|
+
}
|
|
340
|
+
if (!broker.envs || !Array.isArray(broker.envs)) {
|
|
341
|
+
throw new BrokerError(`Message Broker ${brokerTag} has no environments configured`, 'BROKER_NO_ENVS');
|
|
342
|
+
}
|
|
343
|
+
// Get environment-specific broker config
|
|
344
|
+
const brokerEnv = broker.envs.find((el) => el.slug === envSlug);
|
|
345
|
+
if (!brokerEnv) {
|
|
346
|
+
throw new BrokerError(`Broker environment for ${envSlug} not found`, 'BROKER_ENV_NOT_FOUND');
|
|
347
|
+
}
|
|
348
|
+
// Check if topic exists in broker's topics array
|
|
349
|
+
let topic = (_b = broker.topics) === null || _b === void 0 ? void 0 : _b.find(t => t.tag === topicTag);
|
|
350
|
+
if (!topic) {
|
|
351
|
+
if (message) {
|
|
352
|
+
this.ensureTopicRegistered(brokerTag, topicTag, message);
|
|
353
|
+
}
|
|
354
|
+
topic = { tag: topicTag, name: topicTag, sample: message || {} };
|
|
355
|
+
}
|
|
356
|
+
// Resolve any secret references in broker config
|
|
357
|
+
let resolvedConfig = brokerEnv.config;
|
|
358
|
+
if (resolvedConfig && (0, secrets_1.mightContainSecrets)(resolvedConfig)) {
|
|
359
|
+
const secretsService = (0, secrets_1.getSecretsService)();
|
|
360
|
+
if (secretsService) {
|
|
361
|
+
const resolved = await secretsService.resolve(resolvedConfig, { env: envSlug });
|
|
362
|
+
resolvedConfig = resolved.value;
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
throw new BrokerError(`Broker configuration contains secret references but secrets service is not initialized.`, 'SECRETS_NOT_INITIALIZED');
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Create resolved broker env
|
|
369
|
+
const resolvedBrokerEnv = Object.assign(Object.assign({}, brokerEnv), { config: resolvedConfig });
|
|
370
|
+
// Determine the topic URL/name
|
|
371
|
+
let topicUrl = topic.name;
|
|
372
|
+
if (brokerEnv.type === types_1.MessageBrokerTypes.AWS_SQS) {
|
|
373
|
+
topicUrl = (0, broker_util_1.getSqsQueueUrl)(topic, envSlug);
|
|
374
|
+
}
|
|
375
|
+
// Cache the result (without topic, as topics may vary per call)
|
|
376
|
+
this.initializedBrokerCache.set(cacheKey, {
|
|
377
|
+
broker,
|
|
378
|
+
topic, // Store last topic, but will be re-evaluated on cache hit
|
|
379
|
+
brokerEnv: resolvedBrokerEnv,
|
|
380
|
+
topicUrl,
|
|
381
|
+
});
|
|
382
|
+
return { broker, topic, brokerEnv: resolvedBrokerEnv, topicUrl };
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Initialize logging service
|
|
386
|
+
*/
|
|
387
|
+
initializeLogService() {
|
|
388
|
+
if (!this.logService) {
|
|
389
|
+
this.logService = new logs_service_1.default({
|
|
390
|
+
product_id: this.productId,
|
|
391
|
+
workspace_id: this.config.workspace_id,
|
|
392
|
+
public_key: this.config.public_key,
|
|
393
|
+
user_id: this.config.user_id,
|
|
394
|
+
token: this.config.token,
|
|
395
|
+
env_type: this.config.env_type,
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Validate cache tag exists in product and return cache configuration
|
|
401
|
+
* Uses local in-memory cache to avoid repeated API calls (5 minute TTL)
|
|
402
|
+
*/
|
|
403
|
+
async validateCache(cacheTag) {
|
|
404
|
+
const cacheKey = `${this.productTag}:${cacheTag}`;
|
|
405
|
+
const cached = this.cacheConfigCache.get(cacheKey);
|
|
406
|
+
const now = Date.now();
|
|
407
|
+
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
408
|
+
// Return cached config if still valid
|
|
409
|
+
if (cached && (now - cached.fetchedAt) < CACHE_TTL) {
|
|
410
|
+
return { expiry: cached.expiry };
|
|
411
|
+
}
|
|
412
|
+
// Fetch from API and cache the result
|
|
413
|
+
const cache = await this.productBuilderService.fetchCache(cacheTag);
|
|
414
|
+
if (!cache) {
|
|
415
|
+
throw new BrokerError(`Cache configuration '${cacheTag}' does not exist`, 'CACHE_NOT_FOUND');
|
|
416
|
+
}
|
|
417
|
+
this.cacheConfigCache.set(cacheKey, { expiry: cache.expiry, fetchedAt: now });
|
|
418
|
+
return { expiry: cache.expiry };
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Generate a cache key for the broker service pool
|
|
422
|
+
*/
|
|
423
|
+
getBrokerPoolKey(type, config) {
|
|
424
|
+
var _a;
|
|
425
|
+
// Use type + url/host as the key (url for RabbitMQ, host for others)
|
|
426
|
+
const configKey = (config === null || config === void 0 ? void 0 : config.url) || (config === null || config === void 0 ? void 0 : config.host) || ((_a = config === null || config === void 0 ? void 0 : config.brokers) === null || _a === void 0 ? void 0 : _a[0]) || JSON.stringify(config);
|
|
427
|
+
return `${type}:${configKey}`;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Get or create broker service instance (with connection pooling)
|
|
431
|
+
*/
|
|
432
|
+
async getBrokerService(type, config) {
|
|
433
|
+
if ((0, broker_util_1.isBrowser)()) {
|
|
434
|
+
throw new BrokerError('Broker operations are not supported in browser environment', 'BROWSER_NOT_SUPPORTED');
|
|
435
|
+
}
|
|
436
|
+
// Check if we have a cached connection
|
|
437
|
+
const poolKey = this.getBrokerPoolKey(type, config);
|
|
438
|
+
const existingService = this.brokerServicePool.get(poolKey);
|
|
439
|
+
if (existingService) {
|
|
440
|
+
return existingService;
|
|
441
|
+
}
|
|
442
|
+
const createBrokerService = await (0, broker_util_1.loadBrokerService)();
|
|
443
|
+
if (!createBrokerService) {
|
|
444
|
+
throw new BrokerError('Failed to load broker service', 'BROKER_SERVICE_LOAD_FAILED');
|
|
445
|
+
}
|
|
446
|
+
const service = createBrokerService(type, config);
|
|
447
|
+
// Store in pool for reuse
|
|
448
|
+
this.brokerServicePool.set(poolKey, service);
|
|
449
|
+
return service;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Disconnect all pooled broker connections (e.g. at end of workflow run). Safe if pool is empty.
|
|
453
|
+
*/
|
|
454
|
+
async disconnectAll() {
|
|
455
|
+
for (const service of this.brokerServicePool.values()) {
|
|
456
|
+
try {
|
|
457
|
+
if (typeof service.disconnect === 'function') {
|
|
458
|
+
await service.disconnect();
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
catch (_a) {
|
|
462
|
+
// Non-fatal
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
this.brokerServicePool.clear();
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Pre-warm broker connections for the given product/env and broker tags.
|
|
469
|
+
* Call before step execution so the first produce step reuses connections. Same auth and secrets as publish.
|
|
470
|
+
*/
|
|
471
|
+
async warmBrokerConnections(options) {
|
|
472
|
+
const { product, env, brokerTags } = options;
|
|
473
|
+
if (brokerTags.length === 0)
|
|
474
|
+
return;
|
|
475
|
+
for (const brokerTag of brokerTags) {
|
|
476
|
+
try {
|
|
477
|
+
const { brokerEnv } = await this.initializeBroker(product, env, `${brokerTag}:_warm`, {});
|
|
478
|
+
const service = await this.getBrokerService(brokerEnv.type, brokerEnv.config);
|
|
479
|
+
if (typeof service.connect === 'function')
|
|
480
|
+
await service.connect();
|
|
481
|
+
}
|
|
482
|
+
catch (_a) {
|
|
483
|
+
// Non-fatal: step will connect on first use
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Auto-register a topic in the background (fire-and-forget)
|
|
489
|
+
* This is intentionally lightweight - no pre-check, no post-fetch
|
|
490
|
+
*/
|
|
491
|
+
ensureTopicRegistered(brokerTag, topicTag, message) {
|
|
492
|
+
const fullTag = `${brokerTag}:${topicTag}`;
|
|
493
|
+
// Fire-and-forget: don't await, let it run in background
|
|
494
|
+
this.productBuilderService.createMessageBrokerTopic({
|
|
495
|
+
tag: fullTag,
|
|
496
|
+
name: topicTag,
|
|
497
|
+
description: `Auto-registered topic for ${fullTag}`,
|
|
498
|
+
sample: JSON.stringify(message || {}),
|
|
499
|
+
idempotent: false,
|
|
500
|
+
}).catch(() => {
|
|
501
|
+
// Silently ignore - topic might already exist or registration failed
|
|
502
|
+
// Either way, the publish should proceed
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Auto-register a producer if it doesn't exist
|
|
507
|
+
*/
|
|
508
|
+
async ensureProducerRegistered(brokerTag, topicTag, options) {
|
|
509
|
+
const tag = (options === null || options === void 0 ? void 0 : options.tag) || `producer-${brokerTag}-${topicTag}`;
|
|
510
|
+
const topic = `${brokerTag}:${topicTag}`;
|
|
511
|
+
try {
|
|
512
|
+
const existingProducer = await this.productBuilderService.fetchMessageBrokerProducer(brokerTag, tag);
|
|
513
|
+
if (!existingProducer) {
|
|
514
|
+
await this.productBuilderService.createMessageBrokerProducer({
|
|
515
|
+
tag,
|
|
516
|
+
topic,
|
|
517
|
+
description: (options === null || options === void 0 ? void 0 : options.description) || `Auto-registered producer for ${topic}`,
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
catch (_a) {
|
|
522
|
+
// Silently ignore registration errors - the main operation should still proceed
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Auto-register a consumer if it doesn't exist
|
|
527
|
+
*/
|
|
528
|
+
async ensureConsumerRegistered(brokerTag, topicTag, options) {
|
|
529
|
+
const tag = (options === null || options === void 0 ? void 0 : options.tag) || `consumer-${brokerTag}-${topicTag}`;
|
|
530
|
+
const topic = `${brokerTag}:${topicTag}`;
|
|
531
|
+
try {
|
|
532
|
+
const existingConsumer = await this.productBuilderService.fetchMessageBrokerConsumer(brokerTag, tag);
|
|
533
|
+
if (!existingConsumer) {
|
|
534
|
+
await this.productBuilderService.createMessageBrokerConsumer({
|
|
535
|
+
tag,
|
|
536
|
+
topic,
|
|
537
|
+
description: (options === null || options === void 0 ? void 0 : options.description) || `Auto-registered consumer for ${topic}`,
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
catch (_a) {
|
|
542
|
+
// Silently ignore registration errors - the main operation should still proceed
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Publish a message to a broker topic
|
|
547
|
+
*/
|
|
548
|
+
async publish(options) {
|
|
549
|
+
var _a, _b, _c, _d;
|
|
550
|
+
const process_id = (0, processor_utils_1.generateObjectId)();
|
|
551
|
+
const start = Date.now();
|
|
552
|
+
const { cache } = options;
|
|
553
|
+
let sessionLogFields = {};
|
|
554
|
+
let resolvedMessage = options.message;
|
|
555
|
+
// Parse event string early to have broker/topic tags available for error logging
|
|
556
|
+
const { brokerTag, topicTag } = (0, broker_util_1.parseEventString)(options.event);
|
|
557
|
+
try {
|
|
558
|
+
const { broker, topic, brokerEnv, topicUrl } = await this.initializeBroker(options.product, options.env, options.event, options.message);
|
|
559
|
+
// Store private key for cache operations
|
|
560
|
+
if (this.privateKey) {
|
|
561
|
+
this.privateKeys.set(options.product, this.privateKey);
|
|
562
|
+
}
|
|
563
|
+
// Process session if provided - verify and resolve $Session{} references
|
|
564
|
+
if (options.session && this.privateKey) {
|
|
565
|
+
// Convert session object { tag, token } to string format "tag:token"
|
|
566
|
+
const sessionToken = `${options.session.tag}:${options.session.token}`;
|
|
567
|
+
const sessionResult = await (0, sessions_1.processSessionForExecution)(sessionToken, this.privateKey, { message: options.message }, options.env, {
|
|
568
|
+
fetchSessionSelector: async (sessionTag) => {
|
|
569
|
+
const sessionConfig = await this.productBuilderService.fetchSession(sessionTag);
|
|
570
|
+
return sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.selector;
|
|
571
|
+
},
|
|
572
|
+
});
|
|
573
|
+
if (sessionResult.error) {
|
|
574
|
+
throw new BrokerError(`Session validation failed: ${sessionResult.error}`, 'SESSION_INVALID');
|
|
575
|
+
}
|
|
576
|
+
sessionLogFields = sessionResult.logFields;
|
|
577
|
+
resolvedMessage = sessionResult.input.message;
|
|
578
|
+
}
|
|
579
|
+
// Auto-register producer if not exists
|
|
580
|
+
await this.ensureProducerRegistered(brokerTag, topicTag, options.producer);
|
|
581
|
+
this.initializeLogService();
|
|
582
|
+
const baseLogs = Object.assign({ product_tag: options.product, product_id: this.productId, workspace_id: this.config.workspace_id, env: options.env, process_id, type: types_2.LogEventTypes.PRODUCER, parent_tag: brokerTag, child_tag: topicTag, data: { event: options.event } }, sessionLogFields);
|
|
583
|
+
this.logService.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Publish to broker - initiated', status: types_2.LogEventStatus.PROCESSING }));
|
|
584
|
+
// Check cache for idempotency (prevent duplicate publishes with same data)
|
|
585
|
+
if (cache && this.cacheManager && this.privateKey) {
|
|
586
|
+
const cacheConfig = await this.validateCache(cache);
|
|
587
|
+
const cacheOptions = {
|
|
588
|
+
cache_tag: cache,
|
|
589
|
+
product_tag: options.product,
|
|
590
|
+
component_tag: `${brokerTag}:${topicTag}`,
|
|
591
|
+
component_type: 'broker',
|
|
592
|
+
operation: 'publish',
|
|
593
|
+
input: { event: options.event, message: options.message },
|
|
594
|
+
privateKey: this.privateKey,
|
|
595
|
+
expiry: cacheConfig.expiry,
|
|
596
|
+
};
|
|
597
|
+
const cached = await this.cacheManager.fetch(cacheOptions);
|
|
598
|
+
if (cached.hit && cached.data) {
|
|
599
|
+
const end = Date.now();
|
|
600
|
+
this.logService.add(Object.assign(Object.assign({}, baseLogs), { start,
|
|
601
|
+
end, message: `Publish to broker - cache hit (${cached.source})`, successful_execution: true, status: types_2.LogEventStatus.SUCCESS, data: { event: options.event, cache_source: cached.source }, cache_tag: cache, cache_key: cached.key, cache_status: true }));
|
|
602
|
+
this.logService.publish();
|
|
603
|
+
return cached.data;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
// Generate message_id client-side and track asynchronously (fire-and-forget)
|
|
607
|
+
const producerTag = ((_a = options.producer) === null || _a === void 0 ? void 0 : _a.tag) || `producer-${brokerTag}-${topicTag}`;
|
|
608
|
+
const messageId = (0, processor_utils_1.generateObjectId)();
|
|
609
|
+
// Encrypt message on SDK side - NEVER send private_key over HTTP
|
|
610
|
+
const messageEncrypted = (0, processor_utils_1.encrypt)(JSON.stringify(resolvedMessage), this.privateKey);
|
|
611
|
+
// Track the message in the database (fire-and-forget - no await)
|
|
612
|
+
this.processorApiService.trackBrokerMessage({
|
|
613
|
+
workspace_id: this.config.workspace_id,
|
|
614
|
+
product_id: this.productId,
|
|
615
|
+
product_tag: options.product,
|
|
616
|
+
env: options.env,
|
|
617
|
+
broker_tag: brokerTag,
|
|
618
|
+
topic_tag: topicTag,
|
|
619
|
+
event: options.event,
|
|
620
|
+
producer_tag: producerTag,
|
|
621
|
+
message_encrypted: messageEncrypted,
|
|
622
|
+
process_id,
|
|
623
|
+
session_tag: (_b = options.session) === null || _b === void 0 ? void 0 : _b.tag,
|
|
624
|
+
metadata: { cache: options.cache },
|
|
625
|
+
message_id: messageId,
|
|
626
|
+
}, this.getUserAccess()).catch(() => {
|
|
627
|
+
// Silently ignore tracking errors - non-blocking
|
|
628
|
+
});
|
|
629
|
+
// Add the message_id to the message so consumers can track it
|
|
630
|
+
const messageWithTracking = Object.assign(Object.assign({}, resolvedMessage), { __ductape_message_id: messageId });
|
|
631
|
+
// Get broker service and publish
|
|
632
|
+
const brokerService = await this.getBrokerService(brokerEnv.type, brokerEnv.config);
|
|
633
|
+
await brokerService.publish(topicUrl, messageWithTracking);
|
|
634
|
+
const result = {
|
|
635
|
+
success: true,
|
|
636
|
+
process_id,
|
|
637
|
+
};
|
|
638
|
+
// Store in cache for idempotency (fire-and-forget)
|
|
639
|
+
if (cache && this.cacheManager && this.privateKey) {
|
|
640
|
+
const cacheConfig = await this.validateCache(cache);
|
|
641
|
+
this.cacheManager.store({
|
|
642
|
+
cache_tag: cache,
|
|
643
|
+
product_tag: options.product,
|
|
644
|
+
component_tag: `${brokerTag}:${topicTag}`,
|
|
645
|
+
component_type: 'broker',
|
|
646
|
+
operation: 'publish',
|
|
647
|
+
input: { event: options.event, message: options.message },
|
|
648
|
+
privateKey: this.privateKey,
|
|
649
|
+
expiry: cacheConfig.expiry,
|
|
650
|
+
}, result);
|
|
651
|
+
}
|
|
652
|
+
const end = Date.now();
|
|
653
|
+
const successLogKey = `${options.product}:${options.env}:${options.event}`;
|
|
654
|
+
const now = Date.now();
|
|
655
|
+
const isDuplicateSuccessLog = this.lastPublishSuccessLogKey === successLogKey &&
|
|
656
|
+
now - this.lastPublishSuccessLogTime < BrokersService.PUBLISH_SUCCESS_LOG_DEDUPE_MS;
|
|
657
|
+
if (!isDuplicateSuccessLog) {
|
|
658
|
+
this.logService.add(Object.assign(Object.assign({}, baseLogs), { start,
|
|
659
|
+
end, message: 'Publish to broker - success', successful_execution: true, status: types_2.LogEventStatus.SUCCESS }));
|
|
660
|
+
this.lastPublishSuccessLogKey = successLogKey;
|
|
661
|
+
this.lastPublishSuccessLogTime = now;
|
|
662
|
+
}
|
|
663
|
+
this.logService.publish();
|
|
664
|
+
return result;
|
|
665
|
+
}
|
|
666
|
+
catch (error) {
|
|
667
|
+
const end = Date.now();
|
|
668
|
+
this.initializeLogService();
|
|
669
|
+
(_c = this.logService) === null || _c === void 0 ? void 0 : _c.add(Object.assign({ product_tag: options.product, workspace_id: this.config.workspace_id, env: options.env, process_id,
|
|
670
|
+
start,
|
|
671
|
+
end, type: types_2.LogEventTypes.PRODUCER, parent_tag: brokerTag, child_tag: topicTag, message: 'Publish to broker - failed', failed_execution: true, data: { event: options.event, error: String(error) }, status: types_2.LogEventStatus.FAIL }, sessionLogFields));
|
|
672
|
+
await ((_d = this.logService) === null || _d === void 0 ? void 0 : _d.publish());
|
|
673
|
+
if (error instanceof BrokerError) {
|
|
674
|
+
throw error;
|
|
675
|
+
}
|
|
676
|
+
throw new BrokerError(`Failed to publish message: ${error}`, 'PUBLISH_FAILED', error);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Subscribe to a broker topic
|
|
681
|
+
*/
|
|
682
|
+
async subscribe(options) {
|
|
683
|
+
var _a, _b, _c;
|
|
684
|
+
const process_id = (0, processor_utils_1.generateObjectId)();
|
|
685
|
+
const start = Date.now();
|
|
686
|
+
try {
|
|
687
|
+
// For subscribe, we don't auto-register topics - they should already exist
|
|
688
|
+
const { broker, topic, brokerEnv, topicUrl } = await this.initializeBroker(options.product, options.env, options.event, undefined);
|
|
689
|
+
const { brokerTag, topicTag } = (0, broker_util_1.parseEventString)(options.event);
|
|
690
|
+
// Auto-register consumer if not exists
|
|
691
|
+
await this.ensureConsumerRegistered(brokerTag, topicTag, options.consumer);
|
|
692
|
+
this.initializeLogService();
|
|
693
|
+
const baseLogs = {
|
|
694
|
+
product_tag: options.product,
|
|
695
|
+
product_id: this.productId,
|
|
696
|
+
workspace_id: this.config.workspace_id,
|
|
697
|
+
env: options.env,
|
|
698
|
+
process_id,
|
|
699
|
+
type: types_2.LogEventTypes.CONSUMER,
|
|
700
|
+
parent_tag: brokerTag,
|
|
701
|
+
child_tag: topicTag,
|
|
702
|
+
data: { event: options.event },
|
|
703
|
+
};
|
|
704
|
+
this.logService.add(Object.assign(Object.assign({}, baseLogs), { start, message: 'Subscribe to broker - initiated', status: types_2.LogEventStatus.PROCESSING }));
|
|
705
|
+
// Get broker service and subscribe with message tracking wrapper
|
|
706
|
+
const brokerService = await this.getBrokerService(brokerEnv.type, brokerEnv.config);
|
|
707
|
+
const consumerTag = ((_a = options.consumer) === null || _a === void 0 ? void 0 : _a.tag) || `consumer-${brokerTag}-${topicTag}`;
|
|
708
|
+
// Pre-cache user access for callback use (avoid repeated calls)
|
|
709
|
+
const userAccess = this.getUserAccess();
|
|
710
|
+
// Wrap the callback to track message consumption (optimized for low latency)
|
|
711
|
+
const wrappedCallback = async (message) => {
|
|
712
|
+
const messageReceiveTime = Date.now();
|
|
713
|
+
const consumeProcessId = (0, processor_utils_1.generateObjectId)();
|
|
714
|
+
// Extract message_id from the message
|
|
715
|
+
const msgWithId = message;
|
|
716
|
+
const messageId = msgWithId.__ductape_message_id;
|
|
717
|
+
// Execute user callback FIRST - this is the critical path
|
|
718
|
+
let callbackSuccess = true;
|
|
719
|
+
let callbackError;
|
|
720
|
+
try {
|
|
721
|
+
await options.callback(message);
|
|
722
|
+
}
|
|
723
|
+
catch (err) {
|
|
724
|
+
callbackSuccess = false;
|
|
725
|
+
callbackError = err;
|
|
726
|
+
}
|
|
727
|
+
const callbackEnd = Date.now();
|
|
728
|
+
// Fire-and-forget: All tracking/logging happens async after callback completes
|
|
729
|
+
// This ensures user callback latency is not affected by our tracking overhead
|
|
730
|
+
setImmediate(() => {
|
|
731
|
+
var _a, _b;
|
|
732
|
+
const consumeBaseLogs = {
|
|
733
|
+
product_tag: options.product,
|
|
734
|
+
product_id: this.productId,
|
|
735
|
+
workspace_id: this.config.workspace_id,
|
|
736
|
+
env: options.env,
|
|
737
|
+
process_id: consumeProcessId,
|
|
738
|
+
type: types_2.LogEventTypes.CONSUMER,
|
|
739
|
+
parent_tag: brokerTag,
|
|
740
|
+
child_tag: topicTag,
|
|
741
|
+
data: { event: options.event, message_id: messageId, consumer_tag: consumerTag },
|
|
742
|
+
};
|
|
743
|
+
if (messageId) {
|
|
744
|
+
// Calculate actual callback processing time
|
|
745
|
+
const processingTime = callbackEnd - messageReceiveTime;
|
|
746
|
+
// Register consumer first, then update status (sequential to avoid race condition)
|
|
747
|
+
this.processorApiService.registerBrokerConsumer({
|
|
748
|
+
message_id: messageId,
|
|
749
|
+
consumer_tag: consumerTag,
|
|
750
|
+
}, userAccess).then(() => {
|
|
751
|
+
// Now update the status with processing time
|
|
752
|
+
return this.processorApiService.updateBrokerConsumerStatus({
|
|
753
|
+
message_id: messageId,
|
|
754
|
+
consumer_tag: consumerTag,
|
|
755
|
+
status: callbackSuccess ? 'success' : 'failed',
|
|
756
|
+
error: callbackError ? String(callbackError) : undefined,
|
|
757
|
+
processing_time: processingTime,
|
|
758
|
+
}, userAccess);
|
|
759
|
+
}).catch(() => { }); // Silently ignore tracking errors
|
|
760
|
+
}
|
|
761
|
+
// Log consumption (fire-and-forget)
|
|
762
|
+
(_a = this.logService) === null || _a === void 0 ? void 0 : _a.add(Object.assign(Object.assign(Object.assign({}, consumeBaseLogs), { start: messageReceiveTime, end: callbackEnd, message: messageId
|
|
763
|
+
? (callbackSuccess ? 'Message consumed - success' : 'Message consumed - failed')
|
|
764
|
+
: 'Message consumed - untracked (no message_id)', successful_execution: callbackSuccess, failed_execution: !callbackSuccess, status: callbackSuccess ? types_2.LogEventStatus.SUCCESS : types_2.LogEventStatus.FAIL }), (callbackError && { data: Object.assign(Object.assign({}, consumeBaseLogs.data), { error: String(callbackError) }) })));
|
|
765
|
+
(_b = this.logService) === null || _b === void 0 ? void 0 : _b.publish();
|
|
766
|
+
});
|
|
767
|
+
// Re-throw callback error if any (so RabbitMQ can handle retry/nack)
|
|
768
|
+
if (callbackError) {
|
|
769
|
+
throw callbackError;
|
|
770
|
+
}
|
|
771
|
+
};
|
|
772
|
+
await brokerService.subscribe(topicUrl, wrappedCallback);
|
|
773
|
+
const end = Date.now();
|
|
774
|
+
this.logService.add(Object.assign(Object.assign({}, baseLogs), { start,
|
|
775
|
+
end, message: 'Subscribe to broker - success', successful_execution: true, status: types_2.LogEventStatus.SUCCESS }));
|
|
776
|
+
this.logService.publish();
|
|
777
|
+
return {
|
|
778
|
+
success: true,
|
|
779
|
+
process_id,
|
|
780
|
+
};
|
|
781
|
+
}
|
|
782
|
+
catch (error) {
|
|
783
|
+
const end = Date.now();
|
|
784
|
+
this.initializeLogService();
|
|
785
|
+
(_b = this.logService) === null || _b === void 0 ? void 0 : _b.add({
|
|
786
|
+
product_tag: options.product,
|
|
787
|
+
workspace_id: this.config.workspace_id,
|
|
788
|
+
env: options.env,
|
|
789
|
+
process_id,
|
|
790
|
+
start,
|
|
791
|
+
end,
|
|
792
|
+
type: types_2.LogEventTypes.CONSUMER,
|
|
793
|
+
message: 'Subscribe to broker - failed',
|
|
794
|
+
failed_execution: true,
|
|
795
|
+
data: { event: options.event, error: String(error) },
|
|
796
|
+
status: types_2.LogEventStatus.FAIL,
|
|
797
|
+
});
|
|
798
|
+
await ((_c = this.logService) === null || _c === void 0 ? void 0 : _c.publish());
|
|
799
|
+
if (error instanceof BrokerError) {
|
|
800
|
+
throw error;
|
|
801
|
+
}
|
|
802
|
+
throw new BrokerError(`Failed to subscribe: ${error}`, 'SUBSCRIBE_FAILED', error);
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* Get all message brokers for a product
|
|
807
|
+
*/
|
|
808
|
+
async getBrokers(productTag) {
|
|
809
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
810
|
+
return this.productBuilderService.fetchMessageBrokers();
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* Get a specific message broker by tag
|
|
814
|
+
*/
|
|
815
|
+
async getBroker(productTag, brokerTag) {
|
|
816
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
817
|
+
return this.productBuilderService.fetchMessageBroker(brokerTag);
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Get all topics for a message broker
|
|
821
|
+
*/
|
|
822
|
+
async getTopics(productTag, brokerTag) {
|
|
823
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
824
|
+
return this.productBuilderService.fetchMessageBrokerTopics(brokerTag);
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Get a specific topic by event string (broker_tag:topic_tag)
|
|
828
|
+
*/
|
|
829
|
+
async getTopic(productTag, event) {
|
|
830
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
831
|
+
return this.productBuilderService.fetchMessageBrokerTopic(event);
|
|
832
|
+
}
|
|
833
|
+
/**
|
|
834
|
+
* Test connection to a message broker
|
|
835
|
+
*
|
|
836
|
+
* Validates broker configuration and attempts to establish a connection.
|
|
837
|
+
*
|
|
838
|
+
* @example
|
|
839
|
+
* ```ts
|
|
840
|
+
* const result = await brokers.testConnection({
|
|
841
|
+
* product: 'my-product',
|
|
842
|
+
* env: 'prd',
|
|
843
|
+
* broker: 'orders-broker',
|
|
844
|
+
* });
|
|
845
|
+
* console.log(result.connected); // true or false
|
|
846
|
+
* ```
|
|
847
|
+
*/
|
|
848
|
+
async testConnection(options) {
|
|
849
|
+
const startTime = Date.now();
|
|
850
|
+
try {
|
|
851
|
+
// Initialize product and fetch broker configuration
|
|
852
|
+
await this.productBuilderService.initializeProductByTag(options.product);
|
|
853
|
+
const broker = await this.productBuilderService.fetchMessageBroker(options.broker);
|
|
854
|
+
if (!broker) {
|
|
855
|
+
return {
|
|
856
|
+
connected: false,
|
|
857
|
+
latency: Date.now() - startTime,
|
|
858
|
+
error: `Message Broker '${options.broker}' not found`,
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
// Get environment-specific broker config
|
|
862
|
+
const brokerEnv = broker.envs.find((el) => el.slug === options.env);
|
|
863
|
+
if (!brokerEnv) {
|
|
864
|
+
return {
|
|
865
|
+
connected: false,
|
|
866
|
+
latency: Date.now() - startTime,
|
|
867
|
+
error: `Broker environment '${options.env}' not found`,
|
|
868
|
+
};
|
|
869
|
+
}
|
|
870
|
+
// Resolve any secret references in broker config
|
|
871
|
+
let resolvedConfig = brokerEnv.config;
|
|
872
|
+
if (resolvedConfig && (0, secrets_1.mightContainSecrets)(resolvedConfig)) {
|
|
873
|
+
const secretsService = (0, secrets_1.getSecretsService)();
|
|
874
|
+
if (secretsService) {
|
|
875
|
+
const resolved = await secretsService.resolve(resolvedConfig, { env: options.env });
|
|
876
|
+
resolvedConfig = resolved.value;
|
|
877
|
+
}
|
|
878
|
+
else {
|
|
879
|
+
return {
|
|
880
|
+
connected: false,
|
|
881
|
+
latency: Date.now() - startTime,
|
|
882
|
+
error: 'Broker configuration contains secret references but secrets service is not initialized',
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
// Try to create and connect the broker service
|
|
887
|
+
const brokerService = await this.getBrokerService(brokerEnv.type, resolvedConfig);
|
|
888
|
+
// Attempt to connect
|
|
889
|
+
await brokerService.connect();
|
|
890
|
+
// Disconnect after successful test
|
|
891
|
+
await brokerService.disconnect();
|
|
892
|
+
return {
|
|
893
|
+
connected: true,
|
|
894
|
+
latency: Date.now() - startTime,
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
catch (error) {
|
|
898
|
+
return {
|
|
899
|
+
connected: false,
|
|
900
|
+
latency: Date.now() - startTime,
|
|
901
|
+
error: error.message,
|
|
902
|
+
};
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
// ============================================================================
|
|
906
|
+
// EVENT TRACKING METHODS
|
|
907
|
+
// ============================================================================
|
|
908
|
+
/**
|
|
909
|
+
* Initialize product for event operations (without broker/topic lookup)
|
|
910
|
+
*/
|
|
911
|
+
async initializeProductForEvents(productTag) {
|
|
912
|
+
await this.productBuilderService.initializeProductByTag(productTag);
|
|
913
|
+
this.productTag = productTag;
|
|
914
|
+
this.productId = this.productBuilderService.fetchProductId() || '';
|
|
915
|
+
this.privateKey = this.productBuilderService.fetchPrivateKey();
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Encrypt payload data using the product's private key
|
|
919
|
+
*/
|
|
920
|
+
encryptPayload(data) {
|
|
921
|
+
return (0, processor_utils_1.encrypt)(JSON.stringify(data), this.privateKey);
|
|
922
|
+
}
|
|
923
|
+
/**
|
|
924
|
+
* Decrypt payload data using the product's private key
|
|
925
|
+
*/
|
|
926
|
+
decryptPayload(encryptedData) {
|
|
927
|
+
try {
|
|
928
|
+
return JSON.parse((0, processor_utils_1.decrypt)(encryptedData, this.privateKey));
|
|
929
|
+
}
|
|
930
|
+
catch (_a) {
|
|
931
|
+
return {};
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
/**
|
|
935
|
+
* Get broker events with filtering and pagination
|
|
936
|
+
*
|
|
937
|
+
* @example
|
|
938
|
+
* ```ts
|
|
939
|
+
* const result = await brokers.getEvents({
|
|
940
|
+
* product: 'my-product',
|
|
941
|
+
* env: 'production',
|
|
942
|
+
* brokerTag: 'order-events',
|
|
943
|
+
* status: 'failed',
|
|
944
|
+
* page: 1,
|
|
945
|
+
* limit: 20,
|
|
946
|
+
* });
|
|
947
|
+
*
|
|
948
|
+
* for (const event of result.events) {
|
|
949
|
+
* console.log('Event:', event.id, event.status);
|
|
950
|
+
* }
|
|
951
|
+
* ```
|
|
952
|
+
*/
|
|
953
|
+
async getEvents(options) {
|
|
954
|
+
var _a, _b;
|
|
955
|
+
try {
|
|
956
|
+
await this.initializeProductForEvents(options.product);
|
|
957
|
+
const result = await this.processorApiService.getBrokerEvents({
|
|
958
|
+
product: options.product,
|
|
959
|
+
env: options.env,
|
|
960
|
+
brokerTag: options.brokerTag,
|
|
961
|
+
topic: options.topic,
|
|
962
|
+
category: options.category,
|
|
963
|
+
status: options.status,
|
|
964
|
+
idempotent: options.idempotent,
|
|
965
|
+
startDate: (_a = options.startDate) === null || _a === void 0 ? void 0 : _a.toISOString(),
|
|
966
|
+
endDate: (_b = options.endDate) === null || _b === void 0 ? void 0 : _b.toISOString(),
|
|
967
|
+
page: options.page,
|
|
968
|
+
limit: options.limit,
|
|
969
|
+
}, this.getUserAccess());
|
|
970
|
+
// Decrypt request/response data for each event
|
|
971
|
+
const events = result.events.map((event) => (Object.assign(Object.assign({}, event), { timestamp: new Date(event.timestamp), request_data: event.request_data_encrypted
|
|
972
|
+
? this.decryptPayload(event.request_data_encrypted)
|
|
973
|
+
: event.request_data, response_data: event.response_data_encrypted
|
|
974
|
+
? this.decryptPayload(event.response_data_encrypted)
|
|
975
|
+
: event.response_data })));
|
|
976
|
+
return {
|
|
977
|
+
events,
|
|
978
|
+
total: result.total,
|
|
979
|
+
page: result.page,
|
|
980
|
+
limit: result.limit,
|
|
981
|
+
hasMore: result.hasMore,
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
catch (error) {
|
|
985
|
+
if (error instanceof BrokerError)
|
|
986
|
+
throw error;
|
|
987
|
+
throw new BrokerError(`Failed to get broker events: ${error}`, 'GET_EVENTS_FAILED', error);
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
991
|
+
* Get a single broker event by ID
|
|
992
|
+
*
|
|
993
|
+
* @example
|
|
994
|
+
* ```ts
|
|
995
|
+
* const event = await brokers.getEvent({
|
|
996
|
+
* product: 'my-product',
|
|
997
|
+
* eventId: 'event-123',
|
|
998
|
+
* });
|
|
999
|
+
*
|
|
1000
|
+
* if (event) {
|
|
1001
|
+
* console.log('Event status:', event.status);
|
|
1002
|
+
* console.log('Request data:', event.request_data);
|
|
1003
|
+
* }
|
|
1004
|
+
* ```
|
|
1005
|
+
*/
|
|
1006
|
+
async getEvent(options) {
|
|
1007
|
+
try {
|
|
1008
|
+
await this.initializeProductForEvents(options.product);
|
|
1009
|
+
const event = await this.processorApiService.getBrokerEvent({ product: options.product, eventId: options.eventId }, this.getUserAccess());
|
|
1010
|
+
if (!event)
|
|
1011
|
+
return null;
|
|
1012
|
+
// Decrypt request/response data
|
|
1013
|
+
return Object.assign(Object.assign({}, event), { timestamp: new Date(event.timestamp), request_data: event.request_data_encrypted
|
|
1014
|
+
? this.decryptPayload(event.request_data_encrypted)
|
|
1015
|
+
: event.request_data, response_data: event.response_data_encrypted
|
|
1016
|
+
? this.decryptPayload(event.response_data_encrypted)
|
|
1017
|
+
: event.response_data });
|
|
1018
|
+
}
|
|
1019
|
+
catch (error) {
|
|
1020
|
+
if (error instanceof BrokerError)
|
|
1021
|
+
throw error;
|
|
1022
|
+
throw new BrokerError(`Failed to get broker event: ${error}`, 'GET_EVENT_FAILED', error);
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
/**
|
|
1026
|
+
* Replay a broker event (reprocess a failed or successful event)
|
|
1027
|
+
*
|
|
1028
|
+
* @example
|
|
1029
|
+
* ```ts
|
|
1030
|
+
* const result = await brokers.replayEvent({
|
|
1031
|
+
* product: 'my-product',
|
|
1032
|
+
* env: 'production',
|
|
1033
|
+
* eventId: 'event-123',
|
|
1034
|
+
* force: true, // Replay even if already successful
|
|
1035
|
+
* });
|
|
1036
|
+
*
|
|
1037
|
+
* if (result.success) {
|
|
1038
|
+
* console.log('New event ID:', result.new_event_id);
|
|
1039
|
+
* }
|
|
1040
|
+
* ```
|
|
1041
|
+
*/
|
|
1042
|
+
async replayEvent(options) {
|
|
1043
|
+
try {
|
|
1044
|
+
await this.initializeProductForEvents(options.product);
|
|
1045
|
+
return await this.processorApiService.replayBrokerEvent({
|
|
1046
|
+
product: options.product,
|
|
1047
|
+
env: options.env,
|
|
1048
|
+
eventId: options.eventId,
|
|
1049
|
+
force: options.force,
|
|
1050
|
+
}, this.getUserAccess());
|
|
1051
|
+
}
|
|
1052
|
+
catch (error) {
|
|
1053
|
+
if (error instanceof BrokerError)
|
|
1054
|
+
throw error;
|
|
1055
|
+
throw new BrokerError(`Failed to replay broker event: ${error}`, 'REPLAY_EVENT_FAILED', error);
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
/**
|
|
1059
|
+
* Get broker event statistics
|
|
1060
|
+
*
|
|
1061
|
+
* @example
|
|
1062
|
+
* ```ts
|
|
1063
|
+
* const stats = await brokers.getEventStats({
|
|
1064
|
+
* product: 'my-product',
|
|
1065
|
+
* env: 'production',
|
|
1066
|
+
* brokerTag: 'order-events',
|
|
1067
|
+
* });
|
|
1068
|
+
*
|
|
1069
|
+
* console.log('Total events:', stats.total_events);
|
|
1070
|
+
* console.log('Failed:', stats.failed_count);
|
|
1071
|
+
* console.log('Success:', stats.success_count);
|
|
1072
|
+
* ```
|
|
1073
|
+
*/
|
|
1074
|
+
async getEventStats(options) {
|
|
1075
|
+
try {
|
|
1076
|
+
await this.initializeProductForEvents(options.product);
|
|
1077
|
+
return await this.processorApiService.getBrokerEventStats({
|
|
1078
|
+
product: options.product,
|
|
1079
|
+
env: options.env,
|
|
1080
|
+
brokerTag: options.brokerTag,
|
|
1081
|
+
}, this.getUserAccess());
|
|
1082
|
+
}
|
|
1083
|
+
catch (error) {
|
|
1084
|
+
if (error instanceof BrokerError)
|
|
1085
|
+
throw error;
|
|
1086
|
+
throw new BrokerError(`Failed to get broker event stats: ${error}`, 'GET_EVENT_STATS_FAILED', error);
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
/**
|
|
1090
|
+
* Reprocess messages from the Dead Letter Queue
|
|
1091
|
+
*
|
|
1092
|
+
* @example
|
|
1093
|
+
* ```ts
|
|
1094
|
+
* const result = await brokers.reprocessDLQ({
|
|
1095
|
+
* product: 'my-product',
|
|
1096
|
+
* env: 'production',
|
|
1097
|
+
* brokerTag: 'order-events',
|
|
1098
|
+
* limit: 100,
|
|
1099
|
+
* });
|
|
1100
|
+
*
|
|
1101
|
+
* console.log('Reprocessed:', result.reprocessed_count);
|
|
1102
|
+
* console.log('Failed:', result.failed_count);
|
|
1103
|
+
* ```
|
|
1104
|
+
*/
|
|
1105
|
+
async reprocessDLQ(options) {
|
|
1106
|
+
try {
|
|
1107
|
+
await this.initializeProductForEvents(options.product);
|
|
1108
|
+
return await this.processorApiService.reprocessDLQ({
|
|
1109
|
+
product: options.product,
|
|
1110
|
+
env: options.env,
|
|
1111
|
+
brokerTag: options.brokerTag,
|
|
1112
|
+
topicTag: options.topicTag,
|
|
1113
|
+
messageIds: options.messageIds,
|
|
1114
|
+
limit: options.limit,
|
|
1115
|
+
}, this.getUserAccess());
|
|
1116
|
+
}
|
|
1117
|
+
catch (error) {
|
|
1118
|
+
if (error instanceof BrokerError)
|
|
1119
|
+
throw error;
|
|
1120
|
+
throw new BrokerError(`Failed to reprocess DLQ: ${error}`, 'REPROCESS_DLQ_FAILED', error);
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
/**
|
|
1124
|
+
* Check if an idempotency key has already been processed
|
|
1125
|
+
*
|
|
1126
|
+
* @example
|
|
1127
|
+
* ```ts
|
|
1128
|
+
* const result = await brokers.checkIdempotency({
|
|
1129
|
+
* product: 'my-product',
|
|
1130
|
+
* env: 'production',
|
|
1131
|
+
* idempotencyKey: 'order-123-payment',
|
|
1132
|
+
* });
|
|
1133
|
+
*
|
|
1134
|
+
* if (result.exists) {
|
|
1135
|
+
* console.log('Already processed, event ID:', result.event_id);
|
|
1136
|
+
* }
|
|
1137
|
+
* ```
|
|
1138
|
+
*/
|
|
1139
|
+
async checkIdempotency(options) {
|
|
1140
|
+
try {
|
|
1141
|
+
await this.initializeProductForEvents(options.product);
|
|
1142
|
+
return await this.processorApiService.checkIdempotency({
|
|
1143
|
+
product: options.product,
|
|
1144
|
+
env: options.env,
|
|
1145
|
+
idempotencyKey: options.idempotencyKey,
|
|
1146
|
+
}, this.getUserAccess());
|
|
1147
|
+
}
|
|
1148
|
+
catch (error) {
|
|
1149
|
+
if (error instanceof BrokerError)
|
|
1150
|
+
throw error;
|
|
1151
|
+
throw new BrokerError(`Failed to check idempotency: ${error}`, 'CHECK_IDEMPOTENCY_FAILED', error);
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
/**
|
|
1155
|
+
* Publish a message with idempotency guarantee
|
|
1156
|
+
*
|
|
1157
|
+
* This ensures the message is only processed once, even if published multiple times
|
|
1158
|
+
* with the same idempotency key.
|
|
1159
|
+
*
|
|
1160
|
+
* @example
|
|
1161
|
+
* ```ts
|
|
1162
|
+
* const result = await brokers.publishIdempotent({
|
|
1163
|
+
* product: 'my-product',
|
|
1164
|
+
* env: 'production',
|
|
1165
|
+
* event: 'order-events:new-orders',
|
|
1166
|
+
* message: { orderId: '123', amount: 99.99 },
|
|
1167
|
+
* idempotencyKey: 'order-123-created',
|
|
1168
|
+
* idempotencyTtl: 86400, // 24 hours
|
|
1169
|
+
* });
|
|
1170
|
+
*
|
|
1171
|
+
* if (result.success) {
|
|
1172
|
+
* console.log('Published with process ID:', result.process_id);
|
|
1173
|
+
* }
|
|
1174
|
+
* ```
|
|
1175
|
+
*/
|
|
1176
|
+
async publishIdempotent(options) {
|
|
1177
|
+
try {
|
|
1178
|
+
// Check if already processed
|
|
1179
|
+
const existing = await this.checkIdempotency({
|
|
1180
|
+
product: options.product,
|
|
1181
|
+
env: options.env,
|
|
1182
|
+
idempotencyKey: options.idempotencyKey,
|
|
1183
|
+
});
|
|
1184
|
+
if (existing.exists) {
|
|
1185
|
+
return {
|
|
1186
|
+
success: true,
|
|
1187
|
+
process_id: existing.event_id,
|
|
1188
|
+
error: 'Already processed (idempotent)',
|
|
1189
|
+
};
|
|
1190
|
+
}
|
|
1191
|
+
// Proceed with publish - the message includes idempotency metadata
|
|
1192
|
+
const result = await this.publish(Object.assign(Object.assign({}, options), { message: Object.assign(Object.assign({}, options.message), { __idempotency_key: options.idempotencyKey, __idempotency_ttl: options.idempotencyTtl || 86400 }) }));
|
|
1193
|
+
return result;
|
|
1194
|
+
}
|
|
1195
|
+
catch (error) {
|
|
1196
|
+
if (error instanceof BrokerError)
|
|
1197
|
+
throw error;
|
|
1198
|
+
throw new BrokerError(`Failed to publish with idempotency: ${error}`, 'PUBLISH_IDEMPOTENT_FAILED', error);
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
exports.BrokersService = BrokersService;
|
|
1203
|
+
BrokersService.PUBLISH_SUCCESS_LOG_DEDUPE_MS = 2000;
|
|
1204
|
+
exports.default = BrokersService;
|
|
1205
|
+
//# sourceMappingURL=brokers.service.js.map
|