summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--dist/models/Activity.d.ts36
-rw-r--r--dist/models/Activity.js40
-rw-r--r--dist/models/Activity.js.map2
-rw-r--r--dist/models/Channel.d.ts14
-rw-r--r--dist/models/Channel.js28
-rw-r--r--dist/models/Channel.js.map2
-rw-r--r--dist/models/Emoji.d.ts13
-rw-r--r--dist/models/Emoji.js14
-rw-r--r--dist/models/Emoji.js.map2
-rw-r--r--dist/models/Event.d.ts11
-rw-r--r--dist/models/Event.js11
-rw-r--r--dist/models/Event.js.map2
-rw-r--r--dist/models/Guild.d.ts10
-rw-r--r--dist/models/Guild.js41
-rw-r--r--dist/models/Guild.js.map2
-rw-r--r--dist/models/Invite.d.ts6
-rw-r--r--dist/models/Invite.js38
-rw-r--r--dist/models/Invite.js.map2
-rw-r--r--dist/models/Member.d.ts12
-rw-r--r--dist/models/Member.js35
-rw-r--r--dist/models/Member.js.map2
-rw-r--r--dist/models/Message.d.ts8
-rw-r--r--dist/models/Message.js99
-rw-r--r--dist/models/Message.js.map2
-rw-r--r--dist/models/Role.d.ts6
-rw-r--r--dist/models/Role.js16
-rw-r--r--dist/models/Role.js.map2
-rw-r--r--dist/models/Status.d.ts5
-rw-r--r--dist/models/Status.js6
-rw-r--r--dist/models/Status.js.map2
-rw-r--r--dist/models/User.d.ts6
-rw-r--r--dist/models/User.js99
-rw-r--r--dist/models/User.js.map2
-rw-r--r--dist/models/VoiceState.d.ts6
-rw-r--r--dist/models/VoiceState.js16
-rw-r--r--dist/models/VoiceState.js.map2
-rw-r--r--dist/util/Config.d.ts16
-rw-r--r--dist/util/Config.js42
-rw-r--r--dist/util/Config.js.map2
-rw-r--r--dist/util/Database.d.ts32
-rw-r--r--dist/util/Database.js79
-rw-r--r--dist/util/Database.js.map2
-rw-r--r--dist/util/MongoBigInt.d.ts34
-rw-r--r--dist/util/MongoBigInt.js70
-rw-r--r--dist/util/MongoBigInt.js.map1
-rw-r--r--dist/util/Permissions.d.ts3
-rw-r--r--dist/util/Permissions.js3
-rw-r--r--dist/util/Permissions.js.map2
-rw-r--r--src/util/Config.ts37
-rw-r--r--src/util/Database.ts7
-rw-r--r--src/util/Permissions.ts3
51 files changed, 836 insertions, 97 deletions
diff --git a/dist/models/Activity.d.ts b/dist/models/Activity.d.ts

