@intlayer/backend 7.5.2-canary.0 → 7.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) 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/emails/InviteUserEmail.d.ts +4 -4
  7. package/dist/types/emails/MagicLinkEmail.d.ts +4 -4
  8. package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
  9. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
  10. package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
  11. package/dist/types/emails/ResetUserPassword.d.ts +4 -4
  12. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
  13. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
  14. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
  15. package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
  16. package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
  17. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
  18. package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
  19. package/dist/types/emails/Welcome.d.ts +4 -4
  20. package/dist/types/models/discussion.model.d.ts +2 -2
  21. package/dist/types/models/discussion.model.d.ts.map +1 -1
  22. package/dist/types/models/oAuth2.model.d.ts +3 -3
  23. package/dist/types/schemas/dictionary.schema.d.ts +6 -6
  24. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
  25. package/dist/types/schemas/discussion.schema.d.ts +6 -6
  26. package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
  27. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
  28. package/dist/types/schemas/organization.schema.d.ts +6 -6
  29. package/dist/types/schemas/plans.schema.d.ts +6 -6
  30. package/dist/types/schemas/project.schema.d.ts +6 -6
  31. package/dist/types/schemas/session.schema.d.ts +6 -6
  32. package/dist/types/schemas/tag.schema.d.ts +6 -6
  33. package/dist/types/schemas/user.schema.d.ts +6 -6
  34. package/dist/types/services/email.service.d.ts +11 -11
  35. package/dist/types/utils/AI/translateJSON/index.d.ts +4 -4
  36. package/dist/types/utils/AI/translateJSON/index.d.ts.map +1 -1
  37. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +2 -2
  38. package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts +2 -2
  39. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +2 -2
  40. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +2 -2
  41. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +2 -2
  42. 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":";;;;;;;;;KA+BY,iBAAA,GAAoB,qBAAqB;KACzC,iBAAA,GAAoB,kBAAkB;AADlD;AACA;AAKA;AACe,cADF,WACE,EAAA,CAAA,GAAA,EAAR,OAAQ,CAAA,iBAAA,CAAA,EAAA,GAAA,EACR,mBADQ,CACY,iBADZ,CAAA,EAAA,KAAA,EAEN,YAFM,EAAA,GAGZ,OAHY,CAAA,IAAA,CAAA;AAAR,KA2DK,cAAA,GAAiB,mBA3DtB;AACoB,KA2Df,gBAAA,GAAmB,YA3DJ,CA2DiB,UA3DjB,CAAA;;;;AAEjB,cA8DG,UA9DH,EAAA,CAAA,GAAA,EA+DH,OA/DG,CAAA,GAAA,EAAA,GAAA,EA+De,cA/Df,CAAA,EAAA,GAAA,EAgEH,mBAhEG,CAgEiB,gBAhEjB,CAAA,EAAA,KAAA,EAiED,YAjEC,EAAA,GAkEP,OAlEO,CAAA,IAAA,CAAA;AAwDE,KAiGA,iBAAA,GAAoB,OAjGH,CAiGW,UAjGX,CAAA;AACjB,KAiGA,mBAAA,GAAsB,YAjGH,CAiGgB,UAjGhB,CAAA;AAK/B;;;AAE2B,cA+Fd,aA/Fc,EAAA,CAAA,GAAA,EAgGpB,OAhGoB,CAAA,GAAA,EAAA,GAAA,EAgGF,iBAhGE,CAAA,EAAA,GAAA,EAiGpB,mBAjGoB,CAiGA,mBAjGA,CAAA,EAAA,KAAA,EAkGlB,YAlGkB,EAAA,GAmGxB,OAnGwB,CAAA,IAAA,CAAA;AAApB,KAuKK,uBAAA,GAvKL;EACE,MAAA,EAAA,MAAA,GAuKU,KAAA,CAAM,QAvKhB;EACN,OAAA,CAAA,EAAA,OAAA;CAAO;AAuFE,KAmFA,wBAAA,GAA2B,OAnFC,CAAR;EACpB,UAAA,EAmFE,uBAnFiC,EAAA;AAK/C,CAAA,CAAA;AACyB,KA+Eb,0BAAA,GAA6B,YA/EhB,CA+E6B,UA/E7B,CAAA;;;;AAEhB,cAkFI,oBAlFJ,EAAA,CAAA,GAAA,EAmFF,OAnFE,CAAA,GAAA,EAAA,GAAA,EAmFgB,wBAnFhB,CAAA,EAAA,GAAA,EAoFF,mBApFE,CAoFkB,0BApFlB,CAAA,EAAA,KAAA,EAqFA,YArFA,EAAA,GAsFN,OAtFM,CAAA,IAAA,CAAA;AACN,KAkMS,4BAAA,GAA+B,oBAlMxC;AAAO,KAmME,8BAAA,GAAiC,YAnMnC,CAmMgD,oBAnMhD,CAAA;AAoEV;AAKA;AAGA;AAKA;;;AAE2B,cAwHd,wBAxHc,EAAA,CAAA,GAAA,EAyHpB,OAzHoB,CAAA,GAAA,EAAA,GAAA,EAyHF,4BAzHE,CAAA,EAAA,GAAA,EA0HpB,mBA1HoB,CA0HA,8BA1HA,CAAA,EAAA,KAAA,EA2HlB,YA3HkB,EAAA,GA4HxB,OA5HwB,CAAA,IAAA,CAAA;AAApB,KA0LK,mBAAA,GAAsB,YA1L3B,CA0LwC,UA1LxC,CAAA;;;;AA+GP;AACA;AAQA;AACyB,cAyEZ,aAzEY,EAAA,CAAA,IAAA,EA0EjB,OA1EiB,EAAA,GAAA,EA2ElB,mBA3EkB,CA2EE,mBA3EF,CAAA,EAAA,KAAA,EA4EhB,YA5EgB,EAAA,GA6EtB,OA7EsB,CAAA,IAAA,CAAA;AAAlB,KAmKK,kBAAA,GAnKL;EACoB,SAAA,EAAA,MAAA,GAkK4B,KAAA,CAAM,QAlKlC;CAApB;AACE,KAkKG,mBAAA,GAAsB,YAlKzB,CAkKsC,UAlKtC,CAAA;;;AA+DT;AAQa,cAgGA,aARZ,EAAA,CAAA,GAAA,EASM,OATN,CASc,kBATd,CAAA,EAAA,GAAA,EAUM,mBAVN,CAU0B,mBAV1B,CAAA,EAAA,KAAA,EAWQ,YAXR,EAAA,GAWoB,OAXpB,CAAA,IAAA,CAAA;AAvFO,KA+II,qBAAA,GAAwB,YA/I5B,CAAA,IAAA,CAAA;;;;AAGL,cAiJU,eAjJV,EAAA,CAAA,IAAA,EAkJK,OAlJL,EAAA,GAAA,EAmJI,mBAnJJ,CAmJwB,qBAnJxB,CAAA,EAAA,KAAA,EAoJM,YApJN,EAAA,GAoJkB,OApJlB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"project.controller.d.ts","names":[],"sources":["../../../src/controllers/project.controller.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/InviteUserEmail.d.ts
4
4
  type InviteUserEmailProps = {
@@ -19,7 +19,7 @@ declare const InviteUserEmailEN: {
19
19
  inviteLink,
20
20
  inviteFromIp,
21
21
  inviteFromLocation
22
- }: InviteUserEmailProps): react_jsx_runtime0.JSX.Element;
22
+ }: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
23
23
  PreviewProps: InviteUserEmailProps;
