@intlayer/backend 7.5.2-canary.0 → 7.5.3

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.
Files changed (35) hide show
  1. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  2. package/dist/esm/utils/AI/translateJSON/index.mjs.map +1 -1
  3. package/dist/types/controllers/ai.controller.d.ts +2 -2
  4. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  5. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  6. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  7. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
  8. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -1
  9. package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
  10. package/dist/types/emails/ResetUserPassword.d.ts +4 -4
  11. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
  12. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
  13. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
  14. package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
  15. package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
  16. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
  17. package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
  18. package/dist/types/emails/Welcome.d.ts +4 -4
  19. package/dist/types/models/discussion.model.d.ts +2 -2
  20. package/dist/types/models/oAuth2.model.d.ts +3 -3
  21. package/dist/types/schemas/dictionary.schema.d.ts +6 -6
  22. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
  23. package/dist/types/schemas/discussion.schema.d.ts +6 -6
  24. package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
  25. package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
  26. package/dist/types/schemas/plans.schema.d.ts +6 -6
  27. package/dist/types/schemas/project.schema.d.ts +6 -6
  28. package/dist/types/schemas/session.schema.d.ts +6 -6
  29. package/dist/types/schemas/tag.schema.d.ts +6 -6
  30. package/dist/types/schemas/user.schema.d.ts +6 -6
  31. package/dist/types/utils/AI/translateJSON/index.d.ts +4 -4
  32. package/dist/types/utils/AI/translateJSON/index.d.ts.map +1 -1
  33. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +2 -2
  34. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +2 -2
  35. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"ai.controller.mjs","names":["aiConfig: AIConfig","customQueryUtil.aiDefaultOptions","customQueryUtil.customQuery","translateJSONUtil.aiDefaultOptions","tags: Tag[]","translateJSONUtil.translateJSON","auditContentDeclarationUtil.aiDefaultOptions","auditContentDeclarationUtil.auditDictionary","auditContentDeclarationFieldUtil.aiDefaultOptions","auditContentDeclarationFieldUtil.auditDictionaryField","auditContentDeclarationMetadataUtil.aiDefaultOptions","tagService.findTags","auditContentDeclarationMetadataUtil.auditDictionaryMetadata","auditTagUtil.aiDefaultOptions","dictionaries: Dictionary[]","auditTagUtil.auditTag","autocompleteUtil.aiDefaultOptions","autocompleteUtil.autocomplete","numberOfMessagesById: Record<string, number>"],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":["import {\n type AIConfig,\n type AIOptions,\n type ChatCompletionRequestMessage,\n getAIConfig,\n} from '@intlayer/ai';\nimport type { KeyPath, Locale } from '@intlayer/types';\nimport type { ResponseWithSession } from '@middlewares/sessionAuth.middleware';\nimport { getDictionariesByTags } from '@services/dictionary.service';\nimport * as tagService from '@services/tag.service';\nimport { getTagsByKeys } from '@services/tag.service';\nimport * as askDocQuestionUtil from '@utils/AI/askDocQuestion/askDocQuestion';\nimport * as auditContentDeclarationUtil from '@utils/AI/auditDictionary';\nimport * as auditContentDeclarationFieldUtil from '@utils/AI/auditDictionaryField';\nimport * as auditContentDeclarationMetadataUtil from '@utils/AI/auditDictionaryMetadata';\nimport * as auditTagUtil from '@utils/AI/auditTag';\nimport * as autocompleteUtil from '@utils/AI/autocomplete';\nimport * as customQueryUtil from '@utils/AI/customQuery';\nimport * as translateJSONUtil from '@utils/AI/translateJSON';\nimport { type AppError, ErrorHandler } from '@utils/errors';\nimport {\n type DiscussionFiltersParams,\n getDiscussionFiltersAndPagination,\n} from '@utils/filtersAndPagination/getDiscussionFiltersAndPagination';\nimport {\n formatPaginatedResponse,\n formatResponse,\n type PaginatedResponse,\n type ResponseData,\n} from '@utils/responseData';\nimport type { NextFunction, Request } from 'express';\nimport { DiscussionModel } from '@/models/discussion.model';\nimport type { Dictionary } from '@/types/dictionary.types';\nimport type { DiscussionAPI } from '@/types/discussion.types';\nimport type { Tag, TagAPI } from '@/types/tag.types';\n\ntype ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {\n aiOptions?: AIOptions;\n};\n\nexport type CustomQueryBody =\n ReplaceAIConfigByOptions<customQueryUtil.CustomQueryOptions> & {\n tagsKeys?: string[];\n applicationContext?: string;\n };\nexport type CustomQueryResult =\n ResponseData<customQueryUtil.CustomQueryResultData>;\n\nexport const customQuery = async (\n req: Request<CustomQueryBody>,\n res: ResponseWithSession<CustomQueryResult>,\n _next: NextFunction\n): Promise<void> => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out tagsKeys\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: customQueryUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const auditResponse = await customQueryUtil.customQuery({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'QUERY_FAILED');\n return;\n }\n\n const responseData = formatResponse<customQueryUtil.CustomQueryResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type TranslateJSONBody = Omit<\n ReplaceAIConfigByOptions<translateJSONUtil.TranslateJSONOptions>,\n 'tags'\n> & {\n tagsKeys?: string[];\n};\nexport type TranslateJSONResult =\n ResponseData<translateJSONUtil.TranslateJSONResultData>;\n\nexport const translateJSON = async (\n req: Request<TranslateJSONBody>,\n res: ResponseWithSession<TranslateJSONResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: translateJSONUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId && tagsKeys) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await translateJSONUtil.translateJSON({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<translateJSONUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n defaultLocale: Locale;\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n};\nexport type AuditContentDeclarationResult =\n ResponseData<auditContentDeclarationUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclaration = async (\n req: Request<AuditContentDeclarationBody>,\n res: ResponseWithSession<AuditContentDeclarationResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, filePath, aiOptions, locales, defaultLocale, tagsKeys } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await auditContentDeclarationUtil.auditDictionary({\n fileContent,\n filePath,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n defaultLocale,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationFieldBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n keyPath: KeyPath[];\n};\nexport type AuditContentDeclarationFieldResult =\n ResponseData<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationField = async (\n req: Request<AuditContentDeclarationFieldBody>,\n res: ResponseWithSession<AuditContentDeclarationFieldResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, aiOptions, locales, tagsKeys, keyPath } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationFieldUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse =\n await auditContentDeclarationFieldUtil.auditDictionaryField({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n tags,\n keyPath,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>(\n {\n data: auditResponse,\n }\n );\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationMetadataBody = {\n aiOptions?: AIOptions;\n fileContent: string;\n};\n\nexport type AuditContentDeclarationMetadataResult =\n ResponseData<auditContentDeclarationMetadataUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationMetadata = async (\n req: Request<AuditContentDeclarationMetadataBody>,\n res: ResponseWithSession<AuditContentDeclarationMetadataResult>,\n _next: NextFunction\n): Promise<void> => {\n const { organization } = res.locals;\n const { fileContent, aiOptions } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationMetadataUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const tags: Tag[] = await tagService.findTags(\n {\n organizationId: organization?.id,\n },\n 0,\n 1000\n );\n\n const auditResponse =\n await auditContentDeclarationMetadataUtil.auditDictionaryMetadata({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationMetadataUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditTagBody = {\n aiOptions?: AIOptions;\n tag: TagAPI;\n};\nexport type AuditTagResult = ResponseData<auditTagUtil.TranslateJSONResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditTag = async (\n req: Request<undefined, undefined, AuditTagBody>,\n res: ResponseWithSession<AuditTagResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tag } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditTagUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let dictionaries: Dictionary[] = [];\n if (project?.organizationId) {\n dictionaries = await getDictionariesByTags([tag.key], project.id);\n }\n\n const auditResponse = await auditTagUtil.auditTag({\n aiConfig,\n dictionaries,\n tag,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData = formatResponse<auditTagUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AskDocQuestionBody = {\n messages: ChatCompletionRequestMessage[];\n discussionId: string;\n};\nexport type AskDocQuestionResult =\n ResponseData<askDocQuestionUtil.AskDocQuestionResult>;\n\nexport const askDocQuestion = async (\n req: Request<undefined, undefined, AskDocQuestionBody>,\n res: ResponseWithSession<AskDocQuestionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { messages = [], discussionId } = req.body;\n const { user, project, organization } = res.locals;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: {},\n accessType: ['public'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n // 1. Prepare SSE headers and flush them NOW\n res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n res.setHeader('Connection', 'keep-alive');\n res.setHeader('X-Accel-Buffering', 'no'); // disable nginx buffering\n res.flushHeaders?.();\n res.write(': connected\\n\\n'); // initial comment keeps some browsers happy\n res.flush?.();\n\n // 2. Kick off the upstream stream WITHOUT awaiting it\n askDocQuestionUtil\n .askDocQuestion(messages, aiConfig, {\n onMessage: (chunk) => {\n res.write(`data: ${JSON.stringify({ chunk })}\\n\\n`);\n res.flush?.();\n },\n })\n .then(async (fullResponse) => {\n const lastUserMessageContent = messages.findLast(\n (message) => message.role === 'user'\n )?.content;\n const lastUserMessageNbWords = lastUserMessageContent\n ? lastUserMessageContent.split(' ').length\n : 0;\n if (lastUserMessageNbWords > 2) {\n // If the last user message is less than 3 words, don't persist the discussion\n // Example: \"Hello\", \"Hi\", \"Hey\", \"test\", etc.\n\n // 3. Persist discussion while the client already has all chunks\n await DiscussionModel.findOneAndUpdate(\n { discussionId },\n {\n $set: {\n discussionId,\n userId: user?.id,\n projectId: project?.id,\n organizationId: organization?.id,\n messages: [\n ...messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n timestamp: msg.timestamp,\n })),\n {\n role: 'assistant',\n content: fullResponse.response,\n relatedFiles: fullResponse.relatedFiles,\n timestamp: new Date(),\n },\n ],\n },\n },\n { upsert: true, new: true }\n );\n }\n\n // 4. Tell the client we're done and close the stream\n res.write(\n `data: ${JSON.stringify({ done: true, response: fullResponse })}\\n\\n`\n );\n res.end();\n })\n .catch((err) => {\n // propagate error as an SSE event so the client knows why it closed\n res.write(\n `event: error\\ndata: ${JSON.stringify({ message: err.message })}\\n\\n`\n );\n res.end();\n });\n};\n\nexport type AutocompleteBody = {\n text: string;\n aiOptions?: AIOptions;\n contextBefore?: string;\n currentLine?: string;\n contextAfter?: string;\n};\n\nexport type AutocompleteResponse = ResponseData<{\n autocompletion: string;\n}>;\n\nexport const autocomplete = async (\n req: Request<AutocompleteBody>,\n res: ResponseWithSession<AutocompleteResponse>,\n _next: NextFunction\n): Promise<void> => {\n try {\n const { text, aiOptions, contextBefore, currentLine, contextAfter } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: autocompleteUtil.aiDefaultOptions,\n accessType: ['public'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n const response = (await autocompleteUtil.autocomplete({\n text,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n contextBefore,\n currentLine,\n contextAfter,\n })) ?? {\n autocompletion: '',\n tokenUsed: 0,\n };\n\n const responseData =\n formatResponse<autocompleteUtil.AutocompleteFileResultData>({\n data: response,\n });\n\n res.json(responseData);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GetDiscussionsParams =\n | ({\n page?: string | number;\n pageSize?: string | number;\n includeMessages?: 'true' | 'false';\n } & DiscussionFiltersParams)\n | undefined;\n\nexport type GetDiscussionsResult = PaginatedResponse<DiscussionAPI>;\n\n/**\n * Retrieves a list of discussions with filters and pagination.\n * Only the owner or admins can access. By default, users only see their own.\n */\nexport const getDiscussions = async (\n req: Request<GetDiscussionsParams>,\n res: ResponseWithSession<GetDiscussionsResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user, roles } = res.locals;\n const { filters, sortOptions, pageSize, skip, page, getNumberOfPages } =\n getDiscussionFiltersAndPagination(req, res);\n const includeMessagesParam = (req.query as any)?.includeMessages as\n | 'true'\n | 'false'\n | undefined;\n const includeMessages = includeMessagesParam !== 'false';\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n try {\n const projection = includeMessages ? {} : { messages: 0 };\n const discussions = await DiscussionModel.find(filters, projection)\n .sort(sortOptions)\n .skip(skip)\n .limit(pageSize)\n .lean();\n\n // Compute number of messages for each discussion\n const numberOfMessagesById: Record<string, number> = {};\n if (!includeMessages && discussions.length > 0) {\n const ids = discussions.map((d: any) => d._id);\n const counts = await DiscussionModel.aggregate([\n { $match: { _id: { $in: ids } } },\n {\n $project: {\n numberOfMessages: { $size: { $ifNull: ['$messages', []] } },\n },\n },\n ]);\n for (const c of counts as any[]) {\n numberOfMessagesById[String(c._id)] = c.numberOfMessages ?? 0;\n }\n }\n\n // Permission: allow admin, or the owner for all returned entries\n const allOwnedByUser = discussions.every(\n (d) => String(d.userId) === String(user.id)\n );\n const isAllowed = roles.includes('admin') || allOwnedByUser;\n\n if (!isAllowed) {\n ErrorHandler.handleGenericErrorResponse(res, 'PERMISSION_DENIED');\n return;\n }\n\n const totalItems = await DiscussionModel.countDocuments(filters);\n\n const responseData = formatPaginatedResponse({\n data: discussions.map((d: any) => ({\n ...d,\n id: String(d._id ?? d.id),\n numberOfMessages: includeMessages\n ? Array.isArray(d.messages)\n ? d.messages.length\n : 0\n : (numberOfMessagesById[String(d._id ?? d.id)] ?? 0),\n })),\n page,\n pageSize,\n totalPages: getNumberOfPages(totalItems),\n totalItems,\n });\n\n res.json(responseData as any);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ai.controller.mjs","names":["aiConfig: AIConfig","customQueryUtil.aiDefaultOptions","customQueryUtil.customQuery","translateJSONUtil.aiDefaultOptions","tags: Tag[]","translateJSONUtil.translateJSON","auditContentDeclarationUtil.aiDefaultOptions","auditContentDeclarationUtil.auditDictionary","auditContentDeclarationFieldUtil.aiDefaultOptions","auditContentDeclarationFieldUtil.auditDictionaryField","auditContentDeclarationMetadataUtil.aiDefaultOptions","tagService.findTags","auditContentDeclarationMetadataUtil.auditDictionaryMetadata","auditTagUtil.aiDefaultOptions","dictionaries: Dictionary[]","auditTagUtil.auditTag","autocompleteUtil.aiDefaultOptions","autocompleteUtil.autocomplete","numberOfMessagesById: Record<string, number>"],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":["import {\n type AIConfig,\n type AIOptions,\n type ChatCompletionRequestMessage,\n getAIConfig,\n} from '@intlayer/ai';\nimport type { KeyPath, Locale } from '@intlayer/types';\nimport type { ResponseWithSession } from '@middlewares/sessionAuth.middleware';\nimport { getDictionariesByTags } from '@services/dictionary.service';\nimport * as tagService from '@services/tag.service';\nimport { getTagsByKeys } from '@services/tag.service';\nimport * as askDocQuestionUtil from '@utils/AI/askDocQuestion/askDocQuestion';\nimport * as auditContentDeclarationUtil from '@utils/AI/auditDictionary';\nimport * as auditContentDeclarationFieldUtil from '@utils/AI/auditDictionaryField';\nimport * as auditContentDeclarationMetadataUtil from '@utils/AI/auditDictionaryMetadata';\nimport * as auditTagUtil from '@utils/AI/auditTag';\nimport * as autocompleteUtil from '@utils/AI/autocomplete';\nimport * as customQueryUtil from '@utils/AI/customQuery';\nimport * as translateJSONUtil from '@utils/AI/translateJSON';\nimport { type AppError, ErrorHandler } from '@utils/errors';\nimport {\n type DiscussionFiltersParams,\n getDiscussionFiltersAndPagination,\n} from '@utils/filtersAndPagination/getDiscussionFiltersAndPagination';\nimport {\n formatPaginatedResponse,\n formatResponse,\n type PaginatedResponse,\n type ResponseData,\n} from '@utils/responseData';\nimport type { NextFunction, Request } from 'express';\nimport { DiscussionModel } from '@/models/discussion.model';\nimport type { Dictionary } from '@/types/dictionary.types';\nimport type { DiscussionAPI } from '@/types/discussion.types';\nimport type { Tag, TagAPI } from '@/types/tag.types';\n\ntype ReplaceAIConfigByOptions<T> = Omit<T, 'aiConfig'> & {\n aiOptions?: AIOptions;\n};\n\nexport type CustomQueryBody =\n ReplaceAIConfigByOptions<customQueryUtil.CustomQueryOptions> & {\n tagsKeys?: string[];\n applicationContext?: string;\n };\nexport type CustomQueryResult =\n ResponseData<customQueryUtil.CustomQueryResultData>;\n\nexport const customQuery = async (\n req: Request<CustomQueryBody>,\n res: ResponseWithSession<CustomQueryResult>,\n _next: NextFunction\n): Promise<void> => {\n // biome-ignore lint/correctness/noUnusedVariables: Just filter out tagsKeys\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: customQueryUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const auditResponse = await customQueryUtil.customQuery({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'QUERY_FAILED');\n return;\n }\n\n const responseData = formatResponse<customQueryUtil.CustomQueryResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type TranslateJSONBody = Omit<\n ReplaceAIConfigByOptions<translateJSONUtil.TranslateJSONOptions<JSON>>,\n 'tags'\n> & {\n tagsKeys?: string[];\n};\nexport type TranslateJSONResult = ResponseData<\n translateJSONUtil.TranslateJSONResultData<JSON>\n>;\n\nexport const translateJSON = async (\n req: Request<TranslateJSONBody>,\n res: ResponseWithSession<TranslateJSONResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tagsKeys, ...rest } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: translateJSONUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId && tagsKeys) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await translateJSONUtil.translateJSON<any>({\n ...rest,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData = formatResponse<\n translateJSONUtil.TranslateJSONResultData<any>\n >({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n defaultLocale: Locale;\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n};\nexport type AuditContentDeclarationResult =\n ResponseData<auditContentDeclarationUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclaration = async (\n req: Request<AuditContentDeclarationBody>,\n res: ResponseWithSession<AuditContentDeclarationResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, filePath, aiOptions, locales, defaultLocale, tagsKeys } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse = await auditContentDeclarationUtil.auditDictionary({\n fileContent,\n filePath,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n defaultLocale,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationFieldBody = {\n aiOptions?: AIOptions;\n locales: Locale[];\n fileContent: string;\n filePath?: string;\n tagsKeys?: string[];\n keyPath: KeyPath[];\n};\nexport type AuditContentDeclarationFieldResult =\n ResponseData<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationField = async (\n req: Request<AuditContentDeclarationFieldBody>,\n res: ResponseWithSession<AuditContentDeclarationFieldResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { fileContent, aiOptions, locales, tagsKeys, keyPath } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationFieldUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let tags: Tag[] = [];\n\n if (project?.organizationId) {\n tags = await getTagsByKeys(tagsKeys, project.organizationId);\n }\n\n const auditResponse =\n await auditContentDeclarationFieldUtil.auditDictionaryField({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n locales,\n tags,\n keyPath,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationFieldUtil.AuditDictionaryFieldResultData>(\n {\n data: auditResponse,\n }\n );\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditContentDeclarationMetadataBody = {\n aiOptions?: AIOptions;\n fileContent: string;\n};\n\nexport type AuditContentDeclarationMetadataResult =\n ResponseData<auditContentDeclarationMetadataUtil.AuditFileResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditContentDeclarationMetadata = async (\n req: Request<AuditContentDeclarationMetadataBody>,\n res: ResponseWithSession<AuditContentDeclarationMetadataResult>,\n _next: NextFunction\n): Promise<void> => {\n const { organization } = res.locals;\n const { fileContent, aiOptions } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditContentDeclarationMetadataUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n const tags: Tag[] = await tagService.findTags(\n {\n organizationId: organization?.id,\n },\n 0,\n 1000\n );\n\n const auditResponse =\n await auditContentDeclarationMetadataUtil.auditDictionaryMetadata({\n fileContent,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n tags,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData =\n formatResponse<auditContentDeclarationMetadataUtil.AuditFileResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AuditTagBody = {\n aiOptions?: AIOptions;\n tag: TagAPI;\n};\nexport type AuditTagResult = ResponseData<auditTagUtil.TranslateJSONResultData>;\n\n/**\n * Retrieves a list of dictionaries based on filters and pagination.\n */\nexport const auditTag = async (\n req: Request<undefined, undefined, AuditTagBody>,\n res: ResponseWithSession<AuditTagResult>,\n _next: NextFunction\n): Promise<void> => {\n const { project } = res.locals;\n const { aiOptions, tag } = req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: auditTagUtil.aiDefaultOptions,\n accessType: ['registered_user', 'apiKey'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n try {\n let dictionaries: Dictionary[] = [];\n if (project?.organizationId) {\n dictionaries = await getDictionariesByTags([tag.key], project.id);\n }\n\n const auditResponse = await auditTagUtil.auditTag({\n aiConfig,\n dictionaries,\n tag,\n applicationContext: aiOptions?.applicationContext,\n });\n\n if (!auditResponse) {\n ErrorHandler.handleGenericErrorResponse(res, 'AUDIT_FAILED');\n return;\n }\n\n const responseData = formatResponse<auditTagUtil.TranslateJSONResultData>({\n data: auditResponse,\n });\n\n res.json(responseData);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type AskDocQuestionBody = {\n messages: ChatCompletionRequestMessage[];\n discussionId: string;\n};\nexport type AskDocQuestionResult =\n ResponseData<askDocQuestionUtil.AskDocQuestionResult>;\n\nexport const askDocQuestion = async (\n req: Request<undefined, undefined, AskDocQuestionBody>,\n res: ResponseWithSession<AskDocQuestionResult>,\n _next: NextFunction\n): Promise<void> => {\n const { messages = [], discussionId } = req.body;\n const { user, project, organization } = res.locals;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: {},\n accessType: ['public'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n // 1. Prepare SSE headers and flush them NOW\n res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n res.setHeader('Connection', 'keep-alive');\n res.setHeader('X-Accel-Buffering', 'no'); // disable nginx buffering\n res.flushHeaders?.();\n res.write(': connected\\n\\n'); // initial comment keeps some browsers happy\n res.flush?.();\n\n // 2. Kick off the upstream stream WITHOUT awaiting it\n askDocQuestionUtil\n .askDocQuestion(messages, aiConfig, {\n onMessage: (chunk) => {\n res.write(`data: ${JSON.stringify({ chunk })}\\n\\n`);\n res.flush?.();\n },\n })\n .then(async (fullResponse) => {\n const lastUserMessageContent = messages.findLast(\n (message) => message.role === 'user'\n )?.content;\n const lastUserMessageNbWords = lastUserMessageContent\n ? lastUserMessageContent.split(' ').length\n : 0;\n if (lastUserMessageNbWords > 2) {\n // If the last user message is less than 3 words, don't persist the discussion\n // Example: \"Hello\", \"Hi\", \"Hey\", \"test\", etc.\n\n // 3. Persist discussion while the client already has all chunks\n await DiscussionModel.findOneAndUpdate(\n { discussionId },\n {\n $set: {\n discussionId,\n userId: user?.id,\n projectId: project?.id,\n organizationId: organization?.id,\n messages: [\n ...messages.map((msg) => ({\n role: msg.role,\n content: msg.content,\n timestamp: msg.timestamp,\n })),\n {\n role: 'assistant',\n content: fullResponse.response,\n relatedFiles: fullResponse.relatedFiles,\n timestamp: new Date(),\n },\n ],\n },\n },\n { upsert: true, new: true }\n );\n }\n\n // 4. Tell the client we're done and close the stream\n res.write(\n `data: ${JSON.stringify({ done: true, response: fullResponse })}\\n\\n`\n );\n res.end();\n })\n .catch((err) => {\n // propagate error as an SSE event so the client knows why it closed\n res.write(\n `event: error\\ndata: ${JSON.stringify({ message: err.message })}\\n\\n`\n );\n res.end();\n });\n};\n\nexport type AutocompleteBody = {\n text: string;\n aiOptions?: AIOptions;\n contextBefore?: string;\n currentLine?: string;\n contextAfter?: string;\n};\n\nexport type AutocompleteResponse = ResponseData<{\n autocompletion: string;\n}>;\n\nexport const autocomplete = async (\n req: Request<AutocompleteBody>,\n res: ResponseWithSession<AutocompleteResponse>,\n _next: NextFunction\n): Promise<void> => {\n try {\n const { text, aiOptions, contextBefore, currentLine, contextAfter } =\n req.body;\n\n let aiConfig: AIConfig;\n try {\n aiConfig = await getAIConfig(\n {\n userOptions: aiOptions,\n defaultOptions: autocompleteUtil.aiDefaultOptions,\n accessType: ['public'],\n },\n !!res.locals.user\n );\n } catch (_error) {\n ErrorHandler.handleGenericErrorResponse(res, 'AI_ACCESS_DENIED');\n return;\n }\n\n const response = (await autocompleteUtil.autocomplete({\n text,\n aiConfig,\n applicationContext: aiOptions?.applicationContext,\n contextBefore,\n currentLine,\n contextAfter,\n })) ?? {\n autocompletion: '',\n tokenUsed: 0,\n };\n\n const responseData =\n formatResponse<autocompleteUtil.AutocompleteFileResultData>({\n data: response,\n });\n\n res.json(responseData);\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n\nexport type GetDiscussionsParams =\n | ({\n page?: string | number;\n pageSize?: string | number;\n includeMessages?: 'true' | 'false';\n } & DiscussionFiltersParams)\n | undefined;\n\nexport type GetDiscussionsResult = PaginatedResponse<DiscussionAPI>;\n\n/**\n * Retrieves a list of discussions with filters and pagination.\n * Only the owner or admins can access. By default, users only see their own.\n */\nexport const getDiscussions = async (\n req: Request<GetDiscussionsParams>,\n res: ResponseWithSession<GetDiscussionsResult>,\n _next: NextFunction\n): Promise<void> => {\n const { user, roles } = res.locals;\n const { filters, sortOptions, pageSize, skip, page, getNumberOfPages } =\n getDiscussionFiltersAndPagination(req, res);\n const includeMessagesParam = (req.query as any)?.includeMessages as\n | 'true'\n | 'false'\n | undefined;\n const includeMessages = includeMessagesParam !== 'false';\n\n if (!user) {\n ErrorHandler.handleGenericErrorResponse(res, 'USER_NOT_DEFINED');\n return;\n }\n\n try {\n const projection = includeMessages ? {} : { messages: 0 };\n const discussions = await DiscussionModel.find(filters, projection)\n .sort(sortOptions)\n .skip(skip)\n .limit(pageSize)\n .lean();\n\n // Compute number of messages for each discussion\n const numberOfMessagesById: Record<string, number> = {};\n if (!includeMessages && discussions.length > 0) {\n const ids = discussions.map((d: any) => d._id);\n const counts = await DiscussionModel.aggregate([\n { $match: { _id: { $in: ids } } },\n {\n $project: {\n numberOfMessages: { $size: { $ifNull: ['$messages', []] } },\n },\n },\n ]);\n for (const c of counts as any[]) {\n numberOfMessagesById[String(c._id)] = c.numberOfMessages ?? 0;\n }\n }\n\n // Permission: allow admin, or the owner for all returned entries\n const allOwnedByUser = discussions.every(\n (d) => String(d.userId) === String(user.id)\n );\n const isAllowed = roles.includes('admin') || allOwnedByUser;\n\n if (!isAllowed) {\n ErrorHandler.handleGenericErrorResponse(res, 'PERMISSION_DENIED');\n return;\n }\n\n const totalItems = await DiscussionModel.countDocuments(filters);\n\n const responseData = formatPaginatedResponse({\n data: discussions.map((d: any) => ({\n ...d,\n id: String(d._id ?? d.id),\n numberOfMessages: includeMessages\n ? Array.isArray(d.messages)\n ? d.messages.length\n : 0\n : (numberOfMessagesById[String(d._id ?? d.id)] ?? 0),\n })),\n page,\n pageSize,\n totalPages: getNumberOfPages(totalItems),\n totalItems,\n });\n\n res.json(responseData as any);\n return;\n } catch (error) {\n ErrorHandler.handleAppErrorResponse(res, error as AppError);\n return;\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["aiDefaultOptions: AIOptions","translateJSONAI"],"sources":["../../../../../src/utils/AI/translateJSON/index.ts"],"sourcesContent":["import {\n type AIConfig,\n type AIOptions,\n AIProvider,\n type TranslateJSONResultData,\n translateJSON as translateJSONAI,\n} from '@intlayer/ai';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport type { Tag } from '@/types/tag.types';\n\nexport type TranslateJSONOptions = {\n entryFileContent: JSON;\n presetOutputContent: JSON;\n dictionaryDescription?: string;\n entryLocale: Locale;\n outputLocale: Locale;\n tags: Tag[];\n aiConfig: AIConfig;\n mode: 'complete' | 'review';\n applicationContext?: string;\n};\n\nexport { type TranslateJSONResultData, AIProvider };\n\nexport const aiDefaultOptions: AIOptions = {\n provider: AIProvider.OPENAI,\n model: 'gpt-5-mini',\n};\n\n/**\n * TranslateJSONs a content declaration file by constructing a prompt for AI models.\n * The prompt includes details about the project's locales, file paths of content declarations,\n * and requests for identifying issues or inconsistencies.\n */\nexport const translateJSON = async (\n options: TranslateJSONOptions\n): Promise<TranslateJSONResultData | undefined> => {\n const result = await translateJSONAI(options);\n\n if (result) {\n logger.info(`${result.tokenUsed} tokens used in the request`);\n }\n\n return result;\n};\n"],"mappings":";;;;AAyBA,MAAaA,mBAA8B;CACzC,UAAU,WAAW;CACrB,OAAO;CACR;;;;;;AAOD,MAAa,gBAAgB,OAC3B,YACiD;CACjD,MAAM,SAAS,MAAMC,gBAAgB,QAAQ;AAE7C,KAAI,OACF,QAAO,KAAK,GAAG,OAAO,UAAU,6BAA6B;AAG/D,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":["aiDefaultOptions: AIOptions","translateJSONAI"],"sources":["../../../../../src/utils/AI/translateJSON/index.ts"],"sourcesContent":["import {\n type AIConfig,\n type AIOptions,\n AIProvider,\n type TranslateJSONResultData,\n translateJSON as translateJSONAI,\n} from '@intlayer/ai';\nimport type { Locale } from '@intlayer/types';\nimport { logger } from '@logger';\nimport type { Tag } from '@/types/tag.types';\n\nexport type TranslateJSONOptions<T = JSON> = {\n entryFileContent: T;\n presetOutputContent: Partial<T>;\n dictionaryDescription?: string;\n entryLocale: Locale;\n outputLocale: Locale;\n tags: Tag[];\n aiConfig: AIConfig;\n mode: 'complete' | 'review';\n applicationContext?: string;\n};\n\nexport { type TranslateJSONResultData, AIProvider };\n\nexport const aiDefaultOptions: AIOptions = {\n provider: AIProvider.OPENAI,\n model: 'gpt-5-mini',\n};\n\n/**\n * TranslateJSONs a content declaration file by constructing a prompt for AI models.\n * The prompt includes details about the project's locales, file paths of content declarations,\n * and requests for identifying issues or inconsistencies.\n */\nexport const translateJSON = async <T = JSON>(\n options: TranslateJSONOptions<T>\n): Promise<TranslateJSONResultData<T> | undefined> => {\n const result = await translateJSONAI(options);\n\n if (result) {\n logger.info(`${result.tokenUsed} tokens used in the request`);\n }\n\n return result;\n};\n"],"mappings":";;;;AAyBA,MAAaA,mBAA8B;CACzC,UAAU,WAAW;CACrB,OAAO;CACR;;;;;;AAOD,MAAa,gBAAgB,OAC3B,YACoD;CACpD,MAAM,SAAS,MAAMC,gBAAgB,QAAQ;AAE7C,KAAI,OACF,QAAO,KAAK,GAAG,OAAO,UAAU,6BAA6B;AAG/D,QAAO"}
@@ -24,10 +24,10 @@ type CustomQueryBody = ReplaceAIConfigByOptions<CustomQueryOptions> & {
24
24
  };
25
25
  type CustomQueryResult = ResponseData<CustomQueryResultData>;
26
26
  declare const customQuery: (req: Request<CustomQueryBody>, res: ResponseWithSession<CustomQueryResult>, _next: NextFunction) => Promise<void>;
27
- type TranslateJSONBody = Omit<ReplaceAIConfigByOptions<TranslateJSONOptions>, 'tags'> & {
27
+ type TranslateJSONBody = Omit<ReplaceAIConfigByOptions<TranslateJSONOptions<JSON>>, 'tags'> & {
28
28
  tagsKeys?: string[];
29
29
  };
30
- type TranslateJSONResult = ResponseData<TranslateJSONResultData$1>;
30
+ type TranslateJSONResult = ResponseData<TranslateJSONResultData$1<JSON>>;
31
31
  declare const translateJSON: (req: Request<TranslateJSONBody>, res: ResponseWithSession<TranslateJSONResult>, _next: NextFunction) => Promise<void>;
32
32
  type AuditContentDeclarationBody = {
33
33
  aiOptions?: AIOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.controller.d.ts","names":[],"sources":["../../../src/controllers/project.controller.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"project.controller.d.ts","names":[],"sources":["../../../src/controllers/project.controller.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"sourcesContent":[],"mappings":";;;;;;KAUY,mBAAA,GAAsB;KACtB,uBAAA,GAA0B,aAAa;AADnD;AACA;AAKA;AACe,cADF,eACE,EAAA,CAAA,GAAA,EAAR,OAAQ,CAAA,mBAAA,CAAA,EAAA,GAAA,EACR,mBADQ,CACY,uBADZ,CAAA,EAAA,KAAA,EAEN,YAFM,EAAA,GAGZ,OAHY,CAAA,IAAA,CAAA;AAAR,KA6EK,mBAAA,GA7EL;EACoB,QAAA,EAAA,MAAA;CAApB;AACE,KA4EG,uBAAA,GAA0B,YA5E7B,CAAA,IAAA,CAAA;;;AA2ET;AACY,cAKC,eALsB,EAAA,CAAA,GAAG,EAM/B,OAN+B,EAAA,GAAY,EAO3C,mBAP2C,CAOvB,uBAPuB,CAAA,EAAA,KAAA,EAQzC,YARyC,EAAA,GAS/C,OAT+C,CAAA,IAAA,CAAA;AAKrC,KAwED,oBAAA,GAFX;EArEM,QAAA,EAAA,MAAA;CACoB;AAApB,KAuEK,wBAAA,GAA2B,YAvEhC,CAuE6C,YAvE7C,CAAA;;;;AAsEK,cAMC,gBANmB,EAAA,CAAA,GAAA,EAOzB,OAPyB,CAOjB,oBAPiB,CAAA,EAAA,GAAA,EAQzB,mBARyB,CAQL,wBARK,CAAA,EAAA,KAAA,EASvB,YATuB,EAAA,GAU7B,OAV6B,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"sourcesContent":[],"mappings":";;;;;;KAUY,mBAAA,GAAsB;KACtB,uBAAA,GAA0B,aAAa;AADnD;AACA;AAKA;AACe,cADF,eACE,EAAA,CAAA,GAAA,EAAR,OAAQ,CAAA,mBAAA,CAAA,EAAA,GAAA,EACR,mBADQ,CACY,uBADZ,CAAA,EAAA,KAAA,EAEN,YAFM,EAAA,GAGZ,OAHY,CAAA,IAAA,CAAA;AAAR,KA6EK,mBAAA,GA7EL;EACoB,QAAA,EAAA,MAAA;CAApB;AACE,KA4EG,uBAAA,GAA0B,YA5E7B,CAAA,IAAA,CAAA;;;AA2ET;AACY,cAKC,eALsB,EAAA,CAAA,GAAA,EAM5B,OAN+B,EAAA,GAAY,EAO3C,mBAP2C,CAOvB,uBAPuB,CAAA,EAAA,KAAA,EAQzC,YARyC,EAAA,GAS/C,OAT+C,CAAA,IAAA,CAAA;AAKrC,KAwED,oBAAA,GAFX;EArEM,QAAA,EAAA,MAAA;CACoB;AAApB,KAuEK,wBAAA,GAA2B,YAvEhC,CAuE6C,YAvE7C,CAAA;;;;AAsEK,cAMC,gBANmB,EAAA,CAAA,GAAA,EAOzB,OAPyB,CAOjB,oBAPiB,CAAA,EAAA,GAAA,EAQzB,mBARyB,CAQL,wBARK,CAAA,EAAA,KAAA,EASvB,YATuB,EAAA,GAU7B,OAV6B,CAAA,IAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime26 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/OAuthTokenCreatedEmail.d.ts
4
4
  type OAuthTokenCreatedEmailProps = {
@@ -17,7 +17,7 @@ declare const OAuthTokenCreatedEmailEN: {
17
17
  tokenDetailsUrl,
18
18
  securityLogUrl,
19
19
  supportUrl
20
- }: OAuthTokenCreatedEmailProps): react_jsx_runtime26.JSX.Element;
20
+ }: OAuthTokenCreatedEmailProps): react_jsx_runtime8.JSX.Element;
21
21
  PreviewProps: OAuthTokenCreatedEmailProps;
22
22
  };
23
23
  declare const OAuthTokenCreatedEmailFR: {
@@ -28,7 +28,7 @@ declare const OAuthTokenCreatedEmailFR: {
28
28
  tokenDetailsUrl,
29
29
  securityLogUrl,
30
30
  supportUrl
31
- }: OAuthTokenCreatedEmailProps): react_jsx_runtime26.JSX.Element;
31
+ }: OAuthTokenCreatedEmailProps): react_jsx_runtime8.JSX.Element;
32
32
  PreviewProps: OAuthTokenCreatedEmailProps;
33
33
  };
34
34
  declare const OAuthTokenCreatedEmailES: {
@@ -39,7 +39,7 @@ declare const OAuthTokenCreatedEmailES: {
39
39
  tokenDetailsUrl,
40
40
  securityLogUrl,
41
41
  supportUrl
42
- }: OAuthTokenCreatedEmailProps): react_jsx_runtime26.JSX.Element;
42
+ }: OAuthTokenCreatedEmailProps): react_jsx_runtime8.JSX.Element;
43
43
  PreviewProps: OAuthTokenCreatedEmailProps;
44
44
  };
45
45
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthTokenCreatedEmail.d.ts","names":[],"sources":["../../../src/emails/OAuthTokenCreatedEmail.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,2BAAA;;;EAAA,MAAA,EAAA,MAAA,EAAA;EASC,eAAA,EAAA,MAAA;;;;cAAA;;;;;;;;KAOV,8BAA2B,mBAAA,CAAA,GAAA,CAAA;;CAA3B;AAA2B,cA2EjB,wBA3EiB,EAAA;;;;;;;;KAkF3B,8BAA2B,mBAAA,CAAA,GAAA,CAAA;;AAP9B,CAAA;cA+Ea;;;;;;;;KAOV,8BAA2B,mBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"OAuthTokenCreatedEmail.d.ts","names":[],"sources":["../../../src/emails/OAuthTokenCreatedEmail.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,2BAAA;;;EAAA,MAAA,EAAA,MAAA,EAAA;EASC,eAAA,EAAA,MAAA;;;;cAAA;;;;;;;;KAOV,8BAA2B,kBAAA,CAAA,GAAA,CAAA;;CAA3B;AAA2B,cA2EjB,wBA3EiB,EAAA;;;;;;;;KAkF3B,8BAA2B,kBAAA,CAAA,GAAA,CAAA;;AAP9B,CAAA;cA+Ea;;;;;;;;KAOV,8BAA2B,kBAAA,CAAA,GAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime5 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/PasswordChangeConfirmation.d.ts
4
4
  type PasswordChangeConfirmationEmailProps = {
@@ -7,19 +7,19 @@ type PasswordChangeConfirmationEmailProps = {
7
7
  declare const PasswordChangeConfirmationEmailEN: {
8
8
  ({
9
9
  username
10
- }: PasswordChangeConfirmationEmailProps): react_jsx_runtime5.JSX.Element;
10
+ }: PasswordChangeConfirmationEmailProps): react_jsx_runtime2.JSX.Element;
11
11
  PreviewProps: PasswordChangeConfirmationEmailProps;
12
12
  };
13
13
  declare const PasswordChangeConfirmationEmailFR: {
14
14
  ({
15
15
  username
16
- }: PasswordChangeConfirmationEmailProps): react_jsx_runtime5.JSX.Element;
16
+ }: PasswordChangeConfirmationEmailProps): react_jsx_runtime2.JSX.Element;
17
17
  PreviewProps: PasswordChangeConfirmationEmailProps;
18
18
  };
19
19
  declare const PasswordChangeConfirmationEmailES: {
20
20
  ({
21
21
  username
22
- }: PasswordChangeConfirmationEmailProps): react_jsx_runtime5.JSX.Element;
22
+ }: PasswordChangeConfirmationEmailProps): react_jsx_runtime2.JSX.Element;
23
23
  PreviewProps: PasswordChangeConfirmationEmailProps;
24
24
  };
25
25
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime14 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/ResetUserPassword.d.ts
4
4
  type ResetPasswordEmailProps = {
@@ -9,21 +9,21 @@ declare const ResetPasswordEmailEN: {
9
9
  ({
10
10
  username,
11
11
  resetLink
12
- }: ResetPasswordEmailProps): react_jsx_runtime14.JSX.Element;
12
+ }: ResetPasswordEmailProps): react_jsx_runtime5.JSX.Element;
13
13
  PreviewProps: ResetPasswordEmailProps;
14
14
  };
15
15
  declare const ResetPasswordEmailFR: {
16
16
  ({
17
17
  username,
18
18
  resetLink
19
- }: ResetPasswordEmailProps): react_jsx_runtime14.JSX.Element;
19
+ }: ResetPasswordEmailProps): react_jsx_runtime5.JSX.Element;
20
20
  PreviewProps: ResetPasswordEmailProps;