index 72c4a890..4d1ffff6 100644 --- a/dist/models/Activity.d.ts +++ b/dist/models/Activity.d.ts
@@ -1,5 +1,6 @@ import { User } from ".."; import { ClientStatus, Status } from "./Status"; +import { Types } from "mongoose"; export interface Presence { user: User; guild_id?: bigint; @@ -42,6 +43,41 @@ export interface Activity { instance?: boolean; flags?: bigint; } +export declare const Activity: { + name: StringConstructor; + type: NumberConstructor; + url: StringConstructor; + created_at: NumberConstructor; + timestamps: { + start: NumberConstructor; + end: NumberConstructor; + }[]; + application_id: typeof Types.Long; + details: StringConstructor; + state: StringConstructor; + emoji: { + name: StringConstructor; + id: typeof Types.Long; + amimated: BooleanConstructor; + }; + party: { + id: StringConstructor; + size: NumberConstructor[]; + }; + assets: { + large_image: StringConstructor; + large_text: StringConstructor; + small_image: StringConstructor; + small_text: StringConstructor; + }; + secrets: { + join: StringConstructor; + spectate: StringConstructor; + match: StringConstructor; + }; + instance: BooleanConstructor; + flags: typeof Types.Long; +}; export declare enum ActivityType { GAME = 0, STREAMING = 1, diff --git a/dist/models/Activity.js b/dist/models/Activity.js
index ddb15100..33476880 100644 --- a/dist/models/Activity.js +++ b/dist/models/Activity.js
@@ -1,6 +1,44 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ActivityType = void 0; +exports.ActivityType = exports.Activity = void 0; +const mongoose_1 = require("mongoose"); +exports.Activity = { + name: String, + type: Number, + url: String, + created_at: Number, + timestamps: [ + { + start: Number, + end: Number, + }, + ], + application_id: mongoose_1.Types.Long, + details: String, + state: String, + emoji: { + name: String, + id: mongoose_1.Types.Long, + amimated: Boolean, + }, + party: { + id: String, + size: [Number, Number], + }, + assets: { + large_image: String, + large_text: String, + small_image: String, + small_text: String, + }, + secrets: { + join: String, + spectate: String, + match: String, + }, + instance: Boolean, + flags: mongoose_1.Types.Long, +}; var ActivityType; (function (ActivityType) { ActivityType[ActivityType["GAME"] = 0] = "GAME"; diff --git a/dist/models/Activity.js.map b/dist/models/Activity.js.map
index 5146d527..2b9b6677 100644 --- a/dist/models/Activity.js.map +++ b/dist/models/Activity.js.map
@@ -1 +1 @@ -{"version":3,"file":"Activity.js","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":";;;AA+CA,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,yDAAa,CAAA;AACd,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"} \ No newline at end of file +{"version":3,"file":"Activity.js","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":";;;AAEA,uCAA0D;AA8C7C,QAAA,QAAQ,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACX;YACC,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,MAAM;SACX;KACD;IACD,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,QAAQ,EAAE,OAAO;KACjB;IACD,KAAK,EAAE;QACN,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KACtB;IACD,MAAM,EAAE;QACP,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;KAClB;IACD,OAAO,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;KACb;IACD,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,gBAAK,CAAC,IAAI;CACjB,CAAC;AAEF,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,yDAAa,CAAA;AACd,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"} \ No newline at end of file diff --git a/dist/models/Channel.d.ts b/dist/models/Channel.d.ts
index efd0c226..6caf7238 100644 --- a/dist/models/Channel.d.ts +++ b/dist/models/Channel.d.ts
@@ -1,17 +1,17 @@ +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface ChannelDocument extends Channel, DMChannel, TextChannel, VoiceChannel, Document { + id: bigint; +} +export declare const ChannelSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const ChannelModel: import("mongoose").Model<ChannelDocument>; export interface Channel { id: bigint; created_at: number; name: string; type: number; - read_state: ReadState[]; -} -export interface ReadState { - last_message_id: bigint; - last_pin_timestamp: number; - mention_count: number; } export interface TextBasedChannel { - messages: any[]; last_message_id?: bigint; last_pin_timestamp?: number; } diff --git a/dist/models/Channel.js b/dist/models/Channel.js
index bb49127d..d4b50395 100644 --- a/dist/models/Channel.js +++ b/dist/models/Channel.js
@@ -1,6 +1,32 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ChannelType = void 0; +exports.ChannelType = exports.ChannelModel = exports.ChannelSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.ChannelSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + created_at: { type: mongoose_1.Schema.Types.Date, required: true }, + name: { type: String, required: true }, + type: { type: Number, required: true }, + guild_id: mongoose_1.Types.Long, + owner_id: mongoose_1.Types.Long, + parent_id: mongoose_1.Types.Long, + recipients: [mongoose_1.Types.Long], + position: Number, + last_message_id: mongoose_1.Types.Long, + last_pin_timestamp: Date, + nsfw: Boolean, + rate_limit_per_user: Number, + topic: String, + permission_overwrites: [ + { + allow: mongoose_1.Types.Long, + deny: mongoose_1.Types.Long, + id: mongoose_1.Types.Long, + type: Number, + }, + ], +}); +exports.ChannelModel = mongoose_1.model("Channel", exports.ChannelSchema, "channels"); var ChannelType; (function (ChannelType) { ChannelType[ChannelType["GUILD_TEXT"] = 0] = "GUILD_TEXT"; diff --git a/dist/models/Channel.js.map b/dist/models/Channel.js.map
index fdb6f6a0..768272eb 100644 --- a/dist/models/Channel.js.map +++ b/dist/models/Channel.js.map
@@ -1 +1 @@ -{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../src/models/Channel.ts"],"names":[],"mappings":";;;AA6CA,IAAY,WAQX;AARD,WAAY,WAAW;IACtB,yDAAc,CAAA;IACd,yCAAM,CAAA;IACN,2DAAe,CAAA;IACf,qDAAY,CAAA;IACZ,iEAAkB,CAAA;IAClB,yDAAc,CAAA;IACd,2DAAe,CAAA;AAChB,CAAC,EARW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAQtB"} \ No newline at end of file +{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../src/models/Channel.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAM7C,QAAA,aAAa,GAAG,IAAI,iBAAM,CAAC;IACvC,EAAE,EAAE,gBAAK,CAAC,IAAI;IACd,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,SAAS,EAAE,gBAAK,CAAC,IAAI;IACrB,UAAU,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE,gBAAK,CAAC,IAAI;IAC3B,kBAAkB,EAAE,IAAI;IACxB,IAAI,EAAE,OAAO;IACb,mBAAmB,EAAE,MAAM;IAC3B,KAAK,EAAE,MAAM;IACb,qBAAqB,EAAE;QACtB;YACC,KAAK,EAAE,gBAAK,CAAC,IAAI;YACjB,IAAI,EAAE,gBAAK,CAAC,IAAI;YAChB,EAAE,EAAE,gBAAK,CAAC,IAAI;YACd,IAAI,EAAE,MAAM;SACZ;KACD;CACD,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,gBAAK,CAAkB,SAAS,EAAE,qBAAa,EAAE,UAAU,CAAC,CAAC;AAuCzF,IAAY,WAQX;AARD,WAAY,WAAW;IACtB,yDAAc,CAAA;IACd,yCAAM,CAAA;IACN,2DAAe,CAAA;IACf,qDAAY,CAAA;IACZ,iEAAkB,CAAA;IAClB,yDAAc,CAAA;IACd,2DAAe,CAAA;AAChB,CAAC,EARW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAQtB"} \ No newline at end of file diff --git a/dist/models/Emoji.d.ts b/dist/models/Emoji.d.ts
index e2f639db..91c1abfe 100644 --- a/dist/models/Emoji.d.ts +++ b/dist/models/Emoji.d.ts
@@ -1,12 +1,15 @@ -export interface Emoji { - allNamesString: string; +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface Emoji extends Document { + id: bigint; animated: boolean; available: boolean; - guildId: bigint; - id: bigint; + guild_id: bigint; managed: boolean; name: string; require_colons: boolean; url: string; - roles: []; + roles: bigint[]; } +export declare const EmojiSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const EmojiModel: import("mongoose").Model<Emoji>; diff --git a/dist/models/Emoji.js b/dist/models/Emoji.js
index f4bbad78..3bdc3c3d 100644 --- a/dist/models/Emoji.js +++ b/dist/models/Emoji.js
@@ -1,3 +1,17 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.EmojiModel = exports.EmojiSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.EmojiSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + animated: Boolean, + available: Boolean, + guild_id: mongoose_1.Types.Long, + managed: Boolean, + name: String, + require_colons: Boolean, + url: String, + roles: [mongoose_1.Types.Long], +}); +exports.EmojiModel = mongoose_1.model("Emoji", exports.EmojiSchema, "emojis"); //# sourceMappingURL=Emoji.js.map \ No newline at end of file diff --git a/dist/models/Emoji.js.map b/dist/models/Emoji.js.map
index 3127e84e..2adcea36 100644 --- a/dist/models/Emoji.js.map +++ b/dist/models/Emoji.js.map
@@ -1 +1 @@ -{"version":3,"file":"Emoji.js","sourceRoot":"","sources":["../../src/models/Emoji.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Emoji.js","sourceRoot":"","sources":["../../src/models/Emoji.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAc7C,QAAA,WAAW,GAAG,IAAI,iBAAM,CAAC;IACrC,EAAE,EAAE,gBAAK,CAAC,IAAI;IACd,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,OAAO;IACvB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC;CACnB,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,gBAAK,CAAQ,OAAO,EAAE,mBAAW,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Event.d.ts b/dist/models/Event.d.ts
index 51bca8e3..c6049066 100644 --- a/dist/models/Event.d.ts +++ b/dist/models/Event.d.ts
@@ -1,3 +1,4 @@ +/// <reference path="../util/MongoBigInt.d.ts" /> import { ConnectedAccount, User, UserSettings } from "./User"; import { DMChannel, Channel } from "./Channel"; import { Guild } from "./Guild"; @@ -10,7 +11,8 @@ import { Message, PartialEmoji } from "./Message"; import { VoiceState } from "./VoiceState"; import { ApplicationCommand } from "./Application"; import { Interaction } from "./Interaction"; -export interface Event { +import { Schema, Document } from "mongoose"; +export interface Event extends Document { guild_id?: bigint; user_id?: bigint; channel_id?: bigint; @@ -18,6 +20,8 @@ export interface Event { event: EVENT; data?: any; } +export declare const EventSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const EventModel: import("mongoose").Model<Event>; export interface InvalidatedEvent extends Event { event: "INVALIDATED"; } @@ -113,7 +117,10 @@ export interface GuildUpdateEvent extends Event { } export interface GuildDeleteEvent extends Event { event: "GUILD_DELETE"; - data: Guild; + data: { + id: bigint; + unavailable?: boolean; + }; } export interface GuildBanAddEvent extends Event { event: "GUILD_BAN_ADD"; diff --git a/dist/models/Event.js b/dist/models/Event.js
index c5315321..0f4d0d8d 100644 --- a/dist/models/Event.js +++ b/dist/models/Event.js
@@ -1,3 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.EventModel = exports.EventSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.EventSchema = new mongoose_1.Schema({ + guild_id: mongoose_1.Types.Long, + user_id: mongoose_1.Types.Long, + channel_id: mongoose_1.Types.Long, + created_at: { type: Number, required: true }, + event: { type: String, required: true }, + data: Object, +}); +exports.EventModel = mongoose_1.model("Event", exports.EventSchema, "events"); //# sourceMappingURL=Event.js.map \ No newline at end of file diff --git a/dist/models/Event.js.map b/dist/models/Event.js.map
index 63cd8fca..bc639871 100644 --- a/dist/models/Event.js.map +++ b/dist/models/Event.js.map
@@ -1 +1 @@ -{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../src/models/Event.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../src/models/Event.ts"],"names":[],"mappings":";;;AAYA,uCAA0D;AAW7C,QAAA,WAAW,GAAG,IAAI,iBAAM,CAAC;IACrC,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,OAAO,EAAE,gBAAK,CAAC,IAAI;IACnB,UAAU,EAAE,gBAAK,CAAC,IAAI;IACtB,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM;CACZ,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,gBAAK,CAAQ,OAAO,EAAE,mBAAW,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Guild.d.ts b/dist/models/Guild.d.ts
index 43bd6311..43fcf973 100644 --- a/dist/models/Guild.d.ts +++ b/dist/models/Guild.d.ts
@@ -1,5 +1,7 @@ -import { Emoji } from "./Emoji"; -export interface Guild { +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface Guild extends Document { + id: bigint; afk_channel_id?: bigint; afk_timeout?: number; application_id?: bigint; @@ -7,11 +9,9 @@ export interface Guild { default_message_notifications?: number; description?: string; discovery_splash?: string; - emojis: Emoji[]; explicit_content_filter?: number; features: string[]; icon?: string; - id: bigint; large?: boolean; max_members?: number; max_presences?: number; @@ -38,3 +38,5 @@ export interface Guild { widget_channel_id?: bigint; widget_enabled?: boolean; } +export declare const GuildSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const GuildModel: import("mongoose").Model<Guild>; diff --git a/dist/models/Guild.js b/dist/models/Guild.js
index 6c1c7bc5..63969ab7 100644 --- a/dist/models/Guild.js +++ b/dist/models/Guild.js
@@ -1,3 +1,44 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.GuildModel = exports.GuildSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.GuildSchema = new mongoose_1.Schema({ + afk_channel_id: mongoose_1.Types.Long, + afk_timeout: Number, + application_id: mongoose_1.Types.Long, + banner: String, + default_message_notifications: Number, + description: String, + discovery_splash: String, + explicit_content_filter: Number, + features: { type: [String], default: [] }, + icon: String, + id: { type: mongoose_1.Types.Long, required: true }, + large: Boolean, + max_members: { type: Number, default: 100000 }, + max_presences: Number, + max_video_channel_users: { type: Number, default: 25 }, + member_count: Number, + presence_count: Number, + mfa_level: Number, + name: { type: String, required: true }, + owner_id: { type: mongoose_1.Types.Long, required: true }, + preferred_locale: String, + premium_subscription_count: Number, + premium_tier: Number, + public_updates_channel_id: mongoose_1.Types.Long, + region: String, + rules_channel_id: mongoose_1.Types.Long, + splash: String, + system_channel_flags: Number, + system_channel_id: mongoose_1.Types.Long, + unavailable: Boolean, + vanity_url_code: String, + verification_level: Number, + voice_states: { type: [Object], default: [] }, + welcome_screen: { type: [Object], default: [] }, + widget_channel_id: mongoose_1.Types.Long, + widget_enabled: Boolean, +}); +exports.GuildModel = mongoose_1.model("Guild", exports.GuildSchema, "guilds"); //# sourceMappingURL=Guild.js.map \ No newline at end of file diff --git a/dist/models/Guild.js.map b/dist/models/Guild.js.map
index 0cd8adb1..a22692f8 100644 --- a/dist/models/Guild.js.map +++ b/dist/models/Guild.js.map
@@ -1 +1 @@ -{"version":3,"file":"Guild.js","sourceRoot":"","sources":["../../src/models/Guild.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Guild.js","sourceRoot":"","sources":["../../src/models/Guild.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AA6C7C,QAAA,WAAW,GAAG,IAAI,iBAAM,CAAC;IACrC,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,MAAM,EAAE,MAAM;IACd,6BAA6B,EAAE,MAAM;IACrC,WAAW,EAAE,MAAM;IACnB,gBAAgB,EAAE,MAAM;IACxB,uBAAuB,EAAE,MAAM;IAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACzC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAC9C,aAAa,EAAE,MAAM;IACrB,uBAAuB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IACtD,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,MAAM;IACtB,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,gBAAgB,EAAE,MAAM;IACxB,0BAA0B,EAAE,MAAM;IAClC,YAAY,EAAE,MAAM;IACpB,yBAAyB,EAAE,gBAAK,CAAC,IAAI;IACrC,MAAM,EAAE,MAAM;IACd,gBAAgB,EAAE,gBAAK,CAAC,IAAI;IAC5B,MAAM,EAAE,MAAM;IACd,oBAAoB,EAAE,MAAM;IAC5B,iBAAiB,EAAE,gBAAK,CAAC,IAAI;IAC7B,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,MAAM;IACvB,kBAAkB,EAAE,MAAM;IAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7C,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/C,iBAAiB,EAAE,gBAAK,CAAC,IAAI;IAC7B,cAAc,EAAE,OAAO;CACvB,CAAC,CAAC;AAEU,QAAA,UAAU,GAAG,gBAAK,CAAQ,OAAO,EAAE,mBAAW,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Invite.d.ts b/dist/models/Invite.d.ts
index 654d922d..7b95939b 100644 --- a/dist/models/Invite.d.ts +++ b/dist/models/Invite.d.ts
@@ -1,4 +1,6 @@ -export interface Invite { +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface Invite extends Document { code: string; temporary: boolean; uses: number; @@ -33,3 +35,5 @@ export interface Invite { }; target_user_type: number; } +export declare const InviteSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const InviteModel: import("mongoose").Model<Invite>; diff --git a/dist/models/Invite.js b/dist/models/Invite.js
index ff9594fe..8ae75fcc 100644 --- a/dist/models/Invite.js +++ b/dist/models/Invite.js
@@ -1,3 +1,41 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.InviteModel = exports.InviteSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.InviteSchema = new mongoose_1.Schema({ + code: String, + temporary: Boolean, + uses: Number, + max_uses: Number, + max_age: Number, + created_at: Number, + guild: { + id: mongoose_1.Types.Long, + name: String, + splash: String, + description: String, + icon: String, + features: Object, + verification_level: Number, + }, + channel: { + id: mongoose_1.Types.Long, + name: String, + type: Number, + }, + inviter: { + id: mongoose_1.Types.Long, + username: String, + avatar: String, + discriminator: Number, + }, + target_user: { + id: mongoose_1.Types.Long, + username: String, + avatar: String, + discriminator: Number, + }, + target_user_type: Number, +}); +exports.InviteModel = mongoose_1.model("Invite", exports.InviteSchema, "invites"); //# sourceMappingURL=Invite.js.map \ No newline at end of file diff --git a/dist/models/Invite.js.map b/dist/models/Invite.js.map
index a5340046..fbfb8919 100644 --- a/dist/models/Invite.js.map +++ b/dist/models/Invite.js.map
@@ -1 +1 @@ -{"version":3,"file":"Invite.js","sourceRoot":"","sources":["../../src/models/Invite.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Invite.js","sourceRoot":"","sources":["../../src/models/Invite.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAsC7C,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE;QACN,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,kBAAkB,EAAE,MAAM;KAC1B;IACD,OAAO,EAAE;QACR,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ;IAED,OAAO,EAAE;QACR,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,MAAM;KACrB;IACD,WAAW,EAAE;QACZ,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,MAAM;KACrB;IACD,gBAAgB,EAAE,MAAM;CACxB,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,gBAAK,CAAS,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Member.d.ts b/dist/models/Member.d.ts
index 379bfced..e55fdb91 100644 --- a/dist/models/Member.d.ts +++ b/dist/models/Member.d.ts
@@ -1,5 +1,7 @@ +/// <reference path="../util/MongoBigInt.d.ts" /> import { PublicUser } from "./User"; -export interface Member { +import { Schema, Document } from "mongoose"; +export interface Member extends Document { id: bigint; nick?: string; roles: bigint[]; @@ -11,9 +13,6 @@ export interface Member { permissions: bigint; settings: UserGuildSettings; } -export interface PublicMember extends Omit<Member, "settings" | "id"> { - user: PublicUser; -} export interface UserGuildSettings { channel_overrides: { channel_id: bigint; @@ -33,3 +32,8 @@ export interface MuteConfig { end_time: number; selected_time_window: number; } +export declare const MemberSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const MemberModel: import("mongoose").Model<Member>; +export interface PublicMember extends Omit<Member, "settings" | "id"> { + user: PublicUser; +} diff --git a/dist/models/Member.js b/dist/models/Member.js
index 0a75bf46..b4aebf0a 100644 --- a/dist/models/Member.js +++ b/dist/models/Member.js
@@ -1,3 +1,38 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.MemberModel = exports.MemberSchema = void 0; +const mongoose_1 = require("mongoose"); +const MuteConfig = { + end_time: Number, + selected_time_window: Number, +}; +exports.MemberSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + nick: String, + roles: [mongoose_1.Types.Long], + joined_at: Number, + premium_since: Number, + deaf: Boolean, + mute: Boolean, + pending: Boolean, + permissions: mongoose_1.Types.Long, + settings: { + channel_overrides: [ + { + channel_id: mongoose_1.Types.Long, + message_notifications: Number, + mute_config: MuteConfig, + muted: Boolean, + }, + ], + message_notifications: Number, + mobile_push: Boolean, + mute_config: MuteConfig, + muted: Boolean, + suppress_everyone: Boolean, + suppress_roles: Boolean, + version: Number, + }, +}); +exports.MemberModel = mongoose_1.model("Member", exports.MemberSchema, "members"); //# sourceMappingURL=Member.js.map \ No newline at end of file diff --git a/dist/models/Member.js.map b/dist/models/Member.js.map
index 2a0d5623..4e9996c3 100644 --- a/dist/models/Member.js.map +++ b/dist/models/Member.js.map
@@ -1 +1 @@ -{"version":3,"file":"Member.js","sourceRoot":"","sources":["../../src/models/Member.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Member.js","sourceRoot":"","sources":["../../src/models/Member.ts"],"names":[],"mappings":";;;AACA,uCAA0D;AAoC1D,MAAM,UAAU,GAAG;IAClB,QAAQ,EAAE,MAAM;IAChB,oBAAoB,EAAE,MAAM;CAC5B,CAAC;AAEW,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,EAAE,EAAE,gBAAK,CAAC,IAAI;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE,MAAM;IACrB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,gBAAK,CAAC,IAAI;IACvB,QAAQ,EAAE;QACT,iBAAiB,EAAE;YAClB;gBACC,UAAU,EAAE,gBAAK,CAAC,IAAI;gBACtB,qBAAqB,EAAE,MAAM;gBAC7B,WAAW,EAAE,UAAU;gBACvB,KAAK,EAAE,OAAO;aACd;SACD;QACD,qBAAqB,EAAE,MAAM;QAC7B,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,OAAO;QACd,iBAAiB,EAAE,OAAO;QAC1B,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,MAAM;KACf;CACD,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,gBAAK,CAAS,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Message.d.ts b/dist/models/Message.d.ts
index cfbf560e..9ff70b2c 100644 --- a/dist/models/Message.d.ts +++ b/dist/models/Message.d.ts
@@ -1,5 +1,7 @@ +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; import { ChannelType } from "./Channel"; -export interface Message { +export interface Message extends Document { id: bigint; author_id?: bigint; webhook_id?: bigint; @@ -26,7 +28,7 @@ export interface Message { activity?: { type: number; party_id: string; - }[]; + }; flags?: bigint; stickers?: []; message_reference?: { @@ -115,3 +117,5 @@ export interface AllowedMentions { users?: bigint[]; replied_user?: boolean; } +export declare const MessageSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const MessageModel: import("mongoose").Model<Message>; diff --git a/dist/models/Message.js b/dist/models/Message.js
index 773de5c2..40808f96 100644 --- a/dist/models/Message.js +++ b/dist/models/Message.js
@@ -1,6 +1,8 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.MessageType = void 0; +exports.MessageModel = exports.MessageSchema = exports.MessageType = void 0; +const mongoose_1 = require("mongoose"); +const Channel_1 = require("./Channel"); var MessageType; (function (MessageType) { MessageType[MessageType["DEFAULT"] = 0] = "DEFAULT"; @@ -21,4 +23,99 @@ var MessageType; MessageType[MessageType["REPLY"] = 19] = "REPLY"; MessageType[MessageType["APPLICATION_COMMAND"] = 20] = "APPLICATION_COMMAND"; })(MessageType = exports.MessageType || (exports.MessageType = {})); +const Attachment = { + id: mongoose_1.Types.Long, + filename: String, + size: Number, + url: String, + proxy_url: String, + height: Number, + width: Number, +}; +const EmbedImage = { + url: String, + proxy_url: String, + height: Number, + width: Number, +}; +const Reaction = { + count: Number, + emoji: { + id: mongoose_1.Types.Long, + name: String, + animated: Boolean, + }, +}; +const Embed = { + title: String, + type: String, + description: String, + url: String, + timestamp: Number, + color: Number, + footer: { + text: String, + icon_url: String, + proxy_icon_url: String, + }, + image: EmbedImage, + thumbnail: EmbedImage, + video: EmbedImage, + provider: { + name: String, + url: String, + }, + author: { + name: String, + url: String, + icon_url: String, + proxy_icon_url: String, + }, + fields: [ + { + name: String, + value: String, + inline: Boolean, + }, + ], +}; +exports.MessageSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + author_id: mongoose_1.Types.Long, + webhook_id: mongoose_1.Types.Long, + application_id: mongoose_1.Types.Long, + content: String, + timestamp: Number, + edited_timestamp: Number, + tts: Boolean, + mention_everyone: Boolean, + mentions: [mongoose_1.Types.Long], + mention_roles: [mongoose_1.Types.Long], + mention_channels: [ + { + id: mongoose_1.Types.Long, + guild_id: mongoose_1.Types.Long, + type: Channel_1.ChannelType, + name: String, + }, + ], + attachments: [Attachment], + embeds: [Embed], + reactions: [Reaction], + nonce: mongoose_1.Schema.Types.Mixed, + pinned: Boolean, + type: MessageType, + activity: { + type: Number, + party_id: String, + }, + flags: mongoose_1.Types.Long, + stickers: [], + message_reference: { + message_id: mongoose_1.Types.Long, + channel_id: mongoose_1.Types.Long, + guild_id: mongoose_1.Types.Long, + }, +}); +exports.MessageModel = mongoose_1.model("Message", exports.MessageSchema, "messages"); //# sourceMappingURL=Message.js.map \ No newline at end of file diff --git a/dist/models/Message.js.map b/dist/models/Message.js.map
index 94e6c2d2..6c165ffb 100644 --- a/dist/models/Message.js.map +++ b/dist/models/Message.js.map
@@ -1 +1 @@ -{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/models/Message.ts"],"names":[],"mappings":";;;AAuCA,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACtB,mDAAW,CAAA;IACX,+DAAiB,CAAA;IACjB,qEAAoB,CAAA;IACpB,6CAAQ,CAAA;IACR,2EAAuB,CAAA;IACvB,2EAAuB,CAAA;IACvB,iFAA0B,CAAA;IAC1B,uEAAqB,CAAA;IACrB,mGAAmC,CAAA;IACnC,iHAA0C,CAAA;IAC1C,kHAA2C,CAAA;IAC3C,kHAA2C,CAAA;IAC3C,0EAAuB,CAAA;IACvB,8FAAiC,CAAA;IACjC,4FAAgC,CAAA;IAChC,gDAAU,CAAA;IACV,4EAAwB,CAAA;AACzB,CAAC,EAlBW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAkBtB"} \ No newline at end of file +{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/models/Message.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/models/Role.d.ts b/dist/models/Role.d.ts
index 11582893..a65b0e13 100644 --- a/dist/models/Role.d.ts +++ b/dist/models/Role.d.ts
@@ -1,4 +1,6 @@ -export interface Role { +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface Role extends Document { id: bigint; color: number; hoist: boolean; @@ -11,3 +13,5 @@ export interface Role { bot_id?: bigint; }; } +export declare const RoleSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const RoleModel: import("mongoose").Model<Role>; diff --git a/dist/models/Role.js b/dist/models/Role.js
index 467f4294..9a0d0932 100644 --- a/dist/models/Role.js +++ b/dist/models/Role.js
@@ -1,3 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.RoleModel = exports.RoleSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.RoleSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + color: Number, + hoist: Boolean, + managed: Boolean, + mentionable: Boolean, + name: String, + permissions: mongoose_1.Types.Long, + position: Number, + tags: { + bot_id: mongoose_1.Types.Long, + }, +}); +exports.RoleModel = mongoose_1.model("Role", exports.RoleSchema, "roles"); //# sourceMappingURL=Role.js.map \ No newline at end of file diff --git a/dist/models/Role.js.map b/dist/models/Role.js.map
index 74ec8cab..34adaaa5 100644 --- a/dist/models/Role.js.map +++ b/dist/models/Role.js.map
@@ -1 +1 @@ -{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../src/models/Role.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Role.js","sourceRoot":"","sources":["../../src/models/Role.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAgB7C,QAAA,UAAU,GAAG,IAAI,iBAAM,CAAC;IACpC,EAAE,EAAE,gBAAK,CAAC,IAAI;IACd,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,OAAO;IACpB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,gBAAK,CAAC,IAAI;IACvB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE;QACL,MAAM,EAAE,gBAAK,CAAC,IAAI;KAClB;CACD,CAAC,CAAC;AAEU,QAAA,SAAS,GAAG,gBAAK,CAAO,MAAM,EAAE,kBAAU,EAAE,OAAO,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/models/Status.d.ts b/dist/models/Status.d.ts
index 91494d02..424a16b2 100644 --- a/dist/models/Status.d.ts +++ b/dist/models/Status.d.ts
@@ -4,3 +4,8 @@ export interface ClientStatus { mobile?: string; web?: string; } +export declare const ClientStatus: { + desktop: StringConstructor; + mobile: StringConstructor; + web: StringConstructor; +}; diff --git a/dist/models/Status.js b/dist/models/Status.js
index f7c07536..992d9cae 100644 --- a/dist/models/Status.js +++ b/dist/models/Status.js
@@ -1,3 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.ClientStatus = void 0; +exports.ClientStatus = { + desktop: String, + mobile: String, + web: String, +}; //# sourceMappingURL=Status.js.map \ No newline at end of file diff --git a/dist/models/Status.js.map b/dist/models/Status.js.map
index 36fc6d2b..1d5d65f7 100644 --- a/dist/models/Status.js.map +++ b/dist/models/Status.js.map
@@ -1 +1 @@ -{"version":3,"file":"Status.js","sourceRoot":"","sources":["../../src/models/Status.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"Status.js","sourceRoot":"","sources":["../../src/models/Status.ts"],"names":[],"mappings":";;;AAQa,QAAA,YAAY,GAAG;IAC3B,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,MAAM;CACX,CAAC"} \ No newline at end of file diff --git a/dist/models/User.d.ts b/dist/models/User.d.ts
index c23c0118..81ae1fab 100644 --- a/dist/models/User.d.ts +++ b/dist/models/User.d.ts
@@ -1,6 +1,8 @@ +/// <reference path="../util/MongoBigInt.d.ts" /> import { Activity } from "./Activity"; import { ClientStatus, Status } from "./Status"; -export interface User { +import { Schema, Document } from "mongoose"; +export interface User extends Document { id: bigint; username: string; discriminator: string; @@ -99,3 +101,5 @@ export interface UserSettings { theme: "dark" | "white"; timezone_offset: number; } +export declare const UserSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const UserModel: import("mongoose").Model<User>; diff --git a/dist/models/User.js b/dist/models/User.js
index 9da5871e..14f57c34 100644 --- a/dist/models/User.js +++ b/dist/models/User.js
@@ -1,3 +1,102 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.UserModel = exports.UserSchema = void 0; +const Activity_1 = require("./Activity"); +const Status_1 = require("./Status"); +const mongoose_1 = require("mongoose"); +exports.UserSchema = new mongoose_1.Schema({ + id: mongoose_1.Types.Long, + username: String, + discriminator: String, + avatar: String, + phone: String, + desktop: Boolean, + mobile: Boolean, + premium: Boolean, + premium_type: Number, + bot: Boolean, + system: Boolean, + nsfw_allowed: Boolean, + mfa_enabled: Boolean, + created_at: Number, + verified: Boolean, + email: String, + flags: mongoose_1.Types.Long, + public_flags: mongoose_1.Types.Long, + hash: String, + guilds: [mongoose_1.Types.Long], + valid_tokens_since: Number, + user_settings: { + afk_timeout: Number, + allow_accessibility_detection: Boolean, + animate_emoji: Boolean, + animate_stickers: Number, + contact_sync_enabled: Boolean, + convert_emoticons: Boolean, + custom_status: { + emoji_id: mongoose_1.Types.Long, + emoji_name: String, + expires_at: Number, + text: String, + }, + default_guilds_restricted: Boolean, + detect_platform_accounts: Boolean, + developer_mode: Boolean, + disable_games_tab: Boolean, + enable_tts_command: Boolean, + explicit_content_filter: Number, + friend_source_flags: { all: Boolean }, + gif_auto_play: Boolean, + // every top guild is displayed as a "folder" + guild_folders: [ + { + color: Number, + guild_ids: [mongoose_1.Types.Long], + id: Number, + name: String, + }, + ], + guild_positions: [mongoose_1.Types.Long], + inline_attachment_media: Boolean, + inline_embed_media: Boolean, + locale: String, + message_display_compact: Boolean, + native_phone_integration_enabled: Boolean, + render_embeds: Boolean, + render_reactions: Boolean, + restricted_guilds: [mongoose_1.Types.Long], + show_current_game: Boolean, + status: String, + stream_notifications_enabled: Boolean, + theme: String, + timezone_offset: Number, + }, + relationships: [ + { + id: mongoose_1.Types.Long, + nickname: String, + type: Number, + user_id: mongoose_1.Types.Long, + }, + ], + connected_accounts: [ + { + access_token: String, + friend_sync: Boolean, + id: String, + name: String, + revoked: Boolean, + show_activity: Boolean, + type: String, + verifie: Boolean, + visibility: Number, + }, + ], + presence: { + status: String, + activities: [Activity_1.Activity], + client_status: Status_1.ClientStatus, + }, +}); +exports.UserModel = mongoose_1.model("User", exports.UserSchema, "users"); //# sourceMappingURL=User.js.map \ No newline at end of file diff --git a/dist/models/User.js.map b/dist/models/User.js.map
index 55984657..9d83919d 100644 --- a/dist/models/User.js.map +++ b/dist/models/User.js.map
@@ -1 +1 @@ -{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/models/VoiceState.d.ts b/dist/models/VoiceState.d.ts
index 607d5509..50faa253 100644 --- a/dist/models/VoiceState.d.ts +++ b/dist/models/VoiceState.d.ts
@@ -1,4 +1,6 @@ -export interface VoiceState { +/// <reference path="../util/MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; +export interface VoiceState extends Document { guild_id?: bigint; channel_id: bigint; user_id: bigint; @@ -11,3 +13,5 @@ export interface VoiceState { self_video: boolean; suppress: boolean; } +export declare const VoiceSateSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const VoiceStateModel: import("mongoose").Model<VoiceState>; diff --git a/dist/models/VoiceState.js b/dist/models/VoiceState.js
index f9338233..ea8ae4de 100644 --- a/dist/models/VoiceState.js +++ b/dist/models/VoiceState.js
@@ -1,3 +1,19 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +exports.VoiceStateModel = exports.VoiceSateSchema = void 0; +const mongoose_1 = require("mongoose"); +exports.VoiceSateSchema = new mongoose_1.Schema({ + guild_id: mongoose_1.Types.Long, + channel_id: mongoose_1.Types.Long, + user_id: mongoose_1.Types.Long, + session_id: String, + deaf: Boolean, + mute: Boolean, + self_deaf: Boolean, + self_mute: Boolean, + self_stream: Boolean, + self_video: Boolean, + suppress: Boolean, +}); +exports.VoiceStateModel = mongoose_1.model("VoiceState", exports.VoiceSateSchema, "voicestates"); //# sourceMappingURL=VoiceState.js.map \ No newline at end of file diff --git a/dist/models/VoiceState.js.map b/dist/models/VoiceState.js.map
index 13bfc78b..e23c7693 100644 --- a/dist/models/VoiceState.js.map +++ b/dist/models/VoiceState.js.map
@@ -1 +1 @@ -{"version":3,"file":"VoiceState.js","sourceRoot":"","sources":["../../src/models/VoiceState.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"VoiceState.js","sourceRoot":"","sources":["../../src/models/VoiceState.ts"],"names":[],"mappings":";;;AACA,uCAA0D;AAgB7C,QAAA,eAAe,GAAG,IAAI,iBAAM,CAAC;IACzC,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,UAAU,EAAE,gBAAK,CAAC,IAAI;IACtB,OAAO,EAAE,gBAAK,CAAC,IAAI;IACnB,UAAU,EAAE,MAAM;IAClB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,OAAO;CACjB,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,gBAAK,CAAa,YAAY,EAAE,uBAAe,EAAE,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/util/Config.d.ts b/dist/util/Config.d.ts
index 2ab792f5..1c6021c9 100644 --- a/dist/util/Config.d.ts +++ b/dist/util/Config.d.ts
@@ -1,13 +1,21 @@ +/// <reference path="MongoBigInt.d.ts" /> +import { Schema, Document } from "mongoose"; import "missing-native-js-functions"; declare const _default: { - init: (opts?: DefaultOptions) => Promise<void>; + init: () => Promise<import("mongodb").UpdateWriteOpResult>; getAll: () => DefaultOptions; - setAll: (val: any) => any; + setAll: (val: any) => Promise<import("mongodb").UpdateWriteOpResult>; }; export default _default; -export interface DefaultOptions { +export declare const DefaultOptions: { + api: {}; + gateway: {}; + voice: {}; +}; +export interface DefaultOptions extends Document { api?: any; gateway?: any; voice?: any; } -export declare const DefaultOptions: DefaultOptions; +export declare const ConfigSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>; +export declare const ConfigModel: import("mongoose").Model<DefaultOptions>; diff --git a/dist/util/Config.js b/dist/util/Config.js
index 5c41d39a..bde6c735 100644 --- a/dist/util/Config.js +++ b/dist/util/Config.js
@@ -1,23 +1,39 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.DefaultOptions = void 0; +exports.ConfigModel = exports.ConfigSchema = exports.DefaultOptions = void 0; +const mongoose_1 = require("mongoose"); require("missing-native-js-functions"); -const Database_1 = __importDefault(require("./Database")); -var Config; +const Database_1 = __importStar(require("./Database")); +var Config = new Database_1.MongooseCache(Database_1.default.collection("config"), [], { onlyEvents: false }); exports.default = { - init: async function init(opts = exports.DefaultOptions) { - Config = await Database_1.default.data.config({}).cache(); + init: async function init() { await Config.init(); - await Config.set(opts.merge(Config.cache || {})); + return this.setAll(Config.data.merge(exports.DefaultOptions)); }, getAll: function get() { - return Config.get(); + return Config.data; }, setAll: function set(val) { - return Config.set(val); + return Database_1.default.collection("config").updateOne({}, { $set: val }); }, }; exports.DefaultOptions = { @@ -25,4 +41,10 @@ exports.DefaultOptions = { gateway: {}, voice: {}, }; +exports.ConfigSchema = new mongoose_1.Schema({ + api: Object, + gateway: Object, + voice: Object, +}); +exports.ConfigModel = mongoose_1.model("Config", exports.ConfigSchema, "config"); //# sourceMappingURL=Config.js.map \ No newline at end of file diff --git a/dist/util/Config.js.map b/dist/util/Config.js.map
index 1cd7a96b..90489e99 100644 --- a/dist/util/Config.js.map +++ b/dist/util/Config.js.map
@@ -1 +1 @@ -{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/util/Config.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAqC;AACrC,0DAA4B;AAE5B,IAAI,MAAqB,CAAC;AAE1B,kBAAe;IACd,IAAI,EAAE,KAAK,UAAU,IAAI,CAAC,OAAuB,sBAAc;QAC9D,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,EAAE,SAAS,GAAG;QACnB,OAAuB,MAAM,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,EAAE,SAAS,GAAG,CAAC,GAAQ;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;CACD,CAAC;AAQW,QAAA,cAAc,GAAmB;IAC7C,GAAG,EAAE,EAAE;IACP,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;CACT,CAAC"} \ No newline at end of file +{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/util/Config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA0D;AAC1D,uCAAqC;AACrC,uDAA+C;AAE/C,IAAI,MAAM,GAAG,IAAI,wBAAa,CAAC,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnF,kBAAe;IACd,IAAI,EAAE,KAAK,UAAU,IAAI;QACxB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,EAAE,SAAS,GAAG;QACnB,OAAuB,MAAM,CAAC,IAAI,CAAC;IACpC,CAAC;IACD,MAAM,EAAE,SAAS,GAAG,CAAC,GAAQ;QAC5B,OAAO,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;CACD,CAAC;AAEW,QAAA,cAAc,GAAG;IAC7B,GAAG,EAAE,EAAE;IACP,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;CACT,CAAC;AAQW,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;CACb,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,gBAAK,CAAiB,QAAQ,EAAE,oBAAY,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/util/Database.d.ts b/dist/util/Database.d.ts
index 1a45ea78..dcb9bc90 100644 --- a/dist/util/Database.d.ts +++ b/dist/util/Database.d.ts
@@ -1,3 +1,29 @@ -import { MongoDatabase } from "lambert-db"; -declare const db: MongoDatabase; -export default db; +/// <reference types="node" /> +import "./MongoBigInt"; +import mongoose, { Collection } from "mongoose"; +import { ChangeStream, ChangeEvent } from "mongodb"; +import EventEmitter from "events"; +declare const _default: mongoose.Connection; +export default _default; +export interface MongooseCache { + on(event: "delete", listener: (id: string) => void): this; + on(event: "change", listener: (data: any) => void): this; + on(event: "insert", listener: (data: any) => void): this; + on(event: "close", listener: () => void): this; +} +export declare class MongooseCache extends EventEmitter { + collection: Collection; + pipeline: Array<Record<string, unknown>>; + opts: { + onlyEvents: boolean; + }; + stream: ChangeStream; + data: any; + constructor(collection: Collection, pipeline: Array<Record<string, unknown>>, opts: { + onlyEvents: boolean; + }); + init(): Promise<void>; + convertResult(obj: any): any; + change: (doc: ChangeEvent) => boolean | Promise<any> | undefined; + destroy(): Promise<any> | undefined; +} diff --git a/dist/util/Database.js b/dist/util/Database.js
index 9ac6eeeb..01b1b57c 100644 --- a/dist/util/Database.js +++ b/dist/util/Database.js
@@ -1,10 +1,75 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); -const lambert_db_1 = require("lambert-db"); -// TODO: load url from config -const db = new lambert_db_1.MongoDatabase("mongodb://127.0.0.1:27017/lambert?readPreference=secondaryPreferred", { - useNewUrlParser: true, - useUnifiedTopology: false, -}); -exports.default = db; +exports.MongooseCache = void 0; +require("./MongoBigInt"); +const mongoose_1 = __importDefault(require("mongoose")); +const mongodb_1 = require("mongodb"); +const events_1 = __importDefault(require("events")); +const uri = process.env.MONGO_URL || "mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred"; +const connection = mongoose_1.default.createConnection(uri, { autoIndex: true }); +exports.default = connection; +class MongooseCache extends events_1.default { + constructor(collection, pipeline, opts) { + super(); + this.collection = collection; + this.pipeline = pipeline; + this.opts = opts; + this.change = (doc) => { + // @ts-ignore + if (doc.fullDocument) { + // @ts-ignore + if (!this.opts.onlyEvents) + this.data = doc.fullDocument; + } + switch (doc.operationType) { + case "dropDatabase": + return this.destroy(); + case "drop": + return this.destroy(); + case "delete": + return this.emit("delete", doc.documentKey._id.toHexString()); + case "insert": + return this.emit("insert", doc.fullDocument); + case "update": + case "replace": + return this.emit("change", doc.fullDocument); + case "invalidate": + return this.destroy(); + default: + return; + } + }; + } + async init() { + this.stream = this.collection.watch(this.pipeline, { fullDocument: "updateLookup" }); + this.stream.on("change", this.change); + this.stream.on("close", this.destroy); + this.stream.on("error", console.error); + if (!this.opts.onlyEvents) { + const arr = await this.collection.aggregate(this.pipeline).toArray(); + this.data = arr.length ? arr[0] : arr; + } + } + convertResult(obj) { + if (obj instanceof mongodb_1.Long) + return BigInt(obj.toString()); + if (typeof obj === "object") { + Object.keys(obj).forEach((key) => { + obj[key] = this.convertResult(obj[key]); + }); + } + return obj; + } + destroy() { + this.stream.off("change", this.change); + this.emit("close"); + if (this.stream.isClosed()) + return; + return this.stream.close(); + } +} +exports.MongooseCache = MongooseCache; //# sourceMappingURL=Database.js.map \ No newline at end of file diff --git a/dist/util/Database.js.map b/dist/util/Database.js.map
index f7157bb6..7dacb4cd 100644 --- a/dist/util/Database.js.map +++ b/dist/util/Database.js.map
@@ -1 +1 @@ -{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../src/util/Database.ts"],"names":[],"mappings":";;AAAA,2CAA2C;AAE3C,6BAA6B;AAC7B,MAAM,EAAE,GAAG,IAAI,0BAAa,CAAC,qEAAqE,EAAE;IACnG,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,KAAK;CACzB,CAAC,CAAC;AAEH,kBAAe,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../src/util/Database.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/util/MongoBigInt.d.ts b/dist/util/MongoBigInt.d.ts new file mode 100644
index 00000000..fddcb496 --- /dev/null +++ b/dist/util/MongoBigInt.d.ts
@@ -0,0 +1,34 @@ +import mongoose from "mongoose"; +declare class LongSchema extends mongoose.SchemaType { + $conditionalHandlers: { + $lt: (val: any) => any; + $lte: (val: any) => any; + $gt: (val: any) => any; + $gte: (val: any) => any; + $ne: (val: any) => any; + $in: (val: any) => any; + $nin: (val: any) => any; + $mod: (val: any) => any; + $all: (val: any) => any; + $bitsAnySet: (val: any) => any; + $bitsAllSet: (val: any) => any; + }; + handleSingle(val: any): any; + handleArray(val: any): any; + checkRequired(val: any): boolean; + cast(val: any, scope?: any, init?: any): any; + castForQuery($conditional: string, value: any): any; +} +declare module "mongoose" { + namespace Types { + class Long extends mongoose.mongo.Long { + } + } + namespace Schema { + namespace Types { + class Long extends LongSchema { + } + } + } +} +export {}; diff --git a/dist/util/MongoBigInt.js b/dist/util/MongoBigInt.js new file mode 100644
index 00000000..7dae718e --- /dev/null +++ b/dist/util/MongoBigInt.js
@@ -0,0 +1,70 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("mongoose")); +class LongSchema extends mongoose_1.default.SchemaType { + constructor() { + super(...arguments); + this.$conditionalHandlers = { + $lt: this.handleSingle, + $lte: this.handleSingle, + $gt: this.handleSingle, + $gte: this.handleSingle, + $ne: this.handleSingle, + $in: this.handleArray, + $nin: this.handleArray, + $mod: this.handleArray, + $all: this.handleArray, + $bitsAnySet: this.handleArray, + $bitsAllSet: this.handleArray, + }; + } + handleSingle(val) { + return this.cast(val); + } + handleArray(val) { + var self = this; + return val.map(function (m) { + return self.cast(m); + }); + } + checkRequired(val) { + return null != val; + } + cast(val, scope, init) { + if (null === val) + return val; + if ("" === val) + return null; + if (val instanceof mongoose_1.default.mongo.Long) + return BigInt(val.toString()); + if (val instanceof Number || "number" == typeof val) + return BigInt(val); + if (!Array.isArray(val) && val.toString) + return BigInt(val.toString()); + // @ts-ignore + throw new SchemaType.CastError("Long", val); + } + castForQuery($conditional, value) { + var handler; + if (2 === arguments.length) { + // @ts-ignore + handler = this.$conditionalHandlers[$conditional]; + if (!handler) { + throw new Error("Can't use " + $conditional + " with Long."); + } + return handler.call(this, value); + } + else { + return this.cast($conditional); + } + } +} +LongSchema.cast = mongoose_1.default.SchemaType.cast; +LongSchema.set = mongoose_1.default.SchemaType.set; +LongSchema.get = mongoose_1.default.SchemaType.get; +mongoose_1.default.Schema.Types.Long = LongSchema; +mongoose_1.default.Types.Long = mongoose_1.default.mongo.Long; +//# sourceMappingURL=MongoBigInt.js.map \ No newline at end of file diff --git a/dist/util/MongoBigInt.js.map b/dist/util/MongoBigInt.js.map new file mode 100644
index 00000000..5b0c8caa --- /dev/null +++ b/dist/util/MongoBigInt.js.map
@@ -0,0 +1 @@ +{"version":3,"file":"MongoBigInt.js","sourceRoot":"","sources":["../../src/util/MongoBigInt.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAEhC,MAAM,UAAW,SAAQ,kBAAQ,CAAC,UAAU;IAA5C;;QACQ,yBAAoB,GAAG;YAC7B,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC;IA0CH,CAAC;IAxCA,YAAY,CAAC,GAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,GAAQ;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAM;YAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,GAAQ;QACrB,OAAO,IAAI,IAAI,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,KAAW,EAAE,IAAU;QACrC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QAC7B,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAE5B,IAAI,GAAG,YAAY,kBAAQ,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,GAAG,YAAY,MAAM,IAAI,QAAQ,IAAI,OAAO,GAAG;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvE,aAAa;QACb,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,YAAoB,EAAE,KAAU;QAC5C,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE;YAC3B,aAAa;YACb,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC;aAC7D;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACjC;aAAM;YACN,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;IACF,CAAC;CACD;AAED,UAAU,CAAC,IAAI,GAAG,kBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3C,UAAU,CAAC,GAAG,GAAG,kBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AACzC,UAAU,CAAC,GAAG,GAAG,kBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AAazC,kBAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AACxC,kBAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,kBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC"} \ No newline at end of file diff --git a/dist/util/Permissions.d.ts b/dist/util/Permissions.d.ts
index 8373f7c8..a022038a 100644 --- a/dist/util/Permissions.d.ts +++ b/dist/util/Permissions.d.ts
@@ -37,9 +37,6 @@ export declare class Permissions extends BitField { any(permission: PermissionResolvable, checkAdmin?: boolean): boolean; /** * Checks whether the bitfield has a permission, or multiple permissions. - * @param {PermissionResolvable} permission Permission(s) to check for - * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override - * @returns {boolean} */ has(permission: PermissionResolvable, checkAdmin?: boolean): boolean; } diff --git a/dist/util/Permissions.js b/dist/util/Permissions.js
index 596e1fa9..b594ff89 100644 --- a/dist/util/Permissions.js +++ b/dist/util/Permissions.js
@@ -10,9 +10,6 @@ class Permissions extends BitField_1.BitField { } /** * Checks whether the bitfield has a permission, or multiple permissions. - * @param {PermissionResolvable} permission Permission(s) to check for - * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override - * @returns {boolean} */ has(permission, checkAdmin = true) { return (checkAdmin && super.has(Permissions.FLAGS.ADMINISTRATOR)) || super.has(permission); diff --git a/dist/util/Permissions.js.map b/dist/util/Permissions.js.map
index 2e8e4e50..b392596f 100644 --- a/dist/util/Permissions.js.map +++ b/dist/util/Permissions.js.map
@@ -1 +1 @@ -{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/util/Permissions.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,8DAA8D;;;AAE9D,yCAAsC;AAItC,MAAa,WAAY,SAAQ,mBAAQ;IAmCxC,GAAG,CAAC,UAAgC,EAAE,UAAU,GAAG,IAAI;QACtD,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,UAAgC,EAAE,UAAU,GAAG,IAAI;QACtD,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;;AA/CF,kCAgDC;AA/CO,iBAAK,GAAG;IACd,qBAAqB,EAAE,EAAE,IAAI,EAAE;IAC/B,YAAY,EAAE,EAAE,IAAI,EAAE;IACtB,WAAW,EAAE,EAAE,IAAI,EAAE;IACrB,aAAa,EAAE,EAAE,IAAI,EAAE;IACvB,eAAe,EAAE,EAAE,IAAI,EAAE;IACzB,YAAY,EAAE,EAAE,IAAI,EAAE;IACtB,aAAa,EAAE,EAAE,IAAI,EAAE;IACvB,cAAc,EAAE,EAAE,IAAI,EAAE;IACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE;IAChB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,aAAa,EAAE,EAAE,IAAI,GAAG;IACxB,iBAAiB,EAAE,EAAE,IAAI,GAAG;IAC5B,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,GAAG;IACtB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,oBAAoB,EAAE,EAAE,IAAI,GAAG;IAC/B,gBAAgB,EAAE,EAAE,IAAI,GAAG;IAC3B,mBAAmB,EAAE,EAAE,IAAI,GAAG;IAC9B,mBAAmB,EAAE,EAAE,IAAI,GAAG;IAC9B,OAAO,EAAE,EAAE,IAAI,GAAG;IAClB,KAAK,EAAE,EAAE,IAAI,GAAG;IAChB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,cAAc,EAAE,EAAE,IAAI,GAAG;IACzB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,OAAO,EAAE,EAAE,IAAI,GAAG;IAClB,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,gBAAgB,EAAE,EAAE,IAAI,GAAG;IAC3B,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,aAAa,EAAE,EAAE,IAAI,GAAG;CACxB,CAAC"} \ No newline at end of file +{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/util/Permissions.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,8DAA8D;;;AAE9D,yCAAsC;AAItC,MAAa,WAAY,SAAQ,mBAAQ;IAmCxC,GAAG,CAAC,UAAgC,EAAE,UAAU,GAAG,IAAI;QACtD,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,UAAgC,EAAE,UAAU,GAAG,IAAI;QACtD,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5F,CAAC;;AA5CF,kCA6CC;AA5CO,iBAAK,GAAG;IACd,qBAAqB,EAAE,EAAE,IAAI,EAAE;IAC/B,YAAY,EAAE,EAAE,IAAI,EAAE;IACtB,WAAW,EAAE,EAAE,IAAI,EAAE;IACrB,aAAa,EAAE,EAAE,IAAI,EAAE;IACvB,eAAe,EAAE,EAAE,IAAI,EAAE;IACzB,YAAY,EAAE,EAAE,IAAI,EAAE;IACtB,aAAa,EAAE,EAAE,IAAI,EAAE;IACvB,cAAc,EAAE,EAAE,IAAI,EAAE;IACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE;IAChB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,aAAa,EAAE,EAAE,IAAI,GAAG;IACxB,iBAAiB,EAAE,EAAE,IAAI,GAAG;IAC5B,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,GAAG;IACtB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,oBAAoB,EAAE,EAAE,IAAI,GAAG;IAC/B,gBAAgB,EAAE,EAAE,IAAI,GAAG;IAC3B,mBAAmB,EAAE,EAAE,IAAI,GAAG;IAC9B,mBAAmB,EAAE,EAAE,IAAI,GAAG;IAC9B,OAAO,EAAE,EAAE,IAAI,GAAG;IAClB,KAAK,EAAE,EAAE,IAAI,GAAG;IAChB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,cAAc,EAAE,EAAE,IAAI,GAAG;IACzB,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,OAAO,EAAE,EAAE,IAAI,GAAG;IAClB,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,gBAAgB,EAAE,EAAE,IAAI,GAAG;IAC3B,YAAY,EAAE,EAAE,IAAI,GAAG;IACvB,eAAe,EAAE,EAAE,IAAI,GAAG;IAC1B,aAAa,EAAE,EAAE,IAAI,GAAG;CACxB,CAAC"} \ No newline at end of file diff --git a/src/util/Config.ts b/src/util/Config.ts
index 91ffda01..ad70d37a 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts
@@ -1,31 +1,38 @@ +import { Schema, model, Types, Document } from "mongoose"; import "missing-native-js-functions"; -import db from "./Database"; -import { ProviderCache } from "lambert-db"; -var Config: ProviderCache; +import db, { MongooseCache } from "./Database"; + +var Config = new MongooseCache(db.collection("config"), [], { onlyEvents: false }); export default { - init: async function init(opts: DefaultOptions = DefaultOptions) { - await db.collection("config").findOne({}); - Config = await db.data.config({}).cache(); + init: async function init() { await Config.init(); - await Config.set(opts.merge(Config.cache || {})); + return this.setAll(Config.data.merge(DefaultOptions)); }, getAll: function get() { - return <DefaultOptions>Config.get(); + return <DefaultOptions>Config.data; }, setAll: function set(val: any) { - return Config.set(val); + return db.collection("config").updateOne({}, { $set: val }); }, }; -export interface DefaultOptions { +export const DefaultOptions = { + api: {}, + gateway: {}, + voice: {}, +}; + +export interface DefaultOptions extends Document { api?: any; gateway?: any; voice?: any; } -export const DefaultOptions: DefaultOptions = { - api: {}, - gateway: {}, - voice: {}, -}; +export const ConfigSchema = new Schema({ + api: Object, + gateway: Object, + voice: Object, +}); + +export const ConfigModel = model<DefaultOptions>("Config", ConfigSchema, "config"); diff --git a/src/util/Database.ts b/src/util/Database.ts
index 56f53f9a..2304378c 100644 --- a/src/util/Database.ts +++ b/src/util/Database.ts
@@ -1,12 +1,12 @@ import "./MongoBigInt"; -import mongoose, { Collection } from "mongoose"; +import mongoose, { Collection, Connection } from "mongoose"; import { ChangeStream, ChangeEvent, Long } from "mongodb"; import EventEmitter from "events"; const uri = process.env.MONGO_URL || "mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred"; const connection = mongoose.createConnection(uri, { autoIndex: true }); -export default connection; +export default <Connection>connection; export interface MongooseCache { on(event: "delete", listener: (id: string) => void): this; @@ -37,7 +37,8 @@ export class MongooseCache extends EventEmitter { this.stream.on("error", console.error); if (!this.opts.onlyEvents) { - this.data = await this.collection.aggregate(this.pipeline).toArray(); + const arr = await this.collection.aggregate(this.pipeline).toArray(); + this.data = arr.length ? arr[0] : arr; } } diff --git a/src/util/Permissions.ts b/src/util/Permissions.ts
index f076e0c2..c3dcdb53 100644 --- a/src/util/Permissions.ts +++ b/src/util/Permissions.ts
@@ -46,9 +46,6 @@ export class Permissions extends BitField { /** * Checks whether the bitfield has a permission, or multiple permissions. - * @param {PermissionResolvable} permission Permission(s) to check for - * @param {boolean} [checkAdmin=true] Whether to allow the administrator permission to override - * @returns {boolean} */ has(permission: PermissionResolvable, checkAdmin = true) { return (checkAdmin && super.has(Permissions.FLAGS.ADMINISTRATOR)) || super.has(permission);