24
24
  };
25
25
  declare const InviteUserEmailFR: {
@@ -31,7 +31,7 @@ declare const InviteUserEmailFR: {
31
31
  inviteLink,
32
32
  inviteFromIp,
33
33
  inviteFromLocation
34
- }: InviteUserEmailProps): react_jsx_runtime0.JSX.Element;
34
+ }: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
35
35
  PreviewProps: InviteUserEmailProps;
36
36
  };
37
37
  declare const InviteUserEmailES: {
@@ -43,7 +43,7 @@ declare const InviteUserEmailES: {
43
43
  inviteLink,
44
44
  inviteFromIp,
45
45
  inviteFromLocation
46
- }: InviteUserEmailProps): react_jsx_runtime0.JSX.Element;
46
+ }: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
47
47
  PreviewProps: InviteUserEmailProps;
48
48
  };
49
49
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime23 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/emails/MagicLinkEmail.d.ts
4
4
  type MagicLinkEmailProps = {
@@ -9,21 +9,21 @@ declare const MagicLinkEmailEN: {
9
9
  ({
10
10
  username,
11
11
  magicLink
12
- }: MagicLinkEmailProps): react_jsx_runtime23.JSX.Element;
12
+ }: MagicLinkEmailProps): react_jsx_runtime0.JSX.Element;
13
13
  PreviewProps: MagicLinkEmailProps;
