@fnlb-project/database 1.0.78 → 1.0.80

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;
@@ -3264,50 +3368,44 @@ export declare const CategoryModel: import("mongoose").Model<{
3264
3368
  }>>;
3265
3369
  export declare const CommunityListingModel: import("mongoose").Model<{
3266
3370
  kind: CommunityListingKind;
3267
- slug: string;
3268
3371
  title: string;
3269
3372
  author: import("mongoose").Types.ObjectId;
3270
3373
  status: CommunityListingStatus;
3271
3374
  description?: string | null | undefined;
3272
3375
  tags?: string[] | null | undefined;
3273
- thumbnail?: string | null | undefined;
3274
3376
  stats?: {
3275
3377
  installs?: number | null | undefined;
3276
3378
  } | null | undefined;
3277
3379
  liveRef?: {
3278
- botId: string;
3380
+ categoryId: string;
3279
3381
  } | null | undefined;
3280
3382
  payload?: any;
3281
3383
  }, {}, {}, {}, import("mongoose").Document<unknown, {}, {
3282
3384
  kind: CommunityListingKind;
3283
- slug: string;
3284
3385
  title: string;
3285
3386
  author: import("mongoose").Types.ObjectId;
3286
3387
  status: CommunityListingStatus;
3287
3388
  description?: string | null | undefined;
3288
3389
  tags?: string[] | null | undefined;
3289
- thumbnail?: string | null | undefined;
3290
3390
  stats?: {
3291
3391
  installs?: number | null | undefined;
3292
3392
  } | null | undefined;
3293
3393
  liveRef?: {
3294
- botId: string;
3394
+ categoryId: string;
3295
3395
  } | null | undefined;
3296
3396
  payload?: any;
3297
3397
  }, {}, import("mongoose").DefaultSchemaOptions> & {
3298
3398
  kind: CommunityListingKind;
3299
- slug: string;
3300
3399
  title: string;
3301
3400
  author: import("mongoose").Types.ObjectId;
3302
3401
  status: CommunityListingStatus;
3303
3402
  description?: string | null | undefined;
3304
3403
  tags?: string[] | null | undefined;
3305
- thumbnail?: string | null | undefined;
3306
3404
  stats?: {
3307
3405
  installs?: number | null | undefined;
3308
3406
  } | null | undefined;
3309
3407
  liveRef?: {
3310
- botId: string;
3408
+ categoryId: string;
3311
3409
  } | null | undefined;
3312
3410
  payload?: any;
3313
3411
  } & {
@@ -3316,50 +3414,44 @@ export declare const CommunityListingModel: import("mongoose").Model<{
3316
3414
  __v: number;
3317
3415
  }, Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
3318
3416
  kind: CommunityListingKind;
3319
- slug: string;
3320
3417
  title: string;
3321
3418
  author: import("mongoose").Types.ObjectId;
3322
3419
  status: CommunityListingStatus;
3323
3420
  description?: string | null | undefined;
3324
3421
  tags?: string[] | null | undefined;
3325
- thumbnail?: string | null | undefined;
3326
3422
  stats?: {
3327
3423
  installs?: number | null | undefined;
3328
3424
  } | null | undefined;
3329
3425
  liveRef?: {
3330
- botId: string;
3426
+ categoryId: string;
3331
3427
  } | null | undefined;
3332
3428
  payload?: any;
3333
3429
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
3334
3430
  kind: CommunityListingKind;
3335
- slug: string;
3336
3431
  title: string;
3337
3432
  author: import("mongoose").Types.ObjectId;
3338
3433
  status: CommunityListingStatus;
3339
3434
  description?: string | null | undefined;
3340
3435
  tags?: string[] | null | undefined;
3341
- thumbnail?: string | null | undefined;
3342
3436
  stats?: {
3343
3437
  installs?: number | null | undefined;
3344
3438
  } | null | undefined;
3345
3439
  liveRef?: {
3346
- botId: string;
3440
+ categoryId: string;
3347
3441
  } | null | undefined;
3348
3442
  payload?: any;
3349
3443
  }>, {}, import("mongoose").DefaultSchemaOptions> & import("mongoose").FlatRecord<{
3350
3444
  kind: CommunityListingKind;
3351
- slug: string;
3352
3445
  title: string;
3353
3446
  author: import("mongoose").Types.ObjectId;
3354
3447
  status: CommunityListingStatus;
3355
3448
  description?: string | null | undefined;
3356
3449
  tags?: string[] | null | undefined;
3357
- thumbnail?: string | null | undefined;
3358
3450
  stats?: {
3359
3451
  installs?: number | null | undefined;
3360
3452
  } | null | undefined;
3361
3453
  liveRef?: {
3362
- botId: string;
3454
+ categoryId: string;
3363
3455
  } | null | undefined;
3364
3456
  payload?: any;
3365
3457
  }> & {
@@ -3576,6 +3668,7 @@ export interface IUserApplication {
3576
3668
  export interface IUser {
3577
3669
  token: string;
3578
3670
  username: string;
3671
+ avatar?: string;
3579
3672
  email: string;
3580
3673
  password: string;
3581
3674
  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},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","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.80",
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": {