mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 21:45:31 +09:00
refactor(imports): replace relative imports with path aliases (#2741)
This commit is contained in:
1 parent
a59b80ce11
commit
84dcf6b8a8
1834 files changed
+11601
-10725
No files matched your search
@@ -1,5 +1,28 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createChannelID} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import {
|
||||
type DmSearchScope,
|
||||
getDmChannelIdsForScope,
|
||||
isDmScopeChannelForUser,
|
||||
} from '@app/api/channel/services/message/DmScopeUtils';
|
||||
import type {GuildService} from '@app/api/guild/services/GuildService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '@app/api/models/Channel';
|
||||
import {getMessageSearchService} from '@app/api/SearchFactory';
|
||||
import {buildMessageSearchFilters} from '@app/api/search/BuildMessageSearchFilters';
|
||||
import {channelNeedsReindexing} from '@app/api/search/ChannelIndexingUtils';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
import {MessageSearchResponseMapper} from '@app/api/search/MessageSearchResponseMapper';
|
||||
import {searchExistingMessages} from '@app/api/search/MessageSearchResultReconciler';
|
||||
import {channelRequiresAgeVerification} from '@app/api/search/SearchNsfwUtils';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {canUserAccessNsfwContent} from '@app/api/utils/AgeUtils';
|
||||
import {mapWithConcurrency} from '@app/api/utils/ConcurrencyUtils';
|
||||
import type {WorkerTaskName} from '@app/api/worker/WorkerLaneConfig';
|
||||
import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {FeatureTemporarilyDisabledError} from '@fluxer/errors/src/domains/core/FeatureTemporarilyDisabledError';
|
||||
@@ -8,29 +31,6 @@ import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError
|
||||
import type {MessageSearchRequest} from '@fluxer/schema/src/domains/message/MessageRequestSchemas';
|
||||
import type {MessageSearchResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import type {IWorkerService} from '@pkgs/worker/src/contracts/IWorkerService';
|
||||
import type {ChannelID, UserID} from '../BrandedTypes';
|
||||
import {createChannelID} from '../BrandedTypes';
|
||||
import type {IChannelRepository} from '../channel/IChannelRepository';
|
||||
import {
|
||||
type DmSearchScope,
|
||||
getDmChannelIdsForScope,
|
||||
isDmScopeChannelForUser,
|
||||
} from '../channel/services/message/DmScopeUtils';
|
||||
import type {GuildService} from '../guild/services/GuildService';
|
||||
import type {UserCacheService} from '../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '../models/Channel';
|
||||
import {getMessageSearchService} from '../SearchFactory';
|
||||
import type {IUserRepository} from '../user/IUserRepository';
|
||||
import {canUserAccessNsfwContent} from '../utils/AgeUtils';
|
||||
import {mapWithConcurrency} from '../utils/ConcurrencyUtils';
|
||||
import type {WorkerTaskName} from '../worker/WorkerLaneConfig';
|
||||
import {buildMessageSearchFilters} from './BuildMessageSearchFilters';
|
||||
import {channelNeedsReindexing} from './ChannelIndexingUtils';
|
||||
import type {IMessageSearchService} from './IMessageSearchService';
|
||||
import {MessageSearchResponseMapper} from './MessageSearchResponseMapper';
|
||||
import {searchExistingMessages} from './MessageSearchResultReconciler';
|
||||
import {channelRequiresAgeVerification} from './SearchNsfwUtils';
|
||||
|
||||
const CHANNEL_INDEX_CHECK_CONCURRENCY = 32;
|
||||
const CHANNEL_INDEX_JOB_ENQUEUE_CONCURRENCY = 16;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AdminAuditLog} from '@app/api/admin/IAdminRepository';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchResult as SchemaSearchResult,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {AuditLogSearchFilters, SearchableAuditLog} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {AdminAuditLog} from '../admin/IAdminRepository';
|
||||
|
||||
export interface IAuditLogSearchService extends SchemaISearchAdapter<AuditLogSearchFilters, SearchableAuditLog> {
|
||||
indexAuditLog(log: AdminAuditLog): Promise<void>;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchResult as SchemaSearchResult,
|
||||
@@ -8,9 +11,6 @@ import type {
|
||||
GuildMemberSearchFilters,
|
||||
SearchableGuildMember,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {GuildID, UserID} from '../BrandedTypes';
|
||||
import type {GuildMember} from '../models/GuildMember';
|
||||
import type {User} from '../models/User';
|
||||
|
||||
export interface IGuildMemberSearchService
|
||||
extends SchemaISearchAdapter<GuildMemberSearchFilters, SearchableGuildMember> {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID} from '@app/api/BrandedTypes';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildDiscoveryContext} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchOptions as SchemaSearchOptions,
|
||||
SearchResult as SchemaSearchResult,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {GuildSearchFilters, SearchableGuild} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {GuildID} from '../BrandedTypes';
|
||||
import type {Guild} from '../models/Guild';
|
||||
import type {GuildDiscoveryContext} from './guild/GuildSearchSerializer';
|
||||
|
||||
export interface IGuildSearchService extends SchemaISearchAdapter<GuildSearchFilters, SearchableGuild> {
|
||||
indexGuild(guild: Guild, discovery?: GuildDiscoveryContext): Promise<void>;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, MessageID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchResult as SchemaSearchResult,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {MessageSearchFilters, SearchableMessage} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {ChannelID, GuildID, MessageID, UserID} from '../BrandedTypes';
|
||||
import type {Message} from '../models/Message';
|
||||
|
||||
export interface IMessageSearchService extends SchemaISearchAdapter<MessageSearchFilters, SearchableMessage> {
|
||||
indexMessage(message: Message, authorIsBot?: boolean): Promise<void>;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, MessageID, ReportID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IARSubmission} from '@app/api/report/IReportRepository';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchResult as SchemaSearchResult,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {ReportSearchFilters, SearchableReport} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {GuildID, MessageID, ReportID, UserID} from '../BrandedTypes';
|
||||
import type {IARSubmission} from '../report/IReportRepository';
|
||||
|
||||
export interface IReportSearchService extends SchemaISearchAdapter<ReportSearchFilters, SearchableReport> {
|
||||
indexReport(report: IARSubmission): Promise<void>;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {IAuditLogSearchService} from './IAuditLogSearchService';
|
||||
import type {IGuildMemberSearchService} from './IGuildMemberSearchService';
|
||||
import type {IGuildSearchService} from './IGuildSearchService';
|
||||
import type {IMessageSearchService} from './IMessageSearchService';
|
||||
import type {IReportSearchService} from './IReportSearchService';
|
||||
import type {IUserSearchService} from './IUserSearchService';
|
||||
import type {IAuditLogSearchService} from '@app/api/search/IAuditLogSearchService';
|
||||
import type {IGuildMemberSearchService} from '@app/api/search/IGuildMemberSearchService';
|
||||
import type {IGuildSearchService} from '@app/api/search/IGuildSearchService';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
import type {IReportSearchService} from '@app/api/search/IReportSearchService';
|
||||
import type {IUserSearchService} from '@app/api/search/IUserSearchService';
|
||||
|
||||
export interface ISearchProvider {
|
||||
initialize(): Promise<void>;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {UserID} from '@app/api/BrandedTypes';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {
|
||||
ISearchAdapter as SchemaISearchAdapter,
|
||||
SearchResult as SchemaSearchResult,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {SearchableUser, UserSearchFilters} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {UserID} from '../BrandedTypes';
|
||||
import type {User} from '../models/User';
|
||||
|
||||
export interface IUserSearchService extends SchemaISearchAdapter<UserSearchFilters, SearchableUser> {
|
||||
indexUser(user: User): Promise<void>;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {type ChannelID, createMessageID, type MessageID} from '../BrandedTypes';
|
||||
import {Logger} from '../Logger';
|
||||
import {getMessageSearchService} from '../SearchFactory';
|
||||
import type {IMessageSearchService} from './IMessageSearchService';
|
||||
import {type ChannelID, createMessageID, type MessageID} from '@app/api/BrandedTypes';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import {getMessageSearchService} from '@app/api/SearchFactory';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
|
||||
const MESSAGE_DELETE_BATCH_SIZE = 1000;
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {UserID} from '@app/api/BrandedTypes';
|
||||
import {createChannelID} from '@app/api/BrandedTypes';
|
||||
import {mapChannelToResponse} from '@app/api/channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import {createMessageResponseDataService} from '@app/api/channel/services/message/MessageResponseDataService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '@app/api/models/Channel';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import {mapWithConcurrency} from '@app/api/utils/ConcurrencyUtils';
|
||||
import type {MessageSearchResultsResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import type {UserID} from '../BrandedTypes';
|
||||
import {createChannelID} from '../BrandedTypes';
|
||||
import {mapChannelToResponse} from '../channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '../channel/IChannelRepository';
|
||||
import {createMessageResponseDataService} from '../channel/services/message/MessageResponseDataService';
|
||||
import type {UserCacheService} from '../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '../models/Channel';
|
||||
import type {Message} from '../models/Message';
|
||||
import {mapWithConcurrency} from '../utils/ConcurrencyUtils';
|
||||
|
||||
const CHANNEL_LOOKUP_CONCURRENCY = 16;
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {type ChannelID, createChannelID, createMessageID, type MessageID} from '@app/api/BrandedTypes';
|
||||
import type {IMessageRepository} from '@app/api/channel/repositories/IMessageRepository';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
import {deleteMessageSearchDocuments} from '@app/api/search/MessageSearchIndexCleanup';
|
||||
import {mapWithConcurrency} from '@app/api/utils/ConcurrencyUtils';
|
||||
import type {SearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {MessageSearchFilters, SearchableMessage} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {type ChannelID, createChannelID, createMessageID, type MessageID} from '../BrandedTypes';
|
||||
import type {IMessageRepository} from '../channel/repositories/IMessageRepository';
|
||||
import {Logger} from '../Logger';
|
||||
import type {Message} from '../models/Message';
|
||||
import {mapWithConcurrency} from '../utils/ConcurrencyUtils';
|
||||
import type {IMessageSearchService} from './IMessageSearchService';
|
||||
import {deleteMessageSearchDocuments} from './MessageSearchIndexCleanup';
|
||||
|
||||
const RECONCILE_BATCH_SIZE = 250;
|
||||
const MAX_RECONCILE_PAGES = 40;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {trackSearchTask} from '@app/api/search/SearchTaskTracker';
|
||||
import type {ISearchAdapter, SearchOptions, SearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import {trackSearchTask} from './SearchTaskTracker';
|
||||
|
||||
export abstract class SearchAdapterServiceBase<
|
||||
TFilters,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {channelToContentWarningView, computeEffectiveChannelNsfw} from '@app/api/channel/utils/EffectiveContentWarning';
|
||||
import type {Channel} from '@app/api/models/Channel';
|
||||
import {ContentWarningLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {channelToContentWarningView, computeEffectiveChannelNsfw} from '../channel/utils/EffectiveContentWarning';
|
||||
import type {Channel} from '../models/Channel';
|
||||
|
||||
export function channelRequiresAgeVerification(
|
||||
channel: Channel,
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createChannelID, createGuildID, type UserID} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import type {GuildService} from '@app/api/guild/services/GuildService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {GlobalSearchService} from '@app/api/search/GlobalSearchService';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import type {WorkerTaskName} from '@app/api/worker/WorkerLaneConfig';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
||||
import type {GlobalSearchMessagesRequest} from '@fluxer/schema/src/domains/message/MessageRequestSchemas';
|
||||
import type {MessageResponse, MessageSearchResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import type {IWorkerService} from '@pkgs/worker/src/contracts/IWorkerService';
|
||||
import {createChannelID, createGuildID, type UserID} from '../BrandedTypes';
|
||||
import type {IChannelRepository} from '../channel/IChannelRepository';
|
||||
import type {ChannelService} from '../channel/services/ChannelService';
|
||||
import type {GuildService} from '../guild/services/GuildService';
|
||||
import type {UserCacheService} from '../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../middleware/RequestCacheMiddleware';
|
||||
import type {IUserRepository} from '../user/IUserRepository';
|
||||
import type {WorkerTaskName} from '../worker/WorkerLaneConfig';
|
||||
import {GlobalSearchService} from './GlobalSearchService';
|
||||
|
||||
function omitReferencedMessages(result: MessageSearchResponse): MessageSearchResponse {
|
||||
if (!('messages' in result)) {
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, ReportID} from '../BrandedTypes';
|
||||
import type {IGuildDataRepository} from '../guild/repositories/IGuildDataRepository';
|
||||
import type {ILogger} from '../ILogger';
|
||||
import type {IReportRepository} from '../report/IReportRepository';
|
||||
import type {GuildID, ReportID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildDataRepository} from '@app/api/guild/repositories/IGuildDataRepository';
|
||||
import type {ILogger} from '@app/api/ILogger';
|
||||
import type {IReportRepository} from '@app/api/report/IReportRepository';
|
||||
import {
|
||||
getAuditLogSearchService,
|
||||
getGuildSearchService,
|
||||
getReportSearchService,
|
||||
getUserSearchService,
|
||||
} from '../SearchFactory';
|
||||
import type {IUserRepository} from '../user/IUserRepository';
|
||||
import type {IGuildSearchService} from './IGuildSearchService';
|
||||
import type {IReportSearchService} from './IReportSearchService';
|
||||
import type {IUserSearchService} from './IUserSearchService';
|
||||
} from '@app/api/SearchFactory';
|
||||
import type {IGuildSearchService} from '@app/api/search/IGuildSearchService';
|
||||
import type {IReportSearchService} from '@app/api/search/IReportSearchService';
|
||||
import type {IUserSearchService} from '@app/api/search/IUserSearchService';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
|
||||
const BATCH_SIZE = 100;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AdminAuditLog} from '@app/api/admin/IAdminRepository';
|
||||
import type {SearchableAuditLog} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {AdminAuditLog} from '../../admin/IAdminRepository';
|
||||
|
||||
export function convertToSearchableAuditLog(log: AdminAuditLog): SearchableAuditLog {
|
||||
const createdAt = Math.floor(snowflakeToDate(BigInt(log.logId)).getTime() / 1000);
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {LoginRequired} from '@app/api/middleware/AuthMiddleware';
|
||||
import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware';
|
||||
import {RateLimitConfigs} from '@app/api/RateLimitConfig';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
import {Validator} from '@app/api/Validator';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
||||
import {GlobalSearchMessagesRequest} from '@fluxer/schema/src/domains/message/MessageRequestSchemas';
|
||||
import {MessageSearchResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import {LoginRequired} from '../../middleware/AuthMiddleware';
|
||||
import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';
|
||||
import {RateLimitConfigs} from '../../RateLimitConfig';
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {Validator} from '../../Validator';
|
||||
|
||||
export function SearchController(app: HonoApp) {
|
||||
app.post(
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AdminAuditLog} from '@app/api/admin/IAdminRepository';
|
||||
import {convertToSearchableAuditLog} from '@app/api/search/auditlog/AuditLogSearchSerializer';
|
||||
import type {IAuditLogSearchService} from '@app/api/search/IAuditLogSearchService';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import type {SearchResult as SchemaSearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {AuditLogSearchFilters, SearchableAuditLog} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {
|
||||
ElasticsearchAuditLogAdapter,
|
||||
type ElasticsearchAuditLogAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchAuditLogAdapter';
|
||||
import type {AdminAuditLog} from '../../admin/IAdminRepository';
|
||||
import {convertToSearchableAuditLog} from '../auditlog/AuditLogSearchSerializer';
|
||||
import type {IAuditLogSearchService} from '../IAuditLogSearchService';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
|
||||
interface ElasticsearchAuditLogSearchServiceOptions extends ElasticsearchAuditLogAdapterOptions {}
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {convertToSearchableGuildMember} from '@app/api/search/guild_member/GuildMemberSearchSerializer';
|
||||
import type {IGuildMemberSearchService} from '@app/api/search/IGuildMemberSearchService';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import type {SearchResult as SchemaSearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {
|
||||
GuildMemberSearchFilters,
|
||||
@@ -9,12 +15,6 @@ import {
|
||||
ElasticsearchGuildMemberAdapter,
|
||||
type ElasticsearchGuildMemberAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchGuildMemberAdapter';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {User} from '../../models/User';
|
||||
import {convertToSearchableGuildMember} from '../guild_member/GuildMemberSearchSerializer';
|
||||
import type {IGuildMemberSearchService} from '../IGuildMemberSearchService';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
|
||||
const DEFAULT_LIMIT = 25;
|
||||
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import {convertToSearchableGuild, type GuildDiscoveryContext} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import {resolveDiscoveryContextForIndexing} from '@app/api/search/guild/LazyDiscoveryMigration';
|
||||
import type {IGuildSearchService} from '@app/api/search/IGuildSearchService';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import type {
|
||||
SearchOptions as SchemaSearchOptions,
|
||||
SearchResult as SchemaSearchResult,
|
||||
@@ -9,13 +16,6 @@ import {
|
||||
ElasticsearchGuildAdapter,
|
||||
type ElasticsearchGuildAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchGuildAdapter';
|
||||
import type {GuildID} from '../../BrandedTypes';
|
||||
import type {IGuildDiscoveryRepository} from '../../guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import {convertToSearchableGuild, type GuildDiscoveryContext} from '../guild/GuildSearchSerializer';
|
||||
import {resolveDiscoveryContextForIndexing} from '../guild/LazyDiscoveryMigration';
|
||||
import type {IGuildSearchService} from '../IGuildSearchService';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
|
||||
interface ElasticsearchGuildSearchServiceOptions extends ElasticsearchGuildAdapterOptions {
|
||||
discoveryRepository?: IGuildDiscoveryRepository;
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, MessageID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
import {
|
||||
convertMessagesToSearchableMessages,
|
||||
convertToSearchableMessage,
|
||||
} from '@app/api/search/message/MessageSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import type {SearchResult as SchemaSearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {MessageSearchFilters, SearchableMessage} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {
|
||||
ElasticsearchMessageAdapter,
|
||||
type ElasticsearchMessageAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchMessageAdapter';
|
||||
import type {ChannelID, GuildID, MessageID, UserID} from '../../BrandedTypes';
|
||||
import type {Message} from '../../models/Message';
|
||||
import type {IMessageSearchService} from '../IMessageSearchService';
|
||||
import {convertMessagesToSearchableMessages, convertToSearchableMessage} from '../message/MessageSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
|
||||
const DEFAULT_HITS_PER_PAGE = 25;
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, MessageID, ReportID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IARSubmission} from '@app/api/report/IReportRepository';
|
||||
import type {IReportSearchService} from '@app/api/search/IReportSearchService';
|
||||
import {convertToSearchableReport} from '@app/api/search/report/ReportSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import type {SearchResult as SchemaSearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {ReportSearchFilters, SearchableReport} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {
|
||||
ElasticsearchReportAdapter,
|
||||
type ElasticsearchReportAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchReportAdapter';
|
||||
import type {GuildID, MessageID, ReportID, UserID} from '../../BrandedTypes';
|
||||
import type {IARSubmission} from '../../report/IReportRepository';
|
||||
import type {IReportSearchService} from '../IReportSearchService';
|
||||
import {convertToSearchableReport} from '../report/ReportSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
|
||||
interface ElasticsearchReportSearchServiceOptions extends ElasticsearchReportAdapterOptions {}
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {UserID} from '@app/api/BrandedTypes';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {IUserSearchService} from '@app/api/search/IUserSearchService';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import {convertToSearchableUser} from '@app/api/search/user/UserSearchSerializer';
|
||||
import type {SearchResult as SchemaSearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {SearchableUser, UserSearchFilters} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {
|
||||
ElasticsearchUserAdapter,
|
||||
type ElasticsearchUserAdapterOptions,
|
||||
} from '@pkgs/elasticsearch_search/src/adapters/ElasticsearchUserAdapter';
|
||||
import type {UserID} from '../../BrandedTypes';
|
||||
import type {User} from '../../models/User';
|
||||
import type {IUserSearchService} from '../IUserSearchService';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
import {convertToSearchableUser} from '../user/UserSearchSerializer';
|
||||
|
||||
interface ElasticsearchUserSearchServiceOptions extends ElasticsearchUserAdapterOptions {}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import {normalizeDiscoveryTag} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import {GuildFeatures, getEffectiveGuildVerificationLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {SearchableGuild} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
|
||||
export interface GuildDiscoveryContext {
|
||||
description: string | null;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {IGuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildDiscoveryContext} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import {DiscoveryApplicationStatus} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {IGuildDiscoveryRepository} from '../../guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildDiscoveryContext} from './GuildSearchSerializer';
|
||||
|
||||
export async function resolveDiscoveryContextForIndexing(
|
||||
guild: Guild,
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createChannelID, createGuildID, createUserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildRow} from '@app/api/database/types/GuildTypes';
|
||||
import {Guild} from '@app/api/models/Guild';
|
||||
import {convertToSearchableGuild} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import {createChannelID, createGuildID, createUserID} from '../../../BrandedTypes';
|
||||
import type {GuildRow} from '../../../database/types/GuildTypes';
|
||||
import {Guild} from '../../../models/Guild';
|
||||
import {convertToSearchableGuild} from '../GuildSearchSerializer';
|
||||
|
||||
function guildRow(features: Set<string>): GuildRow {
|
||||
return {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {SearchableGuildMember} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {extractTimestampFromSnowflake} from '@fluxer/snowflake/src/SnowflakeUtils';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {User} from '../../models/User';
|
||||
|
||||
const MIN_USERNAME_SUFFIX_LENGTH = 2;
|
||||
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {MeilisearchClient} from '@app/api/search/meilisearch/MeilisearchClient';
|
||||
import {
|
||||
compactMeiliFilters,
|
||||
type MeilisearchFilter,
|
||||
meiliAndTerms,
|
||||
meiliExcludeAny,
|
||||
meiliExistsFilter,
|
||||
meiliNotExistsFilter,
|
||||
meiliRangeFilter,
|
||||
meiliTermFilter,
|
||||
meiliTermsFilter,
|
||||
} from '@app/api/search/meilisearch/MeilisearchFilterUtils';
|
||||
import {MeilisearchIndexAdapter} from '@app/api/search/meilisearch/MeilisearchIndexAdapter';
|
||||
import {MEILISEARCH_INDEX_DEFINITIONS} from '@app/api/search/meilisearch/MeilisearchIndexDefinitions';
|
||||
import type {
|
||||
AuditLogSearchFilters,
|
||||
GuildMemberSearchFilters,
|
||||
@@ -15,20 +29,6 @@ import type {
|
||||
UserSearchFilters,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {MeilisearchClient} from './MeilisearchClient';
|
||||
import {
|
||||
compactMeiliFilters,
|
||||
type MeilisearchFilter,
|
||||
meiliAndTerms,
|
||||
meiliExcludeAny,
|
||||
meiliExistsFilter,
|
||||
meiliNotExistsFilter,
|
||||
meiliRangeFilter,
|
||||
meiliTermFilter,
|
||||
meiliTermsFilter,
|
||||
} from './MeilisearchFilterUtils';
|
||||
import {MeilisearchIndexAdapter} from './MeilisearchIndexAdapter';
|
||||
import {MEILISEARCH_INDEX_DEFINITIONS} from './MeilisearchIndexDefinitions';
|
||||
|
||||
const HAS_FIELD_MAP: Record<string, string> = {
|
||||
image: 'hasImage',
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {MeilisearchClient, MeilisearchTask} from '@app/api/search/meilisearch/MeilisearchClient';
|
||||
import {MeilisearchMessageAdapter} from '@app/api/search/meilisearch/MeilisearchDomainAdapters';
|
||||
import {MEILISEARCH_MAX_TRACKED_BULK_TASKS} from '@app/api/search/meilisearch/MeilisearchIndexAdapter';
|
||||
import type {SearchableMessage} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import type {MeilisearchClient, MeilisearchTask} from './MeilisearchClient';
|
||||
import {MeilisearchMessageAdapter} from './MeilisearchDomainAdapters';
|
||||
import {MEILISEARCH_MAX_TRACKED_BULK_TASKS} from './MeilisearchIndexAdapter';
|
||||
|
||||
interface RecordedMeilisearchRequest {
|
||||
method: string;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {MeilisearchClient, MeilisearchTask} from '@app/api/search/meilisearch/MeilisearchClient';
|
||||
import type {MeilisearchFilter} from '@app/api/search/meilisearch/MeilisearchFilterUtils';
|
||||
import {joinMeiliFilters} from '@app/api/search/meilisearch/MeilisearchFilterUtils';
|
||||
import type {MeilisearchIndexDefinition} from '@app/api/search/meilisearch/MeilisearchIndexDefinitions';
|
||||
import type {SearchOptions, SearchResult} from '@fluxer/schema/src/contracts/search/SearchAdapterTypes';
|
||||
import type {MeilisearchClient, MeilisearchTask} from './MeilisearchClient';
|
||||
import type {MeilisearchFilter} from './MeilisearchFilterUtils';
|
||||
import {joinMeiliFilters} from './MeilisearchFilterUtils';
|
||||
import type {MeilisearchIndexDefinition} from './MeilisearchIndexDefinitions';
|
||||
|
||||
const MAX_SEARCH_LIMIT = 1000;
|
||||
const MAX_TOTAL_HITS = 10000;
|
||||
|
||||
@@ -1,5 +1,40 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AdminAuditLog} from '@app/api/admin/IAdminRepository';
|
||||
import type {ChannelID, GuildID, MessageID, ReportID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {IARSubmission} from '@app/api/report/IReportRepository';
|
||||
import {convertToSearchableAuditLog} from '@app/api/search/auditlog/AuditLogSearchSerializer';
|
||||
import {convertToSearchableGuild, type GuildDiscoveryContext} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import {resolveDiscoveryContextForIndexing} from '@app/api/search/guild/LazyDiscoveryMigration';
|
||||
import {convertToSearchableGuildMember} from '@app/api/search/guild_member/GuildMemberSearchSerializer';
|
||||
import type {IAuditLogSearchService} from '@app/api/search/IAuditLogSearchService';
|
||||
import type {IGuildMemberSearchService} from '@app/api/search/IGuildMemberSearchService';
|
||||
import type {IGuildSearchService} from '@app/api/search/IGuildSearchService';
|
||||
import type {IMessageSearchService} from '@app/api/search/IMessageSearchService';
|
||||
import type {IReportSearchService} from '@app/api/search/IReportSearchService';
|
||||
import type {IUserSearchService} from '@app/api/search/IUserSearchService';
|
||||
import type {MeilisearchClient} from '@app/api/search/meilisearch/MeilisearchClient';
|
||||
import {
|
||||
MeilisearchAuditLogAdapter,
|
||||
MeilisearchGuildAdapter,
|
||||
MeilisearchGuildMemberAdapter,
|
||||
MeilisearchMessageAdapter,
|
||||
MeilisearchReportAdapter,
|
||||
MeilisearchUserAdapter,
|
||||
} from '@app/api/search/meilisearch/MeilisearchDomainAdapters';
|
||||
import {meiliTermFilter} from '@app/api/search/meilisearch/MeilisearchFilterUtils';
|
||||
import {
|
||||
convertMessagesToSearchableMessages,
|
||||
convertToSearchableMessage,
|
||||
} from '@app/api/search/message/MessageSearchSerializer';
|
||||
import {convertToSearchableReport} from '@app/api/search/report/ReportSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '@app/api/search/SearchAdapterServiceBase';
|
||||
import {convertToSearchableUser} from '@app/api/search/user/UserSearchSerializer';
|
||||
import type {
|
||||
SearchOptions as SchemaSearchOptions,
|
||||
SearchResult as SchemaSearchResult,
|
||||
@@ -18,38 +53,6 @@ import type {
|
||||
SearchableUser,
|
||||
UserSearchFilters,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import type {AdminAuditLog} from '../../admin/IAdminRepository';
|
||||
import type {ChannelID, GuildID, MessageID, ReportID, UserID} from '../../BrandedTypes';
|
||||
import type {IGuildDiscoveryRepository} from '../../guild/repositories/GuildDiscoveryRepository';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {Message} from '../../models/Message';
|
||||
import type {User} from '../../models/User';
|
||||
import type {IARSubmission} from '../../report/IReportRepository';
|
||||
import {convertToSearchableAuditLog} from '../auditlog/AuditLogSearchSerializer';
|
||||
import {convertToSearchableGuild, type GuildDiscoveryContext} from '../guild/GuildSearchSerializer';
|
||||
import {resolveDiscoveryContextForIndexing} from '../guild/LazyDiscoveryMigration';
|
||||
import {convertToSearchableGuildMember} from '../guild_member/GuildMemberSearchSerializer';
|
||||
import type {IAuditLogSearchService} from '../IAuditLogSearchService';
|
||||
import type {IGuildMemberSearchService} from '../IGuildMemberSearchService';
|
||||
import type {IGuildSearchService} from '../IGuildSearchService';
|
||||
import type {IMessageSearchService} from '../IMessageSearchService';
|
||||
import type {IReportSearchService} from '../IReportSearchService';
|
||||
import type {IUserSearchService} from '../IUserSearchService';
|
||||
import {convertMessagesToSearchableMessages, convertToSearchableMessage} from '../message/MessageSearchSerializer';
|
||||
import {convertToSearchableReport} from '../report/ReportSearchSerializer';
|
||||
import {SearchAdapterServiceBase} from '../SearchAdapterServiceBase';
|
||||
import {convertToSearchableUser} from '../user/UserSearchSerializer';
|
||||
import type {MeilisearchClient} from './MeilisearchClient';
|
||||
import {
|
||||
MeilisearchAuditLogAdapter,
|
||||
MeilisearchGuildAdapter,
|
||||
MeilisearchGuildMemberAdapter,
|
||||
MeilisearchMessageAdapter,
|
||||
MeilisearchReportAdapter,
|
||||
MeilisearchUserAdapter,
|
||||
} from './MeilisearchDomainAdapters';
|
||||
import {meiliTermFilter} from './MeilisearchFilterUtils';
|
||||
|
||||
const DEFAULT_HITS_PER_PAGE = 25;
|
||||
const DEFAULT_MEMBER_LIMIT = 25;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {UserID} from '@app/api/BrandedTypes';
|
||||
import type {Attachment} from '@app/api/models/Attachment';
|
||||
import type {Embed} from '@app/api/models/Embed';
|
||||
import type {Message} from '@app/api/models/Message';
|
||||
import type {MessageSnapshot} from '@app/api/models/MessageSnapshot';
|
||||
import type {SearchableMessage} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {UserID} from '../../BrandedTypes';
|
||||
import type {Attachment} from '../../models/Attachment';
|
||||
import type {Embed} from '../../models/Embed';
|
||||
import type {Message} from '../../models/Message';
|
||||
import type {MessageSnapshot} from '../../models/MessageSnapshot';
|
||||
|
||||
const LINK_URL_MATCHER = /https?:\/\/[^\s<>"']+/gi;
|
||||
const HAS_LINK_REGEX = /https?:\/\/[^\s/]+/i;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createAttachmentID, createChannelID, createMessageID, createUserID} from '@app/api/BrandedTypes';
|
||||
import type {MessageRow} from '@app/api/database/types/MessageTypes';
|
||||
import {Message} from '@app/api/models/Message';
|
||||
import {convertToSearchableMessage} from '@app/api/search/message/MessageSearchSerializer';
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import {createAttachmentID, createChannelID, createMessageID, createUserID} from '../../../BrandedTypes';
|
||||
import type {MessageRow} from '../../../database/types/MessageTypes';
|
||||
import {Message} from '../../../models/Message';
|
||||
import {convertToSearchableMessage} from '../MessageSearchSerializer';
|
||||
|
||||
describe('MessageSearchSerializer', () => {
|
||||
it('extracts unique hosts and attachment metadata when indexing a message', () => {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {IARSubmission} from '@app/api/report/IReportRepository';
|
||||
import type {SearchableReport} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {IARSubmission} from '../../report/IReportRepository';
|
||||
|
||||
export function convertToSearchableReport(report: IARSubmission): SearchableReport {
|
||||
const createdAt = Math.floor(snowflakeToDate(BigInt(report.reportId)).getTime() / 1000);
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildMFALevel, JoinSourceTypes} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildMemberSearchResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSearchSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount, type TestAccount, totpCodeNow} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuildID, createUserID} from '../../BrandedTypes';
|
||||
import {GuildRepository} from '../../guild/repositories/GuildRepository';
|
||||
import {createTestAccount, type TestAccount, totpCodeNow} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuildID, createUserID} from '@app/api/BrandedTypes';
|
||||
import {GuildRepository} from '@app/api/guild/repositories/GuildRepository';
|
||||
import {
|
||||
acceptInvite,
|
||||
createChannel,
|
||||
@@ -15,10 +11,14 @@ import {
|
||||
createRole,
|
||||
setupTestGuildWithMembers,
|
||||
updateMember,
|
||||
} from '../../guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS, wait} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS, wait} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildMFALevel, JoinSourceTypes} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildMemberSearchResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSearchSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
const TOTP_SECRET = 'JBSWY3DPEHPK3PXP';
|
||||
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createChannelID, createMessageID} from '../../BrandedTypes';
|
||||
import {Config} from '../../Config';
|
||||
import {ChannelRepository} from '../../channel/ChannelRepository';
|
||||
import {createGuild} from '../../guild/tests/GuildTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createChannelID, createMessageID} from '@app/api/BrandedTypes';
|
||||
import {Config} from '@app/api/Config';
|
||||
import {ChannelRepository} from '@app/api/channel/ChannelRepository';
|
||||
import {createGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {
|
||||
deleteMessage,
|
||||
ensureSessionStarted,
|
||||
markChannelAsIndexed,
|
||||
sendMessage,
|
||||
} from '../../message/tests/MessageTestUtils';
|
||||
import {getMessageSearchService} from '../../SearchFactory';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_TIMEOUTS, wait} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {getMessageSearchService} from '@app/api/SearchFactory';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_TIMEOUTS, wait} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
interface MessageSearchResult {
|
||||
messages: Array<{
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {markChannelAsIndexed, sendMessage} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '../../guild/tests/GuildTestUtils';
|
||||
import {markChannelAsIndexed, sendMessage} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
|
||||
interface MessageSearchResult {
|
||||
messages: Array<{
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {MessageReferenceTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {MessageResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {loadFixture, sendMessageWithAttachments} from '../../channel/tests/AttachmentTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {loadFixture, sendMessageWithAttachments} from '@app/api/channel/tests/AttachmentTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
createChannel,
|
||||
createChannelInvite,
|
||||
createGuild,
|
||||
getChannel,
|
||||
} from '../../guild/tests/GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {
|
||||
markChannelAsIndexed,
|
||||
markGuildChannelsAsIndexed,
|
||||
pinMessage,
|
||||
sendMessage,
|
||||
} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {MessageReferenceTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {MessageResponse} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
interface MessageSearchResult {
|
||||
messages: Array<{
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -22,16 +18,20 @@ import {
|
||||
sendChannelMessage,
|
||||
updateChannel,
|
||||
updateRole,
|
||||
} from '../../channel/tests/ChannelTestUtils';
|
||||
import {getRoles, updateGuild} from '../../guild/tests/GuildTestUtils';
|
||||
} from '@app/api/channel/tests/ChannelTestUtils';
|
||||
import {getRoles, updateGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {
|
||||
markChannelAsIndexed,
|
||||
markGuildChannelsAsIndexed,
|
||||
markUserDmChannelsAsIndexed,
|
||||
} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
interface MessageSearchResult {
|
||||
channels: Array<{
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {markChannelAsIndexed, markGuildChannelsAsIndexed, sendMessage} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {SearchService} from '@app/api/search/SearchService';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {MessageReferenceTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {
|
||||
MessageResponse,
|
||||
@@ -7,13 +14,6 @@ import type {
|
||||
MessageSearchResultsResponse,
|
||||
} from '@fluxer/schema/src/domains/message/MessageResponseSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '../../guild/tests/GuildTestUtils';
|
||||
import {markChannelAsIndexed, markGuildChannelsAsIndexed, sendMessage} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {SearchService} from '../SearchService';
|
||||
|
||||
function isSearchResult(response: MessageSearchResponse): response is MessageSearchResultsResponse {
|
||||
return 'messages' in response;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {ensureSessionStarted, markChannelAsIndexed, sendMessage} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuild} from '../../guild/tests/GuildTestUtils';
|
||||
import {ensureSessionStarted, markChannelAsIndexed, sendMessage} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
|
||||
interface MessageSearchResult {
|
||||
messages: Array<{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {SearchableUser} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {User} from '../../models/User';
|
||||
|
||||
export function convertToSearchableUser(user: User): SearchableUser {
|
||||
const createdAt = Math.floor(snowflakeToDate(BigInt(user.id)).getTime() / 1000);
|
||||
|
||||
Reference in new issue
Block a user