@librechat/data-schemas 0.0.43 → 0.0.45
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/admin/capabilities.cjs +192 -0
- package/dist/admin/capabilities.cjs.map +1 -0
- package/dist/admin/capabilities.es.js +182 -0
- package/dist/admin/capabilities.es.js.map +1 -0
- package/dist/app/agents.cjs +24 -0
- package/dist/app/agents.cjs.map +1 -0
- package/dist/app/agents.es.js +22 -0
- package/dist/app/agents.es.js.map +1 -0
- package/dist/app/assistants.cjs +56 -0
- package/dist/app/assistants.cjs.map +1 -0
- package/dist/app/assistants.es.js +53 -0
- package/dist/app/assistants.es.js.map +1 -0
- package/dist/app/azure.cjs +61 -0
- package/dist/app/azure.cjs.map +1 -0
- package/dist/app/azure.es.js +59 -0
- package/dist/app/azure.es.js.map +1 -0
- package/dist/app/endpoints.cjs +63 -0
- package/dist/app/endpoints.cjs.map +1 -0
- package/dist/app/endpoints.es.js +61 -0
- package/dist/app/endpoints.es.js.map +1 -0
- package/dist/app/interface.cjs +53 -0
- package/dist/app/interface.cjs.map +1 -0
- package/dist/app/interface.es.js +51 -0
- package/dist/app/interface.es.js.map +1 -0
- package/dist/app/memory.cjs +29 -0
- package/dist/app/memory.cjs.map +1 -0
- package/dist/app/memory.es.js +26 -0
- package/dist/app/memory.es.js.map +1 -0
- package/dist/app/ocr.cjs +21 -0
- package/dist/app/ocr.cjs.map +1 -0
- package/dist/app/ocr.es.js +19 -0
- package/dist/app/ocr.es.js.map +1 -0
- package/dist/app/resolution.cjs +51 -0
- package/dist/app/resolution.cjs.map +1 -0
- package/dist/app/resolution.es.js +49 -0
- package/dist/app/resolution.es.js.map +1 -0
- package/dist/app/service.cjs +108 -0
- package/dist/app/service.cjs.map +1 -0
- package/dist/app/service.es.js +106 -0
- package/dist/app/service.es.js.map +1 -0
- package/dist/app/specs.cjs +71 -0
- package/dist/app/specs.cjs.map +1 -0
- package/dist/app/specs.es.js +69 -0
- package/dist/app/specs.es.js.map +1 -0
- package/dist/app/turnstile.cjs +40 -0
- package/dist/app/turnstile.cjs.map +1 -0
- package/dist/app/turnstile.es.js +38 -0
- package/dist/app/turnstile.es.js.map +1 -0
- package/dist/app/vertex.cjs +156 -0
- package/dist/app/vertex.cjs.map +1 -0
- package/dist/app/vertex.es.js +152 -0
- package/dist/app/vertex.es.js.map +1 -0
- package/dist/app/web.cjs +87 -0
- package/dist/app/web.cjs.map +1 -0
- package/dist/app/web.es.js +82 -0
- package/dist/app/web.es.js.map +1 -0
- package/dist/common/enum.cjs +19 -0
- package/dist/common/enum.cjs.map +1 -0
- package/dist/common/enum.es.js +19 -0
- package/dist/common/enum.es.js.map +1 -0
- package/dist/config/meiliLogger.cjs +57 -0
- package/dist/config/meiliLogger.cjs.map +1 -0
- package/dist/config/meiliLogger.es.js +55 -0
- package/dist/config/meiliLogger.es.js.map +1 -0
- package/dist/config/parsers.cjs +224 -0
- package/dist/config/parsers.cjs.map +1 -0
- package/dist/config/parsers.es.js +219 -0
- package/dist/config/parsers.es.js.map +1 -0
- package/dist/config/tenantContext.cjs +30 -0
- package/dist/config/tenantContext.cjs.map +1 -0
- package/dist/config/tenantContext.es.js +25 -0
- package/dist/config/tenantContext.es.js.map +1 -0
- package/dist/config/utils.cjs +37 -0
- package/dist/config/utils.cjs.map +1 -0
- package/dist/config/utils.es.js +35 -0
- package/dist/config/utils.es.js.map +1 -0
- package/dist/config/winston.cjs +93 -0
- package/dist/config/winston.cjs.map +1 -0
- package/dist/config/winston.es.js +91 -0
- package/dist/config/winston.es.js.map +1 -0
- package/dist/crypto/index.cjs +156 -0
- package/dist/crypto/index.cjs.map +1 -0
- package/dist/crypto/index.es.js +145 -0
- package/dist/crypto/index.es.js.map +1 -0
- package/dist/index.cjs +142 -11734
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +52 -11652
- package/dist/index.es.js.map +1 -1
- package/dist/methods/accessRole.cjs +210 -0
- package/dist/methods/accessRole.cjs.map +1 -0
- package/dist/methods/accessRole.es.js +208 -0
- package/dist/methods/accessRole.es.js.map +1 -0
- package/dist/methods/aclEntry.cjs +361 -0
- package/dist/methods/aclEntry.cjs.map +1 -0
- package/dist/methods/aclEntry.es.js +359 -0
- package/dist/methods/aclEntry.es.js.map +1 -0
- package/dist/methods/action.cjs +59 -0
- package/dist/methods/action.cjs.map +1 -0
- package/dist/methods/action.es.js +57 -0
- package/dist/methods/action.es.js.map +1 -0
- package/dist/methods/agent.cjs +580 -0
- package/dist/methods/agent.cjs.map +1 -0
- package/dist/methods/agent.es.js +578 -0
- package/dist/methods/agent.es.js.map +1 -0
- package/dist/methods/agentApiKey.cjs +140 -0
- package/dist/methods/agentApiKey.cjs.map +1 -0
- package/dist/methods/agentApiKey.es.js +138 -0
- package/dist/methods/agentApiKey.es.js.map +1 -0
- package/dist/methods/agentCategory.cjs +226 -0
- package/dist/methods/agentCategory.cjs.map +1 -0
- package/dist/methods/agentCategory.es.js +224 -0
- package/dist/methods/agentCategory.es.js.map +1 -0
- package/dist/methods/assistant.cjs +53 -0
- package/dist/methods/assistant.cjs.map +1 -0
- package/dist/methods/assistant.es.js +51 -0
- package/dist/methods/assistant.es.js.map +1 -0
- package/dist/methods/banner.cjs +32 -0
- package/dist/methods/banner.cjs.map +1 -0
- package/dist/methods/banner.es.js +30 -0
- package/dist/methods/banner.es.js.map +1 -0
- package/dist/methods/categories.cjs +33 -0
- package/dist/methods/categories.cjs.map +1 -0
- package/dist/methods/categories.es.js +31 -0
- package/dist/methods/categories.es.js.map +1 -0
- package/dist/methods/config.cjs +106 -0
- package/dist/methods/config.cjs.map +1 -0
- package/dist/methods/config.es.js +104 -0
- package/dist/methods/config.es.js.map +1 -0
- package/dist/methods/conversation.cjs +344 -0
- package/dist/methods/conversation.cjs.map +1 -0
- package/dist/methods/conversation.es.js +342 -0
- package/dist/methods/conversation.es.js.map +1 -0
- package/dist/methods/conversationTag.cjs +234 -0
- package/dist/methods/conversationTag.cjs.map +1 -0
- package/dist/methods/conversationTag.es.js +232 -0
- package/dist/methods/conversationTag.es.js.map +1 -0
- package/dist/methods/file.cjs +315 -0
- package/dist/methods/file.cjs.map +1 -0
- package/dist/methods/file.es.js +313 -0
- package/dist/methods/file.es.js.map +1 -0
- package/dist/methods/index.cjs +135 -0
- package/dist/methods/index.cjs.map +1 -0
- package/dist/methods/index.es.js +130 -0
- package/dist/methods/index.es.js.map +1 -0
- package/dist/methods/key.cjs +136 -0
- package/dist/methods/key.cjs.map +1 -0
- package/dist/methods/key.es.js +134 -0
- package/dist/methods/key.es.js.map +1 -0
- package/dist/methods/mcpServer.cjs +259 -0
- package/dist/methods/mcpServer.cjs.map +1 -0
- package/dist/methods/mcpServer.es.js +257 -0
- package/dist/methods/mcpServer.es.js.map +1 -0
- package/dist/methods/memory.cjs +145 -0
- package/dist/methods/memory.cjs.map +1 -0
- package/dist/methods/memory.es.js +143 -0
- package/dist/methods/memory.es.js.map +1 -0
- package/dist/methods/message.cjs +280 -0
- package/dist/methods/message.cjs.map +1 -0
- package/dist/methods/message.es.js +278 -0
- package/dist/methods/message.es.js.map +1 -0
- package/dist/methods/pluginAuth.cjs +108 -0
- package/dist/methods/pluginAuth.cjs.map +1 -0
- package/dist/methods/pluginAuth.es.js +106 -0
- package/dist/methods/pluginAuth.es.js.map +1 -0
- package/dist/methods/preset.cjs +105 -0
- package/dist/methods/preset.cjs.map +1 -0
- package/dist/methods/preset.es.js +103 -0
- package/dist/methods/preset.es.js.map +1 -0
- package/dist/methods/prompt.cjs +546 -0
- package/dist/methods/prompt.cjs.map +1 -0
- package/dist/methods/prompt.es.js +544 -0
- package/dist/methods/prompt.es.js.map +1 -0
- package/dist/methods/role.cjs +290 -0
- package/dist/methods/role.cjs.map +1 -0
- package/dist/methods/role.es.js +288 -0
- package/dist/methods/role.es.js.map +1 -0
- package/dist/methods/session.cjs +221 -0
- package/dist/methods/session.cjs.map +1 -0
- package/dist/methods/session.es.js +217 -0
- package/dist/methods/session.es.js.map +1 -0
- package/dist/methods/share.cjs +474 -0
- package/dist/methods/share.cjs.map +1 -0
- package/dist/methods/share.es.js +472 -0
- package/dist/methods/share.es.js.map +1 -0
- package/dist/methods/spendTokens.cjs +109 -0
- package/dist/methods/spendTokens.cjs.map +1 -0
- package/dist/methods/spendTokens.es.js +107 -0
- package/dist/methods/spendTokens.es.js.map +1 -0
- package/dist/methods/systemGrant.cjs +190 -0
- package/dist/methods/systemGrant.cjs.map +1 -0
- package/dist/methods/systemGrant.es.js +188 -0
- package/dist/methods/systemGrant.es.js.map +1 -0
- package/dist/methods/token.cjs +117 -0
- package/dist/methods/token.cjs.map +1 -0
- package/dist/methods/token.es.js +115 -0
- package/dist/methods/token.es.js.map +1 -0
- package/dist/methods/toolCall.cjs +91 -0
- package/dist/methods/toolCall.cjs.map +1 -0
- package/dist/methods/toolCall.es.js +89 -0
- package/dist/methods/toolCall.es.js.map +1 -0
- package/dist/methods/transaction.cjs +305 -0
- package/dist/methods/transaction.cjs.map +1 -0
- package/dist/methods/transaction.es.js +303 -0
- package/dist/methods/transaction.es.js.map +1 -0
- package/dist/methods/tx.cjs +443 -0
- package/dist/methods/tx.cjs.map +1 -0
- package/dist/methods/tx.es.js +437 -0
- package/dist/methods/tx.es.js.map +1 -0
- package/dist/methods/user.cjs +269 -0
- package/dist/methods/user.cjs.map +1 -0
- package/dist/methods/user.es.js +266 -0
- package/dist/methods/user.es.js.map +1 -0
- package/dist/methods/userGroup.cjs +518 -0
- package/dist/methods/userGroup.cjs.map +1 -0
- package/dist/methods/userGroup.es.js +516 -0
- package/dist/methods/userGroup.es.js.map +1 -0
- package/dist/migrations/tenantIndexes.cjs +85 -0
- package/dist/migrations/tenantIndexes.cjs.map +1 -0
- package/dist/migrations/tenantIndexes.es.js +82 -0
- package/dist/migrations/tenantIndexes.es.js.map +1 -0
- package/dist/models/accessRole.cjs +12 -0
- package/dist/models/accessRole.cjs.map +1 -0
- package/dist/models/accessRole.es.js +10 -0
- package/dist/models/accessRole.es.js.map +1 -0
- package/dist/models/aclEntry.cjs +12 -0
- package/dist/models/aclEntry.cjs.map +1 -0
- package/dist/models/aclEntry.es.js +10 -0
- package/dist/models/aclEntry.es.js.map +1 -0
- package/dist/models/action.cjs +12 -0
- package/dist/models/action.cjs.map +1 -0
- package/dist/models/action.es.js +10 -0
- package/dist/models/action.es.js.map +1 -0
- package/dist/models/agent.cjs +12 -0
- package/dist/models/agent.cjs.map +1 -0
- package/dist/models/agent.es.js +10 -0
- package/dist/models/agent.es.js.map +1 -0
- package/dist/models/agentApiKey.cjs +12 -0
- package/dist/models/agentApiKey.cjs.map +1 -0
- package/dist/models/agentApiKey.es.js +10 -0
- package/dist/models/agentApiKey.es.js.map +1 -0
- package/dist/models/agentCategory.cjs +13 -0
- package/dist/models/agentCategory.cjs.map +1 -0
- package/dist/models/agentCategory.es.js +11 -0
- package/dist/models/agentCategory.es.js.map +1 -0
- package/dist/models/assistant.cjs +12 -0
- package/dist/models/assistant.cjs.map +1 -0
- package/dist/models/assistant.es.js +10 -0
- package/dist/models/assistant.es.js.map +1 -0
- package/dist/models/balance.cjs +12 -0
- package/dist/models/balance.cjs.map +1 -0
- package/dist/models/balance.es.js +10 -0
- package/dist/models/balance.es.js.map +1 -0
- package/dist/models/banner.cjs +12 -0
- package/dist/models/banner.cjs.map +1 -0
- package/dist/models/banner.es.js +10 -0
- package/dist/models/banner.es.js.map +1 -0
- package/dist/models/config.cjs +12 -0
- package/dist/models/config.cjs.map +1 -0
- package/dist/models/config.es.js +10 -0
- package/dist/models/config.es.js.map +1 -0
- package/dist/models/conversationTag.cjs +13 -0
- package/dist/models/conversationTag.cjs.map +1 -0
- package/dist/models/conversationTag.es.js +11 -0
- package/dist/models/conversationTag.es.js.map +1 -0
- package/dist/models/convo.cjs +23 -0
- package/dist/models/convo.cjs.map +1 -0
- package/dist/models/convo.es.js +21 -0
- package/dist/models/convo.es.js.map +1 -0
- package/dist/models/file.cjs +12 -0
- package/dist/models/file.cjs.map +1 -0
- package/dist/models/file.es.js +10 -0
- package/dist/models/file.es.js.map +1 -0
- package/dist/models/group.cjs +12 -0
- package/dist/models/group.cjs.map +1 -0
- package/dist/models/group.es.js +10 -0
- package/dist/models/group.es.js.map +1 -0
- package/dist/models/index.cjs +73 -0
- package/dist/models/index.cjs.map +1 -0
- package/dist/models/index.es.js +71 -0
- package/dist/models/index.es.js.map +1 -0
- package/dist/models/key.cjs +12 -0
- package/dist/models/key.cjs.map +1 -0
- package/dist/models/key.es.js +10 -0
- package/dist/models/key.es.js.map +1 -0
- package/dist/models/mcpServer.cjs +12 -0
- package/dist/models/mcpServer.cjs.map +1 -0
- package/dist/models/mcpServer.es.js +10 -0
- package/dist/models/mcpServer.es.js.map +1 -0
- package/dist/models/memory.cjs +12 -0
- package/dist/models/memory.cjs.map +1 -0
- package/dist/models/memory.es.js +10 -0
- package/dist/models/memory.es.js.map +1 -0
- package/dist/models/message.cjs +22 -0
- package/dist/models/message.cjs.map +1 -0
- package/dist/models/message.es.js +20 -0
- package/dist/models/message.es.js.map +1 -0
- package/dist/models/pluginAuth.cjs +12 -0
- package/dist/models/pluginAuth.cjs.map +1 -0
- package/dist/models/pluginAuth.es.js +10 -0
- package/dist/models/pluginAuth.es.js.map +1 -0
- package/dist/models/plugins/mongoMeili.cjs +547 -0
- package/dist/models/plugins/mongoMeili.cjs.map +1 -0
- package/dist/models/plugins/mongoMeili.es.js +545 -0
- package/dist/models/plugins/mongoMeili.es.js.map +1 -0
- package/dist/models/plugins/tenantIsolation.cjs +140 -0
- package/dist/models/plugins/tenantIsolation.cjs.map +1 -0
- package/dist/models/plugins/tenantIsolation.es.js +138 -0
- package/dist/models/plugins/tenantIsolation.es.js.map +1 -0
- package/dist/models/preset.cjs +12 -0
- package/dist/models/preset.cjs.map +1 -0
- package/dist/models/preset.es.js +10 -0
- package/dist/models/preset.es.js.map +1 -0
- package/dist/models/prompt.cjs +12 -0
- package/dist/models/prompt.cjs.map +1 -0
- package/dist/models/prompt.es.js +10 -0
- package/dist/models/prompt.es.js.map +1 -0
- package/dist/models/promptGroup.cjs +13 -0
- package/dist/models/promptGroup.cjs.map +1 -0
- package/dist/models/promptGroup.es.js +11 -0
- package/dist/models/promptGroup.es.js.map +1 -0
- package/dist/models/role.cjs +12 -0
- package/dist/models/role.cjs.map +1 -0
- package/dist/models/role.es.js +10 -0
- package/dist/models/role.es.js.map +1 -0
- package/dist/models/session.cjs +12 -0
- package/dist/models/session.cjs.map +1 -0
- package/dist/models/session.es.js +10 -0
- package/dist/models/session.es.js.map +1 -0
- package/dist/models/sharedLink.cjs +12 -0
- package/dist/models/sharedLink.cjs.map +1 -0
- package/dist/models/sharedLink.es.js +10 -0
- package/dist/models/sharedLink.es.js.map +1 -0
- package/dist/models/systemGrant.cjs +16 -0
- package/dist/models/systemGrant.cjs.map +1 -0
- package/dist/models/systemGrant.es.js +14 -0
- package/dist/models/systemGrant.es.js.map +1 -0
- package/dist/models/token.cjs +12 -0
- package/dist/models/token.cjs.map +1 -0
- package/dist/models/token.es.js +10 -0
- package/dist/models/token.es.js.map +1 -0
- package/dist/models/toolCall.cjs +12 -0
- package/dist/models/toolCall.cjs.map +1 -0
- package/dist/models/toolCall.es.js +10 -0
- package/dist/models/toolCall.es.js.map +1 -0
- package/dist/models/transaction.cjs +12 -0
- package/dist/models/transaction.cjs.map +1 -0
- package/dist/models/transaction.es.js +10 -0
- package/dist/models/transaction.es.js.map +1 -0
- package/dist/models/user.cjs +12 -0
- package/dist/models/user.cjs.map +1 -0
- package/dist/models/user.es.js +10 -0
- package/dist/models/user.es.js.map +1 -0
- package/dist/schema/accessRole.cjs +34 -0
- package/dist/schema/accessRole.cjs.map +1 -0
- package/dist/schema/accessRole.es.js +32 -0
- package/dist/schema/accessRole.es.js.map +1 -0
- package/dist/schema/aclEntry.cjs +74 -0
- package/dist/schema/aclEntry.cjs.map +1 -0
- package/dist/schema/aclEntry.es.js +72 -0
- package/dist/schema/aclEntry.es.js.map +1 -0
- package/dist/schema/action.cjs +54 -0
- package/dist/schema/action.cjs.map +1 -0
- package/dist/schema/action.es.js +52 -0
- package/dist/schema/action.es.js.map +1 -0
- package/dist/schema/agent.cjs +128 -0
- package/dist/schema/agent.cjs.map +1 -0
- package/dist/schema/agent.es.js +126 -0
- package/dist/schema/agent.es.js.map +1 -0
- package/dist/schema/agentApiKey.cjs +50 -0
- package/dist/schema/agentApiKey.cjs.map +1 -0
- package/dist/schema/agentApiKey.es.js +48 -0
- package/dist/schema/agentApiKey.es.js.map +1 -0
- package/dist/schema/agentCategory.cjs +49 -0
- package/dist/schema/agentCategory.cjs.map +1 -0
- package/dist/schema/agentCategory.es.js +47 -0
- package/dist/schema/agentCategory.es.js.map +1 -0
- package/dist/schema/assistant.cjs +42 -0
- package/dist/schema/assistant.cjs.map +1 -0
- package/dist/schema/assistant.es.js +40 -0
- package/dist/schema/assistant.es.js.map +1 -0
- package/dist/schema/balance.cjs +47 -0
- package/dist/schema/balance.cjs.map +1 -0
- package/dist/schema/balance.es.js +45 -0
- package/dist/schema/balance.es.js.map +1 -0
- package/dist/schema/banner.cjs +42 -0
- package/dist/schema/banner.cjs.map +1 -0
- package/dist/schema/banner.es.js +40 -0
- package/dist/schema/banner.es.js.map +1 -0
- package/dist/schema/categories.cjs +23 -0
- package/dist/schema/categories.cjs.map +1 -0
- package/dist/schema/categories.es.js +21 -0
- package/dist/schema/categories.es.js.map +1 -0
- package/dist/schema/config.cjs +59 -0
- package/dist/schema/config.cjs.map +1 -0
- package/dist/schema/config.es.js +57 -0
- package/dist/schema/config.es.js.map +1 -0
- package/dist/schema/conversationTag.cjs +36 -0
- package/dist/schema/conversationTag.cjs.map +1 -0
- package/dist/schema/conversationTag.es.js +34 -0
- package/dist/schema/conversationTag.es.js.map +1 -0
- package/dist/schema/convo.cjs +52 -0
- package/dist/schema/convo.cjs.map +1 -0
- package/dist/schema/convo.es.js +50 -0
- package/dist/schema/convo.es.js.map +1 -0
- package/dist/schema/defaults.cjs +168 -0
- package/dist/schema/defaults.cjs.map +1 -0
- package/dist/schema/defaults.es.js +166 -0
- package/dist/schema/defaults.es.js.map +1 -0
- package/dist/schema/file.cjs +92 -0
- package/dist/schema/file.cjs.map +1 -0
- package/dist/schema/file.es.js +90 -0
- package/dist/schema/file.es.js.map +1 -0
- package/dist/schema/group.cjs +56 -0
- package/dist/schema/group.cjs.map +1 -0
- package/dist/schema/group.es.js +54 -0
- package/dist/schema/group.es.js.map +1 -0
- package/dist/schema/key.cjs +30 -0
- package/dist/schema/key.cjs.map +1 -0
- package/dist/schema/key.es.js +28 -0
- package/dist/schema/key.es.js.map +1 -0
- package/dist/schema/mcpServer.cjs +33 -0
- package/dist/schema/mcpServer.cjs.map +1 -0
- package/dist/schema/mcpServer.es.js +31 -0
- package/dist/schema/mcpServer.es.js.map +1 -0
- package/dist/schema/memory.cjs +39 -0
- package/dist/schema/memory.cjs.map +1 -0
- package/dist/schema/memory.es.js +37 -0
- package/dist/schema/memory.es.js.map +1 -0
- package/dist/schema/message.cjs +167 -0
- package/dist/schema/message.cjs.map +1 -0
- package/dist/schema/message.es.js +165 -0
- package/dist/schema/message.es.js.map +1 -0
- package/dist/schema/pluginAuth.cjs +28 -0
- package/dist/schema/pluginAuth.cjs.map +1 -0
- package/dist/schema/pluginAuth.es.js +26 -0
- package/dist/schema/pluginAuth.es.js.map +1 -0
- package/dist/schema/preset.cjs +36 -0
- package/dist/schema/preset.cjs.map +1 -0
- package/dist/schema/preset.es.js +34 -0
- package/dist/schema/preset.es.js.map +1 -0
- package/dist/schema/prompt.cjs +36 -0
- package/dist/schema/prompt.cjs.map +1 -0
- package/dist/schema/prompt.es.js +34 -0
- package/dist/schema/prompt.es.js.map +1 -0
- package/dist/schema/promptGroup.cjs +65 -0
- package/dist/schema/promptGroup.cjs.map +1 -0
- package/dist/schema/promptGroup.es.js +63 -0
- package/dist/schema/promptGroup.es.js.map +1 -0
- package/dist/schema/role.cjs +84 -0
- package/dist/schema/role.cjs.map +1 -0
- package/dist/schema/role.es.js +82 -0
- package/dist/schema/role.es.js.map +1 -0
- package/dist/schema/session.cjs +27 -0
- package/dist/schema/session.cjs.map +1 -0
- package/dist/schema/session.es.js +25 -0
- package/dist/schema/session.es.js.map +1 -0
- package/dist/schema/share.cjs +40 -0
- package/dist/schema/share.cjs.map +1 -0
- package/dist/schema/share.es.js +38 -0
- package/dist/schema/share.es.js.map +1 -0
- package/dist/schema/systemGrant.cjs +66 -0
- package/dist/schema/systemGrant.cjs.map +1 -0
- package/dist/schema/systemGrant.es.js +64 -0
- package/dist/schema/systemGrant.es.js.map +1 -0
- package/dist/schema/token.cjs +45 -0
- package/dist/schema/token.cjs.map +1 -0
- package/dist/schema/token.es.js +43 -0
- package/dist/schema/token.es.js.map +1 -0
- package/dist/schema/toolCall.cjs +44 -0
- package/dist/schema/toolCall.cjs.map +1 -0
- package/dist/schema/toolCall.es.js +42 -0
- package/dist/schema/toolCall.es.js.map +1 -0
- package/dist/schema/transaction.cjs +48 -0
- package/dist/schema/transaction.cjs.map +1 -0
- package/dist/schema/transaction.es.js +46 -0
- package/dist/schema/transaction.es.js.map +1 -0
- package/dist/schema/user.cjs +165 -0
- package/dist/schema/user.cjs.map +1 -0
- package/dist/schema/user.es.js +163 -0
- package/dist/schema/user.es.js.map +1 -0
- package/dist/types/methods/config.d.ts +1 -0
- package/dist/utils/object-traverse.cjs +158 -0
- package/dist/utils/object-traverse.cjs.map +1 -0
- package/dist/utils/object-traverse.es.js +156 -0
- package/dist/utils/object-traverse.es.js.map +1 -0
- package/dist/utils/principal.cjs +24 -0
- package/dist/utils/principal.cjs.map +1 -0
- package/dist/utils/principal.es.js +22 -0
- package/dist/utils/principal.es.js.map +1 -0
- package/dist/utils/string.cjs +11 -0
- package/dist/utils/string.cjs.map +1 -0
- package/dist/utils/string.es.js +9 -0
- package/dist/utils/string.es.js.map +1 -0
- package/dist/utils/tempChatRetention.cjs +70 -0
- package/dist/utils/tempChatRetention.cjs.map +1 -0
- package/dist/utils/tempChatRetention.es.js +64 -0
- package/dist/utils/tempChatRetention.es.js.map +1 -0
- package/dist/utils/transactions.cjs +60 -0
- package/dist/utils/transactions.cjs.map +1 -0
- package/dist/utils/transactions.es.js +56 -0
- package/dist/utils/transactions.es.js.map +1 -0
- package/package.json +7 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('../crypto/index.cjs');
|
|
4
|
+
|
|
5
|
+
/** Default JWT session expiry: 15 minutes in milliseconds */
|
|
6
|
+
const DEFAULT_SESSION_EXPIRY = 1000 * 60 * 15;
|
|
7
|
+
/** Factory function that takes mongoose instance and returns the methods */
|
|
8
|
+
function createUserMethods(mongoose) {
|
|
9
|
+
/**
|
|
10
|
+
* Normalizes email fields in search criteria to lowercase and trimmed.
|
|
11
|
+
* Handles both direct email fields and $or arrays containing email conditions.
|
|
12
|
+
*/
|
|
13
|
+
function normalizeEmailInCriteria(criteria) {
|
|
14
|
+
const normalized = { ...criteria };
|
|
15
|
+
if (typeof normalized.email === 'string') {
|
|
16
|
+
normalized.email = normalized.email.trim().toLowerCase();
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(normalized.$or)) {
|
|
19
|
+
normalized.$or = normalized.$or.map((condition) => {
|
|
20
|
+
if (typeof condition.email === 'string') {
|
|
21
|
+
return { ...condition, email: condition.email.trim().toLowerCase() };
|
|
22
|
+
}
|
|
23
|
+
return condition;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return normalized;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Search for a single user based on partial data and return matching user document as plain object.
|
|
30
|
+
* Email fields in searchCriteria are automatically normalized to lowercase for case-insensitive matching.
|
|
31
|
+
*/
|
|
32
|
+
async function findUser(searchCriteria, fieldsToSelect) {
|
|
33
|
+
const User = mongoose.models.User;
|
|
34
|
+
const normalizedCriteria = normalizeEmailInCriteria(searchCriteria);
|
|
35
|
+
const query = User.findOne(normalizedCriteria);
|
|
36
|
+
if (fieldsToSelect) {
|
|
37
|
+
query.select(fieldsToSelect);
|
|
38
|
+
}
|
|
39
|
+
return (await query.lean());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Count the number of user documents in the collection based on the provided filter.
|
|
43
|
+
*/
|
|
44
|
+
async function countUsers(filter = {}) {
|
|
45
|
+
const User = mongoose.models.User;
|
|
46
|
+
return await User.countDocuments(filter);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new user, optionally with a TTL of 1 week.
|
|
50
|
+
*/
|
|
51
|
+
async function createUser(data, balanceConfig, disableTTL = true, returnUser = false) {
|
|
52
|
+
const User = mongoose.models.User;
|
|
53
|
+
const Balance = mongoose.models.Balance;
|
|
54
|
+
const userData = {
|
|
55
|
+
...data,
|
|
56
|
+
expiresAt: disableTTL ? undefined : new Date(Date.now() + 604800 * 1000), // 1 week in milliseconds
|
|
57
|
+
};
|
|
58
|
+
if (disableTTL) {
|
|
59
|
+
delete userData.expiresAt;
|
|
60
|
+
}
|
|
61
|
+
const user = await User.create(userData);
|
|
62
|
+
// If balance is enabled, create or update a balance record for the user
|
|
63
|
+
if ((balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.enabled) && (balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.startBalance)) {
|
|
64
|
+
const update = {
|
|
65
|
+
$inc: { tokenCredits: balanceConfig.startBalance },
|
|
66
|
+
};
|
|
67
|
+
if (balanceConfig.autoRefillEnabled &&
|
|
68
|
+
balanceConfig.refillIntervalValue != null &&
|
|
69
|
+
balanceConfig.refillIntervalUnit != null &&
|
|
70
|
+
balanceConfig.refillAmount != null) {
|
|
71
|
+
update.$set = {
|
|
72
|
+
autoRefillEnabled: true,
|
|
73
|
+
refillIntervalValue: balanceConfig.refillIntervalValue,
|
|
74
|
+
refillIntervalUnit: balanceConfig.refillIntervalUnit,
|
|
75
|
+
refillAmount: balanceConfig.refillAmount,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
await Balance.findOneAndUpdate({ user: user._id }, update, {
|
|
79
|
+
upsert: true,
|
|
80
|
+
new: true,
|
|
81
|
+
}).lean();
|
|
82
|
+
}
|
|
83
|
+
if (returnUser) {
|
|
84
|
+
return user.toObject();
|
|
85
|
+
}
|
|
86
|
+
return user._id;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Update a user with new data without overwriting existing properties.
|
|
90
|
+
*/
|
|
91
|
+
async function updateUser(userId, updateData) {
|
|
92
|
+
const User = mongoose.models.User;
|
|
93
|
+
const updateOperation = {
|
|
94
|
+
$set: updateData,
|
|
95
|
+
$unset: { expiresAt: '' }, // Remove the expiresAt field to prevent TTL
|
|
96
|
+
};
|
|
97
|
+
return (await User.findByIdAndUpdate(userId, updateOperation, {
|
|
98
|
+
new: true,
|
|
99
|
+
runValidators: true,
|
|
100
|
+
}).lean());
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Retrieve a user by ID and convert the found user document to a plain object.
|
|
104
|
+
*/
|
|
105
|
+
async function getUserById(userId, fieldsToSelect) {
|
|
106
|
+
const User = mongoose.models.User;
|
|
107
|
+
const query = User.findById(userId);
|
|
108
|
+
if (fieldsToSelect) {
|
|
109
|
+
query.select(fieldsToSelect);
|
|
110
|
+
}
|
|
111
|
+
return (await query.lean());
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Delete a user by their unique ID.
|
|
115
|
+
*/
|
|
116
|
+
async function deleteUserById(userId) {
|
|
117
|
+
try {
|
|
118
|
+
const User = mongoose.models.User;
|
|
119
|
+
const result = await User.deleteOne({ _id: userId });
|
|
120
|
+
if (result.deletedCount === 0) {
|
|
121
|
+
return { deletedCount: 0, message: 'No user found with that ID.' };
|
|
122
|
+
}
|
|
123
|
+
return { deletedCount: result.deletedCount, message: 'User was deleted successfully.' };
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
127
|
+
throw new Error('Error deleting user: ' + errorMessage);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Generates a JWT token for a given user.
|
|
132
|
+
* @param user - The user object
|
|
133
|
+
* @param expiresIn - Optional expiry time in milliseconds. Default: 15 minutes
|
|
134
|
+
*/
|
|
135
|
+
async function generateToken(user, expiresIn) {
|
|
136
|
+
if (!user) {
|
|
137
|
+
throw new Error('No user provided');
|
|
138
|
+
}
|
|
139
|
+
const expires = expiresIn !== null && expiresIn !== void 0 ? expiresIn : DEFAULT_SESSION_EXPIRY;
|
|
140
|
+
return await index.signPayload({
|
|
141
|
+
payload: {
|
|
142
|
+
id: user._id,
|
|
143
|
+
username: user.username,
|
|
144
|
+
provider: user.provider,
|
|
145
|
+
email: user.email,
|
|
146
|
+
},
|
|
147
|
+
secret: process.env.JWT_SECRET,
|
|
148
|
+
expirationTime: expires / 1000,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Update a user's personalization memories setting.
|
|
153
|
+
* Handles the edge case where the personalization object doesn't exist.
|
|
154
|
+
*/
|
|
155
|
+
async function toggleUserMemories(userId, memoriesEnabled) {
|
|
156
|
+
const User = mongoose.models.User;
|
|
157
|
+
// First, ensure the personalization object exists
|
|
158
|
+
const user = await User.findById(userId);
|
|
159
|
+
if (!user) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
// Use $set to update the nested field, which will create the personalization object if it doesn't exist
|
|
163
|
+
const updateOperation = {
|
|
164
|
+
$set: {
|
|
165
|
+
'personalization.memories': memoriesEnabled,
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
return (await User.findByIdAndUpdate(userId, updateOperation, {
|
|
169
|
+
new: true,
|
|
170
|
+
runValidators: true,
|
|
171
|
+
}).lean());
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Search for users by pattern matching on name, email, or username (case-insensitive)
|
|
175
|
+
* @param searchPattern - The pattern to search for
|
|
176
|
+
* @param limit - Maximum number of results to return
|
|
177
|
+
* @param fieldsToSelect - The fields to include or exclude in the returned documents
|
|
178
|
+
* @returns Array of matching user documents
|
|
179
|
+
*/
|
|
180
|
+
const searchUsers = async function ({ searchPattern, limit = 20, fieldsToSelect = null, }) {
|
|
181
|
+
if (!searchPattern || searchPattern.trim().length === 0) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
const regex = new RegExp(searchPattern.trim(), 'i');
|
|
185
|
+
const User = mongoose.models.User;
|
|
186
|
+
const query = User.find({
|
|
187
|
+
$or: [{ email: regex }, { name: regex }, { username: regex }],
|
|
188
|
+
}).limit(limit * 2); // Get more results to allow for relevance sorting
|
|
189
|
+
if (fieldsToSelect) {
|
|
190
|
+
query.select(fieldsToSelect);
|
|
191
|
+
}
|
|
192
|
+
const users = await query.lean();
|
|
193
|
+
// Score results by relevance
|
|
194
|
+
const exactRegex = new RegExp(`^${searchPattern.trim()}$`, 'i');
|
|
195
|
+
const startsWithPattern = searchPattern.trim().toLowerCase();
|
|
196
|
+
const scoredUsers = users.map((user) => {
|
|
197
|
+
const searchableFields = [user.name, user.email, user.username].filter(Boolean);
|
|
198
|
+
let maxScore = 0;
|
|
199
|
+
for (const field of searchableFields) {
|
|
200
|
+
const fieldLower = field.toLowerCase();
|
|
201
|
+
let score = 0;
|
|
202
|
+
// Exact match gets highest score
|
|
203
|
+
if (exactRegex.test(field)) {
|
|
204
|
+
score = 100;
|
|
205
|
+
}
|
|
206
|
+
// Starts with query gets high score
|
|
207
|
+
else if (fieldLower.startsWith(startsWithPattern)) {
|
|
208
|
+
score = 80;
|
|
209
|
+
}
|
|
210
|
+
// Contains query gets medium score
|
|
211
|
+
else if (fieldLower.includes(startsWithPattern)) {
|
|
212
|
+
score = 50;
|
|
213
|
+
}
|
|
214
|
+
// Default score for regex match
|
|
215
|
+
else {
|
|
216
|
+
score = 10;
|
|
217
|
+
}
|
|
218
|
+
maxScore = Math.max(maxScore, score);
|
|
219
|
+
}
|
|
220
|
+
return { ...user, _searchScore: maxScore };
|
|
221
|
+
});
|
|
222
|
+
/** Top results sorted by relevance */
|
|
223
|
+
return scoredUsers
|
|
224
|
+
.sort((a, b) => b._searchScore - a._searchScore)
|
|
225
|
+
.slice(0, limit)
|
|
226
|
+
.map((user) => {
|
|
227
|
+
// Remove the search score from final results
|
|
228
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
229
|
+
const { _searchScore, ...userWithoutScore } = user;
|
|
230
|
+
return userWithoutScore;
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Updates the plugins for a user based on the action specified (install/uninstall).
|
|
235
|
+
* @param userId - The user ID whose plugins are to be updated
|
|
236
|
+
* @param plugins - The current plugins array
|
|
237
|
+
* @param pluginKey - The key of the plugin to install or uninstall
|
|
238
|
+
* @param action - The action to perform, 'install' or 'uninstall'
|
|
239
|
+
* @returns The result of the update operation or null if action is invalid
|
|
240
|
+
*/
|
|
241
|
+
async function updateUserPlugins(userId, plugins, pluginKey, action) {
|
|
242
|
+
const userPlugins = plugins !== null && plugins !== void 0 ? plugins : [];
|
|
243
|
+
if (action === 'install') {
|
|
244
|
+
return updateUser(userId, { plugins: [...userPlugins, pluginKey] });
|
|
245
|
+
}
|
|
246
|
+
if (action === 'uninstall') {
|
|
247
|
+
return updateUser(userId, {
|
|
248
|
+
plugins: userPlugins.filter((plugin) => plugin !== pluginKey),
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
findUser,
|
|
255
|
+
countUsers,
|
|
256
|
+
createUser,
|
|
257
|
+
updateUser,
|
|
258
|
+
searchUsers,
|
|
259
|
+
getUserById,
|
|
260
|
+
generateToken,
|
|
261
|
+
deleteUserById,
|
|
262
|
+
updateUserPlugins,
|
|
263
|
+
toggleUserMemories,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
exports.DEFAULT_SESSION_EXPIRY = DEFAULT_SESSION_EXPIRY;
|
|
268
|
+
exports.createUserMethods = createUserMethods;
|
|
269
|
+
//# sourceMappingURL=user.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.cjs","sources":["../../src/methods/user.ts"],"sourcesContent":[null],"names":["signPayload"],"mappings":"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"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { signPayload } from '../crypto/index.es.js';
|
|
2
|
+
|
|
3
|
+
/** Default JWT session expiry: 15 minutes in milliseconds */
|
|
4
|
+
const DEFAULT_SESSION_EXPIRY = 1000 * 60 * 15;
|
|
5
|
+
/** Factory function that takes mongoose instance and returns the methods */
|
|
6
|
+
function createUserMethods(mongoose) {
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes email fields in search criteria to lowercase and trimmed.
|
|
9
|
+
* Handles both direct email fields and $or arrays containing email conditions.
|
|
10
|
+
*/
|
|
11
|
+
function normalizeEmailInCriteria(criteria) {
|
|
12
|
+
const normalized = { ...criteria };
|
|
13
|
+
if (typeof normalized.email === 'string') {
|
|
14
|
+
normalized.email = normalized.email.trim().toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(normalized.$or)) {
|
|
17
|
+
normalized.$or = normalized.$or.map((condition) => {
|
|
18
|
+
if (typeof condition.email === 'string') {
|
|
19
|
+
return { ...condition, email: condition.email.trim().toLowerCase() };
|
|
20
|
+
}
|
|
21
|
+
return condition;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return normalized;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Search for a single user based on partial data and return matching user document as plain object.
|
|
28
|
+
* Email fields in searchCriteria are automatically normalized to lowercase for case-insensitive matching.
|
|
29
|
+
*/
|
|
30
|
+
async function findUser(searchCriteria, fieldsToSelect) {
|
|
31
|
+
const User = mongoose.models.User;
|
|
32
|
+
const normalizedCriteria = normalizeEmailInCriteria(searchCriteria);
|
|
33
|
+
const query = User.findOne(normalizedCriteria);
|
|
34
|
+
if (fieldsToSelect) {
|
|
35
|
+
query.select(fieldsToSelect);
|
|
36
|
+
}
|
|
37
|
+
return (await query.lean());
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Count the number of user documents in the collection based on the provided filter.
|
|
41
|
+
*/
|
|
42
|
+
async function countUsers(filter = {}) {
|
|
43
|
+
const User = mongoose.models.User;
|
|
44
|
+
return await User.countDocuments(filter);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a new user, optionally with a TTL of 1 week.
|
|
48
|
+
*/
|
|
49
|
+
async function createUser(data, balanceConfig, disableTTL = true, returnUser = false) {
|
|
50
|
+
const User = mongoose.models.User;
|
|
51
|
+
const Balance = mongoose.models.Balance;
|
|
52
|
+
const userData = {
|
|
53
|
+
...data,
|
|
54
|
+
expiresAt: disableTTL ? undefined : new Date(Date.now() + 604800 * 1000), // 1 week in milliseconds
|
|
55
|
+
};
|
|
56
|
+
if (disableTTL) {
|
|
57
|
+
delete userData.expiresAt;
|
|
58
|
+
}
|
|
59
|
+
const user = await User.create(userData);
|
|
60
|
+
// If balance is enabled, create or update a balance record for the user
|
|
61
|
+
if ((balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.enabled) && (balanceConfig === null || balanceConfig === void 0 ? void 0 : balanceConfig.startBalance)) {
|
|
62
|
+
const update = {
|
|
63
|
+
$inc: { tokenCredits: balanceConfig.startBalance },
|
|
64
|
+
};
|
|
65
|
+
if (balanceConfig.autoRefillEnabled &&
|
|
66
|
+
balanceConfig.refillIntervalValue != null &&
|
|
67
|
+
balanceConfig.refillIntervalUnit != null &&
|
|
68
|
+
balanceConfig.refillAmount != null) {
|
|
69
|
+
update.$set = {
|
|
70
|
+
autoRefillEnabled: true,
|
|
71
|
+
refillIntervalValue: balanceConfig.refillIntervalValue,
|
|
72
|
+
refillIntervalUnit: balanceConfig.refillIntervalUnit,
|
|
73
|
+
refillAmount: balanceConfig.refillAmount,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
await Balance.findOneAndUpdate({ user: user._id }, update, {
|
|
77
|
+
upsert: true,
|
|
78
|
+
new: true,
|
|
79
|
+
}).lean();
|
|
80
|
+
}
|
|
81
|
+
if (returnUser) {
|
|
82
|
+
return user.toObject();
|
|
83
|
+
}
|
|
84
|
+
return user._id;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update a user with new data without overwriting existing properties.
|
|
88
|
+
*/
|
|
89
|
+
async function updateUser(userId, updateData) {
|
|
90
|
+
const User = mongoose.models.User;
|
|
91
|
+
const updateOperation = {
|
|
92
|
+
$set: updateData,
|
|
93
|
+
$unset: { expiresAt: '' }, // Remove the expiresAt field to prevent TTL
|
|
94
|
+
};
|
|
95
|
+
return (await User.findByIdAndUpdate(userId, updateOperation, {
|
|
96
|
+
new: true,
|
|
97
|
+
runValidators: true,
|
|
98
|
+
}).lean());
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Retrieve a user by ID and convert the found user document to a plain object.
|
|
102
|
+
*/
|
|
103
|
+
async function getUserById(userId, fieldsToSelect) {
|
|
104
|
+
const User = mongoose.models.User;
|
|
105
|
+
const query = User.findById(userId);
|
|
106
|
+
if (fieldsToSelect) {
|
|
107
|
+
query.select(fieldsToSelect);
|
|
108
|
+
}
|
|
109
|
+
return (await query.lean());
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Delete a user by their unique ID.
|
|
113
|
+
*/
|
|
114
|
+
async function deleteUserById(userId) {
|
|
115
|
+
try {
|
|
116
|
+
const User = mongoose.models.User;
|
|
117
|
+
const result = await User.deleteOne({ _id: userId });
|
|
118
|
+
if (result.deletedCount === 0) {
|
|
119
|
+
return { deletedCount: 0, message: 'No user found with that ID.' };
|
|
120
|
+
}
|
|
121
|
+
return { deletedCount: result.deletedCount, message: 'User was deleted successfully.' };
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
125
|
+
throw new Error('Error deleting user: ' + errorMessage);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Generates a JWT token for a given user.
|
|
130
|
+
* @param user - The user object
|
|
131
|
+
* @param expiresIn - Optional expiry time in milliseconds. Default: 15 minutes
|
|
132
|
+
*/
|
|
133
|
+
async function generateToken(user, expiresIn) {
|
|
134
|
+
if (!user) {
|
|
135
|
+
throw new Error('No user provided');
|
|
136
|
+
}
|
|
137
|
+
const expires = expiresIn !== null && expiresIn !== void 0 ? expiresIn : DEFAULT_SESSION_EXPIRY;
|
|
138
|
+
return await signPayload({
|
|
139
|
+
payload: {
|
|
140
|
+
id: user._id,
|
|
141
|
+
username: user.username,
|
|
142
|
+
provider: user.provider,
|
|
143
|
+
email: user.email,
|
|
144
|
+
},
|
|
145
|
+
secret: process.env.JWT_SECRET,
|
|
146
|
+
expirationTime: expires / 1000,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Update a user's personalization memories setting.
|
|
151
|
+
* Handles the edge case where the personalization object doesn't exist.
|
|
152
|
+
*/
|
|
153
|
+
async function toggleUserMemories(userId, memoriesEnabled) {
|
|
154
|
+
const User = mongoose.models.User;
|
|
155
|
+
// First, ensure the personalization object exists
|
|
156
|
+
const user = await User.findById(userId);
|
|
157
|
+
if (!user) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
// Use $set to update the nested field, which will create the personalization object if it doesn't exist
|
|
161
|
+
const updateOperation = {
|
|
162
|
+
$set: {
|
|
163
|
+
'personalization.memories': memoriesEnabled,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
return (await User.findByIdAndUpdate(userId, updateOperation, {
|
|
167
|
+
new: true,
|
|
168
|
+
runValidators: true,
|
|
169
|
+
}).lean());
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Search for users by pattern matching on name, email, or username (case-insensitive)
|
|
173
|
+
* @param searchPattern - The pattern to search for
|
|
174
|
+
* @param limit - Maximum number of results to return
|
|
175
|
+
* @param fieldsToSelect - The fields to include or exclude in the returned documents
|
|
176
|
+
* @returns Array of matching user documents
|
|
177
|
+
*/
|
|
178
|
+
const searchUsers = async function ({ searchPattern, limit = 20, fieldsToSelect = null, }) {
|
|
179
|
+
if (!searchPattern || searchPattern.trim().length === 0) {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
const regex = new RegExp(searchPattern.trim(), 'i');
|
|
183
|
+
const User = mongoose.models.User;
|
|
184
|
+
const query = User.find({
|
|
185
|
+
$or: [{ email: regex }, { name: regex }, { username: regex }],
|
|
186
|
+
}).limit(limit * 2); // Get more results to allow for relevance sorting
|
|
187
|
+
if (fieldsToSelect) {
|
|
188
|
+
query.select(fieldsToSelect);
|
|
189
|
+
}
|
|
190
|
+
const users = await query.lean();
|
|
191
|
+
// Score results by relevance
|
|
192
|
+
const exactRegex = new RegExp(`^${searchPattern.trim()}$`, 'i');
|
|
193
|
+
const startsWithPattern = searchPattern.trim().toLowerCase();
|
|
194
|
+
const scoredUsers = users.map((user) => {
|
|
195
|
+
const searchableFields = [user.name, user.email, user.username].filter(Boolean);
|
|
196
|
+
let maxScore = 0;
|
|
197
|
+
for (const field of searchableFields) {
|
|
198
|
+
const fieldLower = field.toLowerCase();
|
|
199
|
+
let score = 0;
|
|
200
|
+
// Exact match gets highest score
|
|
201
|
+
if (exactRegex.test(field)) {
|
|
202
|
+
score = 100;
|
|
203
|
+
}
|
|
204
|
+
// Starts with query gets high score
|
|
205
|
+
else if (fieldLower.startsWith(startsWithPattern)) {
|
|
206
|
+
score = 80;
|
|
207
|
+
}
|
|
208
|
+
// Contains query gets medium score
|
|
209
|
+
else if (fieldLower.includes(startsWithPattern)) {
|
|
210
|
+
score = 50;
|
|
211
|
+
}
|
|
212
|
+
// Default score for regex match
|
|
213
|
+
else {
|
|
214
|
+
score = 10;
|
|
215
|
+
}
|
|
216
|
+
maxScore = Math.max(maxScore, score);
|
|
217
|
+
}
|
|
218
|
+
return { ...user, _searchScore: maxScore };
|
|
219
|
+
});
|
|
220
|
+
/** Top results sorted by relevance */
|
|
221
|
+
return scoredUsers
|
|
222
|
+
.sort((a, b) => b._searchScore - a._searchScore)
|
|
223
|
+
.slice(0, limit)
|
|
224
|
+
.map((user) => {
|
|
225
|
+
// Remove the search score from final results
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
227
|
+
const { _searchScore, ...userWithoutScore } = user;
|
|
228
|
+
return userWithoutScore;
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Updates the plugins for a user based on the action specified (install/uninstall).
|
|
233
|
+
* @param userId - The user ID whose plugins are to be updated
|
|
234
|
+
* @param plugins - The current plugins array
|
|
235
|
+
* @param pluginKey - The key of the plugin to install or uninstall
|
|
236
|
+
* @param action - The action to perform, 'install' or 'uninstall'
|
|
237
|
+
* @returns The result of the update operation or null if action is invalid
|
|
238
|
+
*/
|
|
239
|
+
async function updateUserPlugins(userId, plugins, pluginKey, action) {
|
|
240
|
+
const userPlugins = plugins !== null && plugins !== void 0 ? plugins : [];
|
|
241
|
+
if (action === 'install') {
|
|
242
|
+
return updateUser(userId, { plugins: [...userPlugins, pluginKey] });
|
|
243
|
+
}
|
|
244
|
+
if (action === 'uninstall') {
|
|
245
|
+
return updateUser(userId, {
|
|
246
|
+
plugins: userPlugins.filter((plugin) => plugin !== pluginKey),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
findUser,
|
|
253
|
+
countUsers,
|
|
254
|
+
createUser,
|
|
255
|
+
updateUser,
|
|
256
|
+
searchUsers,
|
|
257
|
+
getUserById,
|
|
258
|
+
generateToken,
|
|
259
|
+
deleteUserById,
|
|
260
|
+
updateUserPlugins,
|
|
261
|
+
toggleUserMemories,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export { DEFAULT_SESSION_EXPIRY, createUserMethods };
|
|
266
|
+
//# sourceMappingURL=user.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.es.js","sources":["../../src/methods/user.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|