14
14
  };
15
15
  declare const MagicLinkEmailFR: {
16
16
  ({
17
17
  username,
18
18
  magicLink
19
- }: MagicLinkEmailProps): react_jsx_runtime23.JSX.Element;
19
+ }: MagicLinkEmailProps): react_jsx_runtime0.JSX.Element;
20
20
  PreviewProps: MagicLinkEmailProps;
21
21
  };
22
22
  declare const MagicLinkEmailES: {
23
23
  ({
24
24
  username,
25
25
  magicLink
26
- }: MagicLinkEmailProps): react_jsx_runtime23.JSX.Element;
26
+ }: MagicLinkEmailProps): react_jsx_runtime0.JSX.Element;
27
27
  PreviewProps: MagicLinkEmailProps;
28
28
  };
29
29
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"MagicLinkEmail.d.ts","names":[],"sources":["../../../src/emails/MagicLinkEmail.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,mBAAA;;;AAAZ,CAAA;AAKa,cAAA,gBAgEZ,EAAA;;;;KA7DE,sBAAmB,mBAAA,CAAA,GAAA,CAAA;;CAAnB;AAAmB,cA+DT,gBA/DS,EAAA;;;;KAkEnB,sBAAmB,mBAAA,CAAA,GAAA,CAAA;;AAHtB,CAAA;cAiEa;;;;KAGV,sBAAmB,mBAAA,CAAA,GAAA,CAAA;EAjEnB,YAAA,qBAAA;CAAmB"}
1
+ {"version":3,"file":"MagicLinkEmail.d.ts","names":[],"sources":["../../../src/emails/MagicLinkEmail.tsx"],"sourcesContent":[],"mappings":";;;KAgBY,mBAAA;;;AAAZ,CAAA;AAKa,cAAA,gBAgEZ,EAAA;;;;KA7DE,sBAAmB,kBAAA,CAAA,GAAA,CAAA;;CAAnB;AAAmB,cA+DT,gBA/DS,EAAA;;;;KAkEnB,sBAAmB,kBAAA,CAAA,GAAA,CAAA;;AAHtB,CAAA;cAiEa;;;;KAGV,sBAAmB,kBAAA,CAAA,GAAA,CAAA;EAjEnB,YAAA,qBAAA;CAAmB"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime26 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime11 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_runtime11.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_runtime11.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_runtime11.JSX.Element;
43
43
  PreviewProps: OAuthTokenCreatedEmailProps;
44
44
  };
45
45
  //#endregion
