@hexabot-ai/api 3.2.2-alpha.1 → 3.2.2-alpha.2
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/dist/actions/actions.service.d.ts +3 -3
- package/dist/actions/base-action.d.ts +3 -3
- package/dist/actions/create-action.d.ts +1 -1
- package/dist/actions/types.d.ts +3 -3
- package/dist/analytics/controllers/stats.controller.d.ts +1 -1
- package/dist/analytics/dto/stats.dto.d.ts +1 -1
- package/dist/analytics/entities/stats.entity.d.ts +1 -1
- package/dist/analytics/repositories/stats.repository.d.ts +1 -1
- package/dist/analytics/services/stats.service.d.ts +7 -7
- package/dist/attachment/controllers/attachment.controller.d.ts +1 -1
- package/dist/attachment/dto/attachment.dto.d.ts +2 -2
- package/dist/attachment/entities/attachment.entity.d.ts +3 -3
- package/dist/attachment/guards/attachment-ability.guard.d.ts +2 -2
- package/dist/attachment/repositories/attachment.repository.d.ts +2 -2
- package/dist/attachment/services/attachment.service.d.ts +3 -3
- package/dist/attachment/utilities/index.js +2 -2
- package/dist/attachment/utilities/index.js.map +1 -1
- package/dist/audit/controllers/audit-log.controller.d.ts +2 -2
- package/dist/audit/dto/audit-log.dto.d.ts +1 -1
- package/dist/audit/entities/audit-log.entity.d.ts +1 -1
- package/dist/audit/exporters/audit-backend.factory.d.ts +1 -1
- package/dist/audit/exporters/audit-safe.exporter.d.ts +1 -1
- package/dist/audit/repositories/audit-log.repository.d.ts +1 -1
- package/dist/audit/services/audit-log-record.service.d.ts +1 -1
- package/dist/bindings/base-binding-kind.d.ts +2 -2
- package/dist/bindings/runtime-bindings.service.d.ts +2 -2
- package/dist/bootstrap.js +8 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/channel/channel.controller.d.ts +1 -1
- package/dist/channel/channel.service.d.ts +5 -5
- package/dist/channel/dto/source.dto.d.ts +1 -1
- package/dist/channel/entities/source.entity.d.ts +2 -2
- package/dist/channel/lib/Handler.d.ts +7 -7
- package/dist/channel/lib/Handler.js +2 -2
- package/dist/channel/lib/Handler.js.map +1 -1
- package/dist/channel/lib/channel-event-bus.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-context.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event-decoder.d.ts +1 -1
- package/dist/channel/lib/inbound-events/channel-inbound-event.d.ts +2 -2
- package/dist/channel/lib/inbound-events/message-inbound-event.d.ts +1 -1
- package/dist/channel/lib/transports/http-channel-handler.d.ts +2 -2
- package/dist/channel/lib/transports/websocket-channel-handler.d.ts +3 -3
- package/dist/channel/repositories/source.repository.d.ts +1 -1
- package/dist/channel/services/channel-attachment.service.d.ts +3 -3
- package/dist/channel/services/source.service.d.ts +3 -3
- package/dist/channel/services/subscriber-resolver.service.d.ts +2 -2
- package/dist/channel/source.controller.d.ts +1 -1
- package/dist/channel/webhook.controller.d.ts +1 -1
- package/dist/chat/chat.module.js +1 -1
- package/dist/chat/chat.module.js.map +1 -1
- package/dist/chat/controllers/label-group.controller.d.ts +1 -1
- package/dist/chat/controllers/label.controller.d.ts +1 -1
- package/dist/chat/controllers/message.controller.d.ts +2 -2
- package/dist/chat/controllers/subscriber.controller.d.ts +3 -3
- package/dist/chat/controllers/thread.controller.d.ts +2 -2
- package/dist/chat/dto/label-group.dto.d.ts +1 -1
- package/dist/chat/dto/label.dto.d.ts +1 -1
- package/dist/chat/dto/message.dto.d.ts +1 -1
- package/dist/chat/dto/subscriber.dto.d.ts +3 -3
- package/dist/chat/dto/thread.dto.d.ts +1 -1
- package/dist/chat/entities/label-group.entity.d.ts +1 -1
- package/dist/chat/entities/label.entity.d.ts +1 -1
- package/dist/chat/entities/message.entity.d.ts +2 -2
- package/dist/chat/entities/subscriber.entity.d.ts +4 -4
- package/dist/chat/entities/subscriber.entity.js +3 -1
- package/dist/chat/entities/subscriber.entity.js.map +1 -1
- package/dist/chat/entities/thread.entity.d.ts +2 -2
- package/dist/chat/repositories/label-group.repository.d.ts +1 -1
- package/dist/chat/repositories/label.repository.d.ts +1 -1
- package/dist/chat/repositories/message.repository.d.ts +1 -1
- package/dist/chat/repositories/subscriber.repository.d.ts +1 -1
- package/dist/chat/repositories/thread.repository.d.ts +1 -1
- package/dist/chat/services/chat.service.d.ts +4 -4
- package/dist/chat/services/label-group.service.d.ts +1 -1
- package/dist/chat/services/label.service.d.ts +1 -1
- package/dist/chat/services/message.service.d.ts +2 -2
- package/dist/chat/services/subscriber.service.d.ts +5 -5
- package/dist/chat/services/subscriber.service.js +2 -2
- package/dist/chat/services/subscriber.service.js.map +1 -1
- package/dist/chat/services/thread.service.d.ts +2 -2
- package/dist/chat/types/channel.d.ts +1 -1
- package/dist/cms/controllers/content-type.controller.d.ts +1 -1
- package/dist/cms/controllers/content.controller.d.ts +1 -1
- package/dist/cms/controllers/menu.controller.d.ts +2 -2
- package/dist/cms/dto/content.dto.d.ts +1 -1
- package/dist/cms/dto/contentType.dto.d.ts +2 -2
- package/dist/cms/dto/menu.dto.d.ts +1 -1
- package/dist/cms/entities/content-type.entity.d.ts +2 -2
- package/dist/cms/entities/content-type.entity.js +3 -2
- package/dist/cms/entities/content-type.entity.js.map +1 -1
- package/dist/cms/entities/content.entity.d.ts +2 -2
- package/dist/cms/entities/content.entity.js +4 -3
- package/dist/cms/entities/content.entity.js.map +1 -1
- package/dist/cms/entities/menu.entity.d.ts +1 -1
- package/dist/cms/repositories/content-type.repository.d.ts +1 -1
- package/dist/cms/repositories/content.repository.d.ts +1 -1
- package/dist/cms/repositories/menu.repository.d.ts +1 -1
- package/dist/cms/services/content-type.service.d.ts +2 -2
- package/dist/cms/services/content.service.d.ts +1 -1
- package/dist/cms/services/menu.service.d.ts +1 -1
- package/dist/cms/services/rag-backend.service.d.ts +2 -2
- package/dist/cms/services/rag-indexer.service.d.ts +2 -2
- package/dist/cms/services/rag-retriever.service.d.ts +1 -1
- package/dist/cms/services/rag.service.d.ts +4 -4
- package/dist/database/entities/base.entity.d.ts +1 -1
- package/dist/extension/cleanup.service.d.ts +3 -3
- package/dist/extension/extension.module.d.ts +1 -1
- package/dist/extension/types.d.ts +1 -1
- package/dist/extensions/actions/ai/agent.action.d.ts +3 -3
- package/dist/extensions/actions/ai/ai-base.action.d.ts +5 -5
- package/dist/extensions/actions/ai/generate-object.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-object.base.action.d.ts +3 -3
- package/dist/extensions/actions/ai/generate-reply.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-text.action.d.ts +2 -2
- package/dist/extensions/actions/ai/generate-text.base.action.d.ts +3 -3
- package/dist/extensions/actions/ai/infer-object.action.d.ts +2 -2
- package/dist/extensions/actions/ai/retrieve-content-rag.action.d.ts +1 -1
- package/dist/extensions/actions/memory/update-memory.action.d.ts +4 -4
- package/dist/extensions/actions/messaging/attachment.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/await-reply.action.d.ts +4 -4
- package/dist/extensions/actions/messaging/buttons.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/list.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/message-action.base.d.ts +6 -6
- package/dist/extensions/actions/messaging/quick-replies.action.d.ts +3 -3
- package/dist/extensions/actions/messaging/text-message.action.d.ts +3 -3
- package/dist/extensions/actions/subscriber/handover.action.d.ts +1 -1
- package/dist/extensions/actions/subscriber/update-labels.action.d.ts +1 -1
- package/dist/extensions/actions/web/http-request.action.d.ts +1 -1
- package/dist/extensions/actions/web/http-request.action.js +15 -4
- package/dist/extensions/actions/web/http-request.action.js.map +1 -1
- package/dist/extensions/actions/web/send-mail.action.d.ts +4 -4
- package/dist/extensions/channels/web/base-web-channel.d.ts +6 -6
- package/dist/extensions/channels/web/base-web-channel.js +2 -2
- package/dist/extensions/channels/web/base-web-channel.js.map +1 -1
- package/dist/extensions/channels/web/inbound/events/base-web-inbound.event.d.ts +3 -3
- package/dist/extensions/channels/web/inbound/events/delivery.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/attachment.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/location.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/payload.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/postback.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/quick-reply.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/text.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/messages/web-message.event.d.ts +3 -3
- package/dist/extensions/channels/web/inbound/events/read.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/typing.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/events/unsupported.event.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/web-inbound-event-decoder.d.ts +2 -2
- package/dist/extensions/channels/web/inbound/web-inbound-message-encoder.d.ts +1 -1
- package/dist/extensions/channels/web/outbound/web-outbound-message-encoder.d.ts +4 -4
- package/dist/extensions/channels/web/services/web-history.service.d.ts +2 -2
- package/dist/extensions/channels/web/services/web-session.service.d.ts +6 -6
- package/dist/extensions/helpers/local-storage/index.helper.d.ts +2 -2
- package/dist/health/health.service.d.ts +3 -3
- package/dist/helper/helper.service.d.ts +2 -2
- package/dist/helper/lib/base-helper.d.ts +2 -2
- package/dist/helper/lib/base-storage-helper.d.ts +1 -1
- package/dist/helper/types.d.ts +1 -1
- package/dist/i18n/controllers/language.controller.d.ts +1 -1
- package/dist/i18n/controllers/translation.controller.d.ts +1 -1
- package/dist/i18n/dto/language.dto.d.ts +1 -1
- package/dist/i18n/dto/translation.dto.d.ts +1 -1
- package/dist/i18n/entities/language.entity.d.ts +1 -1
- package/dist/i18n/entities/translation.entity.d.ts +1 -1
- package/dist/i18n/repositories/language.repository.d.ts +1 -1
- package/dist/i18n/repositories/translation.repository.d.ts +1 -1
- package/dist/i18n/seeds/language.seed.d.ts +1 -1
- package/dist/i18n/seeds/translation.seed.d.ts +1 -1
- package/dist/i18n/services/i18n.service.d.ts +2 -2
- package/dist/i18n/services/language.service.d.ts +1 -1
- package/dist/i18n/services/translation.service.d.ts +3 -3
- package/dist/license/services/lemon-squeezy.service.js +2 -2
- package/dist/license/services/lemon-squeezy.service.js.map +1 -1
- package/dist/license/services/license.service.d.ts +5 -5
- package/dist/mailer/mailer.module.js +1 -49
- package/dist/mailer/mailer.module.js.map +1 -1
- package/dist/mailer/mailer.service.d.ts +11 -2
- package/dist/mailer/mailer.service.js +69 -3
- package/dist/mailer/mailer.service.js.map +1 -1
- package/dist/migration/migration.command.d.ts +1 -1
- package/dist/migration/migration.service.d.ts +3 -3
- package/dist/migration/types.d.ts +2 -2
- package/dist/setting/base-setting-group.d.ts +2 -2
- package/dist/setting/controllers/setting.controller.d.ts +1 -1
- package/dist/setting/create-setting-group.d.ts +2 -2
- package/dist/setting/dto/metadata.dto.d.ts +1 -1
- package/dist/setting/dto/setting.dto.d.ts +1 -1
- package/dist/setting/entities/metadata.entity.d.ts +1 -1
- package/dist/setting/entities/setting.entity.d.ts +1 -1
- package/dist/setting/repositories/metadata.repository.d.ts +1 -1
- package/dist/setting/repositories/setting.repository.d.ts +1 -1
- package/dist/setting/runtime-settings.seed.d.ts +3 -3
- package/dist/setting/seeds/metadata.seed.d.ts +1 -1
- package/dist/setting/seeds/setting.seed.d.ts +1 -1
- package/dist/setting/services/metadata.service.d.ts +1 -1
- package/dist/setting/services/runtime-settings.service.d.ts +1 -1
- package/dist/setting/services/setting.service.d.ts +4 -4
- package/dist/static/assets/browser-ponyfill-BHrZk0Ba.js +2 -0
- package/dist/static/assets/{cssMode-ClQbC1-G.js → cssMode-BMhPv6LQ.js} +1 -1
- package/dist/static/assets/{freemarker2-DRxgvoL0.js → freemarker2-BeZMhdTv.js} +1 -1
- package/dist/static/assets/{handlebars-CTQECjcj.js → handlebars-BKG3g2Ua.js} +1 -1
- package/dist/static/assets/{html-DvVbNWXL.js → html-DGzTITbD.js} +1 -1
- package/dist/static/assets/{htmlMode-DHCoon1T.js → htmlMode-BqkaqtYx.js} +1 -1
- package/dist/static/assets/{index-BgFwJPy7.js → index-BZ6XUYgl.js} +2139 -2136
- package/dist/static/assets/{javascript-CiEs6Ej5.js → javascript-b5wI9R64.js} +1 -1
- package/dist/static/assets/{jsonMode-DTfAuumC.js → jsonMode-CHkAHll-.js} +1 -1
- package/dist/static/assets/{liquid-B714yIaN.js → liquid-DWtcf_ol.js} +1 -1
- package/dist/static/assets/{lspLanguageFeatures-r73pyfl4.js → lspLanguageFeatures-CogY5n0Q.js} +1 -1
- package/dist/static/assets/{mdx-D5IAs7yq.js → mdx-Bahv9Yam.js} +1 -1
- package/dist/static/assets/{python-ehBpsG6S.js → python-BMSmNQlB.js} +1 -1
- package/dist/static/assets/{razor-V-Gitx5J.js → razor-gQN4hgMu.js} +1 -1
- package/dist/static/assets/{tsMode-D_iFxZ-O.js → tsMode-lBRxNuK8.js} +1 -1
- package/dist/static/assets/{typescript-CEGzsf5j.js → typescript-BIY26e43.js} +1 -1
- package/dist/static/assets/{xml-N5EKZaXL.js → xml-CU3COlzI.js} +1 -1
- package/dist/static/assets/{yaml-IWZvbW4T.js → yaml-Bu2tB__J.js} +1 -1
- package/dist/static/assets/{yaml.worker.entry-BdO9k22I.js → yaml.worker.entry-BB81z30Q.js} +228 -228
- package/dist/static/index.html +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/user/controllers/auth.controller.d.ts +2 -2
- package/dist/user/controllers/credential.controller.d.ts +1 -1
- package/dist/user/controllers/model.controller.d.ts +3 -3
- package/dist/user/controllers/permission.controller.d.ts +2 -2
- package/dist/user/controllers/role.controller.d.ts +1 -1
- package/dist/user/controllers/user.controller.d.ts +3 -3
- package/dist/user/dto/credential.dto.d.ts +1 -1
- package/dist/user/dto/model.dto.d.ts +1 -1
- package/dist/user/dto/permission.dto.d.ts +1 -1
- package/dist/user/dto/role.dto.d.ts +1 -1
- package/dist/user/dto/user-profile.dto.d.ts +1 -1
- package/dist/user/dto/user.dto.d.ts +2 -2
- package/dist/user/entities/credential.entity.d.ts +1 -1
- package/dist/user/entities/model.entity.d.ts +2 -2
- package/dist/user/entities/model.entity.js +4 -3
- package/dist/user/entities/model.entity.js.map +1 -1
- package/dist/user/entities/permission.entity.d.ts +3 -3
- package/dist/user/entities/permission.entity.js +7 -7
- package/dist/user/entities/permission.entity.js.map +1 -1
- package/dist/user/entities/role.entity.d.ts +2 -2
- package/dist/user/entities/role.entity.js +3 -2
- package/dist/user/entities/role.entity.js.map +1 -1
- package/dist/user/entities/user-profile.entity.d.ts +3 -3
- package/dist/user/entities/user.entity.d.ts +1 -1
- package/dist/user/repositories/credential.repository.d.ts +1 -1
- package/dist/user/repositories/model.repository.d.ts +1 -1
- package/dist/user/repositories/permission.repository.d.ts +1 -1
- package/dist/user/repositories/role.repository.d.ts +1 -1
- package/dist/user/repositories/user.repository.d.ts +1 -1
- package/dist/user/seeds/model.seed.d.ts +1 -1
- package/dist/user/seeds/permission.seed.d.ts +1 -1
- package/dist/user/seeds/role.seed.d.ts +1 -1
- package/dist/user/seeds/user.seed.d.ts +1 -1
- package/dist/user/services/credential.service.d.ts +1 -1
- package/dist/user/services/model.service.d.ts +1 -1
- package/dist/user/services/passwordReset.service.d.ts +4 -4
- package/dist/user/services/permission.service.d.ts +1 -1
- package/dist/user/services/role.service.d.ts +1 -1
- package/dist/user/services/user.service.d.ts +1 -1
- package/dist/user/services/validate-account.service.d.ts +4 -4
- package/dist/utils/decorators/roles.decorator.d.ts +1 -1
- package/dist/utils/generics/base-orm.controller.d.ts +2 -2
- package/dist/utils/generics/base-orm.repository.d.ts +2 -2
- package/dist/utils/generics/base-orm.seeder.d.ts +1 -1
- package/dist/utils/generics/base-orm.service.d.ts +2 -2
- package/dist/utils/generics/extension.d.ts +3 -4
- package/dist/utils/generics/extension.js.map +1 -1
- package/dist/utils/helpers/zod.d.ts +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pipes/uuid.pipe.js +3 -3
- package/dist/utils/pipes/uuid.pipe.js.map +1 -1
- package/dist/utils/test/dummy/controllers/dummy.controller.d.ts +1 -1
- package/dist/utils/test/dummy/dto/dummy.dto.d.ts +1 -1
- package/dist/utils/test/dummy/dummy.action.d.ts +1 -1
- package/dist/utils/test/dummy/entities/dummy.entity.d.ts +1 -1
- package/dist/utils/test/dummy/repositories/dummy.repository.d.ts +1 -1
- package/dist/utils/test/dummy/services/dummy.service.d.ts +1 -1
- package/dist/utils/test/fixtures/attachment.d.ts +1 -1
- package/dist/utils/test/fixtures/content.d.ts +2 -2
- package/dist/utils/test/fixtures/contenttype.d.ts +2 -2
- package/dist/utils/test/fixtures/contenttype.js +2 -2
- package/dist/utils/test/fixtures/contenttype.js.map +1 -1
- package/dist/utils/test/fixtures/dummy.d.ts +2 -2
- package/dist/utils/test/fixtures/label-group.d.ts +3 -3
- package/dist/utils/test/fixtures/label.d.ts +2 -2
- package/dist/utils/test/fixtures/language.d.ts +2 -2
- package/dist/utils/test/fixtures/mcp-server.d.ts +3 -3
- package/dist/utils/test/fixtures/memory-definition.d.ts +2 -2
- package/dist/utils/test/fixtures/memory-record.d.ts +2 -2
- package/dist/utils/test/fixtures/menu.d.ts +1 -1
- package/dist/utils/test/fixtures/message.d.ts +1 -1
- package/dist/utils/test/fixtures/migration.d.ts +1 -1
- package/dist/utils/test/fixtures/model.d.ts +2 -2
- package/dist/utils/test/fixtures/permission.d.ts +4 -4
- package/dist/utils/test/fixtures/role.d.ts +2 -2
- package/dist/utils/test/fixtures/setting.d.ts +1 -1
- package/dist/utils/test/fixtures/stats.d.ts +1 -1
- package/dist/utils/test/fixtures/subscriber.d.ts +4 -4
- package/dist/utils/test/fixtures/translation.d.ts +1 -1
- package/dist/utils/test/fixtures/user.d.ts +2 -2
- package/dist/utils/test/fixtures/workflow-run.d.ts +2 -2
- package/dist/utils/test/fixtures/workflow.d.ts +2 -2
- package/dist/utils/test/providers/i18n-service.provider.d.ts +1 -1
- package/dist/utils/test/providers/mailer-service.provider.d.ts +3 -3
- package/dist/utils/test/providers/setting-service.provider.d.ts +1 -1
- package/dist/utils/test/test.d.ts +4 -0
- package/dist/utils/test/test.js +34 -1
- package/dist/utils/test/test.js.map +1 -1
- package/dist/utils/test/types.d.ts +1 -1
- package/dist/utils/test/utils.d.ts +2 -1
- package/dist/utils/test/utils.js +181 -41
- package/dist/utils/test/utils.js.map +1 -1
- package/dist/utils/types/dto.types.d.ts +1 -1
- package/dist/utils/types/entity-event.types.d.ts +1 -1
- package/dist/websocket/services/socket-event-dispatcher.service.d.ts +1 -1
- package/dist/websocket/websocket.gateway.d.ts +6 -6
- package/dist/websocket/websocket.gateway.js +2 -2
- package/dist/websocket/websocket.gateway.js.map +1 -1
- package/dist/workflow/contexts/conversational-workflow.context.d.ts +1 -1
- package/dist/workflow/contexts/workflow-runtime.context.d.ts +10 -10
- package/dist/workflow/controllers/mcp-server.controller.d.ts +1 -1
- package/dist/workflow/controllers/memory-definition.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow-run.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow-version.controller.d.ts +1 -1
- package/dist/workflow/controllers/workflow.controller.d.ts +4 -4
- package/dist/workflow/dto/mcp-server.dto.d.ts +1 -1
- package/dist/workflow/dto/memory-definition.dto.d.ts +1 -1
- package/dist/workflow/dto/memory-record.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow-run.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow-version.dto.d.ts +1 -1
- package/dist/workflow/dto/workflow.dto.d.ts +1 -1
- package/dist/workflow/entities/mcp-server.entity.d.ts +2 -2
- package/dist/workflow/entities/memory-definition.entity.d.ts +1 -1
- package/dist/workflow/entities/memory-record.entity.d.ts +4 -4
- package/dist/workflow/entities/workflow-run.entity.d.ts +4 -4
- package/dist/workflow/entities/workflow-version.entity.d.ts +3 -3
- package/dist/workflow/entities/workflow-version.entity.js +6 -4
- package/dist/workflow/entities/workflow-version.entity.js.map +1 -1
- package/dist/workflow/entities/workflow.entity.d.ts +2 -2
- package/dist/workflow/lib/trigger-event-wrapper.d.ts +1 -1
- package/dist/workflow/repositories/mcp-server.repository.d.ts +1 -1
- package/dist/workflow/repositories/memory-definition.repository.d.ts +1 -1
- package/dist/workflow/repositories/memory-record.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow-run.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow-version.repository.d.ts +1 -1
- package/dist/workflow/repositories/workflow.repository.d.ts +1 -1
- package/dist/workflow/seeds/memory-definition.seed.d.ts +1 -1
- package/dist/workflow/seeds/workflow.seed.d.ts +1 -1
- package/dist/workflow/services/agentic.service.d.ts +4 -4
- package/dist/workflow/services/mcp-client-pool.service.d.ts +2 -2
- package/dist/workflow/services/mcp-server.service.d.ts +1 -1
- package/dist/workflow/services/memory-definition.service.d.ts +1 -1
- package/dist/workflow/services/memory-record.service.d.ts +1 -1
- package/dist/workflow/services/memory.service.js +1 -0
- package/dist/workflow/services/memory.service.js.map +1 -1
- package/dist/workflow/services/workflow-run.service.d.ts +1 -1
- package/dist/workflow/services/workflow-scheduler.service.d.ts +3 -3
- package/dist/workflow/services/workflow-version.service.d.ts +1 -1
- package/dist/workflow/services/workflow.service.d.ts +3 -3
- package/dist/workflow/utils/memory-store.js +12 -1
- package/dist/workflow/utils/memory-store.js.map +1 -1
- package/package.json +63 -32
- package/src/attachment/utilities/index.ts +2 -2
- package/src/bootstrap.ts +10 -1
- package/src/channel/lib/Handler.ts +3 -2
- package/src/chat/chat.module.ts +1 -1
- package/src/chat/entities/subscriber.entity.ts +14 -7
- package/src/chat/services/subscriber.service.ts +3 -2
- package/src/cms/entities/content-type.entity.ts +12 -4
- package/src/cms/entities/content.entity.ts +13 -5
- package/src/extensions/actions/web/http-request.action.ts +23 -4
- package/src/extensions/channels/web/base-web-channel.ts +3 -2
- package/src/global.d.ts +0 -6
- package/src/license/services/lemon-squeezy.service.ts +3 -2
- package/src/mailer/mailer.module.ts +1 -54
- package/src/mailer/mailer.service.ts +86 -2
- package/src/user/entities/model.entity.ts +13 -5
- package/src/user/entities/permission.entity.ts +21 -9
- package/src/user/entities/role.entity.ts +12 -4
- package/src/utils/generics/extension.ts +1 -3
- package/src/utils/index.ts +0 -2
- package/src/utils/pipes/uuid.pipe.ts +3 -3
- package/src/utils/test/fixtures/contenttype.ts +1 -1
- package/src/utils/test/test.ts +39 -0
- package/src/utils/test/utils.ts +278 -52
- package/src/websocket/websocket.gateway.ts +2 -2
- package/src/workflow/entities/workflow-version.entity.ts +8 -3
- package/src/workflow/services/memory.service.ts +1 -0
- package/src/workflow/utils/memory-store.ts +13 -1
- package/dist/mailer/mjml-adapter.class.d.ts +0 -4
- package/dist/mailer/mjml-adapter.class.js +0 -67
- package/dist/mailer/mjml-adapter.class.js.map +0 -1
- package/dist/utils/types/extension.d.ts +0 -4
- package/dist/utils/types/extension.js +0 -3
- package/dist/utils/types/extension.js.map +0 -1
- package/src/mailer/mjml-adapter.class.ts +0 -41
- package/src/utils/types/extension.ts +0 -13
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
import { ContentType } from '@hexabot-ai/types';
|
|
8
8
|
import { DataSource, DeepPartial } from 'typeorm';
|
|
9
9
|
|
|
10
|
-
import { DEFAULT_CONTENT_TYPE_SCHEMA } from '@/cms';
|
|
11
10
|
import { ContentTypeCreateDto } from '@/cms/dto/contentType.dto';
|
|
12
11
|
import { ContentTypeOrmEntity } from '@/cms/entities/content-type.entity';
|
|
12
|
+
import { DEFAULT_CONTENT_TYPE_SCHEMA } from '@/cms/services/content-type.service';
|
|
13
13
|
|
|
14
14
|
import { getFixturesWithDefaultValues } from '../defaultValues';
|
|
15
15
|
import { FixturesTypeBuilder } from '../types';
|
package/src/utils/test/test.ts
CHANGED
|
@@ -4,14 +4,45 @@
|
|
|
4
4
|
* Full terms: see LICENSE.md.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import type { TestingModule } from '@nestjs/testing';
|
|
7
8
|
import { DataSource } from 'typeorm';
|
|
8
9
|
|
|
9
10
|
const typeOrmDataSources: DataSource[] = [];
|
|
11
|
+
const testingModules: TestingModule[] = [];
|
|
10
12
|
|
|
11
13
|
export const registerTypeOrmDataSource = (dataSource: DataSource) => {
|
|
12
14
|
typeOrmDataSources.push(dataSource);
|
|
13
15
|
};
|
|
14
16
|
|
|
17
|
+
export const registerTestingModule = (module: TestingModule) => {
|
|
18
|
+
const close = module.close.bind(module);
|
|
19
|
+
let closed = false;
|
|
20
|
+
|
|
21
|
+
module.close = async () => {
|
|
22
|
+
if (closed) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
closed = true;
|
|
27
|
+
const moduleIndex = testingModules.indexOf(module);
|
|
28
|
+
|
|
29
|
+
if (moduleIndex >= 0) {
|
|
30
|
+
testingModules.splice(moduleIndex, 1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
await close();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
testingModules.push(module);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const closeTestingModules = async () => {
|
|
40
|
+
const modules = [...testingModules];
|
|
41
|
+
|
|
42
|
+
testingModules.length = 0;
|
|
43
|
+
await Promise.all(modules.map((module) => module.close()));
|
|
44
|
+
};
|
|
45
|
+
|
|
15
46
|
export const closeTypeOrmConnections = async () => {
|
|
16
47
|
await Promise.all(
|
|
17
48
|
typeOrmDataSources.map(async (dataSource) => {
|
|
@@ -25,3 +56,11 @@ export const closeTypeOrmConnections = async () => {
|
|
|
25
56
|
|
|
26
57
|
export const getLastTypeOrmDataSource = () =>
|
|
27
58
|
typeOrmDataSources[typeOrmDataSources.length - 1];
|
|
59
|
+
|
|
60
|
+
export const closeTestingResources = async () => {
|
|
61
|
+
try {
|
|
62
|
+
await closeTestingModules();
|
|
63
|
+
} finally {
|
|
64
|
+
await closeTypeOrmConnections();
|
|
65
|
+
}
|
|
66
|
+
};
|
package/src/utils/test/utils.ts
CHANGED
|
@@ -33,7 +33,7 @@ import { SettingModule } from '@/setting/setting.module';
|
|
|
33
33
|
|
|
34
34
|
import { I18nTestingModule } from './modules/i18n-testing.module';
|
|
35
35
|
import { I18nServiceProvider } from './providers/i18n-service.provider';
|
|
36
|
-
import { registerTypeOrmDataSource } from './test';
|
|
36
|
+
import { registerTestingModule, registerTypeOrmDataSource } from './test';
|
|
37
37
|
|
|
38
38
|
type TTypeOrToken = [
|
|
39
39
|
new (...args: any[]) => any,
|
|
@@ -51,12 +51,16 @@ type TypeOrmTestingConfig = {
|
|
|
51
51
|
fixtures?: TypeOrmFixture | TypeOrmFixture[];
|
|
52
52
|
dataSourceOptions?: Partial<DataSourceOptions>;
|
|
53
53
|
};
|
|
54
|
+
type TypeOrmTestingInput =
|
|
55
|
+
| TypeOrmTestingConfig
|
|
56
|
+
| TypeOrmTestingConfig[]
|
|
57
|
+
| false;
|
|
54
58
|
|
|
55
59
|
type buildTestingMocksProps<
|
|
56
60
|
P extends ModuleMetadata['providers'] = ModuleMetadata['providers'],
|
|
57
61
|
C extends ModuleMetadata['controllers'] = ModuleMetadata['controllers'],
|
|
58
62
|
> = ModuleMetadata & {
|
|
59
|
-
typeorm?:
|
|
63
|
+
typeorm?: TypeOrmTestingInput;
|
|
60
64
|
} & (
|
|
61
65
|
| {
|
|
62
66
|
providers: NonNullable<P>;
|
|
@@ -108,7 +112,10 @@ const getParamTypes = (provider: Provider) =>
|
|
|
108
112
|
* @param parentClass - The root provider class whose dependency graph is resolved.
|
|
109
113
|
* @returns A complete array of unique provider dependencies.
|
|
110
114
|
*/
|
|
111
|
-
const getClassDependencies = (
|
|
115
|
+
const getClassDependencies = (
|
|
116
|
+
parentClass: Provider,
|
|
117
|
+
providedTokens = new Set<Provider>(),
|
|
118
|
+
): Provider[] => {
|
|
112
119
|
const dependencies: Provider[] = [];
|
|
113
120
|
const seenClasses = new Set<Provider>();
|
|
114
121
|
const classQueue: Provider[] = [parentClass];
|
|
@@ -124,7 +131,11 @@ const getClassDependencies = (parentClass: Provider): Provider[] => {
|
|
|
124
131
|
|
|
125
132
|
if (currentClass) {
|
|
126
133
|
getParamTypes(currentClass).forEach((paramType: Provider) => {
|
|
127
|
-
if (
|
|
134
|
+
if (
|
|
135
|
+
paramType &&
|
|
136
|
+
!seenClasses.has(paramType) &&
|
|
137
|
+
!providedTokens.has(paramType)
|
|
138
|
+
) {
|
|
128
139
|
classQueue.push(paramType);
|
|
129
140
|
dependencies.push(paramType);
|
|
130
141
|
}
|
|
@@ -136,6 +147,17 @@ const getClassDependencies = (parentClass: Provider): Provider[] => {
|
|
|
136
147
|
};
|
|
137
148
|
const filterNestedDependencies = (dependency: Provider) =>
|
|
138
149
|
dependency.valueOf().toString().slice(0, 6) === 'class ';
|
|
150
|
+
const resolveProviderToken = (provider: Provider): Provider | undefined => {
|
|
151
|
+
if (
|
|
152
|
+
typeof provider === 'object' &&
|
|
153
|
+
provider !== null &&
|
|
154
|
+
'provide' in provider
|
|
155
|
+
) {
|
|
156
|
+
return provider.provide as Provider;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return provider;
|
|
160
|
+
};
|
|
139
161
|
/**
|
|
140
162
|
* Identifies nested class-based dependencies to be automatically injected into test modules.
|
|
141
163
|
*
|
|
@@ -145,9 +167,14 @@ const filterNestedDependencies = (dependency: Provider) =>
|
|
|
145
167
|
const autoInjectExclusions = new Set<Provider>([DataSource]);
|
|
146
168
|
const getNestedDependencies = (providers: Provider[]): Provider[] => {
|
|
147
169
|
const nestedDependencies = new Set<Provider>();
|
|
170
|
+
const providedTokens = new Set<Provider>(
|
|
171
|
+
providers
|
|
172
|
+
.map(resolveProviderToken)
|
|
173
|
+
.filter((provider): provider is Provider => provider !== undefined),
|
|
174
|
+
);
|
|
148
175
|
|
|
149
176
|
providers.filter(filterNestedDependencies).forEach((provider) => {
|
|
150
|
-
getClassDependencies(provider)
|
|
177
|
+
getClassDependencies(provider, providedTokens)
|
|
151
178
|
.filter(filterNestedDependencies)
|
|
152
179
|
.forEach((dependency) => {
|
|
153
180
|
if (autoInjectExclusions.has(dependency)) {
|
|
@@ -213,6 +240,24 @@ const buildEntityLookup = () => {
|
|
|
213
240
|
|
|
214
241
|
return lookup;
|
|
215
242
|
};
|
|
243
|
+
const addEntityToLookup = (
|
|
244
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
245
|
+
entity: EntityTarget<any> | undefined,
|
|
246
|
+
): EntityTarget<any> | undefined => {
|
|
247
|
+
if (!entity) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const key = resolveEntityTargetName(entity);
|
|
252
|
+
if (key) {
|
|
253
|
+
lookup.set(key, entity);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return entity;
|
|
257
|
+
};
|
|
258
|
+
const refreshEntityLookup = (lookup: Map<string, EntityTarget<any>>): void => {
|
|
259
|
+
buildEntityLookup().forEach((entity, key) => lookup.set(key, entity));
|
|
260
|
+
};
|
|
216
261
|
const registeredSubscribers = new Set<unknown>();
|
|
217
262
|
const registerAllRepositorySubscribers = (
|
|
218
263
|
dataSource: DataSource,
|
|
@@ -314,22 +359,41 @@ const extractInjectTokensFromProvider = (provider: ProviderLike): unknown[] => {
|
|
|
314
359
|
|
|
315
360
|
return [];
|
|
316
361
|
};
|
|
317
|
-
const
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
362
|
+
const dependsOnDataSource = (provider: ProviderLike): boolean => {
|
|
363
|
+
if (!provider) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (typeof provider === 'function') {
|
|
368
|
+
return (
|
|
369
|
+
getParamTypes(provider).includes(DataSource) ||
|
|
370
|
+
extractCustomInjectTokens(provider).includes(DataSource)
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (typeof provider === 'object') {
|
|
375
|
+
if ('useClass' in provider && typeof provider.useClass === 'function') {
|
|
376
|
+
return dependsOnDataSource(provider.useClass);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
if ('inject' in provider && Array.isArray(provider.inject)) {
|
|
380
|
+
return provider.inject.includes(DataSource);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return false;
|
|
322
385
|
};
|
|
323
386
|
const registerAutoDetectedTypeOrmEntities = (
|
|
324
387
|
currentEntities: Set<EntityTarget<any>>,
|
|
325
388
|
providers: Provider[],
|
|
326
389
|
controllers: ModuleMetadata['controllers'],
|
|
327
390
|
lookup: Map<string, EntityTarget<any>>,
|
|
328
|
-
) => {
|
|
391
|
+
): boolean => {
|
|
329
392
|
if (!lookup.size) {
|
|
330
|
-
return;
|
|
393
|
+
return false;
|
|
331
394
|
}
|
|
332
395
|
|
|
396
|
+
let detected = false;
|
|
333
397
|
const controllerList = Array.isArray(controllers) ? controllers : [];
|
|
334
398
|
const tokens = [
|
|
335
399
|
...providers.flatMap(extractInjectTokensFromProvider),
|
|
@@ -340,8 +404,147 @@ const registerAutoDetectedTypeOrmEntities = (
|
|
|
340
404
|
const entity = resolveEntityFromToken(token, lookup);
|
|
341
405
|
if (entity) {
|
|
342
406
|
currentEntities.add(entity);
|
|
407
|
+
detected = true;
|
|
343
408
|
}
|
|
344
409
|
});
|
|
410
|
+
|
|
411
|
+
return detected;
|
|
412
|
+
};
|
|
413
|
+
const addEntityToSet = (
|
|
414
|
+
entities: Set<EntityTarget<any>>,
|
|
415
|
+
entity: EntityTarget<any> | undefined,
|
|
416
|
+
queue: EntityTarget<any>[],
|
|
417
|
+
): void => {
|
|
418
|
+
if (!entity || entities.has(entity)) {
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
entities.add(entity);
|
|
423
|
+
queue.push(entity);
|
|
424
|
+
};
|
|
425
|
+
const isSameEntityTarget = (
|
|
426
|
+
left: EntityTarget<any> | undefined,
|
|
427
|
+
right: EntityTarget<any>,
|
|
428
|
+
): boolean => {
|
|
429
|
+
if (!left) {
|
|
430
|
+
return false;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
if (left === right) {
|
|
434
|
+
return true;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
const leftName = resolveEntityTargetName(left);
|
|
438
|
+
const rightName = resolveEntityTargetName(right);
|
|
439
|
+
|
|
440
|
+
return !!leftName && leftName === rightName;
|
|
441
|
+
};
|
|
442
|
+
const resolveRelationTarget = async (
|
|
443
|
+
relationType: unknown,
|
|
444
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
445
|
+
): Promise<EntityTarget<any> | undefined> => {
|
|
446
|
+
if (typeof relationType === 'string') {
|
|
447
|
+
return lookup.get(relationType);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
if (typeof relationType === 'function') {
|
|
451
|
+
try {
|
|
452
|
+
const resolved = relationType();
|
|
453
|
+
|
|
454
|
+
if (typeof resolved === 'string') {
|
|
455
|
+
return resolveRelationTarget(resolved, lookup);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return addEntityToLookup(lookup, resolved as EntityTarget<any>);
|
|
459
|
+
} catch {
|
|
460
|
+
return addEntityToLookup(lookup, relationType as EntityTarget<any>);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
return undefined;
|
|
465
|
+
};
|
|
466
|
+
const registerInheritedTypeOrmEntities = (
|
|
467
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
468
|
+
entity: EntityTarget<any>,
|
|
469
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
470
|
+
queue: EntityTarget<any>[],
|
|
471
|
+
): void => {
|
|
472
|
+
if (typeof entity !== 'function') {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
let prototype = Object.getPrototypeOf(entity.prototype);
|
|
477
|
+
|
|
478
|
+
while (prototype?.constructor && prototype.constructor !== Object) {
|
|
479
|
+
const parent = lookup.get(prototype.constructor.name);
|
|
480
|
+
if (parent) {
|
|
481
|
+
addEntityToSet(currentEntities, parent, queue);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
prototype = Object.getPrototypeOf(prototype);
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
const registerChildTypeOrmEntities = (
|
|
488
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
489
|
+
entity: EntityTarget<any>,
|
|
490
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
491
|
+
queue: EntityTarget<any>[],
|
|
492
|
+
): void => {
|
|
493
|
+
if (typeof entity !== 'function') {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
getMetadataArgsStorage().tables.forEach((table) => {
|
|
498
|
+
if (
|
|
499
|
+
table.type !== 'entity-child' ||
|
|
500
|
+
typeof table.target !== 'function' ||
|
|
501
|
+
!entity.prototype.isPrototypeOf(table.target.prototype)
|
|
502
|
+
) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
addEntityToSet(
|
|
507
|
+
currentEntities,
|
|
508
|
+
addEntityToLookup(lookup, table.target as EntityTarget<any>),
|
|
509
|
+
queue,
|
|
510
|
+
);
|
|
511
|
+
});
|
|
512
|
+
};
|
|
513
|
+
const registerRelatedTypeOrmEntities = async (
|
|
514
|
+
currentEntities: Set<EntityTarget<any>>,
|
|
515
|
+
lookup: Map<string, EntityTarget<any>>,
|
|
516
|
+
): Promise<void> => {
|
|
517
|
+
const queue = Array.from(currentEntities);
|
|
518
|
+
|
|
519
|
+
while (queue.length > 0) {
|
|
520
|
+
const entity = queue.shift()!;
|
|
521
|
+
const storage = getMetadataArgsStorage();
|
|
522
|
+
|
|
523
|
+
refreshEntityLookup(lookup);
|
|
524
|
+
registerInheritedTypeOrmEntities(currentEntities, entity, lookup, queue);
|
|
525
|
+
registerChildTypeOrmEntities(currentEntities, entity, lookup, queue);
|
|
526
|
+
|
|
527
|
+
const relations = storage.relations.filter((relation) =>
|
|
528
|
+
isSameEntityTarget(relation.target as EntityTarget<any>, entity),
|
|
529
|
+
);
|
|
530
|
+
|
|
531
|
+
for (const relation of relations) {
|
|
532
|
+
const relationEntity = await resolveRelationTarget(relation.type, lookup);
|
|
533
|
+
addEntityToSet(currentEntities, relationEntity, queue);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
for (const relation of storage.relations) {
|
|
537
|
+
const relationEntity = await resolveRelationTarget(relation.type, lookup);
|
|
538
|
+
|
|
539
|
+
if (isSameEntityTarget(relationEntity, entity)) {
|
|
540
|
+
addEntityToSet(
|
|
541
|
+
currentEntities,
|
|
542
|
+
addEntityToLookup(lookup, relation.target as EntityTarget<any>),
|
|
543
|
+
queue,
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
345
548
|
};
|
|
346
549
|
|
|
347
550
|
/**
|
|
@@ -421,27 +624,33 @@ export const buildTestingMocks = async ({
|
|
|
421
624
|
overrideTokens.has(provider as unknown as Provider)
|
|
422
625
|
),
|
|
423
626
|
);
|
|
424
|
-
const
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
627
|
+
const typeOrmDisabled = typeorm === false;
|
|
628
|
+
let typeOrmOptions: Partial<DataSourceOptions> | undefined;
|
|
629
|
+
const typeOrmFixtures: TypeOrmFixture[] = [];
|
|
630
|
+
const typeOrmConfigs =
|
|
631
|
+
!typeOrmDisabled && Array.isArray(typeorm)
|
|
632
|
+
? typeorm.filter(Boolean)
|
|
633
|
+
: !typeOrmDisabled && typeorm
|
|
634
|
+
? [typeorm]
|
|
635
|
+
: [];
|
|
636
|
+
const hasExplicitTypeOrmConfig = typeOrmConfigs.length > 0;
|
|
637
|
+
const typeOrmEntities = new Set<EntityTarget<any>>();
|
|
430
638
|
const entityLookup = buildEntityLookup();
|
|
431
|
-
|
|
432
|
-
registerAutoDetectedTypeOrmEntities(
|
|
639
|
+
const hasTypeOrmEntityDependencies = registerAutoDetectedTypeOrmEntities(
|
|
433
640
|
typeOrmEntities,
|
|
434
641
|
providersList,
|
|
435
642
|
controllers,
|
|
436
643
|
entityLookup,
|
|
437
644
|
);
|
|
438
|
-
|
|
439
|
-
const
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
645
|
+
const controllerList = Array.isArray(controllers) ? controllers : [];
|
|
646
|
+
const hasDataSourceDependencies = [...providersList, ...controllerList].some(
|
|
647
|
+
dependsOnDataSource,
|
|
648
|
+
);
|
|
649
|
+
const shouldUseTypeOrm =
|
|
650
|
+
!typeOrmDisabled &&
|
|
651
|
+
(hasExplicitTypeOrmConfig ||
|
|
652
|
+
hasTypeOrmEntityDependencies ||
|
|
653
|
+
hasDataSourceDependencies);
|
|
445
654
|
|
|
446
655
|
typeOrmConfigs.forEach((config) => {
|
|
447
656
|
config.entities?.forEach((entity) => typeOrmEntities.add(entity));
|
|
@@ -459,43 +668,59 @@ export const buildTestingMocks = async ({
|
|
|
459
668
|
}
|
|
460
669
|
});
|
|
461
670
|
|
|
671
|
+
if (shouldUseTypeOrm && typeOrmEntities.size === 0) {
|
|
672
|
+
entityLookup.forEach((entity) => typeOrmEntities.add(entity));
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
if (shouldUseTypeOrm) {
|
|
676
|
+
[SettingOrmEntity, MetadataOrmEntity, LanguageOrmEntity].forEach((entity) =>
|
|
677
|
+
typeOrmEntities.add(entity),
|
|
678
|
+
);
|
|
679
|
+
await registerRelatedTypeOrmEntities(typeOrmEntities, entityLookup);
|
|
680
|
+
}
|
|
681
|
+
|
|
462
682
|
const runTypeOrmFixtures = async (dataSource: DataSource) => {
|
|
463
683
|
for (const fixture of typeOrmFixtures) {
|
|
464
684
|
await fixture(dataSource);
|
|
465
685
|
}
|
|
466
686
|
};
|
|
467
687
|
const entitiesArray = Array.from(typeOrmEntities);
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
688
|
+
let typeOrmRootModule: DynamicModule | undefined;
|
|
689
|
+
let typeOrmProviders: Provider[] = [];
|
|
690
|
+
|
|
691
|
+
if (shouldUseTypeOrm) {
|
|
692
|
+
const baseOptions: DataSourceOptions = {
|
|
693
|
+
type: 'sqlite',
|
|
694
|
+
database: ':memory:',
|
|
695
|
+
synchronize: true,
|
|
696
|
+
dropSchema: true,
|
|
697
|
+
logging: false,
|
|
698
|
+
entities: entitiesArray,
|
|
699
|
+
...(typeOrmOptions ?? {}),
|
|
700
|
+
} as DataSourceOptions;
|
|
701
|
+
const dataSource = new DataSource(baseOptions);
|
|
702
|
+
await dataSource.initialize();
|
|
703
|
+
registerAllRepositorySubscribers(dataSource, entitiesArray as any[]);
|
|
704
|
+
await runTypeOrmFixtures(dataSource);
|
|
705
|
+
registerTypeOrmDataSource(dataSource);
|
|
706
|
+
|
|
707
|
+
typeOrmRootModule = TypeOrmModule.forRootAsync({
|
|
708
|
+
useFactory: async () => baseOptions as DataSourceOptions,
|
|
709
|
+
dataSourceFactory: async () => dataSource,
|
|
710
|
+
});
|
|
711
|
+
typeOrmProviders = entitiesArray.map((entity) => ({
|
|
712
|
+
provide: getRepositoryToken(entity as any),
|
|
713
|
+
useValue: dataSource.getRepository(entity),
|
|
714
|
+
}));
|
|
715
|
+
}
|
|
716
|
+
|
|
491
717
|
const testingModuleBuilder = Test.createTestingModule({
|
|
492
718
|
imports: [
|
|
493
719
|
LoggerModule,
|
|
494
720
|
EventEmitterModule.forRoot({ global: true }),
|
|
495
721
|
CacheModule.register({ isGlobal: true }),
|
|
496
|
-
typeOrmRootModule,
|
|
497
722
|
I18nTestingModule,
|
|
498
|
-
SettingModule,
|
|
723
|
+
...(typeOrmRootModule ? [typeOrmRootModule, SettingModule] : []),
|
|
499
724
|
...imports,
|
|
500
725
|
],
|
|
501
726
|
providers: [
|
|
@@ -507,6 +732,7 @@ export const buildTestingMocks = async ({
|
|
|
507
732
|
...rest,
|
|
508
733
|
});
|
|
509
734
|
const module = await testingModuleBuilder.compile();
|
|
735
|
+
registerTestingModule(module);
|
|
510
736
|
|
|
511
737
|
return {
|
|
512
738
|
module,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
WebSocketGateway,
|
|
19
19
|
WebSocketServer,
|
|
20
20
|
} from '@nestjs/websockets';
|
|
21
|
+
import { isUUID } from 'class-validator';
|
|
21
22
|
import Cookie from 'cookie';
|
|
22
23
|
import signature from 'cookie-signature';
|
|
23
24
|
import { Request } from 'express';
|
|
@@ -25,7 +26,6 @@ import { Session as ExpressSession, SessionData } from 'express-session';
|
|
|
25
26
|
import { ExtendedError, Server, Socket } from 'socket.io';
|
|
26
27
|
import { DataSource } from 'typeorm';
|
|
27
28
|
import { sync as uid } from 'uid-safe';
|
|
28
|
-
import { validate as isUuid } from 'uuid';
|
|
29
29
|
|
|
30
30
|
import { SourceOrmEntity } from '@/channel/entities/source.entity';
|
|
31
31
|
import { config } from '@/config';
|
|
@@ -179,7 +179,7 @@ export class WebsocketGateway
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
private normalizeSourceId(value: string | null): string | null {
|
|
182
|
-
if (!value || !
|
|
182
|
+
if (!value || !isUUID(value)) {
|
|
183
183
|
return null;
|
|
184
184
|
}
|
|
185
185
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
|
+
import { createRequire } from 'node:module';
|
|
8
9
|
|
|
9
10
|
import {
|
|
10
11
|
workflowVersionSchema,
|
|
@@ -32,7 +33,9 @@ import { AsRelation } from '@/utils';
|
|
|
32
33
|
import { WorkflowVersionDto } from '../dto/workflow-version.dto';
|
|
33
34
|
import { WorkflowVersionAction } from '../types';
|
|
34
35
|
|
|
35
|
-
import { WorkflowOrmEntity } from './workflow.entity';
|
|
36
|
+
import type { WorkflowOrmEntity } from './workflow.entity';
|
|
37
|
+
|
|
38
|
+
const requireEntity = createRequire(__filename);
|
|
36
39
|
|
|
37
40
|
@Entity({ name: 'workflow_versions' })
|
|
38
41
|
@Index(['workflow', 'version'], { unique: true })
|
|
@@ -42,7 +45,7 @@ export class WorkflowVersionOrmEntity extends BaseOrmEntity<WorkflowVersionDto>
|
|
|
42
45
|
fullCls = workflowVersionFullSchema;
|
|
43
46
|
|
|
44
47
|
/** Workflow that owns this version snapshot. */
|
|
45
|
-
@ManyToOne(() => WorkflowOrmEntity, {
|
|
48
|
+
@ManyToOne(() => requireEntity('./workflow.entity').WorkflowOrmEntity, {
|
|
46
49
|
nullable: false,
|
|
47
50
|
onDelete: 'CASCADE',
|
|
48
51
|
})
|
|
@@ -130,7 +133,9 @@ export class WorkflowVersionOrmEntity extends BaseOrmEntity<WorkflowVersionDto>
|
|
|
130
133
|
return;
|
|
131
134
|
}
|
|
132
135
|
|
|
133
|
-
const
|
|
136
|
+
const WorkflowEntity = requireEntity('./workflow.entity').WorkflowOrmEntity;
|
|
137
|
+
const workflowRepository =
|
|
138
|
+
event.manager.getRepository<WorkflowOrmEntity>(WorkflowEntity);
|
|
134
139
|
const workflow = await workflowRepository.findOne({
|
|
135
140
|
where: { id: workflowId },
|
|
136
141
|
});
|
|
@@ -9,6 +9,7 @@ import { ZodSchema, z } from 'zod';
|
|
|
9
9
|
|
|
10
10
|
import { cloneObject } from '@/utils/helpers/clone';
|
|
11
11
|
import { deepFreeze } from '@/utils/helpers/freeze';
|
|
12
|
+
import { deepMerge } from '@/utils/helpers/object';
|
|
12
13
|
|
|
13
14
|
import { WorkflowRuntimeContext } from '../contexts/workflow-runtime.context';
|
|
14
15
|
import {
|
|
@@ -377,9 +378,20 @@ export class MemoryStore {
|
|
|
377
378
|
|
|
378
379
|
const updates = await Promise.all(
|
|
379
380
|
entries.map(async ([slug, value]) => {
|
|
381
|
+
const currentValue = this.raw[slug];
|
|
382
|
+
const canMerge =
|
|
383
|
+
currentValue !== null &&
|
|
384
|
+
value !== null &&
|
|
385
|
+
typeof currentValue === 'object' &&
|
|
386
|
+
typeof value === 'object' &&
|
|
387
|
+
!Array.isArray(currentValue) &&
|
|
388
|
+
!Array.isArray(value);
|
|
389
|
+
const nextValue = canMerge
|
|
390
|
+
? deepMerge(cloneObject(currentValue), value)
|
|
391
|
+
: value;
|
|
380
392
|
const parsedValue = await this.updateStoreEntry(
|
|
381
393
|
slug,
|
|
382
|
-
|
|
394
|
+
nextValue,
|
|
383
395
|
persistRecord,
|
|
384
396
|
);
|
|
385
397
|
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.MjmlAdapter = void 0;
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const path_1 = __importDefault(require("path"));
|
|
42
|
-
const common_1 = require("@nestjs/common");
|
|
43
|
-
const handlebars_1 = __importDefault(require("handlebars"));
|
|
44
|
-
class MjmlAdapter {
|
|
45
|
-
constructor() {
|
|
46
|
-
this.compile = async (mail, callback, options) => {
|
|
47
|
-
try {
|
|
48
|
-
const templatePath = path_1.default.join(options.template?.dir || '', mail.data.template || '');
|
|
49
|
-
const content = fs.readFileSync(templatePath, 'utf-8');
|
|
50
|
-
const delegate = handlebars_1.default.compile(content);
|
|
51
|
-
const compiledHandlebars = delegate(mail.data.context);
|
|
52
|
-
const mjml2html = await Promise.resolve().then(() => __importStar(require('mjml')));
|
|
53
|
-
const { errors, html } = await mjml2html.default(compiledHandlebars);
|
|
54
|
-
if (errors.length) {
|
|
55
|
-
throw 'Unable to compiling mjml';
|
|
56
|
-
}
|
|
57
|
-
mail.data.html = html;
|
|
58
|
-
callback();
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
common_1.Logger.error('@nestjs-modules/mailer: Unable to compiling mjml', err);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
exports.MjmlAdapter = MjmlAdapter;
|
|
67
|
-
//# sourceMappingURL=mjml-adapter.class.js.map
|