21
21
  };
22
22
  declare const ResetPasswordEmailES: {
23
23
  ({
24
24
  username,
25
25
  resetLink
26
- }: ResetPasswordEmailProps): react_jsx_runtime14.JSX.Element;
26
+ }: ResetPasswordEmailProps): react_jsx_runtime5.JSX.Element;
27
27
  PreviewProps: ResetPasswordEmailProps;
28
28
  };
29
29
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ResetUserPassword.d.ts","names":[],"sources":["../../../src/emails/ResetUserPassword.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,uBAAA;;;AAAZ,CAAA;AAKa,cAAA,oBA+DZ,EAAA;;;;KA5DE,0BAAuB,mBAAA,CAAA,GAAA,CAAA;;CAAvB;AAAuB,cA8Db,oBA9Da,EAAA;;;;KAiEvB,0BAAuB,mBAAA,CAAA,GAAA,CAAA;;AAH1B,CAAA;cAgEa;;;;KAGV,0BAAuB,mBAAA,CAAA,GAAA,CAAA;EAhEvB,YAAA,yBAAA;CAAuB"}
1
+ {"version":3,"file":"ResetUserPassword.d.ts","names":[],"sources":["../../../src/emails/ResetUserPassword.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,uBAAA;;;AAAZ,CAAA;AAKa,cAAA,oBA+DZ,EAAA;;;;KA5DE,0BAAuB,kBAAA,CAAA,GAAA,CAAA;;CAAvB;AAAuB,cA8Db,oBA9Da,EAAA;;;;KAiEvB,0BAAuB,kBAAA,CAAA,GAAA,CAAA;;AAH1B,CAAA;cAgEa;;;;KAGV,0BAAuB,kBAAA,CAAA,GAAA,CAAA;EAhEvB,YAAA,yBAAA;CAAuB"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime8 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/SubscriptionPaymentCancellation.d.ts
4
4
  type SubscriptionPaymentCancellationProps = {
@@ -16,7 +16,7 @@ declare const SubscriptionPaymentCancellationEN: {
16
16
  organizationName,
17
17
  cancellationDate,
18
18
  reactivateLink
19
- }: SubscriptionPaymentCancellationProps): react_jsx_runtime8.JSX.Element;
19
+ }: SubscriptionPaymentCancellationProps): react_jsx_runtime17.JSX.Element;
20
20
  PreviewProps: SubscriptionPaymentCancellationProps;
