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,18 +1,18 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {AuditLogChange, GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {ChannelPermissionOverwrite} from '@app/api/models/ChannelPermissionOverwrite';
|
||||
import type {GuildAuditLog} from '@app/api/models/GuildAuditLog';
|
||||
import type {WorkerTaskName} from '@app/api/worker/WorkerLaneConfig';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import type {IWorkerService} from '@pkgs/worker/src/contracts/IWorkerService';
|
||||
import {ms} from 'itty-time';
|
||||
import type {ChannelID, GuildID, RoleID, UserID} from '../BrandedTypes';
|
||||
import type {GuildAuditLogRow} from '../database/types/GuildTypes';
|
||||
import type {IGatewayService} from '../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../infrastructure/ISnowflakeService';
|
||||
import {Logger} from '../Logger';
|
||||
import type {ChannelPermissionOverwrite} from '../models/ChannelPermissionOverwrite';
|
||||
import type {GuildAuditLog} from '../models/GuildAuditLog';
|
||||
import type {WorkerTaskName} from '../worker/WorkerLaneConfig';
|
||||
import type {AuditLogChange, GuildAuditLogChange} from './GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from './repositories/IGuildRepositoryAggregate';
|
||||
|
||||
interface MessageDeleteBatchGroup {
|
||||
logs: Array<GuildAuditLog>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {HonoApp} from '../types/HonoEnv';
|
||||
import {registerGuildControllers} from './controllers/index';
|
||||
import {registerGuildControllers} from '@app/api/guild/controllers/index';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
|
||||
export function GuildController(app: HonoApp) {
|
||||
registerGuildControllers(app);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import {MAX_GUILD_MEMBERS, MAX_GUILD_MEMBERS_VERY_LARGE_GUILD} from '@fluxer/constants/src/LimitConstants';
|
||||
import {DEFAULT_FREE_LIMITS} from '@fluxer/limits/src/LimitDefaults';
|
||||
import {resolveLimit} from '@fluxer/limits/src/LimitResolver';
|
||||
import type {LimitConfigSnapshot} from '@fluxer/limits/src/LimitTypes';
|
||||
import {createLimitMatchContext} from '../limits/LimitMatchContextBuilder';
|
||||
|
||||
function toGuildFeatureSet(guildFeatures: Iterable<string> | null | undefined): Set<string> {
|
||||
const featureSet = new Set<string>();
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {mapGuildFeatures} from '@app/api/guild/GuildFeatureUtils';
|
||||
import {
|
||||
stripGuildBannerForFeatures,
|
||||
stripGuildIconForFeatures,
|
||||
stripGuildSplashForFeatures,
|
||||
} from '@app/api/infrastructure/AssetEntitlementUtils';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildBan} from '@app/api/models/GuildBan';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {GuildRole} from '@app/api/models/GuildRole';
|
||||
import type {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
import {getCachedUserPartialResponse, getCachedUserPartialResponses} from '@app/api/user/UserCacheHelpers';
|
||||
import type {
|
||||
GuildEmojiResponse,
|
||||
GuildEmojiWithUserResponse,
|
||||
@@ -10,21 +25,6 @@ import type {GuildBanResponse, GuildMemberResponse} from '@fluxer/schema/src/dom
|
||||
import type {GuildPartialResponse, GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildRoleResponse} from '@fluxer/schema/src/domains/guild/GuildRoleSchemas';
|
||||
import type {UserPartialResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas';
|
||||
import {
|
||||
stripGuildBannerForFeatures,
|
||||
stripGuildIconForFeatures,
|
||||
stripGuildSplashForFeatures,
|
||||
} from '../infrastructure/AssetEntitlementUtils';
|
||||
import type {UserCacheService} from '../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '../models/Guild';
|
||||
import type {GuildBan} from '../models/GuildBan';
|
||||
import type {GuildEmoji} from '../models/GuildEmoji';
|
||||
import type {GuildMember} from '../models/GuildMember';
|
||||
import type {GuildRole} from '../models/GuildRole';
|
||||
import type {GuildSticker} from '../models/GuildSticker';
|
||||
import {getCachedUserPartialResponse, getCachedUserPartialResponses} from '../user/UserCacheHelpers';
|
||||
import {mapGuildFeatures} from './GuildFeatureUtils';
|
||||
|
||||
export function mapGuildToPartialResponse(guild: Guild): GuildPartialResponse {
|
||||
const guildId = guild.id.toString();
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID, createUserID} from '@app/api/BrandedTypes';
|
||||
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 {GuildIdParam} from '@fluxer/schema/src/domains/common/CommonParamSchemas';
|
||||
import {GuildAuditLogListQuery, GuildAuditLogListResponse} from '@fluxer/schema/src/domains/guild/GuildAuditLogSchemas';
|
||||
import {createGuildID, createUserID} from '../../BrandedTypes';
|
||||
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 GuildAuditLogController(app: HonoApp) {
|
||||
app.get(
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {requireEmailVerified} from '@app/api/auth/EmailVerificationUtils';
|
||||
import {requireSudoMode} from '@app/api/auth/services/SudoVerificationService';
|
||||
import {createGuildID} from '@app/api/BrandedTypes';
|
||||
import {LoginRequired} from '@app/api/middleware/AuthMiddleware';
|
||||
import {requireOAuth2ScopeForBearer} from '@app/api/middleware/OAuth2ScopeMiddleware';
|
||||
import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware';
|
||||
import {SudoModeMiddleware} from '@app/api/middleware/SudoModeMiddleware';
|
||||
import {RateLimitConfigs} from '@app/api/RateLimitConfig';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
import {Validator} from '@app/api/Validator';
|
||||
import {SingleCommunityCannotCreateGuildsError} from '@fluxer/errors/src/domains/guild/SingleCommunityCannotCreateGuildsError';
|
||||
import {SingleCommunityCannotDeleteError} from '@fluxer/errors/src/domains/guild/SingleCommunityCannotDeleteError';
|
||||
import {SingleCommunityCannotLeaveError} from '@fluxer/errors/src/domains/guild/SingleCommunityCannotLeaveError';
|
||||
@@ -20,18 +31,6 @@ import {
|
||||
GuildVanityURLResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
|
||||
import {requireEmailVerified} from '../../auth/EmailVerificationUtils';
|
||||
import {requireSudoMode} from '../../auth/services/SudoVerificationService';
|
||||
import {createGuildID} from '../../BrandedTypes';
|
||||
import {LoginRequired} from '../../middleware/AuthMiddleware';
|
||||
import {requireOAuth2ScopeForBearer} from '../../middleware/OAuth2ScopeMiddleware';
|
||||
import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';
|
||||
import {SudoModeMiddleware} from '../../middleware/SudoModeMiddleware';
|
||||
import {RateLimitConfigs} from '../../RateLimitConfig';
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {Validator} from '../../Validator';
|
||||
|
||||
export function GuildBaseController(app: HonoApp) {
|
||||
app.post(
|
||||
'/guilds',
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createChannelID, createGuildID} from '@app/api/BrandedTypes';
|
||||
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 {
|
||||
ChannelCreateRequest,
|
||||
ChannelPositionUpdateRequest,
|
||||
@@ -7,14 +14,6 @@ import {
|
||||
import {ChannelListResponse, ChannelResponse} from '@fluxer/schema/src/domains/channel/ChannelSchemas';
|
||||
import {GuildIdParam} from '@fluxer/schema/src/domains/common/CommonParamSchemas';
|
||||
|
||||
import {createChannelID, createGuildID} from '../../BrandedTypes';
|
||||
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 GuildChannelController(app: HonoApp) {
|
||||
app.get(
|
||||
'/guilds/:guild_id/channels',
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID} from '@app/api/BrandedTypes';
|
||||
import {Config} from '@app/api/Config';
|
||||
import type {GuildDiscoveryRow} from '@app/api/database/types/GuildDiscoveryTypes';
|
||||
import {DefaultUserOnly, 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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {DiscoveryApplicationStatus, DiscoveryCategoryLabels} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import {GuildFeatures, JoinSourceTypes} from '@fluxer/constants/src/GuildConstants';
|
||||
@@ -16,15 +25,6 @@ import {
|
||||
DiscoverySearchQuery,
|
||||
DiscoveryStatusResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildDiscoverySchemas';
|
||||
import {createGuildID} from '../../BrandedTypes';
|
||||
import {Config} from '../../Config';
|
||||
import type {GuildDiscoveryRow} from '../../database/types/GuildDiscoveryTypes';
|
||||
import {DefaultUserOnly, 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';
|
||||
|
||||
function ensureDiscoveryEnabled(): void {
|
||||
if (!Config.discovery.enabled) {
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createEmojiID, createGuildID} from '@app/api/BrandedTypes';
|
||||
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 {EmojiIdParam, GuildIdEmojiIdParam, GuildIdParam} from '@fluxer/schema/src/domains/common/CommonParamSchemas';
|
||||
import {PurgeQuery} from '@fluxer/schema/src/domains/common/CommonQuerySchemas';
|
||||
import {
|
||||
@@ -14,13 +21,6 @@ import {
|
||||
GuildEmojiCreateRequest,
|
||||
GuildEmojiUpdateRequest,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import {createEmojiID, createGuildID} from '../../BrandedTypes';
|
||||
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 GuildEmojiController(app: HonoApp) {
|
||||
app.post(
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {requireSudoMode} from '@app/api/auth/services/SudoVerificationService';
|
||||
import {createGuildID, createRoleID, createUserID} from '@app/api/BrandedTypes';
|
||||
import {LoginRequired} from '@app/api/middleware/AuthMiddleware';
|
||||
import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware';
|
||||
import {SudoModeMiddleware} from '@app/api/middleware/SudoModeMiddleware';
|
||||
import {RateLimitConfigs} from '@app/api/RateLimitConfig';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
import {Validator} from '@app/api/Validator';
|
||||
import {
|
||||
GuildIdParam,
|
||||
GuildIdUserIdParam,
|
||||
@@ -19,16 +28,6 @@ import {
|
||||
} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
|
||||
import {requireSudoMode} from '../../auth/services/SudoVerificationService';
|
||||
import {createGuildID, createRoleID, createUserID} from '../../BrandedTypes';
|
||||
import {LoginRequired} from '../../middleware/AuthMiddleware';
|
||||
import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';
|
||||
import {SudoModeMiddleware} from '../../middleware/SudoModeMiddleware';
|
||||
import {RateLimitConfigs} from '../../RateLimitConfig';
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {Validator} from '../../Validator';
|
||||
|
||||
export function GuildMemberController(app: HonoApp) {
|
||||
app.get(
|
||||
'/guilds/:guild_id/members',
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID} from '@app/api/BrandedTypes';
|
||||
import {GuildRepository} from '@app/api/guild/repositories/GuildRepository';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
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 {getGuildMemberSearchService} from '@app/api/SearchFactory';
|
||||
import {guildMembersNeedReindexing} from '@app/api/search/GuildMemberIndexingUtils';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
import {Validator} from '@app/api/Validator';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {MissingPermissionsError} from '@fluxer/errors/src/domains/core/MissingPermissionsError';
|
||||
import type {SearchableGuildMember} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
@@ -10,17 +21,6 @@ import {
|
||||
type GuildMemberSearchResponse as GuildMemberSearchResponseBody,
|
||||
type GuildMemberSearchResult,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildMemberSearchSchemas';
|
||||
import {createGuildID} from '../../BrandedTypes';
|
||||
import {LoginRequired} from '../../middleware/AuthMiddleware';
|
||||
import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';
|
||||
import {RateLimitConfigs} from '../../RateLimitConfig';
|
||||
import {getGuildMemberSearchService} from '../../SearchFactory';
|
||||
import {guildMembersNeedReindexing} from '../../search/GuildMemberIndexingUtils';
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {Validator} from '../../Validator';
|
||||
import {GuildRepository} from '../repositories/GuildRepository';
|
||||
import {createGuildMfaEnforcer} from '../services/GuildMfaEnforcement';
|
||||
|
||||
const MEMBERS_PAGE_PERMISSIONS =
|
||||
Permissions.MANAGE_GUILD |
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID, createRoleID} from '@app/api/BrandedTypes';
|
||||
import {LoginRequired} from '@app/api/middleware/AuthMiddleware';
|
||||
import {requireOAuth2ScopeForBearer} from '@app/api/middleware/OAuth2ScopeMiddleware';
|
||||
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 {CLIENT_FEATURES_HEADER, parseClientFeaturesHeader} from '@app/api/utils/featureUtils';
|
||||
import {Validator} from '@app/api/Validator';
|
||||
import {GuildIdParam, GuildIdRoleIdParam} from '@fluxer/schema/src/domains/common/CommonParamSchemas';
|
||||
import {
|
||||
GuildRoleCreateRequest,
|
||||
@@ -9,16 +18,6 @@ import {
|
||||
} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import {GuildRoleListResponse, GuildRoleResponse} from '@fluxer/schema/src/domains/guild/GuildRoleSchemas';
|
||||
|
||||
import {createGuildID, createRoleID} from '../../BrandedTypes';
|
||||
import {LoginRequired} from '../../middleware/AuthMiddleware';
|
||||
import {requireOAuth2ScopeForBearer} from '../../middleware/OAuth2ScopeMiddleware';
|
||||
import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';
|
||||
import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';
|
||||
import {RateLimitConfigs} from '../../RateLimitConfig';
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {CLIENT_FEATURES_HEADER, parseClientFeaturesHeader} from '../../utils/featureUtils';
|
||||
import {Validator} from '../../Validator';
|
||||
|
||||
export function GuildRoleController(app: HonoApp) {
|
||||
app.get(
|
||||
'/guilds/:guild_id/roles',
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID, createStickerID} from '@app/api/BrandedTypes';
|
||||
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 {
|
||||
GuildIdParam,
|
||||
GuildIdStickerIdParam,
|
||||
@@ -18,13 +25,6 @@ import {
|
||||
GuildStickerCreateRequest,
|
||||
GuildStickerUpdateRequest,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import {createGuildID, createStickerID} from '../../BrandedTypes';
|
||||
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 GuildStickerController(app: HonoApp) {
|
||||
app.post(
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {HonoApp} from '../../types/HonoEnv';
|
||||
import {GuildAuditLogController} from './GuildAuditLogController';
|
||||
import {GuildBaseController} from './GuildBaseController';
|
||||
import {GuildChannelController} from './GuildChannelController';
|
||||
import {GuildDiscoveryController} from './GuildDiscoveryController';
|
||||
import {GuildEmojiController} from './GuildEmojiController';
|
||||
import {GuildMemberController} from './GuildMemberController';
|
||||
import {GuildMemberSearchController} from './GuildMemberSearchController';
|
||||
import {GuildRoleController} from './GuildRoleController';
|
||||
import {GuildStickerController} from './GuildStickerController';
|
||||
import {GuildAuditLogController} from '@app/api/guild/controllers/GuildAuditLogController';
|
||||
import {GuildBaseController} from '@app/api/guild/controllers/GuildBaseController';
|
||||
import {GuildChannelController} from '@app/api/guild/controllers/GuildChannelController';
|
||||
import {GuildDiscoveryController} from '@app/api/guild/controllers/GuildDiscoveryController';
|
||||
import {GuildEmojiController} from '@app/api/guild/controllers/GuildEmojiController';
|
||||
import {GuildMemberController} from '@app/api/guild/controllers/GuildMemberController';
|
||||
import {GuildMemberSearchController} from '@app/api/guild/controllers/GuildMemberSearchController';
|
||||
import {GuildRoleController} from '@app/api/guild/controllers/GuildRoleController';
|
||||
import {GuildStickerController} from '@app/api/guild/controllers/GuildStickerController';
|
||||
import type {HonoApp} from '@app/api/types/HonoEnv';
|
||||
|
||||
export function registerGuildControllers(app: HonoApp) {
|
||||
GuildBaseController(app);
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {EmojiID, GuildID, StickerID} from '../../BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne, upsertOne} from '../../database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '../../database/CassandraVersionedUpdate';
|
||||
import type {EmojiID, GuildID, StickerID} from '@app/api/BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne, upsertOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '@app/api/database/CassandraVersionedUpdate';
|
||||
import {
|
||||
GUILD_EMOJI_COLUMNS,
|
||||
GUILD_STICKER_COLUMNS,
|
||||
type GuildEmojiRow,
|
||||
type GuildStickerRow,
|
||||
} from '../../database/types/GuildTypes';
|
||||
import {GuildEmoji} from '../../models/GuildEmoji';
|
||||
import {GuildSticker} from '../../models/GuildSticker';
|
||||
import {GuildEmojis, GuildEmojisByEmojiId, GuildStickers, GuildStickersByStickerId} from '../../Tables';
|
||||
import {IGuildContentRepository} from './IGuildContentRepository';
|
||||
} from '@app/api/database/types/GuildTypes';
|
||||
import {IGuildContentRepository} from '@app/api/guild/repositories/IGuildContentRepository';
|
||||
import {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
import {GuildEmojis, GuildEmojisByEmojiId, GuildStickers, GuildStickersByStickerId} from '@app/api/Tables';
|
||||
|
||||
const FETCH_GUILD_EMOJIS_BY_GUILD_ID_QUERY = GuildEmojis.selectCql({
|
||||
where: GuildEmojis.where.eq('guild_id'),
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '../../database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '../../database/CassandraVersionedUpdate';
|
||||
import {GUILD_COLUMNS, type GuildMemberByUserIdRow, type GuildRow} from '../../database/types/GuildTypes';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import {Guild} from '../../models/Guild';
|
||||
import {GuildMembersByUserId, Guilds} from '../../Tables';
|
||||
import {IGuildDataRepository} from './IGuildDataRepository';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '@app/api/database/CassandraVersionedUpdate';
|
||||
import {GUILD_COLUMNS, type GuildMemberByUserIdRow, type GuildRow} from '@app/api/database/types/GuildTypes';
|
||||
import {IGuildDataRepository} from '@app/api/guild/repositories/IGuildDataRepository';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {Guild} from '@app/api/models/Guild';
|
||||
import {GuildMembersByUserId, Guilds} from '@app/api/Tables';
|
||||
|
||||
const FETCH_GUILD_BY_ID_QUERY = Guilds.selectCql({
|
||||
where: Guilds.where.eq('guild_id'),
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID} from '@app/api/BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import type {GuildDiscoveryByStatusRow, GuildDiscoveryRow} from '@app/api/database/types/GuildDiscoveryTypes';
|
||||
import {GuildDiscovery, GuildDiscoveryByStatus} from '@app/api/Tables';
|
||||
import {DISCOVERY_DEFAULT_LANGUAGE, DiscoveryCategories} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import type {GuildID} from '../../BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '../../database/CassandraQueryExecution';
|
||||
import type {GuildDiscoveryByStatusRow, GuildDiscoveryRow} from '../../database/types/GuildDiscoveryTypes';
|
||||
import {GuildDiscovery, GuildDiscoveryByStatus} from '../../Tables';
|
||||
|
||||
const FETCH_DISCOVERY_BY_GUILD_ID = GuildDiscovery.selectCql({
|
||||
where: GuildDiscovery.where.eq('guild_id'),
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne, upsertOne} from '../../database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '../../database/CassandraVersionedUpdate';
|
||||
import type {GuildMemberRow, GuildMembershipMetadataRow} from '../../database/types/GuildTypes';
|
||||
import {GUILD_MEMBER_COLUMNS} from '../../database/types/GuildTypes';
|
||||
import {GuildMember} from '../../models/GuildMember';
|
||||
import {GuildMembers, GuildMembersByUserId, GuildMembershipMetadata} from '../../Tables';
|
||||
import {IGuildMemberRepository} from './IGuildMemberRepository';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne, upsertOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '@app/api/database/CassandraVersionedUpdate';
|
||||
import type {GuildMemberRow, GuildMembershipMetadataRow} from '@app/api/database/types/GuildTypes';
|
||||
import {GUILD_MEMBER_COLUMNS} from '@app/api/database/types/GuildTypes';
|
||||
import {IGuildMemberRepository} from '@app/api/guild/repositories/IGuildMemberRepository';
|
||||
import {GuildMember} from '@app/api/models/GuildMember';
|
||||
import {GuildMembers, GuildMembersByUserId, GuildMembershipMetadata} from '@app/api/Tables';
|
||||
|
||||
const FETCH_GUILD_MEMBER_BY_GUILD_AND_USER_ID_QUERY = GuildMembers.selectCql({
|
||||
where: [GuildMembers.where.eq('guild_id'), GuildMembers.where.eq('user_id')],
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {seconds} from 'itty-time';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '../../database/CassandraQueryExecution';
|
||||
import {Db, type DbOp, type QueryTemplate, type WhereExpr} from '../../database/CassandraTypes';
|
||||
import {executeVersionedUpdate} from '../../database/CassandraVersionedUpdate';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {BatchBuilder, fetchMany, fetchOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import {Db, type DbOp, type QueryTemplate, type WhereExpr} from '@app/api/database/CassandraTypes';
|
||||
import {executeVersionedUpdate} from '@app/api/database/CassandraVersionedUpdate';
|
||||
import type {
|
||||
GuildAuditLogRow,
|
||||
GuildBanByEmailRow,
|
||||
GuildBanByUserIdRow,
|
||||
GuildBanRow,
|
||||
GuildRow,
|
||||
} from '../../database/types/GuildTypes';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import {GuildAuditLog} from '../../models/GuildAuditLog';
|
||||
import {GuildBan} from '../../models/GuildBan';
|
||||
} from '@app/api/database/types/GuildTypes';
|
||||
import {IGuildModerationRepository} from '@app/api/guild/repositories/IGuildModerationRepository';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {GuildAuditLog} from '@app/api/models/GuildAuditLog';
|
||||
import {GuildBan} from '@app/api/models/GuildBan';
|
||||
import {
|
||||
GuildAuditLogs,
|
||||
GuildAuditLogsByAction,
|
||||
@@ -25,8 +24,9 @@ import {
|
||||
GuildBansByEmail,
|
||||
GuildBansByUserId,
|
||||
Guilds,
|
||||
} from '../../Tables';
|
||||
import {IGuildModerationRepository} from './IGuildModerationRepository';
|
||||
} from '@app/api/Tables';
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {seconds} from 'itty-time';
|
||||
|
||||
const FETCH_GUILD_BAN_BY_GUILD_AND_USER_ID_QUERY = GuildBans.selectCql({
|
||||
where: [GuildBans.where.eq('guild_id'), GuildBans.where.eq('user_id')],
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import type {EmojiID, GuildID, RoleID, StickerID, UserID} from '../../BrandedTypes';
|
||||
import type {EmojiID, GuildID, RoleID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {
|
||||
GuildAuditLogRow,
|
||||
GuildBanRow,
|
||||
@@ -11,21 +10,22 @@ import type {
|
||||
GuildRoleRow,
|
||||
GuildRow,
|
||||
GuildStickerRow,
|
||||
} from '../../database/types/GuildTypes';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildAuditLog} from '../../models/GuildAuditLog';
|
||||
import type {GuildBan} from '../../models/GuildBan';
|
||||
import type {GuildEmoji} from '../../models/GuildEmoji';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {GuildRole} from '../../models/GuildRole';
|
||||
import type {GuildSticker} from '../../models/GuildSticker';
|
||||
import {GuildContentRepository} from './GuildContentRepository';
|
||||
import {GuildDataRepository} from './GuildDataRepository';
|
||||
import {GuildMemberRepository} from './GuildMemberRepository';
|
||||
import {GuildModerationRepository} from './GuildModerationRepository';
|
||||
import {GuildRoleRepository} from './GuildRoleRepository';
|
||||
import type {IGuildRepositoryAggregate} from './IGuildRepositoryAggregate';
|
||||
} from '@app/api/database/types/GuildTypes';
|
||||
import {GuildContentRepository} from '@app/api/guild/repositories/GuildContentRepository';
|
||||
import {GuildDataRepository} from '@app/api/guild/repositories/GuildDataRepository';
|
||||
import {GuildMemberRepository} from '@app/api/guild/repositories/GuildMemberRepository';
|
||||
import {GuildModerationRepository} from '@app/api/guild/repositories/GuildModerationRepository';
|
||||
import {GuildRoleRepository} from '@app/api/guild/repositories/GuildRoleRepository';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildAuditLog} from '@app/api/models/GuildAuditLog';
|
||||
import type {GuildBan} from '@app/api/models/GuildBan';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {GuildRole} from '@app/api/models/GuildRole';
|
||||
import type {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
|
||||
export class GuildRepository implements IGuildRepositoryAggregate {
|
||||
private dataRepo: GuildDataRepository;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID} from '../../BrandedTypes';
|
||||
import {deleteOneOrMany, fetchMany, fetchOne} from '../../database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '../../database/CassandraVersionedUpdate';
|
||||
import type {GuildRoleRow} from '../../database/types/GuildTypes';
|
||||
import {GUILD_ROLE_COLUMNS} from '../../database/types/GuildTypes';
|
||||
import {GuildRole} from '../../models/GuildRole';
|
||||
import {GuildRoles} from '../../Tables';
|
||||
import {IGuildRoleRepository} from './IGuildRoleRepository';
|
||||
import type {GuildID, RoleID} from '@app/api/BrandedTypes';
|
||||
import {deleteOneOrMany, fetchMany, fetchOne} from '@app/api/database/CassandraQueryExecution';
|
||||
import {buildPatchFromData, executeVersionedUpdate} from '@app/api/database/CassandraVersionedUpdate';
|
||||
import type {GuildRoleRow} from '@app/api/database/types/GuildTypes';
|
||||
import {GUILD_ROLE_COLUMNS} from '@app/api/database/types/GuildTypes';
|
||||
import {IGuildRoleRepository} from '@app/api/guild/repositories/IGuildRoleRepository';
|
||||
import {GuildRole} from '@app/api/models/GuildRole';
|
||||
import {GuildRoles} from '@app/api/Tables';
|
||||
|
||||
const FETCH_GUILD_ROLE_BY_ID_QUERY = GuildRoles.selectCql({
|
||||
where: [GuildRoles.where.eq('guild_id'), GuildRoles.where.eq('role_id')],
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {EmojiID, GuildID, StickerID} from '../../BrandedTypes';
|
||||
import type {GuildEmojiRow, GuildStickerRow} from '../../database/types/GuildTypes';
|
||||
import type {GuildEmoji} from '../../models/GuildEmoji';
|
||||
import type {GuildSticker} from '../../models/GuildSticker';
|
||||
import type {EmojiID, GuildID, StickerID} from '@app/api/BrandedTypes';
|
||||
import type {GuildEmojiRow, GuildStickerRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
|
||||
export abstract class IGuildContentRepository {
|
||||
abstract getEmoji(emojiId: EmojiID, guildId: GuildID): Promise<GuildEmoji | null>;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {GuildRow} from '../../database/types/GuildTypes';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
|
||||
export abstract class IGuildDataRepository {
|
||||
abstract findUnique(guildId: GuildID): Promise<Guild | null>;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {GuildMemberRow, GuildMembershipMetadataRow} from '../../database/types/GuildTypes';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildMemberRow, GuildMembershipMetadataRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
|
||||
export abstract class IGuildMemberRepository {
|
||||
abstract getMember(guildId: GuildID, userId: UserID): Promise<GuildMember | null>;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogRow, GuildBanRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {GuildAuditLog} from '@app/api/models/GuildAuditLog';
|
||||
import type {GuildBan} from '@app/api/models/GuildBan';
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {GuildAuditLogRow, GuildBanRow} from '../../database/types/GuildTypes';
|
||||
import type {GuildAuditLog} from '../../models/GuildAuditLog';
|
||||
import type {GuildBan} from '../../models/GuildBan';
|
||||
|
||||
export abstract class IGuildModerationRepository {
|
||||
abstract getBan(guildId: GuildID, userId: UserID): Promise<GuildBan | null>;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {IGuildContentRepository} from './IGuildContentRepository';
|
||||
import type {IGuildDataRepository} from './IGuildDataRepository';
|
||||
import type {IGuildMemberRepository} from './IGuildMemberRepository';
|
||||
import type {IGuildModerationRepository} from './IGuildModerationRepository';
|
||||
import type {IGuildRoleRepository} from './IGuildRoleRepository';
|
||||
import type {IGuildContentRepository} from '@app/api/guild/repositories/IGuildContentRepository';
|
||||
import type {IGuildDataRepository} from '@app/api/guild/repositories/IGuildDataRepository';
|
||||
import type {IGuildMemberRepository} from '@app/api/guild/repositories/IGuildMemberRepository';
|
||||
import type {IGuildModerationRepository} from '@app/api/guild/repositories/IGuildModerationRepository';
|
||||
import type {IGuildRoleRepository} from '@app/api/guild/repositories/IGuildRoleRepository';
|
||||
|
||||
export interface IGuildRepositoryAggregate
|
||||
extends IGuildDataRepository,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID} from '../../BrandedTypes';
|
||||
import type {GuildRoleRow} from '../../database/types/GuildTypes';
|
||||
import type {GuildRole} from '../../models/GuildRole';
|
||||
import type {GuildID, RoleID} from '@app/api/BrandedTypes';
|
||||
import type {GuildRoleRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {GuildRole} from '@app/api/models/GuildRole';
|
||||
|
||||
export abstract class IGuildRoleRepository {
|
||||
abstract getRole(roleId: RoleID, guildId: GuildID): Promise<GuildRole | null>;
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {mapChannelToResponse} from '@app/api/channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {ChannelOperationsService} from '@app/api/guild/services/channel/ChannelOperationsService';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {MissingPermissionsError} from '@fluxer/errors/src/domains/core/MissingPermissionsError';
|
||||
import {UnknownGuildError} from '@fluxer/errors/src/domains/guild/UnknownGuildError';
|
||||
import type {ChannelCreateRequest} from '@fluxer/schema/src/domains/channel/ChannelRequestSchemas';
|
||||
import type {ChannelResponse} from '@fluxer/schema/src/domains/channel/ChannelSchemas';
|
||||
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
|
||||
import type {ChannelID, GuildID, UserID} from '../../BrandedTypes';
|
||||
import {mapChannelToResponse} from '../../channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '../../channel/IChannelRepository';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {ChannelOperationsService} from './channel/ChannelOperationsService';
|
||||
import {createGuildMfaEnforcer} from './GuildMfaEnforcement';
|
||||
|
||||
export class GuildChannelService {
|
||||
private readonly channelOps: ChannelOperationsService;
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {EmojiID, GuildID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {ContentHelpers} from '@app/api/guild/services/content/ContentHelpers';
|
||||
import {EmojiService} from '@app/api/guild/services/content/EmojiService';
|
||||
import {ExpressionAssetPurger} from '@app/api/guild/services/content/ExpressionAssetPurger';
|
||||
import {StickerService} from '@app/api/guild/services/content/StickerService';
|
||||
import type {AvatarService} from '@app/api/infrastructure/AvatarService';
|
||||
import type {IAssetDeletionQueue} from '@app/api/infrastructure/IAssetDeletionQueue';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {
|
||||
GuildEmojiResponse,
|
||||
GuildEmojiWithUserResponse,
|
||||
@@ -7,21 +22,6 @@ import type {
|
||||
GuildStickerWithUserResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildEmojiSchemas';
|
||||
import type {UserPartialResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas';
|
||||
import type {EmojiID, GuildID, StickerID, UserID} from '../../BrandedTypes';
|
||||
import type {AvatarService} from '../../infrastructure/AvatarService';
|
||||
import type {IAssetDeletionQueue} from '../../infrastructure/IAssetDeletionQueue';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {User} from '../../models/User';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {ContentHelpers} from './content/ContentHelpers';
|
||||
import {EmojiService} from './content/EmojiService';
|
||||
import {ExpressionAssetPurger} from './content/ExpressionAssetPurger';
|
||||
import {StickerService} from './content/StickerService';
|
||||
|
||||
export class GuildContentService {
|
||||
private readonly contentHelpers: ContentHelpers;
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import {GuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {GuildDataHelpers} from '@app/api/guild/services/data/GuildDataHelpers';
|
||||
import {GuildOperationsService} from '@app/api/guild/services/data/GuildOperationsService';
|
||||
import {GuildOwnershipService} from '@app/api/guild/services/data/GuildOwnershipService';
|
||||
import {GuildVanityService} from '@app/api/guild/services/data/GuildVanityService';
|
||||
import type {EntityAssetService} from '@app/api/infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {InviteRepository} from '@app/api/invite/InviteRepository';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import type {IWebhookRepository} from '@app/api/webhook/IWebhookRepository';
|
||||
import type {
|
||||
GuildCreateRequest,
|
||||
GuildUpdateRequest,
|
||||
@@ -10,27 +31,6 @@ import type {
|
||||
GuildResponse,
|
||||
GuildVanityURLResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {IChannelRepository} from '../../channel/IChannelRepository';
|
||||
import type {ChannelService} from '../../channel/services/ChannelService';
|
||||
import type {EntityAssetService} from '../../infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../infrastructure/ISnowflakeService';
|
||||
import type {InviteRepository} from '../../invite/InviteRepository';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {User} from '../../models/User';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import type {IWebhookRepository} from '../../webhook/IWebhookRepository';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import {GuildDiscoveryRepository} from '../repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {GuildDataHelpers} from './data/GuildDataHelpers';
|
||||
import {GuildOperationsService} from './data/GuildOperationsService';
|
||||
import {GuildOwnershipService} from './data/GuildOwnershipService';
|
||||
import {GuildVanityService} from './data/GuildVanityService';
|
||||
|
||||
export class GuildDataService {
|
||||
private readonly helpers: GuildDataHelpers;
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {Config} from '@app/api/Config';
|
||||
import type {GuildDiscoveryRow} from '@app/api/database/types/GuildDiscoveryTypes';
|
||||
import {mapGuildToGuildResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {contentModerationService} from '@app/api/infrastructure/ContentModerationService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {IGuildSearchService} from '@app/api/search/IGuildSearchService';
|
||||
import {
|
||||
DISCOVERY_DEFAULT_LANGUAGE,
|
||||
DISCOVERY_MAX_TAGS,
|
||||
@@ -18,16 +28,6 @@ import {DiscoveryInsufficientMembersError} from '@fluxer/errors/src/domains/disc
|
||||
import {DiscoveryNotDiscoverableError} from '@fluxer/errors/src/domains/discovery/DiscoveryNotDiscoverableError';
|
||||
import type {GuildSearchFilters} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes.jsx';
|
||||
import type {DiscoveryApplicationPatchRequest} from '@fluxer/schema/src/domains/guild/GuildDiscoverySchemas';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import {Config} from '../../Config';
|
||||
import type {GuildDiscoveryRow} from '../../database/types/GuildDiscoveryTypes';
|
||||
import {contentModerationService} from '../../infrastructure/ContentModerationService';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import {Logger} from '../../Logger';
|
||||
import type {IGuildSearchService} from '../../search/IGuildSearchService';
|
||||
import {mapGuildToGuildResponse} from '../GuildModel';
|
||||
import type {IGuildDiscoveryRepository} from '../repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
|
||||
function sanitizeTags(tags: ReadonlyArray<string> | null | undefined): Array<string> {
|
||||
if (!tags || tags.length === 0) return [];
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, InviteCode, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {GuildMemberAuditService} from '@app/api/guild/services/member/GuildMemberAuditService';
|
||||
import {GuildMemberAuthService} from '@app/api/guild/services/member/GuildMemberAuthService';
|
||||
import {GuildMemberEventService} from '@app/api/guild/services/member/GuildMemberEventService';
|
||||
import {GuildMemberOperationsService} from '@app/api/guild/services/member/GuildMemberOperationsService';
|
||||
import {GuildMemberRoleService} from '@app/api/guild/services/member/GuildMemberRoleService';
|
||||
import {GuildMemberSearchIndexService} from '@app/api/guild/services/member/GuildMemberSearchIndexService';
|
||||
import {GuildMemberValidationService} from '@app/api/guild/services/member/GuildMemberValidationService';
|
||||
import type {EntityAssetService} from '@app/api/infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import type {JoinSourceType} from '@fluxer/constants/src/GuildConstants';
|
||||
import {UnknownGuildMemberError} from '@fluxer/errors/src/domains/guild/UnknownGuildMemberError';
|
||||
@@ -7,25 +26,6 @@ import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMe
|
||||
import type {GuildMemberUpdateRequest} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import type {IpInfoService} from '@pkgs/geoip/src/IpInfoService';
|
||||
import type {IRateLimitService} from '@pkgs/rate_limit/src/IRateLimitService';
|
||||
import type {GuildID, InviteCode, RoleID, UserID} from '../../BrandedTypes';
|
||||
import type {ChannelService} from '../../channel/services/ChannelService';
|
||||
import type {EntityAssetService} from '../../infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '../../models/Guild';
|
||||
import type {GuildMember} from '../../models/GuildMember';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {GuildMemberAuditService} from './member/GuildMemberAuditService';
|
||||
import {GuildMemberAuthService} from './member/GuildMemberAuthService';
|
||||
import {GuildMemberEventService} from './member/GuildMemberEventService';
|
||||
import {GuildMemberOperationsService} from './member/GuildMemberOperationsService';
|
||||
import {GuildMemberRoleService} from './member/GuildMemberRoleService';
|
||||
import {GuildMemberSearchIndexService} from './member/GuildMemberSearchIndexService';
|
||||
import {GuildMemberValidationService} from './member/GuildMemberValidationService';
|
||||
|
||||
export class GuildMemberService {
|
||||
private readonly authService: GuildMemberAuthService;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {UserID} from '@app/api/BrandedTypes';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildMFALevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {MfaNotEnabledError} from '@fluxer/errors/src/domains/auth/MfaNotEnabledError';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {UserID} from '../../BrandedTypes';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
|
||||
const ELEVATED_MFA_PERMISSIONS =
|
||||
Permissions.KICK_MEMBERS |
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import {mapGuildBansToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import {GuildMemberSearchIndexService} from '@app/api/guild/services/member/GuildMemberSearchIndexService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {GuildBan} from '@app/api/models/GuildBan';
|
||||
import {getIpBanBlastRadiusVerdict, isSingleIpBanCandidate} from '@app/api/risk/IpBanCgnatGuard';
|
||||
import {isIpBanExempt} from '@app/api/risk/IpBanExemptions';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import type {WorkerTaskName} from '@app/api/worker/WorkerLaneConfig';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
@@ -13,22 +29,6 @@ import {isSameIpDecisionMatch} from '@fluxer/ip_utils/src/IpAddress';
|
||||
import type {GuildBanResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import type {IpInfoService} from '@pkgs/geoip/src/IpInfoService';
|
||||
import type {IWorkerService} from '@pkgs/worker/src/contracts/IWorkerService';
|
||||
import type {GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import {Logger} from '../../Logger';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {GuildBan} from '../../models/GuildBan';
|
||||
import {getIpBanBlastRadiusVerdict, isSingleIpBanCandidate} from '../../risk/IpBanCgnatGuard';
|
||||
import {isIpBanExempt} from '../../risk/IpBanExemptions';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import type {WorkerTaskName} from '../../worker/WorkerLaneConfig';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../GuildAuditLogTypes';
|
||||
import {mapGuildBansToResponse} from '../GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {createGuildMfaEnforcer} from './GuildMfaEnforcement';
|
||||
import {GuildMemberSearchIndexService} from './member/GuildMemberSearchIndexService';
|
||||
|
||||
const SECONDS_PER_DAY = 86_400;
|
||||
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createRoleID, guildIdToRoleId} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import {mapGuildRoleToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildMemberRepository} from '@app/api/guild/repositories/IGuildMemberRepository';
|
||||
import type {IGuildRoleRepository} from '@app/api/guild/repositories/IGuildRoleRepository';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import {GuildRole} from '@app/api/models/GuildRole';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {applyProtectedRolePermissions} from '@app/api/utils/featureUtils';
|
||||
import {computePermissionsDiff} from '@app/api/utils/PermissionUtils';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {ALL_PERMISSIONS, DEFAULT_PERMISSIONS, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {LimitKey} from '@fluxer/constants/src/LimitConfigMetadata';
|
||||
@@ -17,24 +35,6 @@ import type {
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildRoleResponse} from '@fluxer/schema/src/domains/guild/GuildRoleSchemas';
|
||||
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
|
||||
import type {GuildID, RoleID, UserID} from '../../BrandedTypes';
|
||||
import {createRoleID, guildIdToRoleId} from '../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../infrastructure/ISnowflakeService';
|
||||
import {Logger} from '../../Logger';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '../../limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '../../limits/LimitMatchContextBuilder';
|
||||
import {GuildRole} from '../../models/GuildRole';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import {applyProtectedRolePermissions} from '../../utils/featureUtils';
|
||||
import {computePermissionsDiff} from '../../utils/PermissionUtils';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../GuildAuditLogTypes';
|
||||
import {mapGuildRoleToResponse} from '../GuildModel';
|
||||
import type {IGuildMemberRepository} from '../repositories/IGuildMemberRepository';
|
||||
import type {IGuildRoleRepository} from '../repositories/IGuildRoleRepository';
|
||||
import {createGuildMfaEnforcer} from './GuildMfaEnforcement';
|
||||
|
||||
interface GuildRoleRepository extends IGuildRoleRepository, IGuildMemberRepository {}
|
||||
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
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 {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, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
@@ -11,22 +27,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, GuildID, UserID} from '../../BrandedTypes';
|
||||
import type {IChannelRepository} from '../../channel/IChannelRepository';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '../../models/Channel';
|
||||
import {getMessageSearchService} from '../../SearchFactory';
|
||||
import {buildMessageSearchFilters} from '../../search/BuildMessageSearchFilters';
|
||||
import {channelNeedsReindexing} from '../../search/ChannelIndexingUtils';
|
||||
import {MessageSearchResponseMapper} from '../../search/MessageSearchResponseMapper';
|
||||
import {searchExistingMessages} from '../../search/MessageSearchResultReconciler';
|
||||
import {channelRequiresAgeVerification} from '../../search/SearchNsfwUtils';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import {canUserAccessNsfwContent} from '../../utils/AgeUtils';
|
||||
import {mapWithConcurrency} from '../../utils/ConcurrencyUtils';
|
||||
import type {WorkerTaskName} from '../../worker/WorkerLaneConfig';
|
||||
|
||||
const GUILD_FANOUT_CONCURRENCY = 16;
|
||||
const PERMISSION_CHECK_CONCURRENCY = 64;
|
||||
|
||||
@@ -1,5 +1,34 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ApiContext} from '@app/api/ApiContext';
|
||||
import type {EmojiID, GuildID, RoleID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createUserID, createWebhookID} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {GuildChannelService} from '@app/api/guild/services/GuildChannelService';
|
||||
import {GuildContentService} from '@app/api/guild/services/GuildContentService';
|
||||
import {GuildDataService} from '@app/api/guild/services/GuildDataService';
|
||||
import {GuildMemberService} from '@app/api/guild/services/GuildMemberService';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import {GuildModerationService} from '@app/api/guild/services/GuildModerationService';
|
||||
import {GuildRoleService} from '@app/api/guild/services/GuildRoleService';
|
||||
import {GuildSearchService} from '@app/api/guild/services/GuildSearchService';
|
||||
import type {AvatarService} from '@app/api/infrastructure/AvatarService';
|
||||
import type {EntityAssetService} from '@app/api/infrastructure/EntityAssetService';
|
||||
import type {IAssetDeletionQueue} from '@app/api/infrastructure/IAssetDeletionQueue';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {InviteRepository} from '@app/api/invite/InviteRepository';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {GuildAuditLog} from '@app/api/models/GuildAuditLog';
|
||||
import type {Webhook} from '@app/api/models/Webhook';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {getCachedUserPartialResponses} from '@app/api/user/UserCacheHelpers';
|
||||
import type {IWebhookRepository} from '@app/api/webhook/IWebhookRepository';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
@@ -25,35 +54,6 @@ import type {GuildUpdateRequest} from '@fluxer/schema/src/domains/guild/GuildReq
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
|
||||
import type {IpInfoService} from '@pkgs/geoip/src/IpInfoService';
|
||||
import type {ApiContext} from '../../ApiContext';
|
||||
import type {EmojiID, GuildID, RoleID, StickerID, UserID} from '../../BrandedTypes';
|
||||
import {createUserID, createWebhookID} from '../../BrandedTypes';
|
||||
import type {IChannelRepository} from '../../channel/IChannelRepository';
|
||||
import type {ChannelService} from '../../channel/services/ChannelService';
|
||||
import type {AvatarService} from '../../infrastructure/AvatarService';
|
||||
import type {EntityAssetService} from '../../infrastructure/EntityAssetService';
|
||||
import type {IAssetDeletionQueue} from '../../infrastructure/IAssetDeletionQueue';
|
||||
import type {IGatewayService} from '../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../infrastructure/UserCacheService';
|
||||
import type {InviteRepository} from '../../invite/InviteRepository';
|
||||
import type {LimitConfigService} from '../../limits/LimitConfigService';
|
||||
import type {RequestCache} from '../../middleware/RequestCacheMiddleware';
|
||||
import type {GuildAuditLog} from '../../models/GuildAuditLog';
|
||||
import type {Webhook} from '../../models/Webhook';
|
||||
import type {IUserRepository} from '../../user/IUserRepository';
|
||||
import {getCachedUserPartialResponses} from '../../user/UserCacheHelpers';
|
||||
import type {IWebhookRepository} from '../../webhook/IWebhookRepository';
|
||||
import type {GuildAuditLogService} from '../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from '../repositories/IGuildRepositoryAggregate';
|
||||
import {GuildChannelService} from './GuildChannelService';
|
||||
import {GuildContentService} from './GuildContentService';
|
||||
import {GuildDataService} from './GuildDataService';
|
||||
import {GuildMemberService} from './GuildMemberService';
|
||||
import {createGuildMfaEnforcer} from './GuildMfaEnforcement';
|
||||
import {GuildModerationService} from './GuildModerationService';
|
||||
import {GuildRoleService} from './GuildRoleService';
|
||||
import {GuildSearchService} from './GuildSearchService';
|
||||
|
||||
interface StoredGuildAuditLogEntryResponse extends Omit<GuildAuditLogEntryResponse, 'changes'> {
|
||||
changes?: GuildAuditLogChange;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID} from '@app/api/BrandedTypes';
|
||||
import type {Channel} from '@app/api/models/Channel';
|
||||
import {serializeChannelForAudit as serializeChannelForAuditUtil} from '@app/api/utils/AuditSerializationUtils';
|
||||
import {toIdString} from '@app/api/utils/IdUtils';
|
||||
import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
||||
import type {ChannelID} from '../../../BrandedTypes';
|
||||
import type {Channel} from '../../../models/Channel';
|
||||
import {serializeChannelForAudit as serializeChannelForAuditUtil} from '../../../utils/AuditSerializationUtils';
|
||||
import {toIdString} from '../../../utils/IdUtils';
|
||||
|
||||
export interface ChannelReorderOperation {
|
||||
channelId: ChannelID;
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, EmojiID, GuildID, RoleID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createChannelID, createRoleID, createUserID} from '@app/api/BrandedTypes';
|
||||
import {mapChannelToResponse} from '@app/api/channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {PermissionOverwrite} from '@app/api/database/types/ChannelTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {ChannelHelpers, type ChannelReorderOperation} from '@app/api/guild/services/channel/ChannelHelpers';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '@app/api/models/Channel';
|
||||
import {ChannelPermissionOverwrite} from '@app/api/models/ChannelPermissionOverwrite';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {ALL_PERMISSIONS, ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ContentWarningLevel, GuildFeatures, resolveVoiceChannelBitrate} from '@fluxer/constants/src/GuildConstants';
|
||||
@@ -24,25 +43,6 @@ import {
|
||||
} from '@fluxer/schema/src/domains/channel/GuildChannelOrdering';
|
||||
import {ChannelNameType} from '@fluxer/schema/src/primitives/ChannelValidators';
|
||||
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
|
||||
import type {ChannelID, EmojiID, GuildID, RoleID, StickerID, UserID} from '../../../BrandedTypes';
|
||||
import {createChannelID, createRoleID, createUserID} from '../../../BrandedTypes';
|
||||
import {mapChannelToResponse} from '../../../channel/ChannelMappers';
|
||||
import type {IChannelRepository} from '../../../channel/IChannelRepository';
|
||||
import type {PermissionOverwrite} from '../../../database/types/ChannelTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../../infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '../../../infrastructure/UserCacheService';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {LimitConfigService} from '../../../limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '../../../limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '../../../limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {Channel} from '../../../models/Channel';
|
||||
import {ChannelPermissionOverwrite} from '../../../models/ChannelPermissionOverwrite';
|
||||
import type {GuildAuditLogService} from '../../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../../GuildAuditLogTypes';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import {ChannelHelpers, type ChannelReorderOperation} from './ChannelHelpers';
|
||||
|
||||
export class ChannelOperationsService {
|
||||
constructor(
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {EmojiID, GuildID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
import {serializeEmojiForAudit, serializeStickerForAudit} from '@app/api/utils/AuditSerializationUtils';
|
||||
import {hasPermission, requirePermission} from '@app/api/utils/PermissionUtils';
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {EmojiID, GuildID, StickerID, UserID} from '../../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {GuildEmoji} from '../../../models/GuildEmoji';
|
||||
import type {GuildSticker} from '../../../models/GuildSticker';
|
||||
import {serializeEmojiForAudit, serializeStickerForAudit} from '../../../utils/AuditSerializationUtils';
|
||||
import {hasPermission, requirePermission} from '../../../utils/PermissionUtils';
|
||||
import type {GuildAuditLogService} from '../../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../../GuildAuditLogTypes';
|
||||
|
||||
export class ContentHelpers {
|
||||
constructor(
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createEmojiID, type EmojiID, type GuildID, type UserID} from '@app/api/BrandedTypes';
|
||||
import {getContentMessage} from '@app/api/content_i18n/ContentI18n';
|
||||
import {mapGuildEmojisWithUsersToResponse, mapGuildEmojiToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {ContentHelpers} from '@app/api/guild/services/content/ContentHelpers';
|
||||
import type {ExpressionAssetPurger} from '@app/api/guild/services/content/ExpressionAssetPurger';
|
||||
import type {AvatarService} from '@app/api/infrastructure/AvatarService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {GuildEmoji} from '@app/api/models/GuildEmoji';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {getCachedUserPartialResponse} from '@app/api/user/UserCacheHelpers';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {LimitKey} from '@fluxer/constants/src/LimitConfigMetadata';
|
||||
@@ -12,22 +28,6 @@ import {getErrorMessageUnsafe} from '@fluxer/errors/src/i18n/ErrorI18n';
|
||||
import {resolveLimit} from '@fluxer/limits/src/LimitResolver';
|
||||
import type {GuildEmojiResponse, GuildEmojiWithUserResponse} from '@fluxer/schema/src/domains/guild/GuildEmojiSchemas';
|
||||
import type {UserPartialResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas';
|
||||
import {createEmojiID, type EmojiID, type GuildID, type UserID} from '../../../BrandedTypes';
|
||||
import {getContentMessage} from '../../../content_i18n/ContentI18n';
|
||||
import type {AvatarService} from '../../../infrastructure/AvatarService';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../../infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '../../../infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '../../../limits/LimitConfigService';
|
||||
import {createLimitMatchContext} from '../../../limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {GuildEmoji} from '../../../models/GuildEmoji';
|
||||
import type {User} from '../../../models/User';
|
||||
import {getCachedUserPartialResponse} from '../../../user/UserCacheHelpers';
|
||||
import {mapGuildEmojisWithUsersToResponse, mapGuildEmojiToResponse} from '../../GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {ContentHelpers} from './ContentHelpers';
|
||||
import type {ExpressionAssetPurger} from './ExpressionAssetPurger';
|
||||
|
||||
export class EmojiService {
|
||||
constructor(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Config} from '@app/api/Config';
|
||||
import type {IAssetDeletionQueue} from '@app/api/infrastructure/IAssetDeletionQueue';
|
||||
import {getExtensionWhitelist} from '@fluxer/constants/src/AssetFormatPolicy';
|
||||
import {Config} from '../../../Config';
|
||||
import type {IAssetDeletionQueue} from '../../../infrastructure/IAssetDeletionQueue';
|
||||
|
||||
const STICKER_EXTENSIONS = getExtensionWhitelist('sticker');
|
||||
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createStickerID, type GuildID, type StickerID, type UserID} from '@app/api/BrandedTypes';
|
||||
import {getContentMessage} from '@app/api/content_i18n/ContentI18n';
|
||||
import {mapGuildStickersWithUsersToResponse, mapGuildStickerToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {ContentHelpers} from '@app/api/guild/services/content/ContentHelpers';
|
||||
import type {ExpressionAssetPurger} from '@app/api/guild/services/content/ExpressionAssetPurger';
|
||||
import type {AvatarService} from '@app/api/infrastructure/AvatarService';
|
||||
import {contentModerationService} from '@app/api/infrastructure/ContentModerationService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {GuildSticker} from '@app/api/models/GuildSticker';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {getCachedUserPartialResponse} from '@app/api/user/UserCacheHelpers';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {LimitKey} from '@fluxer/constants/src/LimitConfigMetadata';
|
||||
@@ -15,23 +32,6 @@ import type {
|
||||
GuildStickerWithUserResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildEmojiSchemas';
|
||||
import type {UserPartialResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas';
|
||||
import {createStickerID, type GuildID, type StickerID, type UserID} from '../../../BrandedTypes';
|
||||
import {getContentMessage} from '../../../content_i18n/ContentI18n';
|
||||
import type {AvatarService} from '../../../infrastructure/AvatarService';
|
||||
import {contentModerationService} from '../../../infrastructure/ContentModerationService';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../../infrastructure/ISnowflakeService';
|
||||
import type {UserCacheService} from '../../../infrastructure/UserCacheService';
|
||||
import type {LimitConfigService} from '../../../limits/LimitConfigService';
|
||||
import {createLimitMatchContext} from '../../../limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {GuildSticker} from '../../../models/GuildSticker';
|
||||
import type {User} from '../../../models/User';
|
||||
import {getCachedUserPartialResponse} from '../../../user/UserCacheHelpers';
|
||||
import {mapGuildStickersWithUsersToResponse, mapGuildStickerToResponse} from '../../GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {ContentHelpers} from './ContentHelpers';
|
||||
import type {ExpressionAssetPurger} from './ExpressionAssetPurger';
|
||||
|
||||
export class StickerService {
|
||||
constructor(
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, EmojiID, GuildID, RoleID, StickerID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import {mapGuildToGuildResponse} from '@app/api/guild/GuildModel';
|
||||
import {GuildRepository} from '@app/api/guild/repositories/GuildRepository';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {serializeGuildForAudit as serializeGuildForAuditUtil} from '@app/api/utils/AuditSerializationUtils';
|
||||
import {requirePermission} from '@app/api/utils/PermissionUtils';
|
||||
import type {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {AccessDeniedError} from '@fluxer/errors/src/domains/core/AccessDeniedError';
|
||||
import {UnknownGuildError} from '@fluxer/errors/src/domains/guild/UnknownGuildError';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {ChannelID, EmojiID, GuildID, RoleID, StickerID, UserID} from '../../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {Guild} from '../../../models/Guild';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import {serializeGuildForAudit as serializeGuildForAuditUtil} from '../../../utils/AuditSerializationUtils';
|
||||
import {requirePermission} from '../../../utils/PermissionUtils';
|
||||
import type {GuildAuditLogService} from '../../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../../GuildAuditLogTypes';
|
||||
import {mapGuildToGuildResponse} from '../../GuildModel';
|
||||
import {GuildRepository} from '../../repositories/GuildRepository';
|
||||
import {createGuildMfaEnforcer} from '../GuildMfaEnforcement';
|
||||
|
||||
interface GuildAuth {
|
||||
guildData: GuildResponse;
|
||||
|
||||
@@ -1,5 +1,36 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {ChannelID, GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createChannelID, createGuildID, createRoleID, guildIdToRoleId} from '@app/api/BrandedTypes';
|
||||
import type {IChannelRepository} from '@app/api/channel/IChannelRepository';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import {BatchBuilder} from '@app/api/database/CassandraQueryExecution';
|
||||
import type {PermissionOverwrite} from '@app/api/database/types/ChannelTypes';
|
||||
import type {GuildRow} from '@app/api/database/types/GuildTypes';
|
||||
import {mapGuildToGuildResponse, mapGuildToPartialResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildDiscoveryRepository} from '@app/api/guild/repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from '@app/api/guild/services/data/GuildDataHelpers';
|
||||
import {contentModerationService} from '@app/api/infrastructure/ContentModerationService';
|
||||
import type {EntityAssetService, PreparedAssetUpload} from '@app/api/infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '@app/api/infrastructure/ISnowflakeService';
|
||||
import type {InviteRepository} from '@app/api/invite/InviteRepository';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {Guild} from '@app/api/models/Guild';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {getGuildSearchService} from '@app/api/SearchFactory';
|
||||
import type {GuildDiscoveryContext} from '@app/api/search/guild/GuildSearchSerializer';
|
||||
import {deleteChannelMessageSearchDocuments} from '@app/api/search/MessageSearchIndexCleanup';
|
||||
import {Channels, ChannelsByGuild, GuildMembers, GuildMembersByUserId, GuildRoles, Guilds} from '@app/api/Tables';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {mapUserSettingsToResponse} from '@app/api/user/UserMappers';
|
||||
import {addGuildToUncategorizedFolder, removeGuildFromUserFolders} from '@app/api/user/utils/GuildFolderUtils';
|
||||
import type {IWebhookRepository} from '@app/api/webhook/IWebhookRepository';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {ALL_PERMISSIONS, ChannelTypes, DEFAULT_PERMISSIONS, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {DiscoveryApplicationStatus} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
@@ -38,37 +69,6 @@ import type {
|
||||
TemplateSerializedGuild,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildTemplateSchemas';
|
||||
import {extractTimestamp} from '@fluxer/snowflake/src/SnowflakeUtils';
|
||||
import type {ChannelID, GuildID, RoleID, UserID} from '../../../BrandedTypes';
|
||||
import {createChannelID, createGuildID, createRoleID, guildIdToRoleId} from '../../../BrandedTypes';
|
||||
import type {IChannelRepository} from '../../../channel/IChannelRepository';
|
||||
import type {ChannelService} from '../../../channel/services/ChannelService';
|
||||
import {BatchBuilder} from '../../../database/CassandraQueryExecution';
|
||||
import type {PermissionOverwrite} from '../../../database/types/ChannelTypes';
|
||||
import type {GuildRow} from '../../../database/types/GuildTypes';
|
||||
import {contentModerationService} from '../../../infrastructure/ContentModerationService';
|
||||
import type {EntityAssetService, PreparedAssetUpload} from '../../../infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {ISnowflakeService} from '../../../infrastructure/ISnowflakeService';
|
||||
import type {InviteRepository} from '../../../invite/InviteRepository';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {LimitConfigService} from '../../../limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '../../../limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '../../../limits/LimitMatchContextBuilder';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import {Guild} from '../../../models/Guild';
|
||||
import type {User} from '../../../models/User';
|
||||
import {getGuildSearchService} from '../../../SearchFactory';
|
||||
import type {GuildDiscoveryContext} from '../../../search/guild/GuildSearchSerializer';
|
||||
import {deleteChannelMessageSearchDocuments} from '../../../search/MessageSearchIndexCleanup';
|
||||
import {Channels, ChannelsByGuild, GuildMembers, GuildMembersByUserId, GuildRoles, Guilds} from '../../../Tables';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import {mapUserSettingsToResponse} from '../../../user/UserMappers';
|
||||
import {addGuildToUncategorizedFolder, removeGuildFromUserFolders} from '../../../user/utils/GuildFolderUtils';
|
||||
import type {IWebhookRepository} from '../../../webhook/IWebhookRepository';
|
||||
import {mapGuildToGuildResponse, mapGuildToPartialResponse} from '../../GuildModel';
|
||||
import type {IGuildDiscoveryRepository} from '../../repositories/GuildDiscoveryRepository';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from './GuildDataHelpers';
|
||||
|
||||
const DEFAULT_TEXT_CATEGORY_NAME = 'Text Channels';
|
||||
const DEFAULT_VOICE_CATEGORY_NAME = 'Voice Channels';
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {mapGuildToGuildResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from '@app/api/guild/services/data/GuildDataHelpers';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {checkGuildVerificationWithGuildModel} from '@app/api/utils/GuildVerificationUtils';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {MissingAccessError} from '@fluxer/errors/src/domains/core/MissingAccessError';
|
||||
import {MissingPermissionsError} from '@fluxer/errors/src/domains/core/MissingPermissionsError';
|
||||
@@ -7,15 +16,6 @@ import {CannotTransferOwnershipToBotError} from '@fluxer/errors/src/domains/guil
|
||||
import {UnknownGuildError} from '@fluxer/errors/src/domains/guild/UnknownGuildError';
|
||||
import {UnknownGuildMemberError} from '@fluxer/errors/src/domains/guild/UnknownGuildMemberError';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildID, UserID} from '../../../BrandedTypes';
|
||||
import type {Guild} from '../../../models/Guild';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import type {User} from '../../../models/User';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import {checkGuildVerificationWithGuildModel} from '../../../utils/GuildVerificationUtils';
|
||||
import {mapGuildToGuildResponse} from '../../GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from './GuildDataHelpers';
|
||||
|
||||
export class GuildOwnershipService {
|
||||
constructor(
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {
|
||||
createInviteCode,
|
||||
createVanityURLCode,
|
||||
type GuildID,
|
||||
type UserID,
|
||||
vanityCodeToInviteCode,
|
||||
} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from '@app/api/guild/services/data/GuildDataHelpers';
|
||||
import type {InviteRepository} from '@app/api/invite/InviteRepository';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {InviteTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
@@ -7,17 +18,6 @@ import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
||||
import {UnknownGuildError} from '@fluxer/errors/src/domains/guild/UnknownGuildError';
|
||||
import type {GuildVanityURLResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {
|
||||
createInviteCode,
|
||||
createVanityURLCode,
|
||||
type GuildID,
|
||||
type UserID,
|
||||
vanityCodeToInviteCode,
|
||||
} from '../../../BrandedTypes';
|
||||
import type {InviteRepository} from '../../../invite/InviteRepository';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildDataHelpers} from './GuildDataHelpers';
|
||||
|
||||
export class GuildVanityService {
|
||||
constructor(
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import type {GuildID, UserID} from '../../../BrandedTypes';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import type {GuildAuditLogService} from '../../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../../GuildAuditLogTypes';
|
||||
|
||||
export class GuildMemberAuditService {
|
||||
constructor(private readonly guildAuditLogService: GuildAuditLogService) {}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createGuildMfaEnforcer} from '@app/api/guild/services/GuildMfaEnforcement';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {MissingAccessError} from '@fluxer/errors/src/domains/core/MissingAccessError';
|
||||
import {MissingPermissionsError} from '@fluxer/errors/src/domains/core/MissingPermissionsError';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildID, RoleID, UserID} from '../../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import {createGuildMfaEnforcer} from '../GuildMfaEnforcement';
|
||||
|
||||
interface GuildAuth {
|
||||
guildData: GuildResponse;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../../infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import {mapGuildMemberToResponse} from '../../GuildModel';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import {mapGuildMemberToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
|
||||
export class GuildMemberEventService {
|
||||
constructor(
|
||||
|
||||
@@ -1,5 +1,49 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {requireEmailVerified} from '@app/api/auth/EmailVerificationUtils';
|
||||
import type {GuildID, InviteCode, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import {createChannelID, createRoleID} from '@app/api/BrandedTypes';
|
||||
import type {ChannelService} from '@app/api/channel/services/ChannelService';
|
||||
import {assertMutableUserId} from '@app/api/constants/Core';
|
||||
import type {GuildMemberRow} from '@app/api/database/types/GuildTypes';
|
||||
import type {GuildAuditLogService} from '@app/api/guild/GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '@app/api/guild/GuildAuditLogTypes';
|
||||
import {resolveMaxGuildMembersLimit} from '@app/api/guild/GuildMemberLimitUtils';
|
||||
import {mapGuildMemberToResponse} from '@app/api/guild/GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildMemberAuthService} from '@app/api/guild/services/member/GuildMemberAuthService';
|
||||
import type {GuildMemberEventService} from '@app/api/guild/services/member/GuildMemberEventService';
|
||||
import type {GuildMemberSearchIndexService} from '@app/api/guild/services/member/GuildMemberSearchIndexService';
|
||||
import type {GuildMemberValidationService} from '@app/api/guild/services/member/GuildMemberValidationService';
|
||||
import {contentModerationService} from '@app/api/infrastructure/ContentModerationService';
|
||||
import type {EntityAssetService, PreparedAssetUpload} from '@app/api/infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '@app/api/infrastructure/UserCacheService';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {LimitConfigService} from '@app/api/limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder';
|
||||
import {profileSubstringBlocklistCache} from '@app/api/middleware/ProfileSubstringBlocklistCache';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '@app/api/models/Guild';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import type {UserGuildSettings} from '@app/api/models/UserGuildSettings';
|
||||
import type {UserSettings} from '@app/api/models/UserSettings';
|
||||
import {
|
||||
DEFAULT_PHONE_GATE_MEMBER_THRESHOLD,
|
||||
evaluateDeferredPhoneGate,
|
||||
getDeferredPhoneGateConfig,
|
||||
guildTriggersPhoneGate,
|
||||
} from '@app/api/risk/DeferredPhoneGate';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {getEffectiveSuspiciousFlags, isProfileSubstringExempt} from '@app/api/user/UserHelpers';
|
||||
import {
|
||||
mapUserGuildSettingsToResponse,
|
||||
mapUserSettingsToResponse,
|
||||
mapUserToPrivateResponse,
|
||||
} from '@app/api/user/UserMappers';
|
||||
import {addGuildToUncategorizedFolder, removeGuildFromUserFolders} from '@app/api/user/utils/GuildFolderUtils';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {
|
||||
@@ -32,50 +76,6 @@ import type {GuildMemberUpdateRequest} from '@fluxer/schema/src/domains/guild/Gu
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {IRateLimitService} from '@pkgs/rate_limit/src/IRateLimitService';
|
||||
import {ms} from 'itty-time';
|
||||
import {requireEmailVerified} from '../../../auth/EmailVerificationUtils';
|
||||
import type {GuildID, InviteCode, RoleID, UserID} from '../../../BrandedTypes';
|
||||
import {createChannelID, createRoleID} from '../../../BrandedTypes';
|
||||
import type {ChannelService} from '../../../channel/services/ChannelService';
|
||||
import {assertMutableUserId} from '../../../constants/Core';
|
||||
import type {GuildMemberRow} from '../../../database/types/GuildTypes';
|
||||
import {contentModerationService} from '../../../infrastructure/ContentModerationService';
|
||||
import type {EntityAssetService, PreparedAssetUpload} from '../../../infrastructure/EntityAssetService';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {UserCacheService} from '../../../infrastructure/UserCacheService';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {LimitConfigService} from '../../../limits/LimitConfigService';
|
||||
import {resolveLimitSafe} from '../../../limits/LimitConfigUtils';
|
||||
import {createLimitMatchContext} from '../../../limits/LimitMatchContextBuilder';
|
||||
import {profileSubstringBlocklistCache} from '../../../middleware/ProfileSubstringBlocklistCache';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {Guild} from '../../../models/Guild';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import type {User} from '../../../models/User';
|
||||
import type {UserGuildSettings} from '../../../models/UserGuildSettings';
|
||||
import type {UserSettings} from '../../../models/UserSettings';
|
||||
import {
|
||||
DEFAULT_PHONE_GATE_MEMBER_THRESHOLD,
|
||||
evaluateDeferredPhoneGate,
|
||||
getDeferredPhoneGateConfig,
|
||||
guildTriggersPhoneGate,
|
||||
} from '../../../risk/DeferredPhoneGate';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import {getEffectiveSuspiciousFlags, isProfileSubstringExempt} from '../../../user/UserHelpers';
|
||||
import {
|
||||
mapUserGuildSettingsToResponse,
|
||||
mapUserSettingsToResponse,
|
||||
mapUserToPrivateResponse,
|
||||
} from '../../../user/UserMappers';
|
||||
import {addGuildToUncategorizedFolder, removeGuildFromUserFolders} from '../../../user/utils/GuildFolderUtils';
|
||||
import type {GuildAuditLogService} from '../../GuildAuditLogService';
|
||||
import type {GuildAuditLogChange} from '../../GuildAuditLogTypes';
|
||||
import {resolveMaxGuildMembersLimit} from '../../GuildMemberLimitUtils';
|
||||
import {mapGuildMemberToResponse} from '../../GuildModel';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildMemberAuthService} from './GuildMemberAuthService';
|
||||
import type {GuildMemberEventService} from './GuildMemberEventService';
|
||||
import type {GuildMemberSearchIndexService} from './GuildMemberSearchIndexService';
|
||||
import type {GuildMemberValidationService} from './GuildMemberValidationService';
|
||||
|
||||
const MEMBERSHIP_METADATA_TTL_SECONDS = 365 * 24 * 60 * 60;
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildMemberAuthService} from '@app/api/guild/services/member/GuildMemberAuthService';
|
||||
import type {GuildMemberValidationService} from '@app/api/guild/services/member/GuildMemberValidationService';
|
||||
import type {IGatewayService} from '@app/api/infrastructure/IGatewayService';
|
||||
import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware';
|
||||
import {UnknownGuildMemberError} from '@fluxer/errors/src/domains/guild/UnknownGuildMemberError';
|
||||
import type {GuildID, RoleID, UserID} from '../../../BrandedTypes';
|
||||
import type {IGatewayService} from '../../../infrastructure/IGatewayService';
|
||||
import type {RequestCache} from '../../../middleware/RequestCacheMiddleware';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildMemberAuthService} from './GuildMemberAuthService';
|
||||
import type {GuildMemberValidationService} from './GuildMemberValidationService';
|
||||
|
||||
export class GuildMemberRoleService {
|
||||
constructor(
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, UserID} from '../../../BrandedTypes';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import type {User} from '../../../models/User';
|
||||
import {getGuildMemberSearchService} from '../../../SearchFactory';
|
||||
import type {IGuildMemberSearchService} from '../../../search/IGuildMemberSearchService';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {getGuildMemberSearchService} from '@app/api/SearchFactory';
|
||||
import type {IGuildMemberSearchService} from '@app/api/search/IGuildMemberSearchService';
|
||||
|
||||
interface GuildMemberSearchIndexOptions {
|
||||
includeDefault?: boolean;
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import type {GuildID, RoleID, UserID} from '@app/api/BrandedTypes';
|
||||
import {guildIdToRoleId} from '@app/api/BrandedTypes';
|
||||
import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate';
|
||||
import {Logger} from '@app/api/Logger';
|
||||
import type {GuildMember} from '@app/api/models/GuildMember';
|
||||
import {getIpBanBlastRadiusVerdict, isSingleIpBanCandidate} from '@app/api/risk/IpBanCgnatGuard';
|
||||
import {isIpBanExempt} from '@app/api/risk/IpBanExemptions';
|
||||
import type {IUserRepository} from '@app/api/user/IUserRepository';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
|
||||
@@ -10,14 +18,6 @@ import {UnknownGuildRoleError} from '@fluxer/errors/src/domains/guild/UnknownGui
|
||||
import {isSameIpDecisionMatch} from '@fluxer/ip_utils/src/IpAddress';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {IpInfoService} from '@pkgs/geoip/src/IpInfoService';
|
||||
import type {GuildID, RoleID, UserID} from '../../../BrandedTypes';
|
||||
import {guildIdToRoleId} from '../../../BrandedTypes';
|
||||
import {Logger} from '../../../Logger';
|
||||
import type {GuildMember} from '../../../models/GuildMember';
|
||||
import {getIpBanBlastRadiusVerdict, isSingleIpBanCandidate} from '../../../risk/IpBanCgnatGuard';
|
||||
import {isIpBanExempt} from '../../../risk/IpBanExemptions';
|
||||
import type {IUserRepository} from '../../../user/IUserRepository';
|
||||
import type {IGuildRepositoryAggregate} from '../../repositories/IGuildRepositoryAggregate';
|
||||
|
||||
function ensureNotEveryoneRole(roleId: RoleID, guildId: GuildID, path: string): void {
|
||||
if (roleId === guildIdToRoleId(guildId)) {
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, setUserACLs, type TestAccount, totpCodeNow} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
addMemberRole,
|
||||
createGuild,
|
||||
createRole,
|
||||
getGuild,
|
||||
setupTestGuildWithMembers,
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {DiscoveryCategories, type DiscoveryCategory} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
@@ -9,11 +20,6 @@ import type {
|
||||
DiscoveryStatusResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildDiscoverySchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount, setUserACLs, type TestAccount, totpCodeNow} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {addMemberRole, createGuild, createRole, getGuild, setupTestGuildWithMembers} from './GuildTestUtils';
|
||||
|
||||
const TOTP_SECRET = 'JBSWY3DPEHPK3PXP';
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, setUserACLs} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild, setupTestGuildWithMembers} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_IDS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {DiscoveryCategories} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
@@ -8,11 +13,6 @@ import type {
|
||||
DiscoveryStatusResponse,
|
||||
} from '@fluxer/schema/src/domains/guild/GuildDiscoverySchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount, setUserACLs} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_IDS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, setupTestGuildWithMembers} from './GuildTestUtils';
|
||||
|
||||
type FormBodyError = {
|
||||
code: string;
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, setUserACLs} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import type {GuildID} from '@app/api/BrandedTypes';
|
||||
import {createTestBotAccount} from '@app/api/bot/tests/BotTestUtils';
|
||||
import {createGuild, getUserGuilds} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {setInjectedGatewayService} from '@app/api/middleware/ServiceRegistry';
|
||||
import {getGuildRepository} from '@app/api/middleware/ServiceSingletons';
|
||||
import {banUser} from '@app/api/moderation/tests/ModerationTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {NoopLogger} from '@app/api/test/mocks/NoopLogger';
|
||||
import {NoopGatewayService} from '@app/api/test/NoopGatewayService';
|
||||
import {HTTP_STATUS, TEST_IDS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import syncDiscoveryIndex from '@app/api/worker/tasks/SyncDiscoveryIndex';
|
||||
import {clearWorkerDependencies, setWorkerDependenciesForTest} from '@app/api/worker/WorkerContext';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {DiscoveryCategories, DiscoveryCategoryLabels} from '@fluxer/constants/src/DiscoveryConstants';
|
||||
import {GuildVerificationLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
@@ -10,20 +24,6 @@ import type {
|
||||
} from '@fluxer/schema/src/domains/guild/GuildDiscoverySchemas';
|
||||
import type {WorkerTaskHelpers} from '@pkgs/worker/src/contracts/WorkerTask';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount, setUserACLs} from '../../auth/tests/AuthTestUtils';
|
||||
import type {GuildID} from '../../BrandedTypes';
|
||||
import {createTestBotAccount} from '../../bot/tests/BotTestUtils';
|
||||
import {setInjectedGatewayService} from '../../middleware/ServiceRegistry';
|
||||
import {getGuildRepository} from '../../middleware/ServiceSingletons';
|
||||
import {banUser} from '../../moderation/tests/ModerationTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {NoopLogger} from '../../test/mocks/NoopLogger';
|
||||
import {NoopGatewayService} from '../../test/NoopGatewayService';
|
||||
import {HTTP_STATUS, TEST_IDS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import syncDiscoveryIndex from '../../worker/tasks/SyncDiscoveryIndex';
|
||||
import {clearWorkerDependencies, setWorkerDependenciesForTest} from '../../worker/WorkerContext';
|
||||
import {createGuild, getUserGuilds} from './GuildTestUtils';
|
||||
|
||||
async function setGuildMemberCount(harness: ApiTestHarness, guildId: string, memberCount: number): Promise<void> {
|
||||
await createBuilder(harness, '')
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {getGifDataUrl, getPngDataUrl, getSvgDataUrl} from '@app/api/emoji/tests/EmojiTestUtils';
|
||||
import {createGuild, updateGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {ensureSessionStarted} 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 {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {getGifDataUrl, getPngDataUrl, getSvgDataUrl} from '../../emoji/tests/EmojiTestUtils';
|
||||
import {ensureSessionStarted} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, updateGuild} from './GuildTestUtils';
|
||||
|
||||
const AVATAR_MAX_SIZE = 10 * 1024 * 1024;
|
||||
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {authorizeBot, createTestBotAccount} from '@app/api/bot/tests/BotTestUtils';
|
||||
import {
|
||||
createChannel,
|
||||
createChannelInvite,
|
||||
createRole,
|
||||
setupTestGuildWithMembers,
|
||||
updateRole,
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {deleteMessage, 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, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {createWebhook} from '@app/api/webhook/tests/WebhookTestUtils';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {authorizeBot, createTestBotAccount} from '../../bot/tests/BotTestUtils';
|
||||
import {deleteMessage, sendMessage} from '../../message/tests/MessageTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {createWebhook} from '../../webhook/tests/WebhookTestUtils';
|
||||
import {createChannel, createChannelInvite, createRole, setupTestGuildWithMembers, updateRole} from './GuildTestUtils';
|
||||
|
||||
interface AuditLogChange {
|
||||
key: string;
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {ChannelResponse} from '@fluxer/schema/src/domains/channel/ChannelSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
addMemberRole,
|
||||
createChannel,
|
||||
@@ -12,11 +8,15 @@ import {
|
||||
getChannel,
|
||||
setupTestGuildWithMembers,
|
||||
updateChannel,
|
||||
} from '../../channel/tests/ChannelTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, getGuildChannels} from './GuildTestUtils';
|
||||
} from '@app/api/channel/tests/ChannelTestUtils';
|
||||
import {createGuild, getGuildChannels} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {ChannelResponse} from '@fluxer/schema/src/domains/channel/ChannelSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Channel Management', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuildID} from '../../BrandedTypes';
|
||||
import {ChannelRepository} from '../../channel/ChannelRepository';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuildID} from '@app/api/BrandedTypes';
|
||||
import {ChannelRepository} from '@app/api/channel/ChannelRepository';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -19,7 +13,13 @@ import {
|
||||
getChannel,
|
||||
getGuildChannels,
|
||||
updateChannelPositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Channel Positions', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {GuildOperationsService} from '@app/api/guild/services/data/GuildOperationsService';
|
||||
import type {User} from '@app/api/models/User';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import type {User} from '../../models/User';
|
||||
import {GuildOperationsService} from '../services/data/GuildOperationsService';
|
||||
|
||||
const REACHED_GUILD_COUNT = new Error('reached guild count lookup');
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, setUserACLs, type TestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {getPngDataUrl} from '@app/api/emoji/tests/EmojiTestUtils';
|
||||
import {createGuild, getGuild, updateGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {
|
||||
@@ -10,12 +16,6 @@ import type {
|
||||
} from '@fluxer/schema/src/domains/guild/GuildEmojiSchemas';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {afterAll, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount, setUserACLs, type TestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {getPngDataUrl} from '../../emoji/tests/EmojiTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, getGuild, updateGuild} from './GuildTestUtils';
|
||||
|
||||
interface CloneSource {
|
||||
owner: TestAccount;
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
addMemberRole,
|
||||
createGuild,
|
||||
@@ -16,7 +9,14 @@ import {
|
||||
updateGuild,
|
||||
updateMember,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
interface AuditLogEntry {
|
||||
id: string;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {authorizeBot, createTestBotAccount} from '@app/api/bot/tests/BotTestUtils';
|
||||
import {acceptInvite, createChannelInvite, createGuild, getChannel} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {UNCATEGORIZED_FOLDER_ID} from '@fluxer/constants/src/UserConstants';
|
||||
import type {UserSettingsResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {authorizeBot, createTestBotAccount} from '../../bot/tests/BotTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {acceptInvite, createChannelInvite, createGuild, getChannel} from './GuildTestUtils';
|
||||
|
||||
describe('Guild Folder Operations', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
createChannel,
|
||||
@@ -10,8 +8,10 @@ import {
|
||||
createGuild,
|
||||
createPermissionOverwrite,
|
||||
getGuild,
|
||||
} from '../../channel/tests/ChannelTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
} from '@app/api/channel/tests/ChannelTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('GET /guilds/:guild_id full payload', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import type {GuildBanResponse, GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {getPngDataUrl, getTooLargePngDataUrl} from '../../emoji/tests/EmojiTestUtils';
|
||||
import {ensureSessionStarted} from '../../message/tests/MessageTestUtils';
|
||||
import {profileSubstringBlocklistCache} from '../../middleware/ProfileSubstringBlocklistCache';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {grantPremium} from '../../user/tests/UserTestUtils';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {getPngDataUrl, getTooLargePngDataUrl} from '@app/api/emoji/tests/EmojiTestUtils';
|
||||
import {
|
||||
addMemberRole,
|
||||
createRole,
|
||||
@@ -21,7 +10,18 @@ import {
|
||||
setupTestGuildWithMembers,
|
||||
updateMember,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {ensureSessionStarted} from '@app/api/message/tests/MessageTestUtils';
|
||||
import {profileSubstringBlocklistCache} from '@app/api/middleware/ProfileSubstringBlocklistCache';
|
||||
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 {grantPremium} from '@app/api/user/tests/UserTestUtils';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
|
||||
import type {GuildBanResponse, GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Member Management', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createChannel, setupTestGuildWithMembers} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {ChannelTypes} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, test} from 'vitest';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createChannel, setupTestGuildWithMembers} from './GuildTestUtils';
|
||||
|
||||
describe('Guild Member Voice Move', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, type TestAccount, totpCodeNow} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild, setupTestGuildWithMembers} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {GuildMFALevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount, type TestAccount, totpCodeNow} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, setupTestGuildWithMembers} from './GuildTestUtils';
|
||||
|
||||
const TOTP_SECRET = 'JBSWY3DPEHPK3PXP';
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createGuildID, createUserID} from '@app/api/BrandedTypes';
|
||||
import type {GuildRow} from '@app/api/database/types/GuildTypes';
|
||||
import {mapGuildToGuildResponse, mapGuildToPartialResponse} from '@app/api/guild/GuildModel';
|
||||
import {Guild} from '@app/api/models/Guild';
|
||||
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import {describe, expect, test} from 'vitest';
|
||||
import {createGuildID, createUserID} from '../../BrandedTypes';
|
||||
import type {GuildRow} from '../../database/types/GuildTypes';
|
||||
import {Guild} from '../../models/Guild';
|
||||
import {mapGuildToGuildResponse, mapGuildToPartialResponse} from '../GuildModel';
|
||||
|
||||
function createGuild(overrides: Partial<GuildRow> = {}): Guild {
|
||||
return new Guild({
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures, GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {authorizeBot, createTestBotAccount} from '../../bot/tests/BotTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {authorizeBot, createTestBotAccount} from '@app/api/bot/tests/BotTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -17,7 +10,14 @@ import {
|
||||
createRole,
|
||||
getChannel,
|
||||
leaveGuild,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {GuildFeatures, GuildNSFWLevel} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
|
||||
describe('Guild Operation Permissions', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_IDS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {afterAll, beforeAll, beforeEach, describe, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_IDS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
|
||||
describe('Guild Operation Validation', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {acceptInvite, createChannelInvite, createGuild, getChannel} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_CREDENTIALS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS, TEST_CREDENTIALS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {acceptInvite, createChannelInvite, createGuild, getChannel} from './GuildTestUtils';
|
||||
|
||||
describe('Guild Ownership Transfer', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -16,7 +11,12 @@ import {
|
||||
getChannel,
|
||||
getRoles,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Role Management', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {createGuildID, createRoleID} from '../../BrandedTypes';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {GuildRoleRepository} from '../repositories/GuildRoleRepository';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuildID, createRoleID} from '@app/api/BrandedTypes';
|
||||
import {GuildRoleRepository} from '@app/api/guild/repositories/GuildRoleRepository';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -18,7 +13,12 @@ import {
|
||||
getChannel,
|
||||
getRoles,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Role Operations', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -15,7 +10,12 @@ import {
|
||||
getChannel,
|
||||
getRoles,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Guild Role Reorder', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {getGuildChannels, getRoles} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import {ChannelTypes, Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {SystemChannelFlags} from '@fluxer/constants/src/GuildConstants';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import {afterAll, beforeAll, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {getGuildChannels, getRoles} from './GuildTestUtils';
|
||||
|
||||
describe('Guild Template Import', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount, type TestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import type {ApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {createBuilder} from '@app/api/test/TestRequestBuilder';
|
||||
import type {ChannelResponse} from '@fluxer/schema/src/domains/channel/ChannelSchemas';
|
||||
import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas';
|
||||
import type {GuildUpdateRequest} from '@fluxer/schema/src/domains/guild/GuildRequestSchemas';
|
||||
import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas';
|
||||
import type {GuildRoleResponse} from '@fluxer/schema/src/domains/guild/GuildRoleSchemas';
|
||||
import type {GuildInviteMetadataResponse} from '@fluxer/schema/src/domains/invite/InviteSchemas';
|
||||
import {createTestAccount, type TestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import type {ApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
|
||||
export async function createGuild(harness: ApiTestHarness, token: string, name: string): Promise<GuildResponse> {
|
||||
return createBuilder<GuildResponse>(harness, token).post('/guilds').body({name}).execute();
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {acceptInvite, createChannelInvite, createGuild} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
|
||||
import {UserFlags} from '@fluxer/constants/src/UserConstants';
|
||||
import {afterAll, beforeAll, beforeEach, describe, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {acceptInvite, createChannelInvite, createGuild} from './GuildTestUtils';
|
||||
|
||||
const STAFF_TEST_FLAGS = UserFlags.HAS_SESSION_STARTED | UserFlags.STAFF;
|
||||
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {GuildInviteMetadataResponse} from '@fluxer/schema/src/domains/invite/InviteSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
addMemberRole,
|
||||
@@ -18,7 +12,13 @@ import {
|
||||
getRoles,
|
||||
setupTestGuildWithMembers,
|
||||
updateRole,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import type {GuildInviteMetadataResponse} from '@fluxer/schema/src/domains/invite/InviteSchemas';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Invite Permissions', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
addMemberRole,
|
||||
createChannelInvite,
|
||||
@@ -14,7 +9,12 @@ import {
|
||||
deleteInvite,
|
||||
getChannel,
|
||||
setupTestGuildWithMembers,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '@app/api/test/TestConstants';
|
||||
import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder';
|
||||
import {Permissions} from '@fluxer/constants/src/ChannelConstants';
|
||||
import {afterEach, beforeEach, describe, expect, test} from 'vitest';
|
||||
|
||||
describe('Invite Security', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {createGuild, deleteInvite, getChannel} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 type {GuildInviteMetadataResponse} from '@fluxer/schema/src/domains/invite/InviteSchemas';
|
||||
import {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createGuild, deleteInvite, getChannel} from './GuildTestUtils';
|
||||
|
||||
describe('Invite Validation', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
createChannelInvite,
|
||||
@@ -15,7 +11,11 @@ import {
|
||||
updateMember,
|
||||
updateRole,
|
||||
updateRolePositions,
|
||||
} from './GuildTestUtils';
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
|
||||
describe('Role Hierarchy Enforcement', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils';
|
||||
import {
|
||||
acceptInvite,
|
||||
createChannelInvite,
|
||||
createGuild,
|
||||
createRole,
|
||||
getChannel,
|
||||
updateRole,
|
||||
} from '@app/api/guild/tests/GuildTestUtils';
|
||||
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 {beforeAll, beforeEach, describe, expect, it} from 'vitest';
|
||||
import {createTestAccount} from '../../auth/tests/AuthTestUtils';
|
||||
import {type ApiTestHarness, createApiTestHarness} from '../../test/ApiTestHarness';
|
||||
import {HTTP_STATUS} from '../../test/TestConstants';
|
||||
import {createBuilder} from '../../test/TestRequestBuilder';
|
||||
import {acceptInvite, createChannelInvite, createGuild, createRole, getChannel, updateRole} from './GuildTestUtils';
|
||||
|
||||
describe('Role Permission Assignment Hierarchy', () => {
|
||||
let harness: ApiTestHarness;
|
||||
|
||||
Reference in new issue
Block a user