@@ -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_runtime8 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_runtime8.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_runtime8.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_runtime8.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_runtime14 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_runtime14.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_runtime14.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_runtime14.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_runtime17 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_runtime17.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_runtime17.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_runtime17.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_runtime36 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_runtime36.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_runtime36.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_runtime36.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_runtime23 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_runtime23.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_runtime23.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_runtime23.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 mongoose91 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, {}, {}, {}, mongoose91.Document<unknown, {}, Discussion, {}, {}> & Discussion & Required<{
7
7
  _id: unknown;
8
8
  }> & {
9
9
  __v: number;
@@ -1 +1 @@
1
- {"version":3,"file":"discussion.model.d.ts","names":[],"sources":["../../../src/models/discussion.model.ts"],"sourcesContent":[],"mappings":";;;;;cAKa,iBAAe,MAAA,wBAAA,SAAA,CAAA,sBAAA,sBAAA,aAAA;;;EAAf,GAAA,EAAA,MAAA;CAAe,EAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"discussion.model.d.ts","names":[],"sources":["../../../src/models/discussion.model.ts"],"sourcesContent":[],"mappings":";;;;;cAKa,iBAAe,MAAA,wBAAA,UAAA,CAAA,sBAAA,sBAAA,aAAA;;;EAAf,GAAA,EAAA,MAAA;CAAe,EAAA,GAAA,CAAA"}
@@ -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 mongoose14 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, mongoose14.Model<DictionarySchema, any, any, any, mongoose14.Document<unknown, any, DictionarySchema, any, {}> & Omit<Dictionary, "id"> & {
7
+ _id: mongoose14.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose5.Types.ObjectId;
9
+ _id: mongoose14.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>, {}, {}, {}, {}, mongoose14.DefaultSchemaOptions, DictionarySchema, mongoose14.Document<unknown, {}, mongoose14.FlatRecord<DictionarySchema>, {}, mongoose14.ResolveSchemaOptions<mongoose14.DefaultSchemaOptions>> & mongoose14.FlatRecord<DictionarySchema> & Required<{
13
+ _id: mongoose14.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 mongoose99 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, mongoose99.Model<DiscussionSchema, any, any, any, mongoose99.Document<unknown, any, DiscussionSchema, any, {}> & Omit<Discussion, "id"> & {
7
+ _id: mongoose99.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose16.Types.ObjectId;
9
+ _id: mongoose99.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>, {}, {}, {}, {}, mongoose99.DefaultSchemaOptions, DiscussionSchema, mongoose99.Document<unknown, {}, mongoose99.FlatRecord<DiscussionSchema>, {}, mongoose99.ResolveSchemaOptions<mongoose99.DefaultSchemaOptions>> & mongoose99.FlatRecord<DiscussionSchema> & Required<{
13
+ _id: mongoose99.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,5 +1,5 @@
1
1
  import { User } from "../types/user.types.js";
2
- import * as mongoose49 from "mongoose";
2
+ import * as mongoose4 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, mongoose4.Model<Token, any, any, any, mongoose4.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: mongoose4.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>, {}, {}, {}, {}, mongoose4.DefaultSchemaOptions, Token, mongoose4.Document<unknown, {}, mongoose4.FlatRecord<Token>, {}, mongoose4.ResolveSchemaOptions<mongoose4.DefaultSchemaOptions>> & mongoose4.FlatRecord<Token> & {
19
+ _id: mongoose4.Types.ObjectId;
20
20
  } & {
21
21
  __v: number;
22
22
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"oAuth2.schema.d.ts","names":[],"sources":["../../../src/schemas/oAuth2.schema.ts"],"sourcesContent":[],"mappings":";;;;;;KAIY,KAAA,GAAQ,KAAK;YACb;UACF;AAFV,CAAA;AAAyB,cAKZ,iBALY,EAKK,MALL,CAKK,KALL,aAKK,KALL,CAKK,KALL,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAKK,UAAA,CAAA,QALL,CAAA,OAAA,EAAA,GAAA,EAKK,KALL,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,GAKK,IALL,CAKK,OALL,EAAA,MAAA,GAAA,QAAA,CAAA,GAAA;EAAL,QAAA,EACR,MADQ,CAAA,IAAA,CAAA;EACR,MAAA,EACF,IADE,CAAA,IAAA,CAAA;CACF,GAAA;EAAI,GAAA,2BAAA;AAGd,CAAA,GAAa;EAAiB,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,oBAAA,OAAA,qBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,uBAAA,MAAA,CAAA,EAAA,CAAA,CAAA,iCAAA,iCAAA,CAAA,wBAAA,MAAA,CAAA,GAAA;EAAA,GAAA,2BAAA;CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,CAAA"}
1
+ {"version":3,"file":"oAuth2.schema.d.ts","names":[],"sources":["../../../src/schemas/oAuth2.schema.ts"],"sourcesContent":[],"mappings":";;;;;;KAIY,KAAA,GAAQ,KAAK;YACb;UACF;AAFV,CAAA;AAAyB,cAKZ,iBALY,EAKK,MALL,CAKK,KALL,YAKK,KALL,CAKK,KALL,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAKK,SAAA,CAAA,QALL,CAAA,OAAA,EAAA,GAAA,EAKK,KALL,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,GAKK,IALL,CAKK,OALL,EAAA,MAAA,GAAA,QAAA,CAAA,GAAA;EAAL,QAAA,EACR,MADQ,CAAA,IAAA,CAAA;EACR,MAAA,EACF,IADE,CAAA,IAAA,CAAA;CACF,GAAA;EAAI,GAAA,0BAAA;AAGd,CAAA,GAAa;EAAiB,GAAA,EAAA,MAAA;CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,oBAAA,OAAA,oBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,sBAAA,MAAA,CAAA,EAAA,CAAA,CAAA,gCAAA,gCAAA,CAAA,uBAAA,MAAA,CAAA,GAAA;EAAA,GAAA,0BAAA;CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;CAAA,CAAA"}
@@ -1,16 +1,16 @@
1
1
  import { Organization, OrganizationSchema } from "../types/organization.types.js";
2
- import * as mongoose27 from "mongoose";
2
+ import * as mongoose25 from "mongoose";
3
3
  import { Schema } from "mongoose";
4
4
 
5
5
  //#region src/schemas/organization.schema.d.ts
6
- declare const organizationSchema: Schema<OrganizationSchema, mongoose27.Model<OrganizationSchema, any, any, any, mongoose27.Document<unknown, any, OrganizationSchema, any, {}> & Omit<Organization, "id"> & {
7
- _id: mongoose27.Types.ObjectId;
6
+ declare const organizationSchema: Schema<OrganizationSchema, mongoose25.Model<OrganizationSchema, any, any, any, mongoose25.Document<unknown, any, OrganizationSchema, any, {}> & Omit<Organization, "id"> & {
7
+ _id: mongoose25.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose27.Types.ObjectId;
9
+ _id: mongoose25.Types.ObjectId;
10
10
  }> & {
11
11
  __v: number;
12
- }, any>, {}, {}, {}, {}, mongoose27.DefaultSchemaOptions, OrganizationSchema, mongoose27.Document<unknown, {}, mongoose27.FlatRecord<OrganizationSchema>, {}, mongoose27.ResolveSchemaOptions<mongoose27.DefaultSchemaOptions>> & mongoose27.FlatRecord<OrganizationSchema> & Required<{
13
- _id: mongoose27.Types.ObjectId;
12
+ }, any>, {}, {}, {}, {}, mongoose25.DefaultSchemaOptions, OrganizationSchema, mongoose25.Document<unknown, {}, mongoose25.FlatRecord<OrganizationSchema>, {}, mongoose25.ResolveSchemaOptions<mongoose25.DefaultSchemaOptions>> & mongoose25.FlatRecord<OrganizationSchema> & Required<{
13
+ _id: mongoose25.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -1,16 +1,16 @@
1
1
  import { Plan, PlanSchema } from "../types/plan.types.js";
2
- import * as mongoose59 from "mongoose";
2
+ import * as mongoose36 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, mongoose36.Model<PlanSchema, any, any, any, mongoose36.Document<unknown, any, PlanSchema, any, {}> & Omit<Plan, "id"> & {
7
+ _id: mongoose36.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose59.Types.ObjectId;
9
+ _id: mongoose36.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>, {}, {}, {}, {}, mongoose36.DefaultSchemaOptions, PlanSchema, mongoose36.Document<unknown, {}, mongoose36.FlatRecord<PlanSchema>, {}, mongoose36.ResolveSchemaOptions<mongoose36.DefaultSchemaOptions>> & mongoose36.FlatRecord<PlanSchema> & Required<{
13
+ _id: mongoose36.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 mongoose47 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, mongoose47.Model<ProjectSchema, any, any, any, mongoose47.Document<unknown, any, ProjectSchema, any, {}> & Omit<Project, "id"> & {
7
+ _id: mongoose47.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose70.Types.ObjectId;
9
+ _id: mongoose47.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>, {}, {}, {}, {}, mongoose47.DefaultSchemaOptions, ProjectSchema, mongoose47.Document<unknown, {}, mongoose47.FlatRecord<ProjectSchema>, {}, mongoose47.ResolveSchemaOptions<mongoose47.DefaultSchemaOptions>> & mongoose47.FlatRecord<ProjectSchema> & Required<{
13
+ _id: mongoose47.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 mongoose58 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, mongoose58.Model<SessionSchema, any, any, any, mongoose58.Document<unknown, any, SessionSchema, any, {}> & Omit<SessionData, "id"> & {
7
+ _id: mongoose58.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose38.Types.ObjectId;
9
+ _id: mongoose58.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>, {}, {}, {}, {}, mongoose58.DefaultSchemaOptions, SessionSchema, mongoose58.Document<unknown, {}, mongoose58.FlatRecord<SessionSchema>, {}, mongoose58.ResolveSchemaOptions<mongoose58.DefaultSchemaOptions>> & mongoose58.FlatRecord<SessionSchema> & Required<{
13
+ _id: mongoose58.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 mongoose80 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, mongoose80.Model<TagSchema, any, any, any, mongoose80.Document<unknown, any, TagSchema, any, {}> & Omit<Tag, "id"> & {
7
+ _id: mongoose80.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose92.Types.ObjectId;
9
+ _id: mongoose80.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>, {}, {}, {}, {}, mongoose80.DefaultSchemaOptions, TagSchema, mongoose80.Document<unknown, {}, mongoose80.FlatRecord<TagSchema>, {}, mongoose80.ResolveSchemaOptions<mongoose80.DefaultSchemaOptions>> & mongoose80.FlatRecord<TagSchema> & Required<{
13
+ _id: mongoose80.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 mongoose69 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, mongoose69.Model<UserSchema, any, any, any, mongoose69.Document<unknown, any, UserSchema, any, {}> & Omit<User, "id"> & {
7
+ _id: mongoose69.Types.ObjectId;
8
8
  } & Required<{
9
- _id: mongoose81.Types.ObjectId;
9
+ _id: mongoose69.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>, {}, {}, {}, {}, mongoose69.DefaultSchemaOptions, UserSchema, mongoose69.Document<unknown, {}, mongoose69.FlatRecord<UserSchema>, {}, mongoose69.ResolveSchemaOptions<mongoose69.DefaultSchemaOptions>> & mongoose69.FlatRecord<UserSchema> & Required<{
13
+ _id: mongoose69.Types.ObjectId;
14
14
  }> & {
15
15
  __v: number;
16
16
  }>;
@@ -9,7 +9,7 @@ import { SubscriptionPaymentSuccessProps } from "../emails/SubscriptionPaymentSu
9
9
  import { ValidateUserEmailProps } from "../emails/ValidateUserEmail.js";
10
10
  import { WelcomeEmailProps } from "../emails/Welcome.js";
11
11
  import { Locale } from "@intlayer/types";
12
- import * as react_jsx_runtime29 from "react/jsx-runtime";
12
+ import * as react_jsx_runtime26 from "react/jsx-runtime";
13
13
  import { ComponentProps } from "react";
14
14
 
15
15
  //#region src/services/email.service.d.ts
@@ -24,7 +24,7 @@ declare const getEmailComponents: (locale?: Locale) => {
24
24
  inviteLink,
25
25
  inviteFromIp,
26
26
  inviteFromLocation
27
- }: InviteUserEmailProps): react_jsx_runtime29.JSX.Element;
27
+ }: InviteUserEmailProps): react_jsx_runtime26.JSX.Element;
28
28
  PreviewProps: InviteUserEmailProps;
29
29
  };
30
30
  subject: string;
@@ -34,7 +34,7 @@ declare const getEmailComponents: (locale?: Locale) => {
34
34
  ({
35
35
  username,
36
36
  validationLink
37
- }: ValidateUserEmailProps): react_jsx_runtime29.JSX.Element;
37
+ }: ValidateUserEmailProps): react_jsx_runtime26.JSX.Element;
38
38
  PreviewProps: ValidateUserEmailProps;
39
39
  };
40
40
  subject: string;
@@ -44,7 +44,7 @@ declare const getEmailComponents: (locale?: Locale) => {
44
44
  ({
45
45
  username,
46
46
  resetLink
47
- }: ResetPasswordEmailProps): react_jsx_runtime29.JSX.Element;
47
+ }: ResetPasswordEmailProps): react_jsx_runtime26.JSX.Element;
48
48
  PreviewProps: ResetPasswordEmailProps;
49
49
  };
50
50
  subject: string;
@@ -54,7 +54,7 @@ declare const getEmailComponents: (locale?: Locale) => {
54
54
  ({
55
55
  username,
56
56
  loginLink
57
- }: WelcomeEmailProps): react_jsx_runtime29.JSX.Element;
57
+ }: WelcomeEmailProps): react_jsx_runtime26.JSX.Element;
58
58
  PreviewProps: WelcomeEmailProps;
59
59
  };
60
60
  subject: string;
@@ -64,7 +64,7 @@ declare const getEmailComponents: (locale?: Locale) => {
64
64
  ({
65
65
  username,
66
66
  magicLink
67
- }: MagicLinkEmailProps): react_jsx_runtime29.JSX.Element;
67
+ }: MagicLinkEmailProps): react_jsx_runtime26.JSX.Element;
68
68
  PreviewProps: MagicLinkEmailProps;
69
69
  };
70
70
  subject: string;
@@ -73,7 +73,7 @@ declare const getEmailComponents: (locale?: Locale) => {
73
73
  template: {
74
74
  ({
75
75
  username
76
- }: PasswordChangeConfirmationEmailProps): react_jsx_runtime29.JSX.Element;
76
+ }: PasswordChangeConfirmationEmailProps): react_jsx_runtime26.JSX.Element;
77
77
  PreviewProps: PasswordChangeConfirmationEmailProps;
78
78
  };
79
79
  subject: string;
@@ -86,7 +86,7 @@ declare const getEmailComponents: (locale?: Locale) => {
86
86
  organizationName,
87
87
  subscriptionStartDate,
88
88
  manageSubscriptionLink
89
- }: SubscriptionPaymentSuccessProps): react_jsx_runtime29.JSX.Element;
89
+ }: SubscriptionPaymentSuccessProps): react_jsx_runtime26.JSX.Element;
90
90
  PreviewProps: SubscriptionPaymentSuccessProps;
91
91
  };
