@fnlb-project/database 1.0.78 → 1.0.79

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 CHANGED
@@ -1,7 +1,5 @@
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';
5
3
  import { ConnectOptions, HydratedDocument, Model, Schema, connection } from 'mongoose';
6
4
 
7
5
  export declare class DatabaseClient {
@@ -10,6 +8,63 @@ export declare class DatabaseClient {
10
8
  connect(options?: ConnectOptions): Promise<void>;
11
9
  private connectWithRetry;
12
10
  }
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
+ }
13
68
  export declare class DatabaseErrorHandler {
14
69
  static handleError(err: any, errorSender: GenericErrorSender): unknown;
15
70
  }
@@ -175,6 +230,55 @@ export declare const BotModel: import("mongoose").Model<{
175
230
  } & {
176
231
  __v: number;
177
232
  }>>;
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
+ }
178
282
  export declare const CategoryModel: import("mongoose").Model<{
179
283
  owner: import("mongoose").Types.ObjectId;
180
284
  name: string;
@@ -3270,12 +3374,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3270
3374
  status: CommunityListingStatus;
3271
3375
  description?: string | null | undefined;
3272
3376
  tags?: string[] | null | undefined;
3273
- thumbnail?: string | null | undefined;
3274
3377
  stats?: {
3275
3378
  installs?: number | null | undefined;
3276
3379
  } | null | undefined;
3277
3380
  liveRef?: {
3278
- botId: string;
3381
+ categoryId: string;
3279
3382
  } | null | undefined;
3280
3383
  payload?: any;
3281
3384
  }, {}, {}, {}, import("mongoose").Document<unknown, {}, {
@@ -3286,12 +3389,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3286
3389
  status: CommunityListingStatus;
3287
3390
  description?: string | null | undefined;
3288
3391
  tags?: string[] | null | undefined;
3289
- thumbnail?: string | null | undefined;
3290
3392
  stats?: {
3291
3393
  installs?: number | null | undefined;
3292
3394
  } | null | undefined;
3293
3395
  liveRef?: {
3294
- botId: string;
3396
+ categoryId: string;
3295
3397
  } | null | undefined;
3296
3398
  payload?: any;
3297
3399
  }, {}, import("mongoose").DefaultSchemaOptions> & {
@@ -3302,12 +3404,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3302
3404
  status: CommunityListingStatus;
3303
3405
  description?: string | null | undefined;
3304
3406
  tags?: string[] | null | undefined;
3305
- thumbnail?: string | null | undefined;
3306
3407
  stats?: {
3307
3408
  installs?: number | null | undefined;
3308
3409
  } | null | undefined;
3309
3410
  liveRef?: {
3310
- botId: string;
3411
+ categoryId: string;
3311
3412
  } | null | undefined;
3312
3413
  payload?: any;
3313
3414
  } & {
@@ -3322,12 +3423,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3322
3423
  status: CommunityListingStatus;
3323
3424
  description?: string | null | undefined;
3324
3425
  tags?: string[] | null | undefined;
3325
- thumbnail?: string | null | undefined;
3326
3426
  stats?: {
3327
3427
  installs?: number | null | undefined;
3328
3428
  } | null | undefined;
3329
3429
  liveRef?: {
3330
- botId: string;
3430
+ categoryId: string;
3331
3431
  } | null | undefined;
3332
3432
  payload?: any;
3333
3433
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
@@ -3338,12 +3438,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3338
3438
  status: CommunityListingStatus;
3339
3439
  description?: string | null | undefined;
3340
3440
  tags?: string[] | null | undefined;
3341
- thumbnail?: string | null | undefined;
3342
3441
  stats?: {
3343
3442
  installs?: number | null | undefined;
3344
3443
  } | null | undefined;
3345
3444
  liveRef?: {
3346
- botId: string;
3445
+ categoryId: string;
3347
3446
  } | null | undefined;
3348
3447
  payload?: any;
3349
3448
  }>, {}, import("mongoose").DefaultSchemaOptions> & import("mongoose").FlatRecord<{
@@ -3354,12 +3453,11 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3354
3453
  status: CommunityListingStatus;
3355
3454
  description?: string | null | undefined;
3356
3455
  tags?: string[] | null | undefined;
3357
- thumbnail?: string | null | undefined;
3358
3456
  stats?: {
3359
3457
  installs?: number | null | undefined;
3360
3458
  } | null | undefined;
3361
3459
  liveRef?: {
3362
- botId: string;
3460
+ categoryId: string;
3363
3461
  } | null | undefined;
3364
3462
  payload?: any;
3365
3463
  }> & {
@@ -3576,6 +3674,7 @@ export interface IUserApplication {
3576
3674
  export interface IUser {
3577
3675
  token: string;
3578
3676
  username: string;
3677
+ avatar?: string;
3579
3678
  email: string;
3580
3679
  password: string;
3581
3680
  apiToken: string;
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 YS(e){if(e.connection)return;let t=e.createConnection();t[rJ]=!0,t.models=e.models}var $n=iJ.exports=sJ=new te({[tJ]:!0})});var cJ=y(function($Me,aJ){/*!
939
939
  * Module dependencies.
940
- */var uJ=oG();c2().set(uJ);var Hf=oJ();Hf.setDriver(uJ);Hf.Mongoose.prototype.mongo=Aa();aJ.exports=Hf});var Wo=y(function(NMe,Ee){var H=cJ();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 ZSe=zo(Wo(),1);var So=zo(Wo(),1);class lJ{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),So.connection.on("connecting",()=>{console.log("Connecting to Database...")}),So.connection.on("connected",()=>{console.log("Database is connected.")}),So.connection.on("open",()=>{console.log("Database connection is ready.")}),So.connection.on("disconnecting: ",()=>{console.log("Database is disconnecting...")}),So.connection.on("error",(t)=>{console.error("Database connection error:",t)}),So.connection.on("disconnected",(t)=>{console.warn("Database disconnected.",t)}),So.connection.on("reconnected",(t)=>{console.warn("Database reconnected.",t)})}async connectWithRetry(e){try{await So.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 MSe;((e)=>{e.String="string",e.Integer="integer",e.Float="float",e.Boolean="boolean",e.Object="object",e.Wildcard="wildcard",e.Exec="exec"})(MSe||={});var xSe;((e)=>{e[e.Single=0]="Single",e[e.Select=1]="Select",e[e.Array=2]="Array"})(xSe||={});var BSe;((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"})(BSe||={});var FSe;((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"})(FSe||={});var JS;((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"})(JS||={});var QS;((e)=>{e[e.Public=0]="Public",e[e.Private=1]="Private"})(QS||={});var XS;((e)=>{e[e.Auto=0]="Auto",e[e.Online=1]="Online",e[e.Away=2]="Away"})(XS||={});var j1;((e)=>{e[e.Event=0]="Event",e[e.CustomCommand=1]="CustomCommand",e[e.Scheduled=2]="Scheduled"})(j1||={});var L1;((e)=>{e[e.RunCommand=0]="RunCommand",e[e.RunFunction=1]="RunFunction",e[e.ControlFlow=2]="ControlFlow"})(L1||={});var ZS;((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"})(ZS||={});var sg;((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"})(sg||={});var PSe;((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"})(PSe||={});var eO;((e)=>{e.Bot="bot",e.Preset="preset",e.Category="category",e.Event="event",e.CustomCommand="custom_command",e.Scheduled="scheduled"})(eO||={});var tO;((e)=>{e.Draft="draft",e.Pending="pending",e.Published="published",e.Rejected="rejected",e.Unlisted="unlisted"})(tO||={});var hJ;((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"})(hJ||={});var fJ;((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"})(fJ||={});var Ha={...hJ,...fJ},ISe;((e)=>{e.Username="username",e.Email="email",e.Password="password",e.Shared="shared",e.MfaCode="mfaCode"})(ISe||={});var $Se;((e)=>{e.General="general",e.Input="input"})($Se||={});var NSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Verified=2]="Verified",e[e.VerificationPending=4]="VerificationPending",e[e.PublicClient=8]="PublicClient"})(NSe||={});var RSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Public=2]="Public",e[e.InvalidAuth=4]="InvalidAuth",e[e.Prepared=8]="Prepared"})(RSe||={});var vSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Managed=2]="Managed"})(vSe||={});var kSe;((e)=>e[e.NotWearable=1]="NotWearable")(kSe||={});var qSe;((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"})(qSe||={});var jSe;((e)=>{e[e.Ready=1]="Ready",e[e.Leader=2]="Leader",e[e.SittingOut=4]="SittingOut",e[e.Playing=8]="Playing"})(jSe||={});var LSe;((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"})(LSe||={});var USe;((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"})(USe||={});var rO;((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"})(rO||={});class dJ{static handleError(e,t){if(!e)return!1;switch(e.code){case 11000:return t.sendError(400,Ha.GenericAlreadyExists);case 2:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 211:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 4:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 1:return console.error("Internal MongoDB error:",e),t.sendError(500,Ha.CommonUnableToSaveToDatabase);default:return console.error("Unhandled MongoError code:",e.code,e),t.sendError(500,Ha.CommonUnableToSaveToDatabase)}}}var Kf=zo(Wo(),1);var VSe=["password","token","apiToken","applications","mfa","deviceAuth","secret"];class Ts{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 VSe)delete n[s]}}}var WSe=8,pJ=new Kf.Schema({owner:{type:Kf.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},secret:{type:String,required:function(){return!((this.flags??0)&WSe)},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}});pJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","icon","description","scopes","redirectUris","tosUri","policyUri","installUri","flags"])});var zSe=Kf.model("application",pJ);var U1=zo(Wo(),1);var mJ=new U1.Schema({owner:{type:U1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},parent:{type:U1.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,lowercase:!0,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}});mJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","parent","nickname","flags","email","mmsBannedUntil"])});var GSe=U1.model("bot",mJ);var Jf=zo(Wo(),1);function Yf(e){return Object.values(e).filter((t)=>typeof t==="number")}var yJ=new Jf.Schema({owner:{type:Jf.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(sg),default:void 0},searchLangs:{type:[String],enum:Object.values(sg),default:void 0},platform:{type:[String],enum:Object.values(JS),default:void 0},privacy:{type:Number,enum:Yf(QS),default:void 0},prefixes:{type:[String],default:void 0},statusType:{type:Number,enum:Yf(XS),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:Yf(j1)},event:{type:Number,enum:Yf(ZS),required(){return this.type===j1.Event},default:void 0},command:{type:String,required(){return this.type===j1.CustomCommand},default:void 0},interval:{type:String,required(){return this.type===j1.Scheduled},default:void 0},actions:{type:[{id:{type:String,required:!1},parent:{type:String,required:!1},type:{type:Number,enum:Yf(L1),required:!0},command:{type:String,required(){return this.type===L1.RunCommand}},function:{type:String,required(){return this.type===L1.RunFunction}},statement:{type:String,required(){return this.type===L1.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}}});yJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","flags","managed","config"])});var HSe=Jf.model("category",yJ);var V1=zo(Wo(),1);var nO=new V1.Schema({kind:{type:String,required:!0,enum:Object.values(eO),index:!0},slug:{type:String,required:!0,trim:!0,unique:!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},thumbnail:{type:String,required:!1,trim:!0},author:{type:V1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},status:{type:String,required:!0,enum:Object.values(tO),index:!0},stats:{type:{installs:{type:Number,required:!1}},_id:!1,required:!1,default:void 0},liveRef:{type:{botId:{type:String,required:!0,trim:!0}},_id:!1,required:!1,default:void 0},payload:{type:V1.Schema.Types.Mixed,required:!1,default:void 0}});nO.index({status:1,kind:1});nO.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","kind","slug","title","description","tags","thumbnail","author","status","stats","liveRef","payload"])});var KSe=V1.model("communityListing",nO);var Xf=zo(Wo(),1);var Qf={id:{type:String,required:!0},variants:{type:[Number],default:void 0},_id:!1},YSe={id:{type:String,required:!0},_id:!1},gJ=new Xf.Schema({owner:{type:Xf.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0,maxlength:64},outfit:{type:Qf,default:void 0},pickaxe:{type:Qf,default:void 0},backpack:{type:Qf,default:void 0},emote:{type:YSe,default:void 0},shoes:{type:Qf,default:void 0},sidekick:{type:Qf,default:void 0}});gJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","outfit","pickaxe","backpack","emote","shoes","sidekick"])});var JSe=Xf.model("preset",gJ);var Zf=zo(Wo(),1);var QSe=/^[a-f\d]{24}$/i;function sO(e){return typeof e==="string"&&QSe.test(e)}var iO=new Zf.Schema({token:{type:String,required:!0,unique:!1},username:{type:String,required:!0,trim:!0},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},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:Zf.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 findByToken(e,t){if(!sO(e))return null;let r=await this.findById(e);if(!r?.token||r.token!==t)return null;return r},async findByAPIToken(e,t){if(!sO(e))return null;let r=await this.findById(e);if(!r?.apiToken||r.apiToken!==t)return null;return r},async findByAccessToken(e,t){if(!sO(e))return null;let r=await this.findById(e),n=r?.applications?.find((s)=>s.token===t);if(!n)return null;return{user:r,app:n}}}});iO.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)}});iO.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","username","email","flags","connections"])});var XSe=Zf.model("user",iO);var Oxe=ZSe.connection;export{zSe as ApplicationModel,GSe as BotModel,HSe as CategoryModel,KSe as CommunityListingModel,lJ as DatabaseClient,dJ as DatabaseErrorHandler,rO as DatabaseErrors,JSe as PresetModel,XSe as UserModel,Oxe as connection};
940
+ */var uJ=oG();c2().set(uJ);var Hf=oJ();Hf.setDriver(uJ);Hf.Mongoose.prototype.mongo=Aa();aJ.exports=Hf});var Wo=y(function(NMe,Ee){var H=cJ();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 ZSe=zo(Wo(),1);var So=zo(Wo(),1);class lJ{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),So.connection.on("connecting",()=>{console.log("Connecting to Database...")}),So.connection.on("connected",()=>{console.log("Database is connected.")}),So.connection.on("open",()=>{console.log("Database connection is ready.")}),So.connection.on("disconnecting: ",()=>{console.log("Database is disconnecting...")}),So.connection.on("error",(t)=>{console.error("Database connection error:",t)}),So.connection.on("disconnected",(t)=>{console.warn("Database disconnected.",t)}),So.connection.on("reconnected",(t)=>{console.warn("Database reconnected.",t)})}async connectWithRetry(e){try{await So.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 MSe;((e)=>{e.String="string",e.Integer="integer",e.Float="float",e.Boolean="boolean",e.Object="object",e.Wildcard="wildcard",e.Exec="exec"})(MSe||={});var xSe;((e)=>{e[e.Single=0]="Single",e[e.Select=1]="Select",e[e.Array=2]="Array"})(xSe||={});var BSe;((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"})(BSe||={});var FSe;((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"})(FSe||={});var JS;((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"})(JS||={});var QS;((e)=>{e[e.Public=0]="Public",e[e.Private=1]="Private"})(QS||={});var XS;((e)=>{e[e.Auto=0]="Auto",e[e.Online=1]="Online",e[e.Away=2]="Away"})(XS||={});var j1;((e)=>{e[e.Event=0]="Event",e[e.CustomCommand=1]="CustomCommand",e[e.Scheduled=2]="Scheduled"})(j1||={});var L1;((e)=>{e[e.RunCommand=0]="RunCommand",e[e.RunFunction=1]="RunFunction",e[e.ControlFlow=2]="ControlFlow"})(L1||={});var ZS;((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"})(ZS||={});var sg;((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"})(sg||={});var PSe;((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"})(PSe||={});var eO;((e)=>{e.Bot="bot",e.Preset="preset",e.Category="category",e.Event="event",e.CustomCommand="custom_command",e.Scheduled="scheduled"})(eO||={});var tO;((e)=>{e.Pending="pending",e.Published="published",e.Rejected="rejected",e.Unlisted="unlisted"})(tO||={});var hJ;((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"})(hJ||={});var fJ;((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"})(fJ||={});var Ha={...hJ,...fJ},ISe;((e)=>{e.Username="username",e.Email="email",e.Password="password",e.Shared="shared",e.MfaCode="mfaCode"})(ISe||={});var $Se;((e)=>{e.General="general",e.Input="input"})($Se||={});var NSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Verified=2]="Verified",e[e.VerificationPending=4]="VerificationPending",e[e.PublicClient=8]="PublicClient"})(NSe||={});var RSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Public=2]="Public",e[e.InvalidAuth=4]="InvalidAuth",e[e.Prepared=8]="Prepared"})(RSe||={});var vSe;((e)=>{e[e.Disabled=1]="Disabled",e[e.Managed=2]="Managed"})(vSe||={});var kSe;((e)=>e[e.NotWearable=1]="NotWearable")(kSe||={});var qSe;((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"})(qSe||={});var jSe;((e)=>{e[e.Ready=1]="Ready",e[e.Leader=2]="Leader",e[e.SittingOut=4]="SittingOut",e[e.Playing=8]="Playing"})(jSe||={});var LSe;((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"})(LSe||={});var USe;((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"})(USe||={});var rO;((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"})(rO||={});class dJ{static handleError(e,t){if(!e)return!1;switch(e.code){case 11000:return t.sendError(400,Ha.GenericAlreadyExists);case 2:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 211:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 4:return t.sendError(500,Ha.CommonUnableToSaveToDatabase);case 1:return console.error("Internal MongoDB error:",e),t.sendError(500,Ha.CommonUnableToSaveToDatabase);default:return console.error("Unhandled MongoError code:",e.code,e),t.sendError(500,Ha.CommonUnableToSaveToDatabase)}}}var Kf=zo(Wo(),1);var VSe=["password","token","apiToken","applications","mfa","deviceAuth","secret"];class Ts{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 VSe)delete n[s]}}}var WSe=8,pJ=new Kf.Schema({owner:{type:Kf.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},secret:{type:String,required:function(){return!((this.flags??0)&WSe)},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}});pJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","icon","description","scopes","redirectUris","tosUri","policyUri","installUri","flags"])});var zSe=Kf.model("application",pJ);var U1=zo(Wo(),1);var mJ=new U1.Schema({owner:{type:U1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},parent:{type:U1.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,lowercase:!0,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}});mJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","parent","nickname","flags","email","mmsBannedUntil"])});var GSe=U1.model("bot",mJ);var Jf=zo(Wo(),1);function Yf(e){return Object.values(e).filter((t)=>typeof t==="number")}var yJ=new Jf.Schema({owner:{type:Jf.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(sg),default:void 0},searchLangs:{type:[String],enum:Object.values(sg),default:void 0},platform:{type:[String],enum:Object.values(JS),default:void 0},privacy:{type:Number,enum:Yf(QS),default:void 0},prefixes:{type:[String],default:void 0},statusType:{type:Number,enum:Yf(XS),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:Yf(j1)},event:{type:Number,enum:Yf(ZS),required(){return this.type===j1.Event},default:void 0},command:{type:String,required(){return this.type===j1.CustomCommand},default:void 0},interval:{type:String,required(){return this.type===j1.Scheduled},default:void 0},actions:{type:[{id:{type:String,required:!1},parent:{type:String,required:!1},type:{type:Number,enum:Yf(L1),required:!0},command:{type:String,required(){return this.type===L1.RunCommand}},function:{type:String,required(){return this.type===L1.RunFunction}},statement:{type:String,required(){return this.type===L1.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}}});yJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","flags","managed","config"])});var HSe=Jf.model("category",yJ);var V1=zo(Wo(),1);var nO=new V1.Schema({kind:{type:String,required:!0,enum:Object.values(eO),index:!0},slug:{type:String,required:!0,trim:!0,unique:!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:V1.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},status:{type:String,required:!0,enum:Object.values(tO),index:!0},stats:{type:{installs:{type:Number,required:!1}},_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:V1.Schema.Types.Mixed,required:!1,default:void 0}});nO.index({status:1,kind:1});nO.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","kind","slug","title","description","tags","author","status","stats","liveRef","payload"])});var KSe=V1.model("communityListing",nO);var Xf=zo(Wo(),1);var Qf={id:{type:String,required:!0},variants:{type:[Number],default:void 0},_id:!1},YSe={id:{type:String,required:!0},_id:!1},gJ=new Xf.Schema({owner:{type:Xf.Schema.Types.ObjectId,ref:"user",required:!0,index:!0},name:{type:String,required:!0,trim:!0,maxlength:64},outfit:{type:Qf,default:void 0},pickaxe:{type:Qf,default:void 0},backpack:{type:Qf,default:void 0},emote:{type:YSe,default:void 0},shoes:{type:Qf,default:void 0},sidekick:{type:Qf,default:void 0}});gJ.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","owner","name","outfit","pickaxe","backpack","emote","shoes","sidekick"])});var JSe=Xf.model("preset",gJ);var Zf=zo(Wo(),1);var QSe=/^[a-f\d]{24}$/i;function sO(e){return typeof e==="string"&&QSe.test(e)}var iO=new Zf.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},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:Zf.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 findByToken(e,t){if(!sO(e))return null;let r=await this.findById(e);if(!r?.token||r.token!==t)return null;return r},async findByAPIToken(e,t){if(!sO(e))return null;let r=await this.findById(e);if(!r?.apiToken||r.apiToken!==t)return null;return r},async findByAccessToken(e,t){if(!sO(e))return null;let r=await this.findById(e),n=r?.applications?.find((s)=>s.token===t);if(!n)return null;return{user:r,app:n}}}});iO.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)}});iO.set("toJSON",{transform:Ts.transformSchemaToJSON(["id","username","avatar","email","flags","connections"])});var XSe=Zf.model("user",iO);var Oxe=ZSe.connection;export{zSe as ApplicationModel,GSe as BotModel,HSe as CategoryModel,KSe as CommunityListingModel,lJ as DatabaseClient,dJ as DatabaseErrorHandler,rO as DatabaseErrors,JSe as PresetModel,XSe as UserModel,Oxe as connection};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fnlb-project/database",
3
3
  "description": "FNLB Database Client",
4
- "version": "1.0.78",
4
+ "version": "1.0.79",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@fnlb-project/shared": "^1.5.178",
25
+ "@fnlb-project/shared": "^1.5.179",
26
26
  "mongoose": "^8.23.0"
27
27
  },
28
28
  "devDependencies": {