@fnlb-project/database 1.0.83 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -106
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Generated by dts-bundle-generator v9.5.1
|
|
2
2
|
|
|
3
|
+
import { GenericErrorSender } from '@fnlb-project/shared/errors';
|
|
4
|
+
import { CategoryConfigSupportedPlatforms, CommunityListingKind, CommunityListingStatus, Locales } from '@fnlb-project/shared/types';
|
|
3
5
|
import { ConnectOptions, HydratedDocument, Model, Schema, connection } from 'mongoose';
|
|
4
6
|
|
|
5
7
|
export declare class DatabaseClient {
|
|
@@ -8,63 +10,6 @@ export declare class DatabaseClient {
|
|
|
8
10
|
connect(options?: ConnectOptions): Promise<void>;
|
|
9
11
|
private connectWithRetry;
|
|
10
12
|
}
|
|
11
|
-
declare enum GeneralErrorCodes {
|
|
12
|
-
GenericUnknown = "net.fnlb.errors.generic.unknown",
|
|
13
|
-
GenericInternalError = "net.fnlb.errors.generic.internal_error",
|
|
14
|
-
GenericValidationFailed = "net.fnlb.errors.generic.validation_failed",
|
|
15
|
-
GenericParseFailed = "net.fnlb.errors.generic.parse_failed",
|
|
16
|
-
GenericNotFound = "net.fnlb.errors.generic.not_found",
|
|
17
|
-
GenericAlreadyExists = "net.fnlb.errors.generic.already_exists",
|
|
18
|
-
CommonInvalidRequest = "net.fnlb.errors.common.invalid_request",
|
|
19
|
-
CommonUnableToProcessRequest = "net.fnlb.errors.common.unable_to_process_request",
|
|
20
|
-
CommonInvalidFieldsLength = "net.fnlb.errors.common.invalid_body_fields_length",
|
|
21
|
-
CommonRateLimitExceeded = "net.fnlb.errors.common.rate_limit_exceeded",
|
|
22
|
-
CommonLimitExceeded = "net.fnlb.errors.common.limit_exceeded",
|
|
23
|
-
CommonUnableToSaveToDatabase = "net.fnlb.errors.common.unable_to_save_to_database",
|
|
24
|
-
CommonUpdateRequired = "net.fnlb.errors.common.update_required",
|
|
25
|
-
CommonMaintenanceMode = "net.fnlb.errors.common.maintenance_mode",
|
|
26
|
-
AuthInvalidToken = "net.fnlb.errors.auth.invalid_token",
|
|
27
|
-
AuthInvalidAPIToken = "net.fnlb.errors.auth.invalid_api_token",
|
|
28
|
-
AuthManagedAuthRefused = "net.fnlb.errors.auth.managed_auth_refused",
|
|
29
|
-
AuthInvalidCaptchaToken = "net.fnlb.errors.auth.invalid_captcha_token",
|
|
30
|
-
AuthUnauthorized = "net.fnlb.errors.auth.unauthorized",
|
|
31
|
-
AuthForbidden = "net.fnlb.errors.auth.forbidden",
|
|
32
|
-
AuthUserBanned = "net.fnlb.errors.auth.user_banned",
|
|
33
|
-
Oauth2InvalidCode = "net.fnlb.errors.oauth2.invalid_code",
|
|
34
|
-
Oauth2InvalidScope = "net.fnlb.errors.oauth2.invalid_scope",
|
|
35
|
-
Oauth2TokenInvalid = "net.fnlb.errors.oauth2.token_invalid",
|
|
36
|
-
Oauth2UnableToFetchUser = "net.fnlb.errors.oauth2.unable_to_fetch_user",
|
|
37
|
-
Oauth2UnableToFetchConnections = "net.fnlb.errors.oauth2.unable_to_fetch_connections",
|
|
38
|
-
Oauth2UserWithoutConnection = "net.fnlb.errors.oauth2.user_without_connection",
|
|
39
|
-
Oauth2ConnectionNotVerified = "net.fnlb.errors.oauth2.connection_not_verified",
|
|
40
|
-
ReleaseNotFound = "net.fnlb.errors.release.no_release_found",
|
|
41
|
-
ReleaseVersionAlreadyExists = "net.fnlb.errors.release.version_already_exists",
|
|
42
|
-
ReleaseHashMismatch = "net.fnlb.errors.release.hash_mismatch",
|
|
43
|
-
MfaNotEnabled = "net.fnlb.errors.mfa.not_enabled",
|
|
44
|
-
MfaAlreadyEnabled = "net.fnlb.errors.mfa.already_enabled",
|
|
45
|
-
MfaChallengeExpired = "net.fnlb.errors.mfa.challenge_expired",
|
|
46
|
-
MfaSetupExpired = "net.fnlb.errors.mfa.setup_expired"
|
|
47
|
-
}
|
|
48
|
-
declare enum InputErrorCodes {
|
|
49
|
-
LoginInvalidCredentials = "net.fnlb.errors.login.invalid_credentials",
|
|
50
|
-
LoginInvalidEmail = "net.fnlb.errors.login.invalid_email",
|
|
51
|
-
LoginInvalidOrUsedEmail = "net.fnlb.errors.login.invalid_or_used_email",
|
|
52
|
-
AuthPasswordConfirmationInvalid = "net.fnlb.errors.auth.invalid_password_confirmation",
|
|
53
|
-
MfaInvalidCode = "net.fnlb.errors.mfa.invalid_code",
|
|
54
|
-
MfaRequired = "net.fnlb.errors.mfa.required"
|
|
55
|
-
}
|
|
56
|
-
export type ErrorCodes = GeneralErrorCodes | InputErrorCodes;
|
|
57
|
-
declare enum ErrorInputTypes {
|
|
58
|
-
Username = "username",
|
|
59
|
-
Email = "email",
|
|
60
|
-
Password = "password",
|
|
61
|
-
Shared = "shared",
|
|
62
|
-
MfaCode = "mfaCode"
|
|
63
|
-
}
|
|
64
|
-
export type ErrorSenderErrors = GeneralErrorCodes | GeneralErrorCodes[] | InputErrorCodes | InputErrorCodes[] | ErrorCodes | ErrorCodes[];
|
|
65
|
-
declare abstract class GenericErrorSender {
|
|
66
|
-
abstract sendError(code: number, errors: ErrorSenderErrors, input?: ErrorInputTypes): unknown;
|
|
67
|
-
}
|
|
68
13
|
export declare class DatabaseErrorHandler {
|
|
69
14
|
static handleError(err: any, errorSender: GenericErrorSender): unknown;
|
|
70
15
|
}
|
|
@@ -230,55 +175,6 @@ export declare const BotModel: import("mongoose").Model<{
|
|
|
230
175
|
} & {
|
|
231
176
|
__v: number;
|
|
232
177
|
}>>;
|
|
233
|
-
declare enum CategoryConfigSupportedPlatforms {
|
|
234
|
-
Win = "WIN",
|
|
235
|
-
Mac = "MAC",
|
|
236
|
-
Psn = "PSN",
|
|
237
|
-
Xbl = "XBL",
|
|
238
|
-
Swt = "SWT",
|
|
239
|
-
Swt2 = "SWT2",
|
|
240
|
-
Ios = "IOS",
|
|
241
|
-
And = "AND",
|
|
242
|
-
Ps5 = "PS5",
|
|
243
|
-
Xsx = "XSX"
|
|
244
|
-
}
|
|
245
|
-
declare enum CommunityListingKind {
|
|
246
|
-
Bot = "bot",
|
|
247
|
-
Preset = "preset",
|
|
248
|
-
Category = "category",
|
|
249
|
-
Event = "event",
|
|
250
|
-
CustomCommand = "custom_command",
|
|
251
|
-
Scheduled = "scheduled"
|
|
252
|
-
}
|
|
253
|
-
declare enum CommunityListingStatus {
|
|
254
|
-
Pending = "pending",
|
|
255
|
-
Published = "published",
|
|
256
|
-
Rejected = "rejected",
|
|
257
|
-
Unlisted = "unlisted"
|
|
258
|
-
}
|
|
259
|
-
declare enum Locales {
|
|
260
|
-
Default = "en",
|
|
261
|
-
EnUS = "en-US",
|
|
262
|
-
Es = "es",
|
|
263
|
-
Es419 = "es-419",
|
|
264
|
-
Ar = "ar",
|
|
265
|
-
De = "de",
|
|
266
|
-
Fr = "fr",
|
|
267
|
-
He = "he",
|
|
268
|
-
Id = "id",
|
|
269
|
-
It = "it",
|
|
270
|
-
Ja = "ja",
|
|
271
|
-
Ko = "ko",
|
|
272
|
-
Pl = "pl",
|
|
273
|
-
Pt = "pt",
|
|
274
|
-
PtBR = "pt-BR",
|
|
275
|
-
Ru = "ru",
|
|
276
|
-
Th = "th",
|
|
277
|
-
Tr = "tr",
|
|
278
|
-
Vi = "vi",
|
|
279
|
-
Zh = "zh",
|
|
280
|
-
ZhHant = "zh-Hant"
|
|
281
|
-
}
|
|
282
178
|
export declare const CategoryModel: import("mongoose").Model<{
|
|
283
179
|
owner: import("mongoose").Types.ObjectId;
|
|
284
180
|
name: string;
|
|
@@ -3703,6 +3599,8 @@ export interface IUser {
|
|
|
3703
3599
|
username: string;
|
|
3704
3600
|
avatar?: string;
|
|
3705
3601
|
email: string;
|
|
3602
|
+
/** Encrypted personal email kept for account recovery when `email` is a staff @fnlb.net address. */
|
|
3603
|
+
recoveryEmail?: string;
|
|
3706
3604
|
password: string;
|
|
3707
3605
|
apiToken: string;
|
|
3708
3606
|
flags?: number;
|
package/dist/index.js
CHANGED
|
@@ -937,4 +937,4 @@ updatePath: '${n.raw.path}'`);n.trace.add(e);let s=Object.keys(e||{}),i=s.length
|
|
|
937
937
|
* No-op if there is already a default connection.
|
|
938
938
|
*/function iO(e){if(e.connection)return;let t=e.createConnection();t[EJ]=!0,t.models=e.models}var $n=OJ.exports=SJ=new re({[_J]:!0})});var DJ=y(function(uxe,bJ){/*!
|
|
939
939
|
* Module dependencies.
|
|
940
|
-
*/var wJ=SG();_2().set(wJ);var td=CJ();td.setDriver(wJ);td.Mongoose.prototype.mongo=Ca();bJ.exports=td});var Co=y(function(axe,Ee){var H=DJ();Ee.exports=H;Ee.exports.default=H;Ee.exports.mongoose=H;Ee.exports.cast=H.cast;Ee.exports.STATES=H.STATES;Ee.exports.setDriver=H.setDriver;Ee.exports.set=H.set;Ee.exports.get=H.get;Ee.exports.createConnection=H.createConnection;Ee.exports.connect=H.connect;Ee.exports.disconnect=H.disconnect;Ee.exports.startSession=H.startSession;Ee.exports.pluralize=H.pluralize;Ee.exports.model=H.model;Ee.exports.deleteModel=H.deleteModel;Ee.exports.modelNames=H.modelNames;Ee.exports.plugin=H.plugin;Ee.exports.connections=H.connections;Ee.exports.version=H.version;Ee.exports.Aggregate=H.Aggregate;Ee.exports.Mongoose=H.Mongoose;Ee.exports.Schema=H.Schema;Ee.exports.SchemaType=H.SchemaType;Ee.exports.SchemaTypes=H.SchemaTypes;Ee.exports.VirtualType=H.VirtualType;Ee.exports.Types=H.Types;Ee.exports.Query=H.Query;Ee.exports.Model=H.Model;Ee.exports.Document=H.Document;Ee.exports.ObjectId=H.ObjectId;Ee.exports.isValidObjectId=H.isValidObjectId;Ee.exports.isObjectIdOrHexString=H.isObjectIdOrHexString;Ee.exports.syncIndexes=H.syncIndexes;Ee.exports.Decimal128=H.Decimal128;Ee.exports.Mixed=H.Mixed;Ee.exports.Date=H.Date;Ee.exports.Number=H.Number;Ee.exports.Error=H.Error;Ee.exports.MongooseError=H.MongooseError;Ee.exports.now=H.now;Ee.exports.CastError=H.CastError;Ee.exports.SchemaTypeOptions=H.SchemaTypeOptions;Ee.exports.mongo=H.mongo;Ee.exports.mquery=H.mquery;Ee.exports.sanitizeFilter=H.sanitizeFilter;Ee.exports.trusted=H.trusted;Ee.exports.skipMiddlewareFunction=H.skipMiddlewareFunction;Ee.exports.overwriteMiddlewareResult=H.overwriteMiddlewareResult});var wOe=Do(Co(),1);var wo=Do(Co(),1);class TJ{dbURI;constructor(e){if(!e)throw Error("DB URI is not valid.");this.dbURI=e}async connect(e){console.log("Connecting to database..."),await this.connectWithRetry(e),wo.connection.on("connecting",()=>{console.log("Connecting to Database...")}),wo.connection.on("connected",()=>{console.log("Database is connected.")}),wo.connection.on("open",()=>{console.log("Database connection is ready.")}),wo.connection.on("disconnecting: ",()=>{console.log("Database is disconnecting...")}),wo.connection.on("error",(t)=>{console.error("Database connection error:",t)}),wo.connection.on("disconnected",(t)=>{console.warn("Database disconnected.",t)}),wo.connection.on("reconnected",(t)=>{console.warn("Database reconnected.",t)})}async connectWithRetry(e){try{await wo.connect(this.dbURI,{maxPoolSize:1000,autoIndex:!0,socketTimeoutMS:300000,...e})}catch(t){console.error("Unable to connect to the database. Retrying in 5s...",t),setTimeout(()=>this.connectWithRetry(),5000)}}}var XSe;((e)=>{e.String="string",e.Integer="integer",e.Float="float",e.Boolean="boolean",e.Object="object",e.Wildcard="wildcard",e.Exec="exec"})(XSe||={});var ZSe;((e)=>{e[e.Single=0]="Single",e[e.Select=1]="Select",e[e.Array=2]="Array"})(ZSe||={});var eOe;((e)=>{e[e.Offline=0]="Offline",e[e.Booting=1]="Booting",e[e.Available=2]="Available",e[e.Busy=3]="Busy",e[e.Disconnected=4]="Disconnected"})(eOe||={});var tOe;((e)=>{e[e.Neutral=0]="Neutral",e[e.Success=1]="Success",e[e.Info=2]="Info",e[e.Warn=3]="Warn",e[e.Error=4]="Error"})(tOe||={});var oO;((e)=>{e.Win="WIN",e.Mac="MAC",e.Psn="PSN",e.Xbl="XBL",e.Swt="SWT",e.Swt2="SWT2",e.Ios="IOS",e.And="AND",e.Ps5="PS5",e.Xsx="XSX"})(oO||={});var uO;((e)=>{e[e.Public=0]="Public",e[e.Private=1]="Private"})(uO||={});var aO;((e)=>{e[e.Auto=0]="Auto",e[e.Online=1]="Online",e[e.Away=2]="Away"})(aO||={});var W1;((e)=>{e[e.Event=0]="Event",e[e.CustomCommand=1]="CustomCommand",e[e.Scheduled=2]="Scheduled"})(W1||={});var z1;((e)=>{e[e.RunCommand=0]="RunCommand",e[e.RunFunction=1]="RunFunction",e[e.ControlFlow=2]="ControlFlow"})(z1||={});var cO;((e)=>{e[e.Ready=0]="Ready",e[e.Disconnected=1]="Disconnected",e[e.PartyInvite=2]="PartyInvite",e[e.PartyJoinRequest=3]="PartyJoinRequest",e[e.PartyMemberJoined=4]="PartyMemberJoined",e[e.PartyMemberLeft=5]="PartyMemberLeft",e[e.PartyMemberKicked=6]="PartyMemberKicked",e[e.PartyMemberMessage=7]="PartyMemberMessage",e[e.PartyMemberPromoted=8]="PartyMemberPromoted",e[e.PartyMemberReady=9]="PartyMemberReady",e[e.PartyMemberSitOut=10]="PartyMemberSitOut",e[e.PartyMemberUnready=11]="PartyMemberUnready",e[e.PartyMemberMatch=12]="PartyMemberMatch",e[e.PartyMemberCosmeticUpdated=13]="PartyMemberCosmeticUpdated",e[e.FriendAdded=14]="FriendAdded",e[e.FriendRemoved=15]="FriendRemoved",e[e.FriendRequest=16]="FriendRequest",e[e.FriendMessage=17]="FriendMessage",e[e.FriendOnline=18]="FriendOnline",e[e.FriendOffline=19]="FriendOffline",e[e.UserBlocked=20]="UserBlocked",e[e.UserUnblocked=21]="UserUnblocked",e[e.PartyMemberInParty=22]="PartyMemberInParty"})(cO||={});var fg;((e)=>{e.Default="en",e.EnUS="en-US",e.Es="es",e.Es419="es-419",e.Ar="ar",e.De="de",e.Fr="fr",e.He="he",e.Id="id",e.It="it",e.Ja="ja",e.Ko="ko",e.Pl="pl",e.Pt="pt",e.PtBR="pt-BR",e.Ru="ru",e.Th="th",e.Tr="tr",e.Vi="vi",e.Zh="zh",e.ZhHant="zh-Hant"})(fg||={});var rOe;((e)=>{e.Default="en",e.Ar="ar",e.De="de",e.Es="es",e.Es419="es-419",e.Fr="fr",e.Id="id",e.It="it",e.Ja="ja",e.Ko="ko",e.Pl="pl",e.PtBR="pt-BR",e.Ru="ru",e.Th="th",e.Tr="tr",e.Vi="vi",e.ZhHans="zh-Hans",e.ZhHant="zh-Hant"})(rOe||={});var lO;((e)=>{e.Bot="bot",e.Preset="preset",e.Category="category",e.Event="event",e.CustomCommand="custom_command",e.Scheduled="scheduled"})(lO||={});var hO;((e)=>{e.Pending="pending",e.Published="published",e.Rejected="rejected",e.Unlisted="unlisted"})(hO||={});var MJ;((e)=>{e.GenericUnknown="net.fnlb.errors.generic.unknown",e.GenericInternalError="net.fnlb.errors.generic.internal_error",e.GenericValidationFailed="net.fnlb.errors.generic.validation_failed",e.GenericParseFailed="net.fnlb.errors.generic.parse_failed",e.GenericNotFound="net.fnlb.errors.generic.not_found",e.GenericAlreadyExists="net.fnlb.errors.generic.already_exists",e.CommonInvalidRequest="net.fnlb.errors.common.invalid_request",e.CommonUnableToProcessRequest="net.fnlb.errors.common.unable_to_process_request",e.CommonInvalidFieldsLength="net.fnlb.errors.common.invalid_body_fields_length",e.CommonRateLimitExceeded="net.fnlb.errors.common.rate_limit_exceeded",e.CommonLimitExceeded="net.fnlb.errors.common.limit_exceeded",e.CommonUnableToSaveToDatabase="net.fnlb.errors.common.unable_to_save_to_database",e.CommonUpdateRequired="net.fnlb.errors.common.update_required",e.CommonMaintenanceMode="net.fnlb.errors.common.maintenance_mode",e.AuthInvalidToken="net.fnlb.errors.auth.invalid_token",e.AuthInvalidAPIToken="net.fnlb.errors.auth.invalid_api_token",e.AuthManagedAuthRefused="net.fnlb.errors.auth.managed_auth_refused",e.AuthInvalidCaptchaToken="net.fnlb.errors.auth.invalid_captcha_token",e.AuthUnauthorized="net.fnlb.errors.auth.unauthorized",e.AuthForbidden="net.fnlb.errors.auth.forbidden",e.AuthUserBanned="net.fnlb.errors.auth.user_banned",e.Oauth2InvalidCode="net.fnlb.errors.oauth2.invalid_code",e.Oauth2InvalidScope="net.fnlb.errors.oauth2.invalid_scope",e.Oauth2TokenInvalid="net.fnlb.errors.oauth2.token_invalid",e.Oauth2UnableToFetchUser="net.fnlb.errors.oauth2.unable_to_fetch_user",e.Oauth2UnableToFetchConnections="net.fnlb.errors.oauth2.unable_to_fetch_connections",e.Oauth2UserWithoutConnection="net.fnlb.errors.oauth2.user_without_connection",e.Oauth2ConnectionNotVerified="net.fnlb.errors.oauth2.connection_not_verified",e.ReleaseNotFound="net.fnlb.errors.release.no_release_found",e.ReleaseVersionAlreadyExists="net.fnlb.errors.release.version_already_exists",e.ReleaseHashMismatch="net.fnlb.errors.release.hash_mismatch",e.MfaNotEnabled="net.fnlb.errors.mfa.not_enabled",e.MfaAlreadyEnabled="net.fnlb.errors.mfa.already_enabled",e.MfaChallengeExpired="net.fnlb.errors.mfa.challenge_expired",e.MfaSetupExpired="net.fnlb.errors.mfa.setup_expired"})(MJ||={});var xJ;((e)=>{e.LoginInvalidCredentials="net.fnlb.errors.login.invalid_credentials",e.LoginInvalidEmail="net.fnlb.errors.login.invalid_email",e.LoginInvalidOrUsedEmail="net.fnlb.errors.login.invalid_or_used_email",e.AuthPasswordConfirmationInvalid="net.fnlb.errors.auth.invalid_password_confirmation",e.MfaInvalidCode="net.fnlb.errors.mfa.invalid_code",e.MfaRequired="net.fnlb.errors.mfa.required"})(xJ||={});var Ja={...MJ,...xJ},nOe;((e)=>{e.Username="username",e.Email="email",e.Password="password",e.Shared="shared",e.MfaCode="mfaCode"})(nOe||={});var sOe;((e)=>{e.General="general",e.Input="input"})(sOe||={});var iOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Verified=2]="Verified",e[e.VerificationPending=4]="VerificationPending",e[e.PublicClient=8]="PublicClient"})(iOe||={});var oOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Public=2]="Public",e[e.InvalidAuth=4]="InvalidAuth",e[e.Prepared=8]="Prepared"})(oOe||={});var uOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Managed=2]="Managed"})(uOe||={});var aOe;((e)=>e[e.NotWearable=1]="NotWearable")(aOe||={});var cOe;((e)=>{e[e.identify=1]="identify",e[e.email=2]="email",e[e.connections=4]="connections",e[e["bots.read"]=8]="bots.read",e[e["bots.write"]=16]="bots.write",e[e["bots.run"]=32]="bots.run",e[e["categories.read"]=64]="categories.read",e[e["categories.write"]=128]="categories.write",e[e["commands.run"]=256]="commands.run",e[e.openid=512]="openid",e[e.profile=1024]="profile"})(cOe||={});var lOe;((e)=>{e[e.Ready=1]="Ready",e[e.Leader=2]="Leader",e[e.SittingOut=4]="SittingOut",e[e.Playing=8]="Playing"})(lOe||={});var hOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.IgnoreSelf=2]="IgnoreSelf",e[e.IgnoreBots=4]="IgnoreBots",e[e.IgnoreLeader=8]="IgnoreLeader",e[e.IgnoreOwners=16]="IgnoreOwners",e[e.IgnoreAdmins=32]="IgnoreAdmins",e[e.IgnoreWhitelistUsers=64]="IgnoreWhitelistUsers",e[e.IgnoreBlacklistUsers=128]="IgnoreBlacklistUsers",e[e.IgnoreExcludedAutoAddFriends=256]="IgnoreExcludedAutoAddFriends",e[e.IgnoreFriends=512]="IgnoreFriends",e[e.IgnoreOtherBots=1024]="IgnoreOtherBots",e[e.IgnorePartyMembers=2048]="IgnorePartyMembers"})(hOe||={});var oa;((e)=>{e[e.Staff=1]="Staff",e[e.Admin=2]="Admin",e[e.Vip=4]="Vip",e[e.Verified=8]="Verified",e[e.Banned=16]="Banned",e[e.Tester=32]="Tester",e[e.Developer=64]="Developer",e[e.Partner=128]="Partner",e[e.Management=256]="Management",e[e.Moderation=512]="Moderation",e[e.Support=1024]="Support",e[e.IncreasedLimits=2048]="IncreasedLimits",e[e.Disabled=4096]="Disabled"})(oa||={});var fO;((i)=>{i[i.InternalError=1]="InternalError";i[i.BadValue=2]="BadValue";i[i.NoSuchKey=4]="NoSuchKey";i[i.KeyNotFound=211]="KeyNotFound";i[i.DuplicateKey=11000]="DuplicateKey"})(fO||={});class BJ{static handleError(e,t){if(!e)return!1;switch(e.code){case 11000:return t.sendError(400,Ja.GenericAlreadyExists);case 2:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 211:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 4:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 1:return console.error("Internal MongoDB error:",e),t.sendError(500,Ja.CommonUnableToSaveToDatabase);default:return console.error("Unhandled MongoError code:",e.code,e),t.sendError(500,Ja.CommonUnableToSaveToDatabase)}}}var rd=Do(Co(),1);var fOe=["password","token","apiToken","applications","mfa","deviceAuth","secret"];class Ms{static transformSchemaToJSON(e){let t=new Set(e);return(r,n)=>{if(n._id!==void 0)n.id=n._id;delete n._id,delete n.__v;for(let s of Object.keys(n))if(!t.has(s))delete n[s];for(let s of fOe)delete n[s]}}}var dOe=8,FJ=new rd.Schema({owner:{type:rd.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},secret:{type:String,required:function(){return!((this.flags??0)&dOe)},trim:!0},name:{type:String,required:!0,trim:!0},icon:{type:String,required:!1,trim:!0,default:void 0},description:{type:String,required:!1,trim:!0,default:void 0},scopes:{type:Number,required:!1,default:void 0},redirectUris:{type:[String],required:!1,trim:!0,default:void 0},tosUri:{type:String,required:!1,trim:!0,default:void 0},policyUri:{type:String,required:!1,trim:!0,default:void 0},installUri:{type:String,required:!1,trim:!0,default:void 0},flags:{type:Number,required:!1,default:void 0}});FJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","icon","description","scopes","redirectUris","tosUri","policyUri","installUri","flags"])});var pOe=rd.model("application",FJ);var G1=Do(Co(),1);var PJ=new G1.Schema({owner:{type:G1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},parent:{type:G1.Schema.Types.ObjectId,ref:"category",required:!1,index:!0,sparse:!0},nickname:{type:String,required:!0,trim:!0},flags:{type:Number,required:!1},email:{type:String,required:!1,trim:!0},deviceAuth:{required:!0,type:{accountId:{type:String,required:!0,unique:!0,lowercase:!0,trim:!0},deviceId:{type:String,required:!0,lowercase:!0,trim:!0},secret:{type:String,required:!0,trim:!0}},_id:!1},mmsBannedUntil:{type:Number,required:!1}});PJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","parent","nickname","flags","email","mmsBannedUntil"])});var mOe=G1.model("bot",PJ);var sd=Do(Co(),1);function nd(e){return Object.values(e).filter((t)=>typeof t==="number")}var IJ=new sd.Schema({owner:{type:sd.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0},flags:{type:Number,required:!1},managed:{type:Boolean,required:!1,index:!0,sparse:!0,default:void 0},config:{replyLangs:{type:[String],enum:Object.values(fg),default:void 0},searchLangs:{type:[String],enum:Object.values(fg),default:void 0},platform:{type:[String],enum:Object.values(oO),default:void 0},privacy:{type:Number,enum:nd(uO),default:void 0},prefixes:{type:[String],default:void 0},statusType:{type:Number,enum:nd(aO),default:void 0},statusText:{type:[String],default:void 0},statusInterval:{type:Number,default:void 0},level:{type:[Number],default:void 0},bpLevel:{type:[Number],default:void 0},extraOwners:{type:[{id:String,name:String,_id:!1}],default:void 0},admins:{type:[{id:String,name:String,_id:!1}],default:void 0},whitelistUsers:{type:[{id:String,name:String,_id:!1}],default:void 0},blacklistUsers:{type:[{id:String,name:String,_id:!1}],default:void 0},excludedAutoAddFriends:{type:[{id:String,name:String,_id:!1}],default:void 0},otherBots:{type:[{id:String,name:String,_id:!1}],default:void 0},inviteTimeout:{type:Number,default:void 0},maxBotsPerLobby:{type:Number,default:void 0},maxBotsPerLobbyWithOwner:{type:Number,default:void 0},maxBotsPerLobbyWithAdmin:{type:Number,default:void 0},maxBotsPerLobbyWithWhitelistUser:{type:Number,default:void 0},allowMatchmaking:{type:Boolean,default:void 0},leaveAfterMatchmaking:{type:Boolean,default:void 0},disableMatchmakingChecks:{type:Boolean,default:void 0},disablePlaylistChecks:{type:Boolean,default:void 0},disableJoinMessages:{type:Boolean,default:void 0},disableAutomaticMessages:{type:Boolean,default:void 0},acceptFriendRequests:{type:Boolean,default:void 0},sendFriendRequestOnJoinParty:{type:Boolean,default:void 0},sendFriendRequestOnMemberJoinParty:{type:Boolean,default:void 0},runCommandsWithoutPrefix:{type:Boolean,default:void 0},setCosmeticsWithoutCommands:{type:Boolean,default:void 0},setCosmeticsWithPrefix:{type:Boolean,default:void 0},acceptInvites:{type:Boolean,default:void 0},startBannedBots:{type:Boolean,default:void 0},triggers:{type:[{name:{type:String,required:!0},flags:{type:Number,required:!1,default:void 0},type:{type:Number,required:!0,enum:nd(W1)},event:{type:Number,enum:nd(cO),required(){return this.type===W1.Event},default:void 0},command:{type:String,required(){return this.type===W1.CustomCommand},default:void 0},interval:{type:String,required(){return this.type===W1.Scheduled},default:void 0},actions:{type:[{id:{type:String,required:!1},parent:{type:String,required:!1},type:{type:Number,enum:nd(z1),required:!0},command:{type:String,required(){return this.type===z1.RunCommand}},function:{type:String,required(){return this.type===z1.RunFunction}},statement:{type:String,required(){return this.type===z1.ControlFlow}},args:{type:[String],default:void 0,required:!0},condition:{type:String,default:void 0,required:!1},_id:!1}],required:!0,default:void 0,_id:!1},_id:!1}],default:void 0},onlyOwnerCommands:{type:[String],default:void 0},onlyAdminCommands:{type:[String],default:void 0},onlyWhitelistUsersCommands:{type:[String],default:void 0},onlyFriendsCommands:{type:[String],default:void 0},onlyPartyMembersCommands:{type:[String],default:void 0},onlyWhisperCommands:{type:[String],default:void 0},startOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startBanner:{type:[{id:String,_id:!1}],default:void 0},startBannerColor:{type:[{id:String,_id:!1}],default:void 0},joinOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinEmote:{type:[{id:String,_id:!1}],default:void 0},joinShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinBanner:{type:[{id:String,_id:!1}],default:void 0},joinBannerColor:{type:[{id:String,_id:!1}],default:void 0},memberJoinOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinEmote:{type:[{id:String,_id:!1}],default:void 0},memberJoinShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinBanner:{type:[{id:String,_id:!1}],default:void 0},memberJoinBannerColor:{type:[{id:String,_id:!1}],default:void 0}}});IJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","flags","managed","config"])});var yOe=sd.model("category",IJ);var H1=Do(Co(),1),dO=new H1.Schema({listing:{type:H1.Schema.Types.ObjectId,ref:"communityListing",required:!0},user:{type:H1.Schema.Types.ObjectId,ref:"user",required:!0}});dO.index({listing:1,user:1},{unique:!0});dO.index({user:1,listing:1});var gOe=H1.model("communityListingLike",dO);var K1=Do(Co(),1);var pO=new K1.Schema({kind:{type:String,required:!0,enum:Object.values(lO),index:!0},title:{type:String,required:!0,trim:!0,maxlength:80},description:{type:String,required:!1,trim:!0,maxlength:2000},tags:{type:[String],default:void 0},author:{type:K1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},status:{type:String,required:!0,enum:Object.values(hO),index:!0},stats:{type:{installs:{type:Number,required:!1},likes:{type:Number,required:!1,default:0,min:0}},_id:!1,required:!1,default:void 0},liveRef:{type:{categoryId:{type:String,required:!0,trim:!0}},_id:!1,required:!1,default:void 0},payload:{type:K1.Schema.Types.Mixed,required:!1,default:void 0}});pO.index({status:1,kind:1});pO.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","kind","title","description","tags","author","status","stats","liveRef","payload"])});var _Oe=K1.model("communityListing",pO);var od=Do(Co(),1);var id={id:{type:String,required:!0},variants:{type:[Number],default:void 0},_id:!1},EOe={id:{type:String,required:!0},_id:!1},$J=new od.Schema({owner:{type:od.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0,maxlength:64},outfit:{type:id,default:void 0},pickaxe:{type:id,default:void 0},backpack:{type:id,default:void 0},emote:{type:EOe,default:void 0},shoes:{type:id,default:void 0},sidekick:{type:id,default:void 0}});$J.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","outfit","pickaxe","backpack","emote","shoes","sidekick"])});var AOe=od.model("preset",$J);var ad=Do(Co(),1);class Y1{bitfield;constructor(e){this.bitfield=e??0}static from(...e){let t=0;for(let r of e)t|=r;return new Y1(t)}has(e){return(this.bitfield&e)!==0}hasAll(...e){let t=0;for(let r of e)t|=r;return(this.bitfield&t)===t}hasAny(...e){let t=0;for(let r of e)t|=r;return(this.bitfield&t)!==0}add(e){return this.bitfield|=e,this}remove(e){return this.bitfield&=~e,this}toNumber(){return this.bitfield}}var SOe=86400000;function mO(e,t,r){let n=new Y1(e),i=n.has(oa.Vip)&&!t;if(n.add(oa.Vip),r==null||i)return{update:{$set:{flags:n.toNumber()},$unset:{vipExpiresAt:1}},vipExpiresAt:null,permanent:!0};let a=new Date(Date.now()+r*SOe);return{update:{$set:{flags:n.toNumber(),vipExpiresAt:a}},vipExpiresAt:a,permanent:!1}}function dg(e){let t=new Y1(e);return t.remove(oa.Vip),{$set:{flags:t.toNumber()},$unset:{vipExpiresAt:1}}}function yO(e,t,r=Date.now()){if(!t)return"none";if(!new Y1(e).has(oa.Vip))return"cleanup";if(new Date(t).getTime()>r)return"none";return"expire"}var OOe=/^[a-f\d]{24}$/i;function ud(e){return typeof e==="string"&&OOe.test(e)}var gO=new ad.Schema({token:{type:String,required:!0,unique:!1},username:{type:String,required:!0,trim:!0},avatar:{type:String,required:!1,trim:!0,maxlength:128},email:{type:String,index:!0,required:!0,unique:!0,trim:!0},password:{type:String,required:!0},apiToken:{type:String,required:!0,index:!1,unique:!1,trim:!0},flags:{type:Number,required:!1},vipExpiresAt:{type:Date,required:!1,index:!0},connections:{discord:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}},google:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}},epic:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}}},applications:{type:[{_id:!1,id:{type:ad.Schema.Types.ObjectId,ref:"application",required:!0,trim:!0},token:{type:String,required:!0,trim:!0},scopes:{type:Number,required:!0}}],default:void 0},mfa:{type:{totp:{enabled:{type:Boolean,required:!1},secret:{type:String,required:!1}},recoveryCodes:{type:[{_id:!1,hash:{type:String,required:!0},usedAt:{type:Date,required:!1}}],default:void 0}},default:void 0}},{statics:{async verifyPassword(e,t){return Bun.password.verify(e,t)},async expireVipIfNeeded(e){let t=yO(e.flags,e.vipExpiresAt);if(t==="none")return!1;let r=dg(e.flags);return e.flags=r.$set.flags,e.vipExpiresAt=void 0,await this.updateOne({_id:e._id},r).exec(),t==="expire"},async findByToken(e,t){if(!ud(e))return null;let r=await this.findById(e);if(!r?.token||r.token!==t)return null;return await this.expireVipIfNeeded(r),r},async findByAPIToken(e,t){if(!ud(e))return null;let r=await this.findById(e);if(!r?.apiToken||r.apiToken!==t)return null;return await this.expireVipIfNeeded(r),r},async findByAccessToken(e,t){if(!ud(e))return null;let r=await this.findById(e),n=r?.applications?.find((s)=>s.token===t);if(!n||!r)return null;return await this.expireVipIfNeeded(r),{user:r,app:n}},async grantVip(e,t){if(!ud(e))return null;let r=await this.findById(e).exec();if(!r)return null;await this.expireVipIfNeeded(r);let n=typeof t==="number"&&Number.isFinite(t)?Math.max(1,Math.floor(t)):null,{update:s,vipExpiresAt:i,permanent:o}=mO(r.flags,r.vipExpiresAt,n),a=await this.updateOne({_id:r._id},s).exec();if(a.matchedCount===0)return null;return r.flags=s.$set.flags,r.vipExpiresAt=i??void 0,{ok:!0,permanent:o,vipExpiresAt:i,modified:a.modifiedCount>0,user:r}},async revokeVip(e){if(!ud(e))return null;let t=await this.findById(e).exec();if(!t)return null;let r=dg(t.flags),n=await this.updateOne({_id:t._id},r).exec();if(n.matchedCount===0)return null;return t.flags=r.$set.flags,t.vipExpiresAt=void 0,{ok:!0,modified:n.modifiedCount>0,user:t}},async expireDueVips(e=100){let t=new Date,r=await this.find({flags:{$bitsAnySet:oa.Vip},vipExpiresAt:{$lte:t}}).limit(e).exec(),n=[];for(let s of r){if(!await this.revokeVip(s.id))continue;n.push({id:s.id,username:s.username,email:s.email,discordId:s.connections?.discord?.id})}return n}}});gO.pre("save",async function(e){if(!this.isModified("password"))return e();try{return this.password=await Bun.password.hash(this.password,{algorithm:process.env.SAVE_ACCOUNT_ALGORITHM||"argon2id",timeCost:parseInt(process.env.SAVE_ACCOUNT_TIME_COST||"3"),cost:parseInt(process.env.SAVE_ACCOUNT_ALGORITHM_COST||"12")}),e()}catch(t){return e(t)}});gO.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","username","avatar","email","flags","vipExpiresAt","connections"])});var COe=ad.model("user",gO);var uBe=wOe.connection;export{pOe as ApplicationModel,mOe as BotModel,yOe as CategoryModel,gOe as CommunityListingLikeModel,_Oe as CommunityListingModel,TJ as DatabaseClient,BJ as DatabaseErrorHandler,fO as DatabaseErrors,AOe as PresetModel,COe as UserModel,dg as buildVipClearUpdate,mO as buildVipGrantUpdate,uBe as connection,yO as shouldExpireVip};
|
|
940
|
+
*/var wJ=SG();_2().set(wJ);var td=CJ();td.setDriver(wJ);td.Mongoose.prototype.mongo=Ca();bJ.exports=td});var Co=y(function(axe,Ee){var H=DJ();Ee.exports=H;Ee.exports.default=H;Ee.exports.mongoose=H;Ee.exports.cast=H.cast;Ee.exports.STATES=H.STATES;Ee.exports.setDriver=H.setDriver;Ee.exports.set=H.set;Ee.exports.get=H.get;Ee.exports.createConnection=H.createConnection;Ee.exports.connect=H.connect;Ee.exports.disconnect=H.disconnect;Ee.exports.startSession=H.startSession;Ee.exports.pluralize=H.pluralize;Ee.exports.model=H.model;Ee.exports.deleteModel=H.deleteModel;Ee.exports.modelNames=H.modelNames;Ee.exports.plugin=H.plugin;Ee.exports.connections=H.connections;Ee.exports.version=H.version;Ee.exports.Aggregate=H.Aggregate;Ee.exports.Mongoose=H.Mongoose;Ee.exports.Schema=H.Schema;Ee.exports.SchemaType=H.SchemaType;Ee.exports.SchemaTypes=H.SchemaTypes;Ee.exports.VirtualType=H.VirtualType;Ee.exports.Types=H.Types;Ee.exports.Query=H.Query;Ee.exports.Model=H.Model;Ee.exports.Document=H.Document;Ee.exports.ObjectId=H.ObjectId;Ee.exports.isValidObjectId=H.isValidObjectId;Ee.exports.isObjectIdOrHexString=H.isObjectIdOrHexString;Ee.exports.syncIndexes=H.syncIndexes;Ee.exports.Decimal128=H.Decimal128;Ee.exports.Mixed=H.Mixed;Ee.exports.Date=H.Date;Ee.exports.Number=H.Number;Ee.exports.Error=H.Error;Ee.exports.MongooseError=H.MongooseError;Ee.exports.now=H.now;Ee.exports.CastError=H.CastError;Ee.exports.SchemaTypeOptions=H.SchemaTypeOptions;Ee.exports.mongo=H.mongo;Ee.exports.mquery=H.mquery;Ee.exports.sanitizeFilter=H.sanitizeFilter;Ee.exports.trusted=H.trusted;Ee.exports.skipMiddlewareFunction=H.skipMiddlewareFunction;Ee.exports.overwriteMiddlewareResult=H.overwriteMiddlewareResult});var wOe=Do(Co(),1);var wo=Do(Co(),1);class TJ{dbURI;constructor(e){if(!e)throw Error("DB URI is not valid.");this.dbURI=e}async connect(e){console.log("Connecting to database..."),await this.connectWithRetry(e),wo.connection.on("connecting",()=>{console.log("Connecting to Database...")}),wo.connection.on("connected",()=>{console.log("Database is connected.")}),wo.connection.on("open",()=>{console.log("Database connection is ready.")}),wo.connection.on("disconnecting: ",()=>{console.log("Database is disconnecting...")}),wo.connection.on("error",(t)=>{console.error("Database connection error:",t)}),wo.connection.on("disconnected",(t)=>{console.warn("Database disconnected.",t)}),wo.connection.on("reconnected",(t)=>{console.warn("Database reconnected.",t)})}async connectWithRetry(e){try{await wo.connect(this.dbURI,{maxPoolSize:1000,autoIndex:!0,socketTimeoutMS:300000,...e})}catch(t){console.error("Unable to connect to the database. Retrying in 5s...",t),setTimeout(()=>this.connectWithRetry(),5000)}}}var XSe;((e)=>{e.String="string",e.Integer="integer",e.Float="float",e.Boolean="boolean",e.Object="object",e.Wildcard="wildcard",e.Exec="exec"})(XSe||={});var ZSe;((e)=>{e[e.Single=0]="Single",e[e.Select=1]="Select",e[e.Array=2]="Array"})(ZSe||={});var eOe;((e)=>{e[e.Offline=0]="Offline",e[e.Booting=1]="Booting",e[e.Available=2]="Available",e[e.Busy=3]="Busy",e[e.Disconnected=4]="Disconnected"})(eOe||={});var tOe;((e)=>{e[e.Neutral=0]="Neutral",e[e.Success=1]="Success",e[e.Info=2]="Info",e[e.Warn=3]="Warn",e[e.Error=4]="Error"})(tOe||={});var oO;((e)=>{e.Win="WIN",e.Mac="MAC",e.Psn="PSN",e.Xbl="XBL",e.Swt="SWT",e.Swt2="SWT2",e.Ios="IOS",e.And="AND",e.Ps5="PS5",e.Xsx="XSX"})(oO||={});var uO;((e)=>{e[e.Public=0]="Public",e[e.Private=1]="Private"})(uO||={});var aO;((e)=>{e[e.Auto=0]="Auto",e[e.Online=1]="Online",e[e.Away=2]="Away"})(aO||={});var W1;((e)=>{e[e.Event=0]="Event",e[e.CustomCommand=1]="CustomCommand",e[e.Scheduled=2]="Scheduled"})(W1||={});var z1;((e)=>{e[e.RunCommand=0]="RunCommand",e[e.RunFunction=1]="RunFunction",e[e.ControlFlow=2]="ControlFlow"})(z1||={});var cO;((e)=>{e[e.Ready=0]="Ready",e[e.Disconnected=1]="Disconnected",e[e.PartyInvite=2]="PartyInvite",e[e.PartyJoinRequest=3]="PartyJoinRequest",e[e.PartyMemberJoined=4]="PartyMemberJoined",e[e.PartyMemberLeft=5]="PartyMemberLeft",e[e.PartyMemberKicked=6]="PartyMemberKicked",e[e.PartyMemberMessage=7]="PartyMemberMessage",e[e.PartyMemberPromoted=8]="PartyMemberPromoted",e[e.PartyMemberReady=9]="PartyMemberReady",e[e.PartyMemberSitOut=10]="PartyMemberSitOut",e[e.PartyMemberUnready=11]="PartyMemberUnready",e[e.PartyMemberMatch=12]="PartyMemberMatch",e[e.PartyMemberCosmeticUpdated=13]="PartyMemberCosmeticUpdated",e[e.FriendAdded=14]="FriendAdded",e[e.FriendRemoved=15]="FriendRemoved",e[e.FriendRequest=16]="FriendRequest",e[e.FriendMessage=17]="FriendMessage",e[e.FriendOnline=18]="FriendOnline",e[e.FriendOffline=19]="FriendOffline",e[e.UserBlocked=20]="UserBlocked",e[e.UserUnblocked=21]="UserUnblocked",e[e.PartyMemberInParty=22]="PartyMemberInParty"})(cO||={});var fg;((e)=>{e.Default="en",e.EnUS="en-US",e.Es="es",e.Es419="es-419",e.Ar="ar",e.De="de",e.Fr="fr",e.He="he",e.Id="id",e.It="it",e.Ja="ja",e.Ko="ko",e.Pl="pl",e.Pt="pt",e.PtBR="pt-BR",e.Ru="ru",e.Th="th",e.Tr="tr",e.Vi="vi",e.Zh="zh",e.ZhHant="zh-Hant"})(fg||={});var rOe;((e)=>{e.Default="en",e.Ar="ar",e.De="de",e.Es="es",e.Es419="es-419",e.Fr="fr",e.Id="id",e.It="it",e.Ja="ja",e.Ko="ko",e.Pl="pl",e.PtBR="pt-BR",e.Ru="ru",e.Th="th",e.Tr="tr",e.Vi="vi",e.ZhHans="zh-Hans",e.ZhHant="zh-Hant"})(rOe||={});var lO;((e)=>{e.Bot="bot",e.Preset="preset",e.Category="category",e.Event="event",e.CustomCommand="custom_command",e.Scheduled="scheduled"})(lO||={});var hO;((e)=>{e.Pending="pending",e.Published="published",e.Rejected="rejected",e.Unlisted="unlisted"})(hO||={});var MJ;((e)=>{e.GenericUnknown="net.fnlb.errors.generic.unknown",e.GenericInternalError="net.fnlb.errors.generic.internal_error",e.GenericValidationFailed="net.fnlb.errors.generic.validation_failed",e.GenericParseFailed="net.fnlb.errors.generic.parse_failed",e.GenericNotFound="net.fnlb.errors.generic.not_found",e.GenericAlreadyExists="net.fnlb.errors.generic.already_exists",e.CommonInvalidRequest="net.fnlb.errors.common.invalid_request",e.CommonUnableToProcessRequest="net.fnlb.errors.common.unable_to_process_request",e.CommonInvalidFieldsLength="net.fnlb.errors.common.invalid_body_fields_length",e.CommonRateLimitExceeded="net.fnlb.errors.common.rate_limit_exceeded",e.CommonLimitExceeded="net.fnlb.errors.common.limit_exceeded",e.CommonUnableToSaveToDatabase="net.fnlb.errors.common.unable_to_save_to_database",e.CommonUpdateRequired="net.fnlb.errors.common.update_required",e.CommonMaintenanceMode="net.fnlb.errors.common.maintenance_mode",e.AuthInvalidToken="net.fnlb.errors.auth.invalid_token",e.AuthInvalidAPIToken="net.fnlb.errors.auth.invalid_api_token",e.AuthManagedAuthRefused="net.fnlb.errors.auth.managed_auth_refused",e.AuthInvalidCaptchaToken="net.fnlb.errors.auth.invalid_captcha_token",e.AuthUnauthorized="net.fnlb.errors.auth.unauthorized",e.AuthForbidden="net.fnlb.errors.auth.forbidden",e.AuthUserBanned="net.fnlb.errors.auth.user_banned",e.Oauth2InvalidCode="net.fnlb.errors.oauth2.invalid_code",e.Oauth2InvalidScope="net.fnlb.errors.oauth2.invalid_scope",e.Oauth2TokenInvalid="net.fnlb.errors.oauth2.token_invalid",e.Oauth2UnableToFetchUser="net.fnlb.errors.oauth2.unable_to_fetch_user",e.Oauth2UnableToFetchConnections="net.fnlb.errors.oauth2.unable_to_fetch_connections",e.Oauth2UserWithoutConnection="net.fnlb.errors.oauth2.user_without_connection",e.Oauth2ConnectionNotVerified="net.fnlb.errors.oauth2.connection_not_verified",e.ReleaseNotFound="net.fnlb.errors.release.no_release_found",e.ReleaseVersionAlreadyExists="net.fnlb.errors.release.version_already_exists",e.ReleaseHashMismatch="net.fnlb.errors.release.hash_mismatch",e.MfaNotEnabled="net.fnlb.errors.mfa.not_enabled",e.MfaAlreadyEnabled="net.fnlb.errors.mfa.already_enabled",e.MfaChallengeExpired="net.fnlb.errors.mfa.challenge_expired",e.MfaSetupExpired="net.fnlb.errors.mfa.setup_expired"})(MJ||={});var xJ;((e)=>{e.LoginInvalidCredentials="net.fnlb.errors.login.invalid_credentials",e.LoginInvalidEmail="net.fnlb.errors.login.invalid_email",e.LoginInvalidOrUsedEmail="net.fnlb.errors.login.invalid_or_used_email",e.AuthPasswordConfirmationInvalid="net.fnlb.errors.auth.invalid_password_confirmation",e.MfaInvalidCode="net.fnlb.errors.mfa.invalid_code",e.MfaRequired="net.fnlb.errors.mfa.required"})(xJ||={});var Ja={...MJ,...xJ},nOe;((e)=>{e.Username="username",e.Email="email",e.Password="password",e.Shared="shared",e.MfaCode="mfaCode"})(nOe||={});var sOe;((e)=>{e.General="general",e.Input="input"})(sOe||={});var iOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Verified=2]="Verified",e[e.VerificationPending=4]="VerificationPending",e[e.PublicClient=8]="PublicClient"})(iOe||={});var oOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Public=2]="Public",e[e.InvalidAuth=4]="InvalidAuth",e[e.Prepared=8]="Prepared"})(oOe||={});var uOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Managed=2]="Managed"})(uOe||={});var aOe;((e)=>e[e.NotWearable=1]="NotWearable")(aOe||={});var cOe;((e)=>{e[e.identify=1]="identify",e[e.email=2]="email",e[e.connections=4]="connections",e[e["bots.read"]=8]="bots.read",e[e["bots.write"]=16]="bots.write",e[e["bots.run"]=32]="bots.run",e[e["categories.read"]=64]="categories.read",e[e["categories.write"]=128]="categories.write",e[e["commands.run"]=256]="commands.run",e[e.openid=512]="openid",e[e.profile=1024]="profile"})(cOe||={});var lOe;((e)=>{e[e.Ready=1]="Ready",e[e.Leader=2]="Leader",e[e.SittingOut=4]="SittingOut",e[e.Playing=8]="Playing"})(lOe||={});var hOe;((e)=>{e[e.Disabled=1]="Disabled",e[e.IgnoreSelf=2]="IgnoreSelf",e[e.IgnoreBots=4]="IgnoreBots",e[e.IgnoreLeader=8]="IgnoreLeader",e[e.IgnoreOwners=16]="IgnoreOwners",e[e.IgnoreAdmins=32]="IgnoreAdmins",e[e.IgnoreWhitelistUsers=64]="IgnoreWhitelistUsers",e[e.IgnoreBlacklistUsers=128]="IgnoreBlacklistUsers",e[e.IgnoreExcludedAutoAddFriends=256]="IgnoreExcludedAutoAddFriends",e[e.IgnoreFriends=512]="IgnoreFriends",e[e.IgnoreOtherBots=1024]="IgnoreOtherBots",e[e.IgnorePartyMembers=2048]="IgnorePartyMembers"})(hOe||={});var oa;((e)=>{e[e.Staff=1]="Staff",e[e.Admin=2]="Admin",e[e.Vip=4]="Vip",e[e.Verified=8]="Verified",e[e.Banned=16]="Banned",e[e.Tester=32]="Tester",e[e.Developer=64]="Developer",e[e.Partner=128]="Partner",e[e.Management=256]="Management",e[e.Moderation=512]="Moderation",e[e.Support=1024]="Support",e[e.IncreasedLimits=2048]="IncreasedLimits",e[e.Disabled=4096]="Disabled"})(oa||={});var fO;((i)=>{i[i.InternalError=1]="InternalError";i[i.BadValue=2]="BadValue";i[i.NoSuchKey=4]="NoSuchKey";i[i.KeyNotFound=211]="KeyNotFound";i[i.DuplicateKey=11000]="DuplicateKey"})(fO||={});class BJ{static handleError(e,t){if(!e)return!1;switch(e.code){case 11000:return t.sendError(400,Ja.GenericAlreadyExists);case 2:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 211:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 4:return t.sendError(500,Ja.CommonUnableToSaveToDatabase);case 1:return console.error("Internal MongoDB error:",e),t.sendError(500,Ja.CommonUnableToSaveToDatabase);default:return console.error("Unhandled MongoError code:",e.code,e),t.sendError(500,Ja.CommonUnableToSaveToDatabase)}}}var rd=Do(Co(),1);var fOe=["password","token","apiToken","applications","mfa","deviceAuth","secret"];class Ms{static transformSchemaToJSON(e){let t=new Set(e);return(r,n)=>{if(n._id!==void 0)n.id=n._id;delete n._id,delete n.__v;for(let s of Object.keys(n))if(!t.has(s))delete n[s];for(let s of fOe)delete n[s]}}}var dOe=8,FJ=new rd.Schema({owner:{type:rd.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},secret:{type:String,required:function(){return!((this.flags??0)&dOe)},trim:!0},name:{type:String,required:!0,trim:!0},icon:{type:String,required:!1,trim:!0,default:void 0},description:{type:String,required:!1,trim:!0,default:void 0},scopes:{type:Number,required:!1,default:void 0},redirectUris:{type:[String],required:!1,trim:!0,default:void 0},tosUri:{type:String,required:!1,trim:!0,default:void 0},policyUri:{type:String,required:!1,trim:!0,default:void 0},installUri:{type:String,required:!1,trim:!0,default:void 0},flags:{type:Number,required:!1,default:void 0}});FJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","icon","description","scopes","redirectUris","tosUri","policyUri","installUri","flags"])});var pOe=rd.model("application",FJ);var G1=Do(Co(),1);var PJ=new G1.Schema({owner:{type:G1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},parent:{type:G1.Schema.Types.ObjectId,ref:"category",required:!1,index:!0,sparse:!0},nickname:{type:String,required:!0,trim:!0},flags:{type:Number,required:!1},email:{type:String,required:!1,trim:!0},deviceAuth:{required:!0,type:{accountId:{type:String,required:!0,unique:!0,lowercase:!0,trim:!0},deviceId:{type:String,required:!0,lowercase:!0,trim:!0},secret:{type:String,required:!0,trim:!0}},_id:!1},mmsBannedUntil:{type:Number,required:!1}});PJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","parent","nickname","flags","email","mmsBannedUntil"])});var mOe=G1.model("bot",PJ);var sd=Do(Co(),1);function nd(e){return Object.values(e).filter((t)=>typeof t==="number")}var IJ=new sd.Schema({owner:{type:sd.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0},flags:{type:Number,required:!1},managed:{type:Boolean,required:!1,index:!0,sparse:!0,default:void 0},config:{replyLangs:{type:[String],enum:Object.values(fg),default:void 0},searchLangs:{type:[String],enum:Object.values(fg),default:void 0},platform:{type:[String],enum:Object.values(oO),default:void 0},privacy:{type:Number,enum:nd(uO),default:void 0},prefixes:{type:[String],default:void 0},statusType:{type:Number,enum:nd(aO),default:void 0},statusText:{type:[String],default:void 0},statusInterval:{type:Number,default:void 0},level:{type:[Number],default:void 0},bpLevel:{type:[Number],default:void 0},extraOwners:{type:[{id:String,name:String,_id:!1}],default:void 0},admins:{type:[{id:String,name:String,_id:!1}],default:void 0},whitelistUsers:{type:[{id:String,name:String,_id:!1}],default:void 0},blacklistUsers:{type:[{id:String,name:String,_id:!1}],default:void 0},excludedAutoAddFriends:{type:[{id:String,name:String,_id:!1}],default:void 0},otherBots:{type:[{id:String,name:String,_id:!1}],default:void 0},inviteTimeout:{type:Number,default:void 0},maxBotsPerLobby:{type:Number,default:void 0},maxBotsPerLobbyWithOwner:{type:Number,default:void 0},maxBotsPerLobbyWithAdmin:{type:Number,default:void 0},maxBotsPerLobbyWithWhitelistUser:{type:Number,default:void 0},allowMatchmaking:{type:Boolean,default:void 0},leaveAfterMatchmaking:{type:Boolean,default:void 0},disableMatchmakingChecks:{type:Boolean,default:void 0},disablePlaylistChecks:{type:Boolean,default:void 0},disableJoinMessages:{type:Boolean,default:void 0},disableAutomaticMessages:{type:Boolean,default:void 0},acceptFriendRequests:{type:Boolean,default:void 0},sendFriendRequestOnJoinParty:{type:Boolean,default:void 0},sendFriendRequestOnMemberJoinParty:{type:Boolean,default:void 0},runCommandsWithoutPrefix:{type:Boolean,default:void 0},setCosmeticsWithoutCommands:{type:Boolean,default:void 0},setCosmeticsWithPrefix:{type:Boolean,default:void 0},acceptInvites:{type:Boolean,default:void 0},startBannedBots:{type:Boolean,default:void 0},triggers:{type:[{name:{type:String,required:!0},flags:{type:Number,required:!1,default:void 0},type:{type:Number,required:!0,enum:nd(W1)},event:{type:Number,enum:nd(cO),required(){return this.type===W1.Event},default:void 0},command:{type:String,required(){return this.type===W1.CustomCommand},default:void 0},interval:{type:String,required(){return this.type===W1.Scheduled},default:void 0},actions:{type:[{id:{type:String,required:!1},parent:{type:String,required:!1},type:{type:Number,enum:nd(z1),required:!0},command:{type:String,required(){return this.type===z1.RunCommand}},function:{type:String,required(){return this.type===z1.RunFunction}},statement:{type:String,required(){return this.type===z1.ControlFlow}},args:{type:[String],default:void 0,required:!0},condition:{type:String,default:void 0,required:!1},_id:!1}],required:!0,default:void 0,_id:!1},_id:!1}],default:void 0},onlyOwnerCommands:{type:[String],default:void 0},onlyAdminCommands:{type:[String],default:void 0},onlyWhitelistUsersCommands:{type:[String],default:void 0},onlyFriendsCommands:{type:[String],default:void 0},onlyPartyMembersCommands:{type:[String],default:void 0},onlyWhisperCommands:{type:[String],default:void 0},startOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},startBanner:{type:[{id:String,_id:!1}],default:void 0},startBannerColor:{type:[{id:String,_id:!1}],default:void 0},joinOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinEmote:{type:[{id:String,_id:!1}],default:void 0},joinShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},joinBanner:{type:[{id:String,_id:!1}],default:void 0},joinBannerColor:{type:[{id:String,_id:!1}],default:void 0},memberJoinOutfit:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinBackpack:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinPickaxe:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinEmote:{type:[{id:String,_id:!1}],default:void 0},memberJoinShoes:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinSidekick:{type:[{id:String,variants:[Number],_id:!1}],default:void 0},memberJoinBanner:{type:[{id:String,_id:!1}],default:void 0},memberJoinBannerColor:{type:[{id:String,_id:!1}],default:void 0}}});IJ.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","flags","managed","config"])});var yOe=sd.model("category",IJ);var H1=Do(Co(),1),dO=new H1.Schema({listing:{type:H1.Schema.Types.ObjectId,ref:"communityListing",required:!0},user:{type:H1.Schema.Types.ObjectId,ref:"user",required:!0}});dO.index({listing:1,user:1},{unique:!0});dO.index({user:1,listing:1});var gOe=H1.model("communityListingLike",dO);var K1=Do(Co(),1);var pO=new K1.Schema({kind:{type:String,required:!0,enum:Object.values(lO),index:!0},title:{type:String,required:!0,trim:!0,maxlength:80},description:{type:String,required:!1,trim:!0,maxlength:2000},tags:{type:[String],default:void 0},author:{type:K1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},status:{type:String,required:!0,enum:Object.values(hO),index:!0},stats:{type:{installs:{type:Number,required:!1},likes:{type:Number,required:!1,default:0,min:0}},_id:!1,required:!1,default:void 0},liveRef:{type:{categoryId:{type:String,required:!0,trim:!0}},_id:!1,required:!1,default:void 0},payload:{type:K1.Schema.Types.Mixed,required:!1,default:void 0}});pO.index({status:1,kind:1});pO.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","kind","title","description","tags","author","status","stats","liveRef","payload"])});var _Oe=K1.model("communityListing",pO);var od=Do(Co(),1);var id={id:{type:String,required:!0},variants:{type:[Number],default:void 0},_id:!1},EOe={id:{type:String,required:!0},_id:!1},$J=new od.Schema({owner:{type:od.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0,maxlength:64},outfit:{type:id,default:void 0},pickaxe:{type:id,default:void 0},backpack:{type:id,default:void 0},emote:{type:EOe,default:void 0},shoes:{type:id,default:void 0},sidekick:{type:id,default:void 0}});$J.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","owner","name","outfit","pickaxe","backpack","emote","shoes","sidekick"])});var AOe=od.model("preset",$J);var ad=Do(Co(),1);class Y1{bitfield;constructor(e){this.bitfield=e??0}static from(...e){let t=0;for(let r of e)t|=r;return new Y1(t)}has(e){return(this.bitfield&e)!==0}hasAll(...e){let t=0;for(let r of e)t|=r;return(this.bitfield&t)===t}hasAny(...e){let t=0;for(let r of e)t|=r;return(this.bitfield&t)!==0}add(e){return this.bitfield|=e,this}remove(e){return this.bitfield&=~e,this}toNumber(){return this.bitfield}}var SOe=86400000;function mO(e,t,r){let n=new Y1(e),i=n.has(oa.Vip)&&!t;if(n.add(oa.Vip),r==null||i)return{update:{$set:{flags:n.toNumber()},$unset:{vipExpiresAt:1}},vipExpiresAt:null,permanent:!0};let a=new Date(Date.now()+r*SOe);return{update:{$set:{flags:n.toNumber(),vipExpiresAt:a}},vipExpiresAt:a,permanent:!1}}function dg(e){let t=new Y1(e);return t.remove(oa.Vip),{$set:{flags:t.toNumber()},$unset:{vipExpiresAt:1}}}function yO(e,t,r=Date.now()){if(!t)return"none";if(!new Y1(e).has(oa.Vip))return"cleanup";if(new Date(t).getTime()>r)return"none";return"expire"}var OOe=/^[a-f\d]{24}$/i;function ud(e){return typeof e==="string"&&OOe.test(e)}var gO=new ad.Schema({token:{type:String,required:!0,unique:!1},username:{type:String,required:!0,trim:!0},avatar:{type:String,required:!1,trim:!0,maxlength:128},email:{type:String,index:!0,required:!0,unique:!0,trim:!0},recoveryEmail:{type:String,required:!1,trim:!0},password:{type:String,required:!0},apiToken:{type:String,required:!0,index:!1,unique:!1,trim:!0},flags:{type:Number,required:!1},vipExpiresAt:{type:Date,required:!1,index:!0},connections:{discord:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}},google:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}},epic:{id:{type:String,index:!0,unique:!0,sparse:!0},username:{type:String},verified:{type:Boolean,required:!1}}},applications:{type:[{_id:!1,id:{type:ad.Schema.Types.ObjectId,ref:"application",required:!0,trim:!0},token:{type:String,required:!0,trim:!0},scopes:{type:Number,required:!0}}],default:void 0},mfa:{type:{totp:{enabled:{type:Boolean,required:!1},secret:{type:String,required:!1}},recoveryCodes:{type:[{_id:!1,hash:{type:String,required:!0},usedAt:{type:Date,required:!1}}],default:void 0}},default:void 0}},{statics:{async verifyPassword(e,t){return Bun.password.verify(e,t)},async expireVipIfNeeded(e){let t=yO(e.flags,e.vipExpiresAt);if(t==="none")return!1;let r=dg(e.flags);return e.flags=r.$set.flags,e.vipExpiresAt=void 0,await this.updateOne({_id:e._id},r).exec(),t==="expire"},async findByToken(e,t){if(!ud(e))return null;let r=await this.findById(e);if(!r?.token||r.token!==t)return null;return await this.expireVipIfNeeded(r),r},async findByAPIToken(e,t){if(!ud(e))return null;let r=await this.findById(e);if(!r?.apiToken||r.apiToken!==t)return null;return await this.expireVipIfNeeded(r),r},async findByAccessToken(e,t){if(!ud(e))return null;let r=await this.findById(e),n=r?.applications?.find((s)=>s.token===t);if(!n||!r)return null;return await this.expireVipIfNeeded(r),{user:r,app:n}},async grantVip(e,t){if(!ud(e))return null;let r=await this.findById(e).exec();if(!r)return null;await this.expireVipIfNeeded(r);let n=typeof t==="number"&&Number.isFinite(t)?Math.max(1,Math.floor(t)):null,{update:s,vipExpiresAt:i,permanent:o}=mO(r.flags,r.vipExpiresAt,n),a=await this.updateOne({_id:r._id},s).exec();if(a.matchedCount===0)return null;return r.flags=s.$set.flags,r.vipExpiresAt=i??void 0,{ok:!0,permanent:o,vipExpiresAt:i,modified:a.modifiedCount>0,user:r}},async revokeVip(e){if(!ud(e))return null;let t=await this.findById(e).exec();if(!t)return null;let r=dg(t.flags),n=await this.updateOne({_id:t._id},r).exec();if(n.matchedCount===0)return null;return t.flags=r.$set.flags,t.vipExpiresAt=void 0,{ok:!0,modified:n.modifiedCount>0,user:t}},async expireDueVips(e=100){let t=new Date,r=await this.find({flags:{$bitsAnySet:oa.Vip},vipExpiresAt:{$lte:t}}).limit(e).exec(),n=[];for(let s of r){if(!await this.revokeVip(s.id))continue;n.push({id:s.id,username:s.username,email:s.email,discordId:s.connections?.discord?.id})}return n}}});gO.pre("save",async function(e){if(!this.isModified("password"))return e();try{return this.password=await Bun.password.hash(this.password,{algorithm:process.env.SAVE_ACCOUNT_ALGORITHM||"argon2id",timeCost:parseInt(process.env.SAVE_ACCOUNT_TIME_COST||"3"),cost:parseInt(process.env.SAVE_ACCOUNT_ALGORITHM_COST||"12")}),e()}catch(t){return e(t)}});gO.set("toJSON",{transform:Ms.transformSchemaToJSON(["id","username","avatar","email","flags","vipExpiresAt","connections"])});var COe=ad.model("user",gO);var uBe=wOe.connection;export{pOe as ApplicationModel,mOe as BotModel,yOe as CategoryModel,gOe as CommunityListingLikeModel,_Oe as CommunityListingModel,TJ as DatabaseClient,BJ as DatabaseErrorHandler,fO as DatabaseErrors,AOe as PresetModel,COe as UserModel,dg as buildVipClearUpdate,mO as buildVipGrantUpdate,uBe as connection,yO as shouldExpireVip};
|