92
92
  subject: string;
@@ -99,7 +99,7 @@ declare const getEmailComponents: (locale?: Locale) => {
99
99
  organizationName,
100
100
  cancellationDate,
101
101
  reactivateLink
102
- }: SubscriptionPaymentCancellationProps): react_jsx_runtime29.JSX.Element;
102
+ }: SubscriptionPaymentCancellationProps): react_jsx_runtime26.JSX.Element;
103
103
  PreviewProps: SubscriptionPaymentCancellationProps;
104
104
  };
105
105
  subject: string;
@@ -112,7 +112,7 @@ declare const getEmailComponents: (locale?: Locale) => {
112
112
  organizationName,
113
113
  errorDate,
114
114
  retryPaymentLink
115
- }: SubscriptionPaymentErrorProps): react_jsx_runtime29.JSX.Element;
115
+ }: SubscriptionPaymentErrorProps): react_jsx_runtime26.JSX.Element;
116
116
  PreviewProps: SubscriptionPaymentErrorProps;
117
117
  };
118
118
  subject: string;
@@ -126,7 +126,7 @@ declare const getEmailComponents: (locale?: Locale) => {
126
126
  tokenDetailsUrl,
127
127
  securityLogUrl,
128
128
  supportUrl
129
- }: OAuthTokenCreatedEmailProps): react_jsx_runtime29.JSX.Element;
129
+ }: OAuthTokenCreatedEmailProps): react_jsx_runtime26.JSX.Element;
130
130
  PreviewProps: OAuthTokenCreatedEmailProps;