21
21
  };
22
22
  declare const SubscriptionPaymentCancellationFR: {
@@ -26,7 +26,7 @@ declare const SubscriptionPaymentCancellationFR: {
26
26
  organizationName,
27
27
  cancellationDate,
28
28
  reactivateLink
29
- }: SubscriptionPaymentCancellationProps): react_jsx_runtime8.JSX.Element;
29
+ }: SubscriptionPaymentCancellationProps): react_jsx_runtime17.JSX.Element;
30
30
  PreviewProps: SubscriptionPaymentCancellationProps;
31
31
  };
32
32
  declare const SubscriptionPaymentCancellationES: {
@@ -36,7 +36,7 @@ declare const SubscriptionPaymentCancellationES: {
36
36
  organizationName,
37
37
  cancellationDate,
38
38
  reactivateLink
39
- }: SubscriptionPaymentCancellationProps): react_jsx_runtime8.JSX.Element;
39
+ }: SubscriptionPaymentCancellationProps): react_jsx_runtime17.JSX.Element;
40
40
  PreviewProps: SubscriptionPaymentCancellationProps;
41
41
  };
42
42
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionPaymentCancellation.d.ts","names":[],"sources":["../../../src/emails/SubscriptionPaymentCancellation.tsx"],"sourcesContent":[],"mappings":";;;KAcY,oCAAA;;;EAAA,QAAA,EAAA,MAAA;EASC,gBAAA,EAAA,MAAA;;;;cAAA;;;;;;;KAMV,uCAAoC,kBAAA,CAAA,GAAA,CAAA;EAApC,YAAA,sCAAA;CAAoC;cAgD1B;;;;;;;KAMV,uCAAoC,kBAAA,CAAA,GAAA,CAAA;EAN1B,YAAA,sCAoDZ;;cAEY;;;;;;;KAMV,uCAAoC,kBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"SubscriptionPaymentCancellation.d.ts","names":[],"sources":["../../../src/emails/SubscriptionPaymentCancellation.tsx"],"sourcesContent":[],"mappings":";;;KAcY,oCAAA;;;EAAA,QAAA,EAAA,MAAA;EASC,gBAAA,EAAA,MAAA;;;;cAAA;;;;;;;KAMV,uCAAoC,mBAAA,CAAA,GAAA,CAAA;EAApC,YAAA,sCAAA;CAAoC;cAgD1B;;;;;;;KAMV,uCAAoC,mBAAA,CAAA,GAAA,CAAA;EAN1B,YAAA,sCAoDZ;;cAEY;;;;;;;KAMV,uCAAoC,mBAAA,CAAA,GAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime2 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime20 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/SubscriptionPaymentError.d.ts
4
4
  type SubscriptionPaymentErrorProps = {
@@ -16,7 +16,7 @@ declare const SubscriptionPaymentErrorEN: {
16
16
  organizationName,
17
17
  errorDate,
18
18
  retryPaymentLink
19
- }: SubscriptionPaymentErrorProps): react_jsx_runtime2.JSX.Element;
19
+ }: SubscriptionPaymentErrorProps): react_jsx_runtime20.JSX.Element;
20
20
  PreviewProps: SubscriptionPaymentErrorProps;
