@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.
- package/dist/esm/controllers/ai.controller.mjs.map +1 -1
- package/dist/esm/utils/AI/translateJSON/index.mjs.map +1 -1
- package/dist/types/controllers/ai.controller.d.ts +2 -2
- package/dist/types/controllers/ai.controller.d.ts.map +1 -1
- package/dist/types/controllers/project.controller.d.ts.map +1 -1
- package/dist/types/emails/InviteUserEmail.d.ts +4 -4
- package/dist/types/emails/MagicLinkEmail.d.ts +4 -4
- package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +4 -4
- package/dist/types/emails/PasswordChangeConfirmation.d.ts +4 -4
- package/dist/types/emails/ResetUserPassword.d.ts +4 -4
- package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +4 -4
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentError.d.ts +4 -4
- package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +4 -4
- package/dist/types/emails/ValidateUserEmail.d.ts +4 -4
- package/dist/types/emails/Welcome.d.ts +4 -4
- package/dist/types/models/discussion.model.d.ts +2 -2
- package/dist/types/models/discussion.model.d.ts.map +1 -1
- package/dist/types/models/oAuth2.model.d.ts +3 -3
- package/dist/types/schemas/dictionary.schema.d.ts +6 -6
- package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
- package/dist/types/schemas/discussion.schema.d.ts +6 -6
- package/dist/types/schemas/oAuth2.schema.d.ts +5 -5
- package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
- package/dist/types/schemas/organization.schema.d.ts +6 -6
- package/dist/types/schemas/plans.schema.d.ts +6 -6
- package/dist/types/schemas/project.schema.d.ts +6 -6
- package/dist/types/schemas/session.schema.d.ts +6 -6
- package/dist/types/schemas/tag.schema.d.ts +6 -6
- package/dist/types/schemas/user.schema.d.ts +6 -6
- package/dist/types/services/email.service.d.ts +11 -11
- package/dist/types/utils/AI/translateJSON/index.d.ts +4 -4
- package/dist/types/utils/AI/translateJSON/index.d.ts.map +1 -1
- package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +2 -2
- package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +2 -2
- 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:
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;KAoCK,8BAA8B,KAAK;cAC1B;AAHuC,CAAA;AAEb,KAI5B,eAAA,GACV,wBALsC,CAKb,kBALa,CAAA,GAAA;EAAL,QAAA,CAAA,EAAA,MAAA,EAAA;EACrB,kBAAA,CAAA,EAAA,MAAA;CAAS;AAGX,KAKA,iBAAA,GACV,YALyB,CAKZ,qBALW,CAAA;AAId,cAGC,WAHgB,EAAA,
|
|
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,
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
46
|
+
}: InviteUserEmailProps): react_jsx_runtime5.JSX.Element;
|
|
47
47
|
PreviewProps: InviteUserEmailProps;
|
|
48
48
|
};
|
|
49
49
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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):
|
|
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):
|
|
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):
|
|
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,
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
42
|
+
}: OAuthTokenCreatedEmailProps): react_jsx_runtime11.JSX.Element;
|
|
43
43
|
PreviewProps: OAuthTokenCreatedEmailProps;
|
|
44
44
|
};
|
|
45
45
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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):
|
|
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):
|
|
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):
|
|
22
|
+
}: PasswordChangeConfirmationEmailProps): react_jsx_runtime2.JSX.Element;
|
|
23
23
|
PreviewProps: PasswordChangeConfirmationEmailProps;
|
|
24
24
|
};
|
|
25
25
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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):
|
|
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):
|
|
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):
|
|
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,
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
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,
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
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,
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
39
|
+
}: SubscriptionPaymentSuccessProps): react_jsx_runtime17.JSX.Element;
|
|
40
40
|
PreviewProps: SubscriptionPaymentSuccessProps;
|
|
41
41
|
};
|
|
42
42
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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):
|
|
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):
|
|
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):
|
|
26
|
+
}: ValidateUserEmailProps): react_jsx_runtime36.JSX.Element;
|
|
27
27
|
PreviewProps: ValidateUserEmailProps;
|
|
28
28
|
};
|
|
29
29
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
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):
|
|
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):
|
|
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):
|
|
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
|
|
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, {}, {}, {},
|
|
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,
|
|
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
|
|
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, {}, {}, {},
|
|
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:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose14.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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,
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose99.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
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:
|
|
15
|
+
_id: mongoose4.Types.ObjectId;
|
|
16
16
|
} & {
|
|
17
17
|
__v: number;
|
|
18
|
-
}, any>, {}, {}, {}, {},
|
|
19
|
-
_id:
|
|
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,
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose25.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose36.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose47.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose58.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose80.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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,
|
|
7
|
-
_id:
|
|
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:
|
|
9
|
+
_id: mongoose69.Types.ObjectId;
|
|
10
10
|
}> & {
|
|
11
11
|
__v: number;
|
|
12
|
-
}, any>, {}, {}, {}, {},
|
|
13
|
-
_id:
|
|
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
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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:
|
|
8
|
-
presetOutputContent:
|
|
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,
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
105
|
-
"@intlayer/core": "7.5.2
|
|
106
|
-
"@intlayer/docs": "7.5.2
|
|
107
|
-
"@intlayer/types": "7.5.2
|
|
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
|
|
122
|
+
"intlayer": "7.5.2",
|
|
123
123
|
"npm-run-all": "^4.1.5",
|
|
124
124
|
"rimraf": "6.1.2",
|
|
125
|
-
"tsdown": "0.18.
|
|
125
|
+
"tsdown": "0.18.2",
|
|
126
126
|
"tsx": "^4.20.6",
|
|
127
127
|
"typescript": "5.9.3",
|
|
128
128
|
"vitest": "4.0.16"
|