131
131
  };
132
132
  subject: string;
@@ -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 { Dictionary } from "../../types/dictionary.types.js";
2
2
  import { ResponseWithSession } from "../../middlewares/sessionAuth.middleware.js";
3
3
  import { FiltersAndPagination } from "./getFiltersAndPaginationFromBody.js";
4
- import * as mongoose103 from "mongoose";
4
+ import * as mongoose97 from "mongoose";
5
5
  import { RootFilterQuery } from "mongoose";
6
6
  import { Request } from "express";
7
7
 
@@ -41,7 +41,7 @@ declare const getDictionaryFiltersAndPagination: (req: Request<FiltersAndPaginat
41
41
  skip: number;
42
42
  pageSize: number;
43
43
  getNumberOfPages: (totalItems: number) => number;
44
- filters: mongoose103.FilterQuery<Dictionary>;
44
+ filters: mongoose97.FilterQuery<Dictionary>;
45
45
  sortOptions: Record<string, 1 | -1>;
46
46
  };
47
47
  //#endregion
@@ -1,7 +1,7 @@
1
1
  import { ResponseWithSession } from "../../middlewares/sessionAuth.middleware.js";
2
2
  import { Discussion } from "../../types/discussion.types.js";
3
3
  import { FiltersAndPagination } from "./getFiltersAndPaginationFromBody.js";