21
21
  };
22
22
  declare const SubscriptionPaymentErrorFR: {
@@ -26,7 +26,7 @@ declare const SubscriptionPaymentErrorFR: {
26
26
  organizationName,
27
27
  errorDate,
28
28
  retryPaymentLink
29
- }: SubscriptionPaymentErrorProps): react_jsx_runtime2.JSX.Element;
29
+ }: SubscriptionPaymentErrorProps): react_jsx_runtime20.JSX.Element;
30
30
  PreviewProps: SubscriptionPaymentErrorProps;
31
31
  };
32
32
  declare const SubscriptionPaymentErrorES: {
@@ -36,7 +36,7 @@ declare const SubscriptionPaymentErrorES: {
36
36
  organizationName,
37
37
  errorDate,
38
38
  retryPaymentLink
39
- }: SubscriptionPaymentErrorProps): react_jsx_runtime2.JSX.Element;
39
+ }: SubscriptionPaymentErrorProps): react_jsx_runtime20.JSX.Element;
40
40
  PreviewProps: SubscriptionPaymentErrorProps;
41
41
  };
42
42
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionPaymentError.d.ts","names":[],"sources":["../../../src/emails/SubscriptionPaymentError.tsx"],"sourcesContent":[],"mappings":";;;KAcY,6BAAA;;;EAAA,QAAA,EAAA,MAAA;EAUC,gBAAA,EAAA,MAAA;;;;cAAA;;;;;;;KAMV,gCAA6B,kBAAA,CAAA,GAAA,CAAA;EAA7B,YAAA,+BAAA;CAA6B;cAkDnB;;;;;;;KAMV,gCAA6B,kBAAA,CAAA,GAAA,CAAA;EANnB,YAAA,+BAsDZ;;cAGY;;;;;;;KAMV,gCAA6B,kBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"SubscriptionPaymentError.d.ts","names":[],"sources":["../../../src/emails/SubscriptionPaymentError.tsx"],"sourcesContent":[],"mappings":";;;KAcY,6BAAA;;;EAAA,QAAA,EAAA,MAAA;EAUC,gBAAA,EAAA,MAAA;;;;cAAA;;;;;;;KAMV,gCAA6B,mBAAA,CAAA,GAAA,CAAA;EAA7B,YAAA,+BAAA;CAA6B;cAkDnB;;;;;;;KAMV,gCAA6B,mBAAA,CAAA,GAAA,CAAA;EANnB,YAAA,+BAsDZ;;cAGY;;;;;;;KAMV,gCAA6B,mBAAA,CAAA,GAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime20 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/SubscriptionPaymentSuccess.d.ts
4
4
  type SubscriptionPaymentSuccessProps = {
@@ -16,7 +16,7 @@ declare const SubscriptionPaymentSuccessEN: {
16
16
  organizationName,
17
17
  subscriptionStartDate,
18
18
  manageSubscriptionLink
19
- }: SubscriptionPaymentSuccessProps): react_jsx_runtime20.JSX.Element;
19
+ }: SubscriptionPaymentSuccessProps): react_jsx_runtime11.JSX.Element;
20
20
  PreviewProps: SubscriptionPaymentSuccessProps;
