@pcontext/api 0.0.1
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 +151 -0
- package/dist/app.d.mts +44779 -0
- package/dist/app.d.mts.map +1 -0
- package/dist/app.mjs +37 -0
- package/dist/app.mjs.map +1 -0
- package/dist/client.d.mts +22428 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +15 -0
- package/dist/client.mjs.map +1 -0
- package/dist/dev.d.mts +11 -0
- package/dist/dev.d.mts.map +1 -0
- package/dist/dev.mjs +16 -0
- package/dist/dev.mjs.map +1 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.mjs +10 -0
- package/dist/index.mjs.map +1 -0
- package/dist/modules/doc/chat.route.d.mts +18 -0
- package/dist/modules/doc/chat.route.d.mts.map +1 -0
- package/dist/modules/doc/chat.route.mjs +20 -0
- package/dist/modules/doc/chat.route.mjs.map +1 -0
- package/dist/modules/doc/chat.service.d.mts +10 -0
- package/dist/modules/doc/chat.service.d.mts.map +1 -0
- package/dist/modules/doc/chat.service.mjs +29 -0
- package/dist/modules/doc/chat.service.mjs.map +1 -0
- package/dist/modules/doc/doc.dto.d.mts +67 -0
- package/dist/modules/doc/doc.dto.d.mts.map +1 -0
- package/dist/modules/doc/doc.dto.mjs +43 -0
- package/dist/modules/doc/doc.dto.mjs.map +1 -0
- package/dist/modules/doc/doc.entity.d.mts +19 -0
- package/dist/modules/doc/doc.entity.d.mts.map +1 -0
- package/dist/modules/doc/doc.entity.mjs +1 -0
- package/dist/modules/doc/doc.repo.interface.d.mts +28 -0
- package/dist/modules/doc/doc.repo.interface.d.mts.map +1 -0
- package/dist/modules/doc/doc.repo.interface.mjs +1 -0
- package/dist/modules/doc/doc.route.d.mts +14193 -0
- package/dist/modules/doc/doc.route.d.mts.map +1 -0
- package/dist/modules/doc/doc.route.mjs +100 -0
- package/dist/modules/doc/doc.route.mjs.map +1 -0
- package/dist/modules/doc/doc.service.d.mts +38 -0
- package/dist/modules/doc/doc.service.d.mts.map +1 -0
- package/dist/modules/doc/doc.service.mjs +134 -0
- package/dist/modules/doc/doc.service.mjs.map +1 -0
- package/dist/modules/doc/doc.vo.d.mts +17 -0
- package/dist/modules/doc/doc.vo.d.mts.map +1 -0
- package/dist/modules/doc/doc.vo.mjs +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts +21 -0
- package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/chat.mjs +36 -0
- package/dist/modules/doc/infrastructure/agent/engine/chat.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts +28 -0
- package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/generate.mjs +135 -0
- package/dist/modules/doc/infrastructure/agent/engine/generate.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts +7 -0
- package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs +12 -0
- package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts +54 -0
- package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs +142 -0
- package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/loaders/index.d.mts +3 -0
- package/dist/modules/doc/infrastructure/agent/loaders/index.mjs +4 -0
- package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts +42 -0
- package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs +104 -0
- package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/settings.d.mts +5 -0
- package/dist/modules/doc/infrastructure/agent/settings.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/settings.mjs +72 -0
- package/dist/modules/doc/infrastructure/agent/settings.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/storage/index.d.mts +7 -0
- package/dist/modules/doc/infrastructure/agent/storage/index.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/storage/index.mjs +12 -0
- package/dist/modules/doc/infrastructure/agent/storage/index.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts +14 -0
- package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs +35 -0
- package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/doc.po.d.mts +570 -0
- package/dist/modules/doc/infrastructure/doc.po.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/doc.po.mjs +54 -0
- package/dist/modules/doc/infrastructure/doc.po.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts +32 -0
- package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/doc.repo.pg.mjs +157 -0
- package/dist/modules/doc/infrastructure/doc.repo.pg.mjs.map +1 -0
- package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts +32 -0
- package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts.map +1 -0
- package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs +153 -0
- package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs.map +1 -0
- package/dist/modules/doc/mcp.route.d.mts +18 -0
- package/dist/modules/doc/mcp.route.d.mts.map +1 -0
- package/dist/modules/doc/mcp.route.mjs +39 -0
- package/dist/modules/doc/mcp.route.mjs.map +1 -0
- package/dist/modules/doc/mcp.service.d.mts +22 -0
- package/dist/modules/doc/mcp.service.d.mts.map +1 -0
- package/dist/modules/doc/mcp.service.mjs +119 -0
- package/dist/modules/doc/mcp.service.mjs.map +1 -0
- package/dist/modules/rank/rank.dto.d.mts +10 -0
- package/dist/modules/rank/rank.dto.d.mts.map +1 -0
- package/dist/modules/rank/rank.dto.mjs +8 -0
- package/dist/modules/rank/rank.dto.mjs.map +1 -0
- package/dist/modules/rank/rank.route.d.mts +2033 -0
- package/dist/modules/rank/rank.route.d.mts.map +1 -0
- package/dist/modules/rank/rank.route.mjs +20 -0
- package/dist/modules/rank/rank.route.mjs.map +1 -0
- package/dist/modules/rank/rank.service.d.mts +32 -0
- package/dist/modules/rank/rank.service.d.mts.map +1 -0
- package/dist/modules/rank/rank.service.mjs +3 -0
- package/dist/modules/rank/rank.vo.d.mts +9 -0
- package/dist/modules/rank/rank.vo.d.mts.map +1 -0
- package/dist/modules/rank/rank.vo.mjs +1 -0
- package/dist/modules/task/infrastructure/mq/task-context.d.mts +29 -0
- package/dist/modules/task/infrastructure/mq/task-context.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/mq/task-context.mjs +70 -0
- package/dist/modules/task/infrastructure/mq/task-context.mjs.map +1 -0
- package/dist/modules/task/infrastructure/mq/task-queue.d.mts +10 -0
- package/dist/modules/task/infrastructure/mq/task-queue.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/mq/task-queue.mjs +12 -0
- package/dist/modules/task/infrastructure/mq/task-queue.mjs.map +1 -0
- package/dist/modules/task/infrastructure/mq/task-worker.d.mts +13 -0
- package/dist/modules/task/infrastructure/mq/task-worker.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/mq/task-worker.mjs +35 -0
- package/dist/modules/task/infrastructure/mq/task-worker.mjs.map +1 -0
- package/dist/modules/task/infrastructure/task.po.d.mts +1147 -0
- package/dist/modules/task/infrastructure/task.po.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/task.po.mjs +55 -0
- package/dist/modules/task/infrastructure/task.po.mjs.map +1 -0
- package/dist/modules/task/infrastructure/task.repo.pg.d.mts +21 -0
- package/dist/modules/task/infrastructure/task.repo.pg.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/task.repo.pg.mjs +86 -0
- package/dist/modules/task/infrastructure/task.repo.pg.mjs.map +1 -0
- package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts +21 -0
- package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts.map +1 -0
- package/dist/modules/task/infrastructure/task.repo.sqlite.mjs +89 -0
- package/dist/modules/task/infrastructure/task.repo.sqlite.mjs.map +1 -0
- package/dist/modules/task/task.dto.d.mts +26 -0
- package/dist/modules/task/task.dto.d.mts.map +1 -0
- package/dist/modules/task/task.dto.mjs +25 -0
- package/dist/modules/task/task.dto.mjs.map +1 -0
- package/dist/modules/task/task.entity.d.mts +43 -0
- package/dist/modules/task/task.entity.d.mts.map +1 -0
- package/dist/modules/task/task.entity.mjs +1 -0
- package/dist/modules/task/task.repo.interface.d.mts +17 -0
- package/dist/modules/task/task.repo.interface.d.mts.map +1 -0
- package/dist/modules/task/task.repo.interface.mjs +1 -0
- package/dist/modules/task/task.route.d.mts +4087 -0
- package/dist/modules/task/task.route.d.mts.map +1 -0
- package/dist/modules/task/task.route.mjs +63 -0
- package/dist/modules/task/task.route.mjs.map +1 -0
- package/dist/modules/task/task.service.d.mts +28 -0
- package/dist/modules/task/task.service.d.mts.map +1 -0
- package/dist/modules/task/task.service.mjs +202 -0
- package/dist/modules/task/task.service.mjs.map +1 -0
- package/dist/modules/task/task.vo.d.mts +18 -0
- package/dist/modules/task/task.vo.d.mts.map +1 -0
- package/dist/modules/task/task.vo.mjs +1 -0
- package/dist/modules/user/application/user.service.d.mts +24 -0
- package/dist/modules/user/application/user.service.d.mts.map +1 -0
- package/dist/modules/user/application/user.service.mjs +153 -0
- package/dist/modules/user/application/user.service.mjs.map +1 -0
- package/dist/modules/user/domain/user.entity.d.mts +24 -0
- package/dist/modules/user/domain/user.entity.d.mts.map +1 -0
- package/dist/modules/user/domain/user.entity.mjs +35 -0
- package/dist/modules/user/domain/user.entity.mjs.map +1 -0
- package/dist/modules/user/domain/user.repo.interface.d.mts +27 -0
- package/dist/modules/user/domain/user.repo.interface.d.mts.map +1 -0
- package/dist/modules/user/domain/user.repo.interface.mjs +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.d.mts +7 -0
- package/dist/modules/user/infrastructure/casbin/adapter.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.mjs +13 -0
- package/dist/modules/user/infrastructure/casbin/adapter.mjs.map +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts +19 -0
- package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs +129 -0
- package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs.map +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts +19 -0
- package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs +129 -0
- package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs.map +1 -0
- package/dist/modules/user/infrastructure/casbin/enforcer.d.mts +9 -0
- package/dist/modules/user/infrastructure/casbin/enforcer.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/casbin/enforcer.mjs +150 -0
- package/dist/modules/user/infrastructure/casbin/enforcer.mjs.map +1 -0
- package/dist/modules/user/infrastructure/casbin-rule.po.d.mts +643 -0
- package/dist/modules/user/infrastructure/casbin-rule.po.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/casbin-rule.po.mjs +30 -0
- package/dist/modules/user/infrastructure/casbin-rule.po.mjs.map +1 -0
- package/dist/modules/user/infrastructure/user.po.d.mts +392 -0
- package/dist/modules/user/infrastructure/user.po.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/user.po.mjs +34 -0
- package/dist/modules/user/infrastructure/user.po.mjs.map +1 -0
- package/dist/modules/user/infrastructure/user.repo.pg.d.mts +24 -0
- package/dist/modules/user/infrastructure/user.repo.pg.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/user.repo.pg.mjs +90 -0
- package/dist/modules/user/infrastructure/user.repo.pg.mjs.map +1 -0
- package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts +24 -0
- package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts.map +1 -0
- package/dist/modules/user/infrastructure/user.repo.sqlite.mjs +88 -0
- package/dist/modules/user/infrastructure/user.repo.sqlite.mjs.map +1 -0
- package/dist/modules/user/interfaces/admin.route.d.mts +8270 -0
- package/dist/modules/user/interfaces/admin.route.d.mts.map +1 -0
- package/dist/modules/user/interfaces/admin.route.mjs +74 -0
- package/dist/modules/user/interfaces/admin.route.mjs.map +1 -0
- package/dist/modules/user/interfaces/role.route.d.mts +102 -0
- package/dist/modules/user/interfaces/role.route.d.mts.map +1 -0
- package/dist/modules/user/interfaces/role.route.mjs +60 -0
- package/dist/modules/user/interfaces/role.route.mjs.map +1 -0
- package/dist/modules/user/interfaces/user.dto.d.mts +106 -0
- package/dist/modules/user/interfaces/user.dto.d.mts.map +1 -0
- package/dist/modules/user/interfaces/user.dto.mjs +32 -0
- package/dist/modules/user/interfaces/user.dto.mjs.map +1 -0
- package/dist/modules/user/interfaces/user.route.d.mts +2093 -0
- package/dist/modules/user/interfaces/user.route.d.mts.map +1 -0
- package/dist/modules/user/interfaces/user.route.mjs +69 -0
- package/dist/modules/user/interfaces/user.route.mjs.map +1 -0
- package/dist/modules/user/interfaces/user.vo.d.mts +28 -0
- package/dist/modules/user/interfaces/user.vo.d.mts.map +1 -0
- package/dist/modules/user/interfaces/user.vo.mjs +18 -0
- package/dist/modules/user/interfaces/user.vo.mjs.map +1 -0
- package/dist/rank.service-D2h-2iJA.mjs +109 -0
- package/dist/rank.service-D2h-2iJA.mjs.map +1 -0
- package/dist/settings.d.mts +12 -0
- package/dist/settings.d.mts.map +1 -0
- package/dist/settings.mjs +27 -0
- package/dist/settings.mjs.map +1 -0
- package/dist/shared/create-app.d.mts +13 -0
- package/dist/shared/create-app.d.mts.map +1 -0
- package/dist/shared/create-app.mjs +45 -0
- package/dist/shared/create-app.mjs.map +1 -0
- package/dist/shared/db/bootstrap.d.mts +5 -0
- package/dist/shared/db/bootstrap.d.mts.map +1 -0
- package/dist/shared/db/bootstrap.mjs +51 -0
- package/dist/shared/db/bootstrap.mjs.map +1 -0
- package/dist/shared/db/connection.d.mts +1567 -0
- package/dist/shared/db/connection.d.mts.map +1 -0
- package/dist/shared/db/connection.mjs +59 -0
- package/dist/shared/db/connection.mjs.map +1 -0
- package/dist/shared/db/migrations/pg/0000_init.sql +74 -0
- package/dist/shared/db/migrations/pg/0001_snippets & tokens.sql +6 -0
- package/dist/shared/db/migrations/pg/0002_change_task_id_to_uuid_v7.sql +3 -0
- package/dist/shared/db/migrations/pg/meta/0000_snapshot.json +498 -0
- package/dist/shared/db/migrations/pg/meta/0001_snapshot.json +513 -0
- package/dist/shared/db/migrations/pg/meta/0002_snapshot.json +514 -0
- package/dist/shared/db/migrations/pg/meta/_journal.json +27 -0
- package/dist/shared/db/migrations/sqlite/0000_init.sql +72 -0
- package/dist/shared/db/migrations/sqlite/0001_snippets & tokens.sql +2 -0
- package/dist/shared/db/migrations/sqlite/0002_change_task_id_to_uuid_v7.sql +35 -0
- package/dist/shared/db/migrations/sqlite/meta/0000_snapshot.json +493 -0
- package/dist/shared/db/migrations/sqlite/meta/0001_snapshot.json +509 -0
- package/dist/shared/db/migrations/sqlite/meta/0002_snapshot.json +509 -0
- package/dist/shared/db/migrations/sqlite/meta/_journal.json +27 -0
- package/dist/shared/db/seed.d.mts +5 -0
- package/dist/shared/db/seed.d.mts.map +1 -0
- package/dist/shared/db/seed.mjs +42 -0
- package/dist/shared/db/seed.mjs.map +1 -0
- package/dist/shared/deps.d.mts +28 -0
- package/dist/shared/deps.d.mts.map +1 -0
- package/dist/shared/deps.mjs +69 -0
- package/dist/shared/deps.mjs.map +1 -0
- package/dist/shared/dto/index.d.mts +11 -0
- package/dist/shared/dto/index.d.mts.map +1 -0
- package/dist/shared/dto/index.mjs +11 -0
- package/dist/shared/dto/index.mjs.map +1 -0
- package/dist/shared/logger.d.mts +14 -0
- package/dist/shared/logger.d.mts.map +1 -0
- package/dist/shared/logger.mjs +37 -0
- package/dist/shared/logger.mjs.map +1 -0
- package/dist/shared/mcp/createTool.d.mts +15 -0
- package/dist/shared/mcp/createTool.d.mts.map +1 -0
- package/dist/shared/mcp/createTool.mjs +8 -0
- package/dist/shared/mcp/createTool.mjs.map +1 -0
- package/dist/shared/middleware/authorization.d.mts +15 -0
- package/dist/shared/middleware/authorization.d.mts.map +1 -0
- package/dist/shared/middleware/authorization.mjs +46 -0
- package/dist/shared/middleware/authorization.mjs.map +1 -0
- package/dist/shared/middleware/http-logger.d.mts +7 -0
- package/dist/shared/middleware/http-logger.d.mts.map +1 -0
- package/dist/shared/middleware/http-logger.mjs +40 -0
- package/dist/shared/middleware/http-logger.mjs.map +1 -0
- package/dist/shared/middleware/jwt.d.mts +7 -0
- package/dist/shared/middleware/jwt.d.mts.map +1 -0
- package/dist/shared/middleware/jwt.mjs +34 -0
- package/dist/shared/middleware/jwt.mjs.map +1 -0
- package/dist/shared/middleware/limiter.d.mts +7 -0
- package/dist/shared/middleware/limiter.d.mts.map +1 -0
- package/dist/shared/middleware/limiter.mjs +10 -0
- package/dist/shared/middleware/limiter.mjs.map +1 -0
- package/dist/shared/middleware/services.d.mts +8 -0
- package/dist/shared/middleware/services.d.mts.map +1 -0
- package/dist/shared/middleware/services.mjs +19 -0
- package/dist/shared/middleware/services.mjs.map +1 -0
- package/dist/shared/redis/decorator.d.mts +113 -0
- package/dist/shared/redis/decorator.d.mts.map +1 -0
- package/dist/shared/redis/decorator.mjs +203 -0
- package/dist/shared/redis/decorator.mjs.map +1 -0
- package/dist/shared/redis/factory.d.mts +18 -0
- package/dist/shared/redis/factory.d.mts.map +1 -0
- package/dist/shared/redis/factory.mjs +41 -0
- package/dist/shared/redis/factory.mjs.map +1 -0
- package/dist/shared/redis/index.d.mts +12 -0
- package/dist/shared/redis/index.d.mts.map +1 -0
- package/dist/shared/redis/index.mjs +14 -0
- package/dist/shared/redis/index.mjs.map +1 -0
- package/dist/shared/types.d.mts +36 -0
- package/dist/shared/types.d.mts.map +1 -0
- package/dist/shared/types.mjs +1 -0
- package/dist/shared/utils/date.d.mts +1 -0
- package/dist/shared/utils/date.mjs +1 -0
- package/dist/shared/utils/error-handler.d.mts +7 -0
- package/dist/shared/utils/error-handler.d.mts.map +1 -0
- package/dist/shared/utils/error-handler.mjs +22 -0
- package/dist/shared/utils/error-handler.mjs.map +1 -0
- package/dist/shared/utils/format.d.mts +8 -0
- package/dist/shared/utils/format.d.mts.map +1 -0
- package/dist/shared/utils/format.mjs +24 -0
- package/dist/shared/utils/format.mjs.map +1 -0
- package/dist/shared/utils/pagination.d.mts +9 -0
- package/dist/shared/utils/pagination.d.mts.map +1 -0
- package/dist/shared/utils/pagination.mjs +12 -0
- package/dist/shared/utils/pagination.mjs.map +1 -0
- package/dist/shared/utils/response-template.d.mts +69 -0
- package/dist/shared/utils/response-template.d.mts.map +1 -0
- package/dist/shared/utils/response-template.mjs +96 -0
- package/dist/shared/utils/response-template.mjs.map +1 -0
- package/dist/shared/utils/url.d.mts +18 -0
- package/dist/shared/utils/url.d.mts.map +1 -0
- package/dist/shared/utils/url.mjs +39 -0
- package/dist/shared/utils/url.mjs.map +1 -0
- package/dist/shared/utils/user.d.mts +8 -0
- package/dist/shared/utils/user.d.mts.map +1 -0
- package/dist/shared/utils/user.mjs +11 -0
- package/dist/shared/utils/user.mjs.map +1 -0
- package/dist/shared/utils/validator.d.mts +5984 -0
- package/dist/shared/utils/validator.d.mts.map +1 -0
- package/dist/shared/utils/validator.mjs +34 -0
- package/dist/shared/utils/validator.mjs.map +1 -0
- package/dist/shared/vo/index.d.mts +11 -0
- package/dist/shared/vo/index.d.mts.map +1 -0
- package/dist/shared/vo/index.mjs +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.route.d.mts","names":[],"sources":["../../../src/modules/rank/rank.route.ts"],"mappings":";;;;;;;;cASM,MAAA,kBAAM,QAAA,CASR,WAAA;;;;;;;;;;;;;;;;;;;oBATQ,OAAA,CAAA,aAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "../../rank.service-D2h-2iJA.mjs";
|
|
2
|
+
import { getServiceDeps } from "../../shared/deps.mjs";
|
|
3
|
+
import { createRouter } from "../../shared/create-app.mjs";
|
|
4
|
+
import { Res200 } from "../../shared/utils/response-template.mjs";
|
|
5
|
+
import { getCurrentUserId } from "../../shared/utils/user.mjs";
|
|
6
|
+
import { queryValidator } from "../../shared/utils/validator.mjs";
|
|
7
|
+
import { RankDocsQuerySchema } from "./rank.dto.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/modules/rank/rank.route.ts
|
|
10
|
+
const router = createRouter().get("/docs", queryValidator(RankDocsQuerySchema), async (c) => {
|
|
11
|
+
const { limit } = c.req.valid("query");
|
|
12
|
+
const { rankService } = getServiceDeps();
|
|
13
|
+
const userId = getCurrentUserId(c);
|
|
14
|
+
const docs = await rankService.getRankedDocsWithDetails(limit, userId);
|
|
15
|
+
return c.json(Res200({ docs }), 200);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { router as default };
|
|
20
|
+
//# sourceMappingURL=rank.route.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.route.mjs","names":[],"sources":["../../../src/modules/rank/rank.route.ts"],"sourcesContent":["import type { RankedDocVO } from './rank.vo'\nimport type { ApiSuccess } from '@/shared/types'\nimport { createRouter } from '@/shared/create-app'\nimport { getServiceDeps } from '@/shared/deps'\nimport { Res200 } from '@/shared/utils/response-template'\nimport { getCurrentUserId } from '@/shared/utils/user'\nimport { queryValidator } from '@/shared/utils/validator'\nimport { RankDocsQuerySchema } from './rank.dto'\n\nconst router = createRouter()\n .get('/docs', queryValidator(RankDocsQuerySchema), async (c) => {\n const { limit } = c.req.valid('query')\n const { rankService } = getServiceDeps()\n const userId = getCurrentUserId(c)\n\n const docs = await rankService.getRankedDocsWithDetails(limit, userId)\n\n return c.json(Res200({ docs }) as ApiSuccess<{ docs: RankedDocVO[] }>, 200)\n })\n\nexport default router\n"],"mappings":";;;;;;;;;AASA,MAAM,SAAS,cAAc,CAC1B,IAAI,SAAS,eAAe,oBAAoB,EAAE,OAAO,MAAM;CAC9D,MAAM,EAAE,UAAU,EAAE,IAAI,MAAM,QAAQ;CACtC,MAAM,EAAE,gBAAgB,gBAAgB;CACxC,MAAM,SAAS,iBAAiB,EAAE;CAElC,MAAM,OAAO,MAAM,YAAY,yBAAyB,OAAO,OAAO;AAEtE,QAAO,EAAE,KAAK,OAAO,EAAE,MAAM,CAAC,EAAyC,IAAI;EAC3E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RankedDocVO } from "./rank.vo.mjs";
|
|
2
|
+
import { IDocRepository } from "../doc/doc.repo.interface.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/rank/rank.service.d.ts
|
|
5
|
+
declare class RankService {
|
|
6
|
+
private docRepo;
|
|
7
|
+
private get cache();
|
|
8
|
+
constructor(docRepo: IDocRepository);
|
|
9
|
+
/**
|
|
10
|
+
* 批量查询文档收藏状态(带缓存)
|
|
11
|
+
* @param userId 用户 ID
|
|
12
|
+
* @param docIds 文档 ID 列表
|
|
13
|
+
* @returns docId -> 是否收藏的映射
|
|
14
|
+
*/
|
|
15
|
+
getFavoritesMap(userId: number, docIds: number[]): Promise<{
|
|
16
|
+
[docId: number]: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
incrementDocScore(slug: string, weight: number): Promise<void>;
|
|
19
|
+
getRankedDocs(limit?: number): Promise<{
|
|
20
|
+
slug: string;
|
|
21
|
+
score: number;
|
|
22
|
+
}[]>;
|
|
23
|
+
/**
|
|
24
|
+
* 获取排序文档列表
|
|
25
|
+
* @param limit 返回数量限制
|
|
26
|
+
* @param userId 可选用户 ID,用于检查收藏状态
|
|
27
|
+
*/
|
|
28
|
+
getRankedDocsWithDetails(limit: number, userId?: number): Promise<RankedDocVO[]>;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { RankService };
|
|
32
|
+
//# sourceMappingURL=rank.service.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.service.d.mts","names":[],"sources":["../../../src/modules/rank/rank.service.ts"],"mappings":";;;;cAiBa,WAAA;EAAA,QAKS,OAAA;EAAA,YAJR,KAAA,CAAA;cAIQ,OAAA,EAAS,cAAA;;;;;;;EASvB,eAAA,CAAgB,MAAA,UAAgB,MAAA,aAAmB,OAAA;IAAA,CAAW,KAAA;EAAA;EAc9D,iBAAA,CAAkB,IAAA,UAAc,MAAA,WAAiB,OAAA;EAMjD,aAAA,CAAc,KAAA,YAAqB,OAAA;IAAU,IAAA;IAAc,KAAA;EAAA;EApB3D;;;;;EAwCA,wBAAA,CAAyB,KAAA,UAAe,MAAA,YAAkB,OAAA,CAAQ,WAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.vo.d.mts","names":[],"sources":["../../../src/modules/rank/rank.vo.ts"],"mappings":";;;KAEY,WAAA,GAAc,KAAA;EACxB,KAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Logger } from "pino";
|
|
2
|
+
import { Job } from "bullmq";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/task/infrastructure/mq/task-context.d.ts
|
|
5
|
+
interface TaskLogEntry {
|
|
6
|
+
timestamp: number;
|
|
7
|
+
level: string;
|
|
8
|
+
message: string;
|
|
9
|
+
data?: any;
|
|
10
|
+
traceId: string;
|
|
11
|
+
}
|
|
12
|
+
declare class TaskContext<T = any> {
|
|
13
|
+
readonly job: Job<T>;
|
|
14
|
+
readonly logger: Logger;
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly data: T;
|
|
17
|
+
readonly traceId: string;
|
|
18
|
+
static readonly LOG_MAX_ENTRIES = 150;
|
|
19
|
+
static readonly LOG_TRIM_TO_ENTRIES = 100;
|
|
20
|
+
constructor(job: Job<T>, logger: Logger);
|
|
21
|
+
log(level: 'info' | 'error' | 'warn', message: string, data?: any): Promise<void>;
|
|
22
|
+
private parseLogData;
|
|
23
|
+
logInfo(data: string | object, msg?: string): Promise<void>;
|
|
24
|
+
logError(data: string | object, msg?: string): Promise<void>;
|
|
25
|
+
logWarn(data: string | object, msg?: string): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { TaskContext, TaskLogEntry };
|
|
29
|
+
//# sourceMappingURL=task-context.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-context.d.mts","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-context.ts"],"mappings":";;;;UAIiB,YAAA;EACf,SAAA;EACA,KAAA;EACA,OAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,cAGW,WAAA;EAAA,SACF,GAAA,EAAK,GAAA,CAAI,CAAA;EAAA,SACT,MAAA,EAAQ,MAAA;EAAA,SACR,EAAA;EAAA,SACA,IAAA,EAAM,CAAA;EAAA,SACN,OAAA;EAAA,gBAEO,eAAA;EAAA,gBACA,mBAAA;cAEJ,GAAA,EAAK,GAAA,CAAI,CAAA,GAAI,MAAA,EAAQ,MAAA;EAQ3B,GAAA,CAAI,KAAA,6BAAkC,OAAA,UAAiB,IAAA,SAAU,OAAA;EAAA,QA4C/D,YAAA;EAOR,OAAA,CAAQ,IAAA,mBAAuB,GAAA,YAAgB,OAAA;EAK/C,QAAA,CAAS,IAAA,mBAAuB,GAAA,YAAgB,OAAA;EAKhD,OAAA,CAAQ,IAAA,mBAAuB,GAAA,YAAgB,OAAA;AAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { redis } from "../../../../shared/redis/index.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/task/infrastructure/mq/task-context.ts
|
|
4
|
+
var TaskContext = class TaskContext {
|
|
5
|
+
job;
|
|
6
|
+
logger;
|
|
7
|
+
id;
|
|
8
|
+
data;
|
|
9
|
+
traceId;
|
|
10
|
+
static LOG_MAX_ENTRIES = 150;
|
|
11
|
+
static LOG_TRIM_TO_ENTRIES = 100;
|
|
12
|
+
constructor(job, logger) {
|
|
13
|
+
this.job = job;
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
this.id = job.id;
|
|
16
|
+
this.data = job.data;
|
|
17
|
+
this.traceId = job.data.traceId || job.id;
|
|
18
|
+
}
|
|
19
|
+
async log(level, message, data) {
|
|
20
|
+
const entry = {
|
|
21
|
+
timestamp: Date.now(),
|
|
22
|
+
level,
|
|
23
|
+
message,
|
|
24
|
+
data,
|
|
25
|
+
traceId: this.traceId
|
|
26
|
+
};
|
|
27
|
+
const payload = JSON.stringify(entry);
|
|
28
|
+
const key = `task:${this.id}:logs`;
|
|
29
|
+
await redis.eval(`
|
|
30
|
+
redis.call('RPUSH', KEYS[1], ARGV[1])
|
|
31
|
+
local len = redis.call('LLEN', KEYS[1])
|
|
32
|
+
if len > tonumber(ARGV[2]) then
|
|
33
|
+
redis.call('LTRIM', KEYS[1], -tonumber(ARGV[3]), -1)
|
|
34
|
+
end
|
|
35
|
+
redis.call('EXPIRE', KEYS[1], ARGV[4])
|
|
36
|
+
return len
|
|
37
|
+
`, 1, key, payload, TaskContext.LOG_MAX_ENTRIES, TaskContext.LOG_TRIM_TO_ENTRIES, "14400");
|
|
38
|
+
await redis.publish(`task:${this.id}:events`, JSON.stringify({
|
|
39
|
+
type: "log",
|
|
40
|
+
entry
|
|
41
|
+
}));
|
|
42
|
+
(this.logger[level] || this.logger.info).call(this.logger, `[Task ${this.id}] ${message}`, data);
|
|
43
|
+
}
|
|
44
|
+
parseLogData(data, msg = "") {
|
|
45
|
+
if (typeof data === "string") return {
|
|
46
|
+
message: data,
|
|
47
|
+
extraData: void 0
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
message: msg,
|
|
51
|
+
extraData: data
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
logInfo(data, msg = "") {
|
|
55
|
+
const { message, extraData } = this.parseLogData(data, msg);
|
|
56
|
+
return this.log("info", message, extraData);
|
|
57
|
+
}
|
|
58
|
+
logError(data, msg = "") {
|
|
59
|
+
const { message, extraData } = this.parseLogData(data, msg);
|
|
60
|
+
return this.log("error", message, extraData);
|
|
61
|
+
}
|
|
62
|
+
logWarn(data, msg = "") {
|
|
63
|
+
const { message, extraData } = this.parseLogData(data, msg);
|
|
64
|
+
return this.log("warn", message, extraData);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
export { TaskContext };
|
|
70
|
+
//# sourceMappingURL=task-context.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-context.mjs","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-context.ts"],"sourcesContent":["import type { Job } from 'bullmq'\nimport type { Logger } from 'pino'\nimport { redis } from '@/shared/redis'\n\nexport interface TaskLogEntry {\n timestamp: number\n level: string\n message: string\n data?: any\n traceId: string\n}\n\nexport class TaskContext<T = any> {\n readonly job: Job<T>\n readonly logger: Logger\n readonly id: string\n readonly data: T\n readonly traceId: string\n\n static readonly LOG_MAX_ENTRIES = 150\n static readonly LOG_TRIM_TO_ENTRIES = 100\n\n constructor(job: Job<T>, logger: Logger) {\n this.job = job\n this.logger = logger\n this.id = job.id!\n this.data = job.data\n this.traceId = (job.data as any).traceId || job.id!\n }\n\n async log(level: 'info' | 'error' | 'warn', message: string, data?: any) {\n const entry: TaskLogEntry = {\n timestamp: Date.now(),\n level,\n message,\n data,\n traceId: this.traceId,\n }\n\n const payload = JSON.stringify(entry)\n const key = `task:${this.id}:logs`\n\n // 1. Write to Redis List (buffer) with Lua script for trim strategy\n // Trim strategy: keep max LOG_MAX_ENTRIES entries, trim to LOG_TRIM_TO_ENTRIES when exceeded\n const luaScript = `\n redis.call('RPUSH', KEYS[1], ARGV[1])\n local len = redis.call('LLEN', KEYS[1])\n if len > tonumber(ARGV[2]) then\n redis.call('LTRIM', KEYS[1], -tonumber(ARGV[3]), -1)\n end\n redis.call('EXPIRE', KEYS[1], ARGV[4])\n return len\n `\n await redis.eval(\n luaScript,\n 1,\n key,\n payload,\n TaskContext.LOG_MAX_ENTRIES,\n TaskContext.LOG_TRIM_TO_ENTRIES,\n '14400',\n )\n\n // 2. Publish real-time event for SSE\n await redis.publish(`task:${this.id}:events`, JSON.stringify({\n type: 'log',\n entry,\n }))\n\n // 3. System log\n const logFn = this.logger[level] || this.logger.info\n logFn.call(this.logger, `[Task ${this.id}] ${message}`, data)\n }\n\n private parseLogData(data: string | object, msg: string = '') {\n if (typeof data === 'string') {\n return { message: data, extraData: undefined }\n }\n return { message: msg, extraData: data }\n }\n\n logInfo(data: string | object, msg: string = '') {\n const { message, extraData } = this.parseLogData(data, msg)\n return this.log('info', message, extraData)\n }\n\n logError(data: string | object, msg: string = '') {\n const { message, extraData } = this.parseLogData(data, msg)\n return this.log('error', message, extraData)\n }\n\n logWarn(data: string | object, msg: string = '') {\n const { message, extraData } = this.parseLogData(data, msg)\n return this.log('warn', message, extraData)\n }\n}\n"],"mappings":";;;AAYA,IAAa,cAAb,MAAa,YAAqB;CAChC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,OAAgB,kBAAkB;CAClC,OAAgB,sBAAsB;CAEtC,YAAY,KAAa,QAAgB;AACvC,OAAK,MAAM;AACX,OAAK,SAAS;AACd,OAAK,KAAK,IAAI;AACd,OAAK,OAAO,IAAI;AAChB,OAAK,UAAW,IAAI,KAAa,WAAW,IAAI;;CAGlD,MAAM,IAAI,OAAkC,SAAiB,MAAY;EACvE,MAAM,QAAsB;GAC1B,WAAW,KAAK,KAAK;GACrB;GACA;GACA;GACA,SAAS,KAAK;GACf;EAED,MAAM,UAAU,KAAK,UAAU,MAAM;EACrC,MAAM,MAAM,QAAQ,KAAK,GAAG;AAa5B,QAAM,MAAM,KATM;;;;;;;;OAWhB,GACA,KACA,SACA,YAAY,iBACZ,YAAY,qBACZ,QACD;AAGD,QAAM,MAAM,QAAQ,QAAQ,KAAK,GAAG,UAAU,KAAK,UAAU;GAC3D,MAAM;GACN;GACD,CAAC,CAAC;AAIH,GADc,KAAK,OAAO,UAAU,KAAK,OAAO,MAC1C,KAAK,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,WAAW,KAAK;;CAG/D,AAAQ,aAAa,MAAuB,MAAc,IAAI;AAC5D,MAAI,OAAO,SAAS,SAClB,QAAO;GAAE,SAAS;GAAM,WAAW;GAAW;AAEhD,SAAO;GAAE,SAAS;GAAK,WAAW;GAAM;;CAG1C,QAAQ,MAAuB,MAAc,IAAI;EAC/C,MAAM,EAAE,SAAS,cAAc,KAAK,aAAa,MAAM,IAAI;AAC3D,SAAO,KAAK,IAAI,QAAQ,SAAS,UAAU;;CAG7C,SAAS,MAAuB,MAAc,IAAI;EAChD,MAAM,EAAE,SAAS,cAAc,KAAK,aAAa,MAAM,IAAI;AAC3D,SAAO,KAAK,IAAI,SAAS,SAAS,UAAU;;CAG9C,QAAQ,MAAuB,MAAc,IAAI;EAC/C,MAAM,EAAE,SAAS,cAAc,KAAK,aAAa,MAAM,IAAI;AAC3D,SAAO,KAAK,IAAI,QAAQ,SAAS,UAAU"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Redis } from "ioredis";
|
|
2
|
+
import { Queue } from "bullmq";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/task/infrastructure/mq/task-queue.d.ts
|
|
5
|
+
declare class TaskQueue extends Queue {
|
|
6
|
+
constructor(queueName: string, connection: Redis);
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { TaskQueue };
|
|
10
|
+
//# sourceMappingURL=task-queue.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-queue.d.mts","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-queue.ts"],"mappings":";;;;cAGa,SAAA,SAAkB,KAAA;cACjB,SAAA,UAAmB,UAAA,EAAY,KAAA;AAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Queue } from "bullmq";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/task/infrastructure/mq/task-queue.ts
|
|
4
|
+
var TaskQueue = class extends Queue {
|
|
5
|
+
constructor(queueName, connection) {
|
|
6
|
+
super(queueName, { connection });
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { TaskQueue };
|
|
12
|
+
//# sourceMappingURL=task-queue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-queue.mjs","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-queue.ts"],"sourcesContent":["import { Queue } from 'bullmq'\nimport type { Redis } from 'ioredis'\n\nexport class TaskQueue extends Queue {\n constructor(queueName: string, connection: Redis) {\n super(queueName, {\n connection,\n })\n }\n}\n"],"mappings":";;;AAGA,IAAa,YAAb,cAA+B,MAAM;CACnC,YAAY,WAAmB,YAAmB;AAChD,QAAM,WAAW,EACf,YACD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Redis } from "ioredis";
|
|
2
|
+
import { Job } from "bullmq";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/task/infrastructure/mq/task-worker.d.ts
|
|
5
|
+
type TaskProcessor = (job: Job) => Promise<any>;
|
|
6
|
+
declare class TaskWorker {
|
|
7
|
+
private worker;
|
|
8
|
+
constructor(queueName: string, processor: TaskProcessor, connection?: Redis);
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { TaskProcessor, TaskWorker };
|
|
13
|
+
//# sourceMappingURL=task-worker.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-worker.d.mts","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-worker.ts"],"mappings":";;;;KAOY,aAAA,IAAiB,GAAA,EAAK,GAAA,KAAQ,OAAA;AAAA,cAE7B,UAAA;EAAA,QACH,MAAA;cAGN,SAAA,UACA,SAAA,EAAW,aAAA,EACX,UAAA,GAAY,KAAA;EA6BR,KAAA,CAAA,GAAK,OAAA;AAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { logger } from "../../../../shared/logger.mjs";
|
|
2
|
+
import { createRedisClient } from "../../../../shared/redis/factory.mjs";
|
|
3
|
+
import "../../../../shared/redis/index.mjs";
|
|
4
|
+
import { Worker } from "bullmq";
|
|
5
|
+
|
|
6
|
+
//#region src/modules/task/infrastructure/mq/task-worker.ts
|
|
7
|
+
var TaskWorker = class {
|
|
8
|
+
worker;
|
|
9
|
+
constructor(queueName, processor, connection = createRedisClient()) {
|
|
10
|
+
this.worker = new Worker(queueName, processor, {
|
|
11
|
+
connection,
|
|
12
|
+
concurrency: 5
|
|
13
|
+
});
|
|
14
|
+
this.worker.on("completed", async (job) => {
|
|
15
|
+
if (job.id) await connection.publish(`task:${job.id}:events`, JSON.stringify({
|
|
16
|
+
type: "end",
|
|
17
|
+
status: "completed"
|
|
18
|
+
}));
|
|
19
|
+
});
|
|
20
|
+
this.worker.on("failed", async (job, err) => {
|
|
21
|
+
if (job?.id) await connection.publish(`task:${job.id}:events`, JSON.stringify({
|
|
22
|
+
type: "end",
|
|
23
|
+
status: "failed"
|
|
24
|
+
}));
|
|
25
|
+
logger.error(`[Worker] Job ${job?.id} failed: ${err.message}`);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async close() {
|
|
29
|
+
await this.worker.close();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
export { TaskWorker };
|
|
35
|
+
//# sourceMappingURL=task-worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-worker.mjs","names":[],"sources":["../../../../../src/modules/task/infrastructure/mq/task-worker.ts"],"sourcesContent":["import type { Job } from 'bullmq'\nimport type { Redis } from 'ioredis'\nimport type { ITaskRepository } from '../../task.repo.interface'\nimport { Worker } from 'bullmq'\nimport { logger } from '@/shared/logger'\nimport { createRedisClient } from '@/shared/redis'\n\nexport type TaskProcessor = (job: Job) => Promise<any>\n\nexport class TaskWorker {\n private worker: Worker\n\n constructor(\n queueName: string,\n processor: TaskProcessor,\n connection: Redis = createRedisClient(),\n ) {\n this.worker = new Worker(queueName, processor, {\n connection,\n concurrency: 5, // Default concurrency\n })\n\n this.worker.on('completed', async (job) => {\n if (job.id) {\n // Notify end of stream\n await connection.publish(`task:${job.id}:events`, JSON.stringify({\n type: 'end',\n status: 'completed',\n }))\n }\n })\n\n this.worker.on('failed', async (job, err) => {\n if (job?.id) {\n // Notify end of stream\n await connection.publish(`task:${job.id}:events`, JSON.stringify({\n type: 'end',\n status: 'failed',\n }))\n }\n logger.error(`[Worker] Job ${job?.id} failed: ${err.message}`)\n })\n }\n\n async close() {\n await this.worker.close()\n }\n}\n"],"mappings":";;;;;;AASA,IAAa,aAAb,MAAwB;CACtB,AAAQ;CAER,YACE,WACA,WACA,aAAoB,mBAAmB,EACvC;AACA,OAAK,SAAS,IAAI,OAAO,WAAW,WAAW;GAC7C;GACA,aAAa;GACd,CAAC;AAEF,OAAK,OAAO,GAAG,aAAa,OAAO,QAAQ;AACzC,OAAI,IAAI,GAEN,OAAM,WAAW,QAAQ,QAAQ,IAAI,GAAG,UAAU,KAAK,UAAU;IAC/D,MAAM;IACN,QAAQ;IACT,CAAC,CAAC;IAEL;AAEF,OAAK,OAAO,GAAG,UAAU,OAAO,KAAK,QAAQ;AAC3C,OAAI,KAAK,GAEP,OAAM,WAAW,QAAQ,QAAQ,IAAI,GAAG,UAAU,KAAK,UAAU;IAC/D,MAAM;IACN,QAAQ;IACT,CAAC,CAAC;AAEL,UAAO,MAAM,gBAAgB,KAAK,GAAG,WAAW,IAAI,UAAU;IAC9D;;CAGJ,MAAM,QAAQ;AACZ,QAAM,KAAK,OAAO,OAAO"}
|