4
- import * as mongoose104 from "mongoose";
4
+ import * as mongoose92 from "mongoose";
5
5
  import { RootFilterQuery } from "mongoose";
6
6
  import { Request } from "express";
7
7
 
@@ -30,7 +30,7 @@ declare const getDiscussionFiltersAndPagination: (req: Request<FiltersAndPaginat
30
30
  skip: number;
31
31
  pageSize: number;
32
32
  getNumberOfPages: (totalItems: number) => number;
33
- filters: mongoose104.Types.ObjectId | mongoose104.Query<any, any, {}, unknown, "find", Record<string, never>> | mongoose104.FilterQuery<Discussion>;
33
+ filters: mongoose92.Types.ObjectId | mongoose92.Query<any, any, {}, unknown, "find", Record<string, never>> | mongoose92.FilterQuery<Discussion>;
34
34
  sortOptions: Record<string, 1 | -1>;
35
35
  };
36
36
  //#endregion
@@ -1,7 +1,7 @@
1
1
  import { Organization } from "../../types/organization.types.js";
2
2
  import { ResponseWithSession } from "../../middlewares/sessionAuth.middleware.js";
3
3
  import { FiltersAndPagination } from "./getFiltersAndPaginationFromBody.js";
4
- import * as mongoose109 from "mongoose";
4
+ import * as mongoose95 from "mongoose";
5
5
  import { RootFilterQuery } from "mongoose";
6
6
  import { Request } from "express";
7
7
 
@@ -37,7 +37,7 @@ declare const getOrganizationFiltersAndPagination: (req: Request<FiltersAndPagin
37
37
  skip: number;
38
38
  pageSize: number;
39
39
  getNumberOfPages: (totalItems: number) => number;
40
- filters: mongoose109.FilterQuery<Organization>;
40
+ filters: mongoose95.FilterQuery<Organization>;
41
41
  sortOptions: Record<string, 1 | -1>;
42
42
  };
43
43
  //#endregion
@@ -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 mongoose98 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: mongoose98.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 mongoose96 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: mongoose96.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.2",
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.2",
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.2",
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.2",
105
+ "@intlayer/core": "7.5.2",
106
+ "@intlayer/docs": "7.5.2",
107
+ "@intlayer/types": "7.5.2",
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.2",
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"