21
21
  };
22
22
  declare const SubscriptionPaymentSuccessFR: {
@@ -26,7 +26,7 @@ declare const SubscriptionPaymentSuccessFR: {
26
26
  organizationName,
27
27
  subscriptionStartDate,
28
28
  manageSubscriptionLink
29
- }: SubscriptionPaymentSuccessProps): react_jsx_runtime20.JSX.Element;
29
+ }: SubscriptionPaymentSuccessProps): react_jsx_runtime11.JSX.Element;
30
30
  PreviewProps: SubscriptionPaymentSuccessProps;
31
31
  };
32
32
  declare const SubscriptionPaymentSuccessES: {
@@ -36,7 +36,7 @@ declare const SubscriptionPaymentSuccessES: {
36
36
  organizationName,
37
37
  subscriptionStartDate,
38
38
  manageSubscriptionLink
39
- }: SubscriptionPaymentSuccessProps): react_jsx_runtime20.JSX.Element;
39
+ }: SubscriptionPaymentSuccessProps): react_jsx_runtime11.JSX.Element;
40
40
  PreviewProps: SubscriptionPaymentSuccessProps;
41
41
  };
42
42
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime17 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime14 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/ValidateUserEmail.d.ts
4
4
  type ValidateUserEmailProps = {
@@ -9,21 +9,21 @@ declare const ValidateUserEmailEN: {
9
9
  ({
10
10
  username,
11
11
  validationLink
12
- }: ValidateUserEmailProps): react_jsx_runtime17.JSX.Element;
12
+ }: ValidateUserEmailProps): react_jsx_runtime14.JSX.Element;
13
13
  PreviewProps: ValidateUserEmailProps;
14
14
  };
15
15
  declare const ValidateUserEmailFR: {
16
16
  ({
17
17
  username,
18
18
  validationLink
19
- }: ValidateUserEmailProps): react_jsx_runtime17.JSX.Element;
19
+ }: ValidateUserEmailProps): react_jsx_runtime14.JSX.Element;
20
20
  PreviewProps: ValidateUserEmailProps;
21
21
  };
22
22
  declare const ValidateUserEmailES: {
23
23
  ({
24
24
  username,
25
25
  validationLink
26
- }: ValidateUserEmailProps): react_jsx_runtime17.JSX.Element;
26
+ }: ValidateUserEmailProps): react_jsx_runtime14.JSX.Element;
27
27
  PreviewProps: ValidateUserEmailProps;
28
28
  };
29
29
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime11 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime26 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/Welcome.d.ts
4
4
  type WelcomeEmailProps = {
@@ -9,21 +9,21 @@ declare const WelcomeEmailEN: {
9
9
  ({
10
10
  username,
11
11
  loginLink
12
- }: WelcomeEmailProps): react_jsx_runtime11.JSX.Element;
12
+ }: WelcomeEmailProps): react_jsx_runtime26.JSX.Element;
13
13
  PreviewProps: WelcomeEmailProps;
14
14
  };
15
15
  declare const WelcomeEmailFR: {
16
16
  ({
17
17
  username,
18
18
  loginLink
19
- }: WelcomeEmailProps): react_jsx_runtime11.JSX.Element;
19
+ }: WelcomeEmailProps): react_jsx_runtime26.JSX.Element;
20
20
  PreviewProps: WelcomeEmailProps;
21
21
  };
22
22
  declare const WelcomeEmailES: {
23
23
  ({
24
24
  username,
25
25
  loginLink
26
- }: WelcomeEmailProps): react_jsx_runtime11.JSX.Element;
26
+ }: WelcomeEmailProps): react_jsx_runtime26.JSX.Element;
27
27
  PreviewProps: WelcomeEmailProps;
28
28
  };
29
29
  //#endregion
@@ -1,9 +1,9 @@
1
1
  import { Discussion } from "../types/discussion.types.js";
2
- import * as mongoose2 from "mongoose";
2
+ import * as mongoose4 from "mongoose";
3
3
  import { Model } from "mongoose";
4
4
 
5
5
  //#region src/models/discussion.model.d.ts
6
- declare const DiscussionModel: Model<Discussion, {}, {}, {}, mongoose2.Document<unknown, {}, Discussion, {}, {}> & Discussion & Required<{
6
+ declare const DiscussionModel: Model<Discussion, {}, {}, {}, mongoose4.Document<unknown, {}, Discussion, {}, {}> & Discussion & Required<{
7
7
  _id: unknown;
8
8
  }> & {
9
9
  __v: number;
@@ -1,16 +1,16 @@
1
1
  import { User } from "../types/user.types.js";
2
2
  import "../export.js";
3
3
  import { Token as Token$1 } from "../schemas/oAuth2.schema.js";
4
- import * as mongoose3 from "mongoose";
4
+ import * as mongoose2 from "mongoose";
5
5
  import { Model } from "mongoose";
6
6
  import * as oauth2_server0 from "oauth2-server";
7
7
 
8
8
  //#region src/models/oAuth2.model.d.ts
9
- declare const OAuth2AccessTokenModel: Model<Token$1, {}, {}, {}, mongoose3.Document<unknown, {}, Token$1, {}, {}> & Omit<oauth2_server0.Token, "user" | "client"> & {
9
+ declare const OAuth2AccessTokenModel: Model<Token$1, {}, {}, {}, mongoose2.Document<unknown, {}, Token$1, {}, {}> & Omit<oauth2_server0.Token, "user" | "client"> & {
10
10
  clientId: oauth2_server0.Client["id"];
11
11
  userId: User["id"];
12
12
  } & {
13
- _id: mongoose3.Types.ObjectId;
13
+ _id: mongoose2.Types.ObjectId;
14
14
  } & {
15
15
  __v: number;
16
16
  }, any>;
@@ -1,16 +1,16 @@
1
1
  import { Dictionary, DictionarySchema } from "../types/dictionary.types.js";
2
- import * as mongoose5 from "mongoose";
2
+ import * as mongoose16 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/dictionary.schema.d.ts
6
- declare const dictionarySchema: Schema<DictionarySchema, mongoose5.Model<DictionarySchema, any, any, any, mongoose5.Document<unknown, any, DictionarySchema, any, {}> & Omit<Dictionary, "id"> & {
7
- _id: mongoose5.Types.ObjectId;
6
+ declare const dictionarySchema: Schema<DictionarySchema, mongoose16.Model<DictionarySchema, any, any, any, mongoose16.Document<unknown, any, DictionarySchema, any, {}> & Omit<Dictionary, "id"> & {
7
+ _id: mongoose16.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose5.Types.ObjectId;
9
+ _id: mongoose16.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose5.DefaultSchemaOptions, DictionarySchema, mongoose5.Document<unknown, {}, mongoose5.FlatRecord<DictionarySchema>, {}, mongoose5.ResolveSchemaOptions<mongoose5.DefaultSchemaOptions>> & mongoose5.FlatRecord<DictionarySchema> & Required<{
13
- _id: mongoose5.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose16.DefaultSchemaOptions, DictionarySchema, mongoose16.Document<unknown, {}, mongoose16.FlatRecord<DictionarySchema>, {}, mongoose16.ResolveSchemaOptions<mongoose16.DefaultSchemaOptions>> & mongoose16.FlatRecord<DictionarySchema> & Required<{
13
+ _id: mongoose16.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"dictionary.schema.d.ts","names":[],"sources":["../../../src/schemas/dictionary.schema.ts"],"sourcesContent":[],"mappings":";;;;;cAwBa,kBAAgB,OAAA,4BAAA,MAAA,iCAAA,SAAA,CAAA,uBAAA,6BAAA,KAAA,UAAA;;;EAAhB,GAAA,0BA4DZ;CA5D4B,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,oBAAA,kBAAA,oBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,sBAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,gCAAA,gCAAA,CAAA,uBAAA,iBAAA,CAAA,WAAA,CAAA;EAAA,GAAA,0BAAA;CAAA,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"dictionary.schema.d.ts","names":[],"sources":["../../../src/schemas/dictionary.schema.ts"],"sourcesContent":[],"mappings":";;;;;cAwBa,kBAAgB,OAAA,6BAAA,MAAA,iCAAA,UAAA,CAAA,uBAAA,6BAAA,KAAA,UAAA;;;EAAhB,GAAA,2BA4DZ;CA5D4B,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,oBAAA,kBAAA,qBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,uBAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,iCAAA,iCAAA,CAAA,wBAAA,iBAAA,CAAA,WAAA,CAAA;EAAA,GAAA,2BAAA;CAAA,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA"}
@@ -1,16 +1,16 @@
1
1
  import { Discussion, DiscussionSchema } from "../types/discussion.types.js";
2
- import * as mongoose16 from "mongoose";
2
+ import * as mongoose5 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/discussion.schema.d.ts
6
- declare const discussionSchema: Schema<DiscussionSchema, mongoose16.Model<DiscussionSchema, any, any, any, mongoose16.Document<unknown, any, DiscussionSchema, any, {}> & Omit<Discussion, "id"> & {
7
- _id: mongoose16.Types.ObjectId;
6
+ declare const discussionSchema: Schema<DiscussionSchema, mongoose5.Model<DiscussionSchema, any, any, any, mongoose5.Document<unknown, any, DiscussionSchema, any, {}> & Omit<Discussion, "id"> & {
7
+ _id: mongoose5.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose16.Types.ObjectId;
9
+ _id: mongoose5.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose16.DefaultSchemaOptions, DiscussionSchema, mongoose16.Document<unknown, {}, mongoose16.FlatRecord<DiscussionSchema>, {}, mongoose16.ResolveSchemaOptions<mongoose16.DefaultSchemaOptions>> & mongoose16.FlatRecord<DiscussionSchema> & Required<{
13
- _id: mongoose16.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose5.DefaultSchemaOptions, DiscussionSchema, mongoose5.Document<unknown, {}, mongoose5.FlatRecord<DiscussionSchema>, {}, mongoose5.ResolveSchemaOptions<mongoose5.DefaultSchemaOptions>> & mongoose5.FlatRecord<DiscussionSchema> & Required<{
13
+ _id: mongoose5.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"discussion.schema.d.ts","names":[],"sources":["../../../src/schemas/discussion.schema.ts"],"sourcesContent":[],"mappings":";;;;;cAGa,kBAAgB,OAAA,6BAAA,MAAA,iCAAA,UAAA,CAAA,uBAAA,6BAAA,KAAA,UAAA;;;EAAhB,GAAA,2BA4EZ;CA5E4B,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,oBAAA,kBAAA,qBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,uBAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,iCAAA,iCAAA,CAAA,wBAAA,iBAAA,CAAA,WAAA,CAAA;EAAA,GAAA,2BAAA;CAAA,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"discussion.schema.d.ts","names":[],"sources":["../../../src/schemas/discussion.schema.ts"],"sourcesContent":[],"mappings":";;;;;cAGa,kBAAgB,OAAA,4BAAA,MAAA,iCAAA,SAAA,CAAA,uBAAA,6BAAA,KAAA,UAAA;;;EAAhB,GAAA,0BA4EZ;CA5E4B,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,oBAAA,kBAAA,oBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,sBAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,gCAAA,gCAAA,CAAA,uBAAA,iBAAA,CAAA,WAAA,CAAA;EAAA,GAAA,0BAAA;CAAA,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA"}
@@ -1,5 +1,5 @@
1
1
  import { User } from "../types/user.types.js";
2
- import * as mongoose49 from "mongoose";
2
+ import * as mongoose93 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
  import { Client, Token as Token$1 } from "oauth2-server";
5
5
 
@@ -8,15 +8,15 @@ type Token = Omit<Token$1, 'client' | 'user'> & {
8
8
  clientId: Client['id'];
9
9
  userId: User['id'];
10
10
  };
11
- declare const accessTokenSchema: Schema<Token, mongoose49.Model<Token, any, any, any, mongoose49.Document<unknown, any, Token, any, {}> & Omit<Token$1, "user" | "client"> & {
11
+ declare const accessTokenSchema: Schema<Token, mongoose93.Model<Token, any, any, any, mongoose93.Document<unknown, any, Token, any, {}> & Omit<Token$1, "user" | "client"> & {
12
12
  clientId: Client["id"];
13
13
  userId: User["id"];
14
14
  } & {
15
- _id: mongoose49.Types.ObjectId;
15
+ _id: mongoose93.Types.ObjectId;
16
16
  } & {
17
17
  __v: number;
18
- }, any>, {}, {}, {}, {}, mongoose49.DefaultSchemaOptions, Token, mongoose49.Document<unknown, {}, mongoose49.FlatRecord<Token>, {}, mongoose49.ResolveSchemaOptions<mongoose49.DefaultSchemaOptions>> & mongoose49.FlatRecord<Token> & {
19
- _id: mongoose49.Types.ObjectId;
18
+ }, any>, {}, {}, {}, {}, mongoose93.DefaultSchemaOptions, Token, mongoose93.Document<unknown, {}, mongoose93.FlatRecord<Token>, {}, mongoose93.ResolveSchemaOptions<mongoose93.DefaultSchemaOptions>> & mongoose93.FlatRecord<Token> & {
19
+ _id: mongoose93.Types.ObjectId;
20
20
  } & {
21
21
  __v: number;
22
22
  }>;
@@ -1,16 +1,16 @@
1
1
  import { Plan, PlanSchema } from "../types/plan.types.js";
2
- import * as mongoose59 from "mongoose";
2
+ import * as mongoose60 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/plans.schema.d.ts
6
- declare const planSchema: Schema<PlanSchema, mongoose59.Model<PlanSchema, any, any, any, mongoose59.Document<unknown, any, PlanSchema, any, {}> & Omit<Plan, "id"> & {
7
- _id: mongoose59.Types.ObjectId;
6
+ declare const planSchema: Schema<PlanSchema, mongoose60.Model<PlanSchema, any, any, any, mongoose60.Document<unknown, any, PlanSchema, any, {}> & Omit<Plan, "id"> & {
7
+ _id: mongoose60.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose59.Types.ObjectId;
9
+ _id: mongoose60.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose59.DefaultSchemaOptions, PlanSchema, mongoose59.Document<unknown, {}, mongoose59.FlatRecord<PlanSchema>, {}, mongoose59.ResolveSchemaOptions<mongoose59.DefaultSchemaOptions>> & mongoose59.FlatRecord<PlanSchema> & Required<{
13
- _id: mongoose59.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose60.DefaultSchemaOptions, PlanSchema, mongoose60.Document<unknown, {}, mongoose60.FlatRecord<PlanSchema>, {}, mongoose60.ResolveSchemaOptions<mongoose60.DefaultSchemaOptions>> & mongoose60.FlatRecord<PlanSchema> & Required<{
13
+ _id: mongoose60.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,16 +1,16 @@
1
1
  import { Project, ProjectSchema } from "../types/project.types.js";
2
- import * as mongoose70 from "mongoose";
2
+ import * as mongoose38 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/project.schema.d.ts
6
- declare const projectSchema: Schema<ProjectSchema, mongoose70.Model<ProjectSchema, any, any, any, mongoose70.Document<unknown, any, ProjectSchema, any, {}> & Omit<Project, "id"> & {
7
- _id: mongoose70.Types.ObjectId;
6
+ declare const projectSchema: Schema<ProjectSchema, mongoose38.Model<ProjectSchema, any, any, any, mongoose38.Document<unknown, any, ProjectSchema, any, {}> & Omit<Project, "id"> & {
7
+ _id: mongoose38.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose70.Types.ObjectId;
9
+ _id: mongoose38.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose70.DefaultSchemaOptions, ProjectSchema, mongoose70.Document<unknown, {}, mongoose70.FlatRecord<ProjectSchema>, {}, mongoose70.ResolveSchemaOptions<mongoose70.DefaultSchemaOptions>> & mongoose70.FlatRecord<ProjectSchema> & Required<{
13
- _id: mongoose70.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose38.DefaultSchemaOptions, ProjectSchema, mongoose38.Document<unknown, {}, mongoose38.FlatRecord<ProjectSchema>, {}, mongoose38.ResolveSchemaOptions<mongoose38.DefaultSchemaOptions>> & mongoose38.FlatRecord<ProjectSchema> & Required<{
13
+ _id: mongoose38.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,16 +1,16 @@
1
1
  import { SessionData, SessionSchema } from "../types/session.types.js";
2
- import * as mongoose38 from "mongoose";
2
+ import * as mongoose71 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/session.schema.d.ts
6
- declare const sessionSchema: Schema<SessionSchema, mongoose38.Model<SessionSchema, any, any, any, mongoose38.Document<unknown, any, SessionSchema, any, {}> & Omit<SessionData, "id"> & {
7
- _id: mongoose38.Types.ObjectId;
6
+ declare const sessionSchema: Schema<SessionSchema, mongoose71.Model<SessionSchema, any, any, any, mongoose71.Document<unknown, any, SessionSchema, any, {}> & Omit<SessionData, "id"> & {
7
+ _id: mongoose71.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose38.Types.ObjectId;
9
+ _id: mongoose71.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose38.DefaultSchemaOptions, SessionSchema, mongoose38.Document<unknown, {}, mongoose38.FlatRecord<SessionSchema>, {}, mongoose38.ResolveSchemaOptions<mongoose38.DefaultSchemaOptions>> & mongoose38.FlatRecord<SessionSchema> & Required<{
13
- _id: mongoose38.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose71.DefaultSchemaOptions, SessionSchema, mongoose71.Document<unknown, {}, mongoose71.FlatRecord<SessionSchema>, {}, mongoose71.ResolveSchemaOptions<mongoose71.DefaultSchemaOptions>> & mongoose71.FlatRecord<SessionSchema> & Required<{
13
+ _id: mongoose71.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,16 +1,16 @@
1
1
  import { Tag, TagSchema } from "../types/tag.types.js";
2
- import * as mongoose92 from "mongoose";
2
+ import * as mongoose82 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/tag.schema.d.ts
6
- declare const tagSchema: Schema<TagSchema, mongoose92.Model<TagSchema, any, any, any, mongoose92.Document<unknown, any, TagSchema, any, {}> & Omit<Tag, "id"> & {
7
- _id: mongoose92.Types.ObjectId;
6
+ declare const tagSchema: Schema<TagSchema, mongoose82.Model<TagSchema, any, any, any, mongoose82.Document<unknown, any, TagSchema, any, {}> & Omit<Tag, "id"> & {
7
+ _id: mongoose82.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose92.Types.ObjectId;
9
+ _id: mongoose82.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose92.DefaultSchemaOptions, TagSchema, mongoose92.Document<unknown, {}, mongoose92.FlatRecord<TagSchema>, {}, mongoose92.ResolveSchemaOptions<mongoose92.DefaultSchemaOptions>> & mongoose92.FlatRecord<TagSchema> & Required<{
13
- _id: mongoose92.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose82.DefaultSchemaOptions, TagSchema, mongoose82.Document<unknown, {}, mongoose82.FlatRecord<TagSchema>, {}, mongoose82.ResolveSchemaOptions<mongoose82.DefaultSchemaOptions>> & mongoose82.FlatRecord<TagSchema> & Required<{
13
+ _id: mongoose82.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,16 +1,16 @@
1
1
  import { User, UserSchema } from "../types/user.types.js";
2
- import * as mongoose81 from "mongoose";
2
+ import * as mongoose49 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/user.schema.d.ts
6
- declare const userSchema: Schema<UserSchema, mongoose81.Model<UserSchema, any, any, any, mongoose81.Document<unknown, any, UserSchema, any, {}> & Omit<User, "id"> & {
7
- _id: mongoose81.Types.ObjectId;
6
+ declare const userSchema: Schema<UserSchema, mongoose49.Model<UserSchema, any, any, any, mongoose49.Document<unknown, any, UserSchema, any, {}> & Omit<User, "id"> & {
7
+ _id: mongoose49.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose81.Types.ObjectId;
9
+ _id: mongoose49.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose81.DefaultSchemaOptions, UserSchema, mongoose81.Document<unknown, {}, mongoose81.FlatRecord<UserSchema>, {}, mongoose81.ResolveSchemaOptions<mongoose81.DefaultSchemaOptions>> & mongoose81.FlatRecord<UserSchema> & Required<{
13
- _id: mongoose81.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose49.DefaultSchemaOptions, UserSchema, mongoose49.Document<unknown, {}, mongoose49.FlatRecord<UserSchema>, {}, mongoose49.ResolveSchemaOptions<mongoose49.DefaultSchemaOptions>> & mongoose49.FlatRecord<UserSchema> & Required<{
13
+ _id: mongoose49.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -3,9 +3,9 @@ import { AIConfig, AIOptions, AIProvider, TranslateJSONResultData } from "@intla
3
3
  import { Locale } from "@intlayer/types";
4
4
 
5
5
  //#region src/utils/AI/translateJSON/index.d.ts
6
- type TranslateJSONOptions = {
7
- entryFileContent: JSON;
8
- presetOutputContent: JSON;
6
+ type TranslateJSONOptions<T = JSON> = {
7
+ entryFileContent: T;
8
+ presetOutputContent: Partial<T>;
9
9
  dictionaryDescription?: string;
10
10
  entryLocale: Locale;
11
11
  outputLocale: Locale;
@@ -20,7 +20,7 @@ declare const aiDefaultOptions: AIOptions;
20
20
  * The prompt includes details about the project's locales, file paths of content declarations,
21
21
  * and requests for identifying issues or inconsistencies.
22
22
  */
23
- declare const translateJSON: (options: TranslateJSONOptions) => Promise<TranslateJSONResultData | undefined>;
23
+ declare const translateJSON: <T = JSON>(options: TranslateJSONOptions<T>) => Promise<TranslateJSONResultData<T> | undefined>;
24
24
  //#endregion
25
25
  export { AIProvider, TranslateJSONOptions, type TranslateJSONResultData, aiDefaultOptions, translateJSON };
26
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/utils/AI/translateJSON/index.ts"],"sourcesContent":[],"mappings":";;;;;KAWY,oBAAA;oBACQ;EADR,mBAAA,EAEW,IAFS;EACZ,qBAAA,CAAA,EAAA,MAAA;EACG,WAAA,EAER,MAFQ;EAER,YAAA,EACC,MADD;EACC,IAAA,EACR,GADQ,EAAA;EACR,QAAA,EACI,QADJ;EACI,IAAA,EAAA,UAAA,GAAA,QAAA;EAAQ,kBAAA,CAAA,EAAA,MAAA;AAOpB,CAAA;AAWW,cAXE,gBAWF,EAXoB,SAWpB;;;;;;cADE,yBACF,yBACR,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/utils/AI/translateJSON/index.ts"],"sourcesContent":[],"mappings":";;;;;KAWY,yBAAyB;oBACjB;EADR,mBAAA,EAEW,OAFS,CAED,CAFC,CAAA;EAAK,qBAAA,CAAA,EAAA,MAAA;EACjB,WAAA,EAGL,MAHK;EACW,YAAA,EAGf,MAHe;EAAR,IAAA,EAIf,GAJe,EAAA;EAER,QAAA,EAGH,QAHG;EACC,IAAA,EAAA,UAAA,GAAA,QAAA;EACR,kBAAA,CAAA,EAAA,MAAA;CACI;AAOC,cAAA,gBAAkB,EAAA,SAG9B;AAOD;;;;;AAEW,cAFE,aAEF,EAAA,CAAA,IAF6B,IAE7B,CAAA,CAAA,OAAA,EADA,oBACA,CADqB,CACrB,CAAA,EAAA,GAAR,OAAQ,CAAA,uBAAA,CAAwB,CAAxB,CAAA,GAAA,SAAA,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { Project } from "../../types/project.types.js";
2
2
  import { ResponseWithSession } from "../../middlewares/sessionAuth.middleware.js";
3
3
  import { FiltersAndPagination } from "./getFiltersAndPaginationFromBody.js";
4
- import * as mongoose107 from "mongoose";
4
+ import * as mongoose108 from "mongoose";
5
5
  import { RootFilterQuery } from "mongoose";
6
6
  import { Request } from "express";
7
7
 
@@ -30,7 +30,7 @@ declare const getProjectFiltersAndPagination: (req: Request<FiltersAndPagination
30
30
  skip: number;
31
31
  pageSize: number;
32
32
  getNumberOfPages: (totalItems: number) => number;
33
- filters: mongoose107.FilterQuery<Project>;
33
+ filters: mongoose108.FilterQuery<Project>;
34
34
  sortOptions: Record<string, 1 | -1>;
35
35
  };
36
36
  //#endregion
@@ -1,7 +1,7 @@
1
1
  import { Tag } from "../../types/tag.types.js";
2
2
  import { ResponseWithSession } from "../../middlewares/sessionAuth.middleware.js";
3
3
  import { FiltersAndPagination } from "./getFiltersAndPaginationFromBody.js";
4
- import * as mongoose108 from "mongoose";
4
+ import * as mongoose107 from "mongoose";
5
5
  import { RootFilterQuery } from "mongoose";
6
6
  import { Request } from "express";
7
7
 
@@ -28,7 +28,7 @@ declare const getTagFiltersAndPagination: (req: Request<FiltersAndPagination<Tag
28
28
  skip: number;
29
29
  pageSize: number;
30
30
  getNumberOfPages: (totalItems: number) => number;
31
- filters: mongoose108.FilterQuery<Tag>;
31
+ filters: mongoose107.FilterQuery<Tag>;
32
32
  sortOptions: Record<string, 1 | -1>;
33
33
  };
34
34
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/backend",
3
- "version": "7.5.2-canary.0",
3
+ "version": "7.5.3",
4
4
  "private": false,
5
5
  "description": "Intlayer Backend is a an application that allow you to manage your Intlayer content and interact with the intlayer editor.",
6
6
  "keywords": [
@@ -77,7 +77,7 @@
77
77
  "@better-auth/core": "1.4.7",
78
78
  "@better-auth/passkey": "1.4.7",
79
79
  "@better-auth/sso": "1.4.7",
80
- "@intlayer/ai": "7.5.2-canary.0",
80
+ "@intlayer/ai": "7.5.3",
81
81
  "@react-email/components": "1.0.1",
82
82
  "better-auth": "1.4.7",
83
83
  "compression": "1.8.1",
@@ -86,7 +86,7 @@
86
86
  "cross-env": "10.1.0",
87
87
  "dotenv": "16.6.1",
88
88
  "express": "5.2.1",
89
- "express-intlayer": "7.5.2-canary.0",
89
+ "express-intlayer": "7.5.3",
90
90
  "express-rate-limit": "8.2.1",
91
91
  "helmet": "8.1.0",
92
92
  "mongodb": "6.21.0",
@@ -101,10 +101,10 @@
101
101
  "winston": "3.19.0"
102
102
  },
103
103
  "devDependencies": {
104
- "@intlayer/config": "7.5.2-canary.0",
105
- "@intlayer/core": "7.5.2-canary.0",
106
- "@intlayer/docs": "7.5.2-canary.0",
107
- "@intlayer/types": "7.5.2-canary.0",
104
+ "@intlayer/config": "7.5.3",
105
+ "@intlayer/core": "7.5.3",
106
+ "@intlayer/docs": "7.5.3",
107
+ "@intlayer/types": "7.5.3",
108
108
  "@types/body-parser": "1.19.6",
109
109
  "@types/compression": "1.8.1",
110
110
  "@types/cookie-parser": "1.4.10",
@@ -119,10 +119,10 @@
119
119
  "@utils/ts-config": "1.0.4",
120
120
  "@utils/ts-config-types": "1.0.4",
121
121
  "@utils/tsdown-config": "1.0.4",
122
- "intlayer": "7.5.2-canary.0",
122
+ "intlayer": "7.5.3",
123
123
  "npm-run-all": "^4.1.5",
124
124
  "rimraf": "6.1.2",
125
- "tsdown": "0.18.1",
125
+ "tsdown": "0.18.2",
126
126
  "tsx": "^4.20.6",
127
127
  "typescript": "5.9.3",
128
128
  "vitest": "4.0.16"