From f711a0411cbe48319ea3497c4f26f872c18cd2a2 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Sat, 21 Aug 2021 16:47:22 +0200 Subject: [PATCH 01/50] :construction: typeorm --- api/src/routes/users/@me/settings.ts | 3 +- util/{src/models => oldModels}/Application.ts | 0 util/{src/models => oldModels}/AuditLog.ts | 0 util/{src/models => oldModels}/Ban.ts | 0 util/{src/models => oldModels}/Channel.ts | 0 util/{src/models => oldModels}/Emoji.ts | 0 util/{src/models => oldModels}/Event.ts | 2 +- util/{src/models => oldModels}/Guild.ts | 0 util/{src/models => oldModels}/Interaction.ts | 0 util/{src/models => oldModels}/Invite.ts | 0 util/{src/models => oldModels}/Member.ts | 0 util/{src/models => oldModels}/Message.ts | 0 util/{src/models => oldModels}/RateLimit.ts | 0 util/{src/models => oldModels}/ReadState.ts | 0 util/{src/models => oldModels}/Role.ts | 0 util/{src/models => oldModels}/Team.ts | 0 util/{src/models => oldModels}/Template.ts | 0 util/{src/models => oldModels}/VoiceState.ts | 0 util/{src/models => oldModels}/Webhook.ts | 0 util/oldModels/index.ts | 93 + util/package-lock.json | 3149 ++++++++++++++++- util/package.json | 3 + util/src/index.ts | 12 +- util/src/models/Activity.ts | 80 +- util/src/models/BaseClass.ts | 28 + util/src/models/Status.ts | 6 - util/src/models/User.ts | 196 +- util/src/models/index.ts | 91 +- util/src/util/Database.ts | 159 - util/tsconfig.json | 4 +- util/{src => }/util/AutoUpdate.ts | 0 util/{src => }/util/BitField.ts | 0 util/{src => }/util/Config.ts | 0 util/{src => }/util/Constants.ts | 0 util/util/Database.ts | 7 + util/{src => }/util/Event.ts | 0 util/{src => }/util/Intents.ts | 0 util/{src => }/util/MessageFlags.ts | 0 util/{src => }/util/MongoBigInt.ts | 0 util/{src => }/util/Permissions.ts | 0 util/{src => }/util/RabbitMQ.ts | 0 util/{src => }/util/Regex.ts | 0 util/{src => }/util/Snowflake.ts | 0 util/{src => }/util/String.ts | 0 util/{src => }/util/UserFlags.ts | 0 util/{src => }/util/checkToken.ts | 0 util/{src => }/util/index.ts | 1 + util/{src => }/util/toBigInt.ts | 0 48 files changed, 3357 insertions(+), 477 deletions(-) rename util/{src/models => oldModels}/Application.ts (100%) rename util/{src/models => oldModels}/AuditLog.ts (100%) rename util/{src/models => oldModels}/Ban.ts (100%) rename util/{src/models => oldModels}/Channel.ts (100%) rename util/{src/models => oldModels}/Emoji.ts (100%) rename util/{src/models => oldModels}/Event.ts (99%) rename util/{src/models => oldModels}/Guild.ts (100%) rename util/{src/models => oldModels}/Interaction.ts (100%) rename util/{src/models => oldModels}/Invite.ts (100%) rename util/{src/models => oldModels}/Member.ts (100%) rename util/{src/models => oldModels}/Message.ts (100%) rename util/{src/models => oldModels}/RateLimit.ts (100%) rename util/{src/models => oldModels}/ReadState.ts (100%) rename util/{src/models => oldModels}/Role.ts (100%) rename util/{src/models => oldModels}/Team.ts (100%) rename util/{src/models => oldModels}/Template.ts (100%) rename util/{src/models => oldModels}/VoiceState.ts (100%) rename util/{src/models => oldModels}/Webhook.ts (100%) create mode 100644 util/oldModels/index.ts create mode 100644 util/src/models/BaseClass.ts delete mode 100644 util/src/util/Database.ts rename util/{src => }/util/AutoUpdate.ts (100%) rename util/{src => }/util/BitField.ts (100%) rename util/{src => }/util/Config.ts (100%) rename util/{src => }/util/Constants.ts (100%) create mode 100644 util/util/Database.ts rename util/{src => }/util/Event.ts (100%) rename util/{src => }/util/Intents.ts (100%) rename util/{src => }/util/MessageFlags.ts (100%) rename util/{src => }/util/MongoBigInt.ts (100%) rename util/{src => }/util/Permissions.ts (100%) rename util/{src => }/util/RabbitMQ.ts (100%) rename util/{src => }/util/Regex.ts (100%) rename util/{src => }/util/Snowflake.ts (100%) rename util/{src => }/util/String.ts (100%) rename util/{src => }/util/UserFlags.ts (100%) rename util/{src => }/util/checkToken.ts (100%) rename util/{src => }/util/index.ts (91%) rename util/{src => }/util/toBigInt.ts (100%) diff --git a/api/src/routes/users/@me/settings.ts b/api/src/routes/users/@me/settings.ts index 5664fc2f..f045a010 100644 --- a/api/src/routes/users/@me/settings.ts +++ b/api/src/routes/users/@me/settings.ts @@ -8,7 +8,8 @@ const router = Router(); router.patch("/", check(UserSettingsSchema), async (req: Request, res: Response) => { const body = req.body as UserSettings; - await UserModel.updateOne({ id: req.user_id }, body).exec(); + // only users can update user settings + await UserModel.updateOne({ id: req.user_id, bot: false }, body).exec(); res.sendStatus(204); }); diff --git a/util/src/models/Application.ts b/util/oldModels/Application.ts similarity index 100% rename from util/src/models/Application.ts rename to util/oldModels/Application.ts diff --git a/util/src/models/AuditLog.ts b/util/oldModels/AuditLog.ts similarity index 100% rename from util/src/models/AuditLog.ts rename to util/oldModels/AuditLog.ts diff --git a/util/src/models/Ban.ts b/util/oldModels/Ban.ts similarity index 100% rename from util/src/models/Ban.ts rename to util/oldModels/Ban.ts diff --git a/util/src/models/Channel.ts b/util/oldModels/Channel.ts similarity index 100% rename from util/src/models/Channel.ts rename to util/oldModels/Channel.ts diff --git a/util/src/models/Emoji.ts b/util/oldModels/Emoji.ts similarity index 100% rename from util/src/models/Emoji.ts rename to util/oldModels/Emoji.ts diff --git a/util/src/models/Event.ts b/util/oldModels/Event.ts similarity index 99% rename from util/src/models/Event.ts rename to util/oldModels/Event.ts index 86d0fd00..904522a8 100644 --- a/util/src/models/Event.ts +++ b/util/oldModels/Event.ts @@ -3,7 +3,7 @@ import { DMChannel, Channel } from "./Channel"; import { Guild } from "./Guild"; import { Member, PublicMember, UserGuildSettings } from "./Member"; import { Emoji } from "./Emoji"; -import { Presence } from "./Activity"; +import { Presence } from "../models/Activity"; import { Role } from "./Role"; import { Invite } from "./Invite"; import { Message, PartialEmoji } from "./Message"; diff --git a/util/src/models/Guild.ts b/util/oldModels/Guild.ts similarity index 100% rename from util/src/models/Guild.ts rename to util/oldModels/Guild.ts diff --git a/util/src/models/Interaction.ts b/util/oldModels/Interaction.ts similarity index 100% rename from util/src/models/Interaction.ts rename to util/oldModels/Interaction.ts diff --git a/util/src/models/Invite.ts b/util/oldModels/Invite.ts similarity index 100% rename from util/src/models/Invite.ts rename to util/oldModels/Invite.ts diff --git a/util/src/models/Member.ts b/util/oldModels/Member.ts similarity index 100% rename from util/src/models/Member.ts rename to util/oldModels/Member.ts diff --git a/util/src/models/Message.ts b/util/oldModels/Message.ts similarity index 100% rename from util/src/models/Message.ts rename to util/oldModels/Message.ts diff --git a/util/src/models/RateLimit.ts b/util/oldModels/RateLimit.ts similarity index 100% rename from util/src/models/RateLimit.ts rename to util/oldModels/RateLimit.ts diff --git a/util/src/models/ReadState.ts b/util/oldModels/ReadState.ts similarity index 100% rename from util/src/models/ReadState.ts rename to util/oldModels/ReadState.ts diff --git a/util/src/models/Role.ts b/util/oldModels/Role.ts similarity index 100% rename from util/src/models/Role.ts rename to util/oldModels/Role.ts diff --git a/util/src/models/Team.ts b/util/oldModels/Team.ts similarity index 100% rename from util/src/models/Team.ts rename to util/oldModels/Team.ts diff --git a/util/src/models/Template.ts b/util/oldModels/Template.ts similarity index 100% rename from util/src/models/Template.ts rename to util/oldModels/Template.ts diff --git a/util/src/models/VoiceState.ts b/util/oldModels/VoiceState.ts similarity index 100% rename from util/src/models/VoiceState.ts rename to util/oldModels/VoiceState.ts diff --git a/util/src/models/Webhook.ts b/util/oldModels/Webhook.ts similarity index 100% rename from util/src/models/Webhook.ts rename to util/oldModels/Webhook.ts diff --git a/util/oldModels/index.ts b/util/oldModels/index.ts new file mode 100644 index 00000000..63578a13 --- /dev/null +++ b/util/oldModels/index.ts @@ -0,0 +1,93 @@ +// @ts-nocheck +import mongoose, { Schema, Document } from "mongoose"; +import mongooseAutoPopulate from "mongoose-autopopulate"; + +type UpdateWithAggregationPipeline = UpdateAggregationStage[]; +type UpdateAggregationStage = + | { $addFields: any } + | { $set: any } + | { $project: any } + | { $unset: any } + | { $replaceRoot: any } + | { $replaceWith: any }; +type EnforceDocument = T extends Document ? T : T & Document & TMethods; + +declare module "mongoose" { + interface SchemaOptions { + removeResponse?: string[]; + } + interface Model { + // removed null -> always return document -> throw error if it doesn't exist + findOne( + filter?: FilterQuery, + projection?: any | null, + options?: QueryOptions | null, + callback?: (err: CallbackError, doc: EnforceDocument) => void + ): QueryWithHelpers, EnforceDocument, TQueryHelpers>; + findOneAndUpdate( + filter?: FilterQuery, + update?: UpdateQuery | UpdateWithAggregationPipeline, + options?: QueryOptions | null, + callback?: (err: any, doc: EnforceDocument | null, res: any) => void + ): QueryWithHelpers, EnforceDocument, TQueryHelpers>; + } +} + +var HTTPError: any; + +try { + HTTPError = require("lambert-server").HTTPError; +} catch (e) { + HTTPError = Error; +} + +mongoose.plugin(mongooseAutoPopulate); + +mongoose.plugin((schema: Schema, opts: any) => { + schema.set("toObject", { + virtuals: true, + versionKey: false, + transform(doc: any, ret: any) { + delete ret._id; + delete ret.__v; + const props = schema.get("removeResponse") || []; + props.forEach((prop: string) => { + delete ret[prop]; + }); + }, + }); + schema.post("findOne", function (doc, next) { + try { + // @ts-ignore + const isExistsQuery = JSON.stringify(this._userProvidedFields) === JSON.stringify({ _id: 1 }); + if (!doc && !isExistsQuery) { + // @ts-ignore + return next(new HTTPError(`${this?.mongooseCollection?.name}.${this?._conditions?.id} not found`, 400)); + } + // @ts-ignore + return next(); + } catch (error) { + // @ts-ignore + next(); + } + }); +}); + +export * from "../models/Activity"; +export * from "./Application"; +export * from "./Ban"; +export * from "./Channel"; +export * from "./Emoji"; +export * from "./Event"; +export * from "./Template"; +export * from "./Guild"; +export * from "./Invite"; +export * from "./Interaction"; +export * from "./Member"; +export * from "./Message"; +export * from "../models/Status"; +export * from "./Role"; +export * from "./User"; +export * from "./VoiceState"; +export * from "./ReadState"; +export * from "./RateLimit"; diff --git a/util/package-lock.json b/util/package-lock.json index befb6563..d0be1490 100644 --- a/util/package-lock.json +++ b/util/package-lock.json @@ -20,6 +20,9 @@ "mongoose": "^5.13.7", "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", + "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.2", + "typeorm": "^0.2.37", "typescript": "^4.1.3" }, "devDependencies": { @@ -32,6 +35,11 @@ "@types/node-fetch": "^2.5.12" } }, + "node_modules/@sqltools/formatter": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz", + "integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==" + }, "node_modules/@types/amqplib": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.8.1.tgz", @@ -117,6 +125,16 @@ "form-data": "^3.0.0" } }, + "node_modules/@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "node_modules/ajv": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", @@ -148,11 +166,163 @@ "node": ">=10" } }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "optional": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "devOptional": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "optional": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } }, "node_modules/bitsyntax": { "version": "0.1.0", @@ -213,11 +383,32 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "optional": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/bson": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", @@ -226,6 +417,29 @@ "node": ">=0.6.19" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -236,11 +450,108 @@ "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, + "devOptional": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -248,11 +559,33 @@ "node": ">= 0.8" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -261,15 +594,28 @@ "ms": "2.0.0" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "node_modules/denque": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", @@ -278,6 +624,17 @@ "node": ">=0.10" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -292,6 +649,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -300,6 +675,11 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -308,11 +688,65 @@ "node": ">=6" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "optional": true + }, + "node_modules/figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -327,11 +761,311 @@ "node": ">= 6" } }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "optional": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "optional": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "engines": { + "node": "*" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -340,16 +1074,63 @@ "node": ">=8" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "optional": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, "node_modules/jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -376,6 +1157,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -445,7 +1241,7 @@ "version": "1.49.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.6" } @@ -454,7 +1250,7 @@ "version": "2.1.32", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dev": true, + "devOptional": true, "dependencies": { "mime-db": "1.49.0" }, @@ -462,11 +1258,55 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, "node_modules/missing-native-js-functions": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz", "integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==" }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mongodb": { "version": "3.6.11", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", @@ -608,6 +1448,50 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/needle": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", + "integrity": "sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, "node_modules/node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -616,6 +1500,193 @@ "node": "4.x || >=6.0.0" } }, + "node_modules/node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "optional": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/node-pre-gyp/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/node-pre-gyp/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-pre-gyp/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/optional-require": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.7.tgz", @@ -627,11 +1698,82 @@ "node": ">=4" } }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/parent-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", + "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "optional": true + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "optional": true + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -640,11 +1782,34 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, "node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", @@ -656,11 +1821,62 @@ "string_decoder": "~0.10.x" } }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "node_modules/regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "optional": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "optional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/require-at": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", @@ -669,6 +1885,14 @@ "node": ">=4" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -682,6 +1906,17 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -701,6 +1936,11 @@ } ] }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", @@ -713,6 +1953,11 @@ "node": ">=6" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -721,11 +1966,33 @@ "semver": "bin/semver" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/sift": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, "node_modules/sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", @@ -740,11 +2007,282 @@ "memory-pager": "^1.0.2" } }, + "node_modules/sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.0.0", + "node-pre-gyp": "^0.11.0" + }, + "optionalDependencies": { + "node-gyp": "3.x" + }, + "peerDependencies": { + "node-gyp": "3.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "optional": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "optional": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "node_modules/typeorm": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.37.tgz", + "integrity": "sha512-7rkW0yCgFC24I5T0f3S/twmLSuccPh1SQmxET/oDWn2sSDVzbyWdnItSdKy27CdJGTlKHYtUVeOcMYw5LRsXVw==", + "dependencies": { + "@sqltools/formatter": "^1.2.2", + "app-root-path": "^3.0.0", + "buffer": "^6.0.3", + "chalk": "^4.1.0", + "cli-highlight": "^2.1.11", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "glob": "^7.1.6", + "js-yaml": "^4.0.0", + "mkdirp": "^1.0.4", + "reflect-metadata": "^0.1.13", + "sha.js": "^2.4.11", + "tslib": "^2.1.0", + "xml2js": "^0.4.23", + "yargonaut": "^1.1.4", + "yargs": "^17.0.1", + "zen-observable-ts": "^1.0.0" + }, + "bin": { + "typeorm": "cli.js" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@sap/hana-client": "*", + "better-sqlite3": "*", + "hdb-pool": "*", + "ioredis": "*", + "mongodb": "^3.6.0", + "mssql": "*", + "mysql2": "*", + "oracledb": "*", + "pg": "*", + "pg-native": "*", + "pg-query-stream": "*", + "redis": "*", + "sql.js": "*", + "sqlite3": "*", + "typeorm-aurora-data-api-driver": "*" + }, + "peerDependenciesMeta": { + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "hdb-pool": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/typescript": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", @@ -778,9 +2316,250 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "optional": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargonaut": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz", + "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==", + "dependencies": { + "chalk": "^1.1.1", + "figlet": "^1.1.1", + "parent-require": "^1.0.0" + } + }, + "node_modules/yargonaut/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargonaut/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargonaut/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargonaut/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargonaut/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz", + "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==", + "dependencies": { + "@types/zen-observable": "0.8.3", + "zen-observable": "0.8.15" + } } }, "dependencies": { + "@sqltools/formatter": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz", + "integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==" + }, "@types/amqplib": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.8.1.tgz", @@ -866,6 +2645,16 @@ "form-data": "^3.0.0" } }, + "@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "ajv": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", @@ -890,11 +2679,133 @@ "url-parse": "~1.5.1" } }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "devOptional": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "optional": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "optional": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } }, "bitsyntax": { "version": "0.1.0", @@ -956,16 +2867,43 @@ } } }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "bson": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -976,20 +2914,116 @@ "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, + "devOptional": true, "requires": { "delayed-stream": "~1.0.0" } }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -998,17 +3032,32 @@ "ms": "2.0.0" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "devOptional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "denque": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -1017,6 +3066,21 @@ "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1025,16 +3089,60 @@ "safe-buffer": "^5.0.1" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "optional": true + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "optional": true + }, + "figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -1046,26 +3154,304 @@ "mime-types": "^2.1.12" } }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "optional": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "optional": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "optional": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "optional": true + } + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "optional": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -1090,6 +3476,18 @@ } } }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -1159,22 +3557,57 @@ "version": "1.49.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "dev": true + "devOptional": true }, "mime-types": { "version": "2.1.32", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dev": true, + "devOptional": true, "requires": { "mime-db": "1.49.0" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, "missing-native-js-functions": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz", "integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==" }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "mongodb": { "version": "3.6.11", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", @@ -1274,11 +3707,205 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "needle": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", + "integrity": "sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true + } + } + }, + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "optional": true, + "requires": { + "abbrev": "1" + } + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, "optional-require": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.7.tgz", @@ -1287,21 +3914,99 @@ "require-at": "^1.0.6" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "parent-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", + "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=" + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "optional": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "optional": true + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "optional": true + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", @@ -1313,16 +4018,67 @@ "string_decoder": "~0.10.x" } }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, "regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, "require-at": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -1333,11 +4089,24 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", @@ -1347,16 +4116,40 @@ "sparse-bitfield": "^3.0.3" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "sift": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", @@ -1371,11 +4164,165 @@ "memory-pager": "^1.0.2" } }, + "sqlite3": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", + "integrity": "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==", + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp": "3.x", + "node-pre-gyp": "^0.11.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "optional": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typeorm": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.37.tgz", + "integrity": "sha512-7rkW0yCgFC24I5T0f3S/twmLSuccPh1SQmxET/oDWn2sSDVzbyWdnItSdKy27CdJGTlKHYtUVeOcMYw5LRsXVw==", + "requires": { + "@sqltools/formatter": "^1.2.2", + "app-root-path": "^3.0.0", + "buffer": "^6.0.3", + "chalk": "^4.1.0", + "cli-highlight": "^2.1.11", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "glob": "^7.1.6", + "js-yaml": "^4.0.0", + "mkdirp": "^1.0.4", + "reflect-metadata": "^0.1.13", + "sha.js": "^2.4.11", + "tslib": "^2.1.0", + "xml2js": "^0.4.23", + "yargonaut": "^1.1.4", + "yargs": "^17.0.1", + "zen-observable-ts": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "typescript": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", @@ -1402,6 +4349,188 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "optional": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargonaut": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz", + "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==", + "requires": { + "chalk": "^1.1.1", + "figlet": "^1.1.1", + "parent-require": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "zen-observable-ts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz", + "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==", + "requires": { + "@types/zen-observable": "0.8.3", + "zen-observable": "0.8.15" + } } } } diff --git a/util/package.json b/util/package.json index d84897dc..5825ce87 100644 --- a/util/package.json +++ b/util/package.json @@ -45,6 +45,9 @@ "mongoose": "^5.13.7", "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", + "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.2", + "typeorm": "^0.2.37", "typescript": "^4.1.3" } } diff --git a/util/src/index.ts b/util/src/index.ts index 3565fb6b..c6bbfd57 100644 --- a/util/src/index.ts +++ b/util/src/index.ts @@ -1,10 +1,10 @@ -export * from "./util/checkToken"; +import "reflect-metadata"; -export * as Constants from "./util/Constants"; +// export * as Constants from "../util/Constants"; export * from "./models/index"; -export * from "./util/index"; +// export * from "../util/index"; -import Config from "./util/Config"; -import db, { MongooseCache, toObject } from "./util/Database"; +// import Config from "../util/Config"; +// import db, { MongooseCache, toObject } from "./util/Database"; -export { Config, db, MongooseCache, toObject }; +// export { Config }; diff --git a/util/src/models/Activity.ts b/util/src/models/Activity.ts index 17abd1ca..6b13477f 100644 --- a/util/src/models/Activity.ts +++ b/util/src/models/Activity.ts @@ -1,7 +1,5 @@ -import { User } from ".."; +import { User } from "./User"; import { ClientStatus, Status } from "./Status"; -import { Schema, model, Types, Document } from "mongoose"; -import toBigInt from "../util/toBigInt"; export interface Presence { user: User; @@ -47,82 +45,6 @@ export interface Activity { flags?: bigint; } -export const ActivitySchema = { - name: { type: String, required: true }, - type: { type: Number, required: true }, - url: String, - created_at: Date, - timestamps: [ - { - start: Number, - end: Number, - }, - ], - application_id: String, - details: String, - state: String, - emoji: { - name: String, - id: String, - 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: { type: String, get: toBigInt }, -}; - -export const ActivityBodySchema = { - name: String, - type: Number, - $url: String, - $created_at: Date, - $timestamps: [ - { - $start: Number, - $end: Number, - }, - ], - $application_id: String, - $details: String, - $state: String, - $emoji: { - $name: String, - $id: String, - $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: BigInt, -}; - export enum ActivityType { GAME = 0, STREAMING = 1, diff --git a/util/src/models/BaseClass.ts b/util/src/models/BaseClass.ts new file mode 100644 index 00000000..78cd329c --- /dev/null +++ b/util/src/models/BaseClass.ts @@ -0,0 +1,28 @@ +import "reflect-metadata"; +import { BaseEntity, Column } from "typeorm"; + +export class BaseClass extends BaseEntity { + @Column() + id?: string; + + constructor(props?: any) { + super(); + BaseClass.assign(props, this, "body."); + } + + private static assign(props: any, object: any, path?: string): any { + const expectedType = Reflect.getMetadata("design:type", object, props); + console.log(expectedType, object, props, path, typeof object); + + if (typeof object !== typeof props) throw new Error(`Property at ${path} must be`); + if (typeof object === "object") + return Object.keys(object).map((key) => BaseClass.assign(props[key], object[key], `${path}.${key}`)); + } +} + +// @ts-ignore +global.BaseClass = BaseClass; + +var test = new BaseClass({}); + +setTimeout(() => {}, 10000 * 1000); diff --git a/util/src/models/Status.ts b/util/src/models/Status.ts index 5a9bf2ca..c4dab586 100644 --- a/util/src/models/Status.ts +++ b/util/src/models/Status.ts @@ -5,9 +5,3 @@ export interface ClientStatus { mobile?: string; // e.g. iOS/Android web?: string; // e.g. browser, bot account } - -export const ClientStatus = { - desktop: String, - mobile: String, - web: String, -}; diff --git a/util/src/models/User.ts b/util/src/models/User.ts index c667e954..38045738 100644 --- a/util/src/models/User.ts +++ b/util/src/models/User.ts @@ -1,8 +1,7 @@ -import { Activity, ActivitySchema } from "./Activity"; +import { Column, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; +import { Activity } from "./Activity"; +import { BaseClass } from "./BaseClass"; import { ClientStatus, Status } from "./Status"; -import { Schema, Types, Document } from "mongoose"; -import db from "../util/Database"; -import toBigInt from "../util/toBigInt"; export const PublicUserProjection = { username: true, @@ -16,53 +15,109 @@ export const PublicUserProjection = { bot: true, }; -export interface User { +export class User extends BaseClass { + @PrimaryGeneratedColumn() id: string; - username: string; // username max length 32, min 2 + + @Column() + username: string; // username max length 32, min 2 (should be configurable) + + @Column() discriminator: string; // #0001 4 digit long string from #0001 - #9999 + + @Column() avatar: string | null; // hash of the user avatar + + @Column() accent_color: number | null; // banner color of user - banner: string | null; + + @Column() + banner: string | null; // hash of the user banner + + @Column() phone: string | null; // phone number of the user + + @Column() desktop: boolean; // if the user has desktop app installed + + @Column() mobile: boolean; // if the user has mobile app installed + + @Column() premium: boolean; // if user bought nitro + + @Column() premium_type: number; // nitro level + + @Column() bot: boolean; // if user is bot - bio: string; // short description of the user (max 190 chars) - system: boolean; // shouldn't be used, the api sents this field type true, if the genetaed message comes from a system generated author + + @Column() + bio: string; // short description of the user (max 190 chars -> should be configurable) + + @Column() + system: boolean; // shouldn't be used, the api sents this field type true, if the generated message comes from a system generated author + + @Column() nsfw_allowed: boolean; // if the user is older than 18 (resp. Config) + + @Column() mfa_enabled: boolean; // if multi factor authentication is enabled + + @Column() created_at: Date; // registration date + + @Column() verified: boolean; // if the user is offically verified + + @Column() disabled: boolean; // if the account is disabled + + @Column() deleted: boolean; // if the user was deleted + + @Column() email: string | null; // email of the user + + @Column() flags: bigint; // UserFlags + + @Column() public_flags: bigint; - user_settings: UserSettings; + + @Column("simple-array") // string in simple-array must not contain commas guilds: string[]; // array of guild ids the user is part of + + @Column("simple-json") + user_settings: UserSettings; + + @Column("simple-json") user_data: UserData; + + @Column("simple-json") presence: { status: Status; activities: Activity[]; client_status: ClientStatus; }; + + @Column("simple-json") + relationships: Relationship[]; + + @Column("simple-json") + connected_accounts: ConnectedAccount[]; } -// Private user data: +// @ts-ignore +global.User = User; + +// Private user data that should never get sent to the client export interface UserData { valid_tokens_since: Date; // all tokens with a previous issue date are invalid - relationships: Relationship[]; - connected_accounts: ConnectedAccount[]; hash: string; // hash of the password, salt is saved in password (bcrypt) fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts } -export interface UserDocument extends User, Document { - id: string; -} - export interface PublicUser { id: string; discriminator: string; @@ -143,110 +198,3 @@ export interface UserSettings { theme: "dark" | "white"; // dark timezone_offset: number; // e.g -60 } - -export const UserSchema = new Schema({ - id: String, - username: String, - discriminator: String, - avatar: String, - accent_color: Number, - banner: String, - phone: String, - desktop: Boolean, - mobile: Boolean, - premium: Boolean, - premium_type: Number, - bot: Boolean, - bio: String, - system: Boolean, - nsfw_allowed: Boolean, - mfa_enabled: Boolean, - created_at: Date, - verified: Boolean, - disabled: Boolean, - deleted: Boolean, - email: String, - flags: { type: String, get: toBigInt }, // TODO: automatically convert Types.Long to BitField of UserFlags - public_flags: { type: String, get: toBigInt }, - guilds: [String], // array of guild ids the user is part of - user_data: { - fingerprints: [String], - hash: String, // hash of the password, salt is saved in password (bcrypt) - valid_tokens_since: Date, // all tokens with a previous issue date are invalid - relationships: [ - { - id: { type: String, required: true }, - nickname: String, - type: { type: Number }, - }, - ], - connected_accounts: [ - { - access_token: String, - friend_sync: Boolean, - id: String, - name: String, - revoked: Boolean, - show_activity: Boolean, - type: { type: String }, - verifie: Boolean, - visibility: 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: String, - 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 }, - gateway_connected: Boolean, - gif_auto_play: Boolean, - // every top guild is displayed as a "folder" - guild_folders: [ - { - color: Number, - guild_ids: [String], - id: Number, - name: String, - }, - ], - guild_positions: [String], // guild ids ordered by position - inline_attachment_media: Boolean, - inline_embed_media: Boolean, - locale: String, // en_US - message_display_compact: Boolean, - native_phone_integration_enabled: Boolean, - render_embeds: Boolean, - render_reactions: Boolean, - restricted_guilds: [String], - show_current_game: Boolean, - status: String, - stream_notifications_enabled: Boolean, - theme: String, // dark - timezone_offset: Number, // e.g -60, - }, - - presence: { - status: String, - activities: [ActivitySchema], - client_status: ClientStatus, - }, -}); - -// @ts-ignore -export const UserModel = db.model("User", UserSchema, "users"); diff --git a/util/src/models/index.ts b/util/src/models/index.ts index b6100f86..94882a0a 100644 --- a/util/src/models/index.ts +++ b/util/src/models/index.ts @@ -1,93 +1,4 @@ -// @ts-nocheck -import mongoose, { Schema, Document } from "mongoose"; -import mongooseAutoPopulate from "mongoose-autopopulate"; - -type UpdateWithAggregationPipeline = UpdateAggregationStage[]; -type UpdateAggregationStage = - | { $addFields: any } - | { $set: any } - | { $project: any } - | { $unset: any } - | { $replaceRoot: any } - | { $replaceWith: any }; -type EnforceDocument = T extends Document ? T : T & Document & TMethods; - -declare module "mongoose" { - interface SchemaOptions { - removeResponse?: string[]; - } - interface Model { - // removed null -> always return document -> throw error if it doesn't exist - findOne( - filter?: FilterQuery, - projection?: any | null, - options?: QueryOptions | null, - callback?: (err: CallbackError, doc: EnforceDocument) => void - ): QueryWithHelpers, EnforceDocument, TQueryHelpers>; - findOneAndUpdate( - filter?: FilterQuery, - update?: UpdateQuery | UpdateWithAggregationPipeline, - options?: QueryOptions | null, - callback?: (err: any, doc: EnforceDocument | null, res: any) => void - ): QueryWithHelpers, EnforceDocument, TQueryHelpers>; - } -} - -var HTTPError: any; - -try { - HTTPError = require("lambert-server").HTTPError; -} catch (e) { - HTTPError = Error; -} - -mongoose.plugin(mongooseAutoPopulate); - -mongoose.plugin((schema: Schema, opts: any) => { - schema.set("toObject", { - virtuals: true, - versionKey: false, - transform(doc: any, ret: any) { - delete ret._id; - delete ret.__v; - const props = schema.get("removeResponse") || []; - props.forEach((prop: string) => { - delete ret[prop]; - }); - }, - }); - schema.post("findOne", function (doc, next) { - try { - // @ts-ignore - const isExistsQuery = JSON.stringify(this._userProvidedFields) === JSON.stringify({ _id: 1 }); - if (!doc && !isExistsQuery) { - // @ts-ignore - return next(new HTTPError(`${this?.mongooseCollection?.name}.${this?._conditions?.id} not found`, 400)); - } - // @ts-ignore - return next(); - } catch (error) { - // @ts-ignore - next(); - } - }); -}); - export * from "./Activity"; -export * from "./Application"; -export * from "./Ban"; -export * from "./Channel"; -export * from "./Emoji"; -export * from "./Event"; -export * from "./Template"; -export * from "./Guild"; -export * from "./Invite"; -export * from "./Interaction"; -export * from "./Member"; -export * from "./Message"; +export * from "./BaseClass"; export * from "./Status"; -export * from "./Role"; export * from "./User"; -export * from "./VoiceState"; -export * from "./ReadState"; -export * from "./RateLimit"; diff --git a/util/src/util/Database.ts b/util/src/util/Database.ts deleted file mode 100644 index ea517234..00000000 --- a/util/src/util/Database.ts +++ /dev/null @@ -1,159 +0,0 @@ -// @ts-nocheck -import "./MongoBigInt"; -import mongoose, { Collection, Connection, LeanDocument } from "mongoose"; -import { ChangeStream, ChangeEvent, Long } from "mongodb"; -import EventEmitter from "events"; -const uri = process.env.MONGO_URL || "mongodb://localhost:27017/fosscord?readPreference=secondaryPreferred"; -import { URL } from "url"; - -const url = new URL(uri.replace("mongodb://", "http://")); - -const connection = mongoose.createConnection(uri, { - autoIndex: true, - useNewUrlParser: true, - useUnifiedTopology: true, - useFindAndModify: true, -}); - -// this will return the new updated document for findOneAndUpdate -mongoose.set("returnOriginal", false); // https://mongoosejs.com/docs/api/model.html#model_Model.findOneAndUpdate - -console.log(`[Database] connect: mongodb://${url.username}@${url.host}${url.pathname}${url.search}`); -connection.once("open", () => { - console.log("[Database] connected"); -}); - -export default connection; - -function transform(document: T) { - // @ts-ignore - if (!document || !document.toObject) { - try { - // @ts-ignore - delete document._id; - // @ts-ignore - delete document.__v; - } catch (error) {} - return document; - } - // @ts-ignore - return document.toObject({ virtuals: true }); -} - -export function toObject(document: T): LeanDocument { - // @ts-ignore - return Array.isArray(document) ? document.map((x) => transform(x)) : transform(document); -} - -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 class MongooseCache extends EventEmitter { - public stream: ChangeStream; - public data: any; - public initalizing?: Promise; - - constructor( - public collection: Collection, - public pipeline: Array>, - public opts: { - onlyEvents: boolean; - array?: boolean; - } - ) { - super(); - if (this.opts.array == null) this.opts.array = true; - } - - init = () => { - if (this.initalizing) return this.initalizing; - this.initalizing = new Promise(async (resolve, reject) => { - // @ts-ignore - 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(); - if (this.opts.array) this.data = arr || []; - else this.data = arr?.[0]; - } - resolve(); - }); - return this.initalizing; - }; - - changeStream = (pipeline: any) => { - this.pipeline = pipeline; - this.destroy(); - this.init(); - }; - - convertResult = (obj: any) => { - if (obj instanceof Long) return BigInt(obj.toString()); - if (typeof obj === "object") { - Object.keys(obj).forEach((key) => { - obj[key] = this.convertResult(obj[key]); - }); - } - - return obj; - }; - - change = (doc: ChangeEvent) => { - try { - switch (doc.operationType) { - case "dropDatabase": - return this.destroy(); - case "drop": - return this.destroy(); - case "delete": - if (!this.opts.onlyEvents) { - if (this.opts.array) { - this.data = this.data.filter((x: any) => doc.documentKey?._id?.equals(x._id)); - } else this.data = null; - } - return this.emit("delete", doc.documentKey._id.toHexString()); - case "insert": - if (!this.opts.onlyEvents) { - if (this.opts.array) this.data.push(doc.fullDocument); - else this.data = doc.fullDocument; - } - return this.emit("insert", doc.fullDocument); - case "update": - case "replace": - if (!this.opts.onlyEvents) { - if (this.opts.array) { - const i = this.data.findIndex((x: any) => doc.fullDocument?._id?.equals(x._id)); - if (i == -1) this.data.push(doc.fullDocument); - else this.data[i] = doc.fullDocument; - } else this.data = doc.fullDocument; - } - - return this.emit("change", doc.fullDocument); - case "invalidate": - return this.destroy(); - default: - return; - } - } catch (error) { - this.emit("error", error); - } - }; - - destroy = () => { - this.data = null; - this.stream?.off("change", this.change); - this.emit("close"); - - if (this.stream.isClosed()) return; - - return this.stream.close(); - }; -} diff --git a/util/tsconfig.json b/util/tsconfig.json index 520774d3..fa3bc6cb 100644 --- a/util/tsconfig.json +++ b/util/tsconfig.json @@ -65,6 +65,8 @@ /* Advanced Options */ "skipLibCheck": true /* Skip type checking of declaration files. */, - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, + "emitDecoratorMetadata": true, + "experimentalDecorators": true } } diff --git a/util/src/util/AutoUpdate.ts b/util/util/AutoUpdate.ts similarity index 100% rename from util/src/util/AutoUpdate.ts rename to util/util/AutoUpdate.ts diff --git a/util/src/util/BitField.ts b/util/util/BitField.ts similarity index 100% rename from util/src/util/BitField.ts rename to util/util/BitField.ts diff --git a/util/src/util/Config.ts b/util/util/Config.ts similarity index 100% rename from util/src/util/Config.ts rename to util/util/Config.ts diff --git a/util/src/util/Constants.ts b/util/util/Constants.ts similarity index 100% rename from util/src/util/Constants.ts rename to util/util/Constants.ts diff --git a/util/util/Database.ts b/util/util/Database.ts new file mode 100644 index 00000000..e0e43547 --- /dev/null +++ b/util/util/Database.ts @@ -0,0 +1,7 @@ +import "reflect-metadata"; +import { createConnection } from "typeorm"; + +// UUID extension option is only supported with postgres +// We want to generate all id's with Snowflakes that's why we have our own BaseEntity class + +createConnection({ type: "sqlite", database: "database.db", entities: [], synchronize: true, logging: true }); diff --git a/util/src/util/Event.ts b/util/util/Event.ts similarity index 100% rename from util/src/util/Event.ts rename to util/util/Event.ts diff --git a/util/src/util/Intents.ts b/util/util/Intents.ts similarity index 100% rename from util/src/util/Intents.ts rename to util/util/Intents.ts diff --git a/util/src/util/MessageFlags.ts b/util/util/MessageFlags.ts similarity index 100% rename from util/src/util/MessageFlags.ts rename to util/util/MessageFlags.ts diff --git a/util/src/util/MongoBigInt.ts b/util/util/MongoBigInt.ts similarity index 100% rename from util/src/util/MongoBigInt.ts rename to util/util/MongoBigInt.ts diff --git a/util/src/util/Permissions.ts b/util/util/Permissions.ts similarity index 100% rename from util/src/util/Permissions.ts rename to util/util/Permissions.ts diff --git a/util/src/util/RabbitMQ.ts b/util/util/RabbitMQ.ts similarity index 100% rename from util/src/util/RabbitMQ.ts rename to util/util/RabbitMQ.ts diff --git a/util/src/util/Regex.ts b/util/util/Regex.ts similarity index 100% rename from util/src/util/Regex.ts rename to util/util/Regex.ts diff --git a/util/src/util/Snowflake.ts b/util/util/Snowflake.ts similarity index 100% rename from util/src/util/Snowflake.ts rename to util/util/Snowflake.ts diff --git a/util/src/util/String.ts b/util/util/String.ts similarity index 100% rename from util/src/util/String.ts rename to util/util/String.ts diff --git a/util/src/util/UserFlags.ts b/util/util/UserFlags.ts similarity index 100% rename from util/src/util/UserFlags.ts rename to util/util/UserFlags.ts diff --git a/util/src/util/checkToken.ts b/util/util/checkToken.ts similarity index 100% rename from util/src/util/checkToken.ts rename to util/util/checkToken.ts diff --git a/util/src/util/index.ts b/util/util/index.ts similarity index 91% rename from util/src/util/index.ts rename to util/util/index.ts index e52a23b7..67c45b59 100644 --- a/util/src/util/index.ts +++ b/util/util/index.ts @@ -9,3 +9,4 @@ export * from "./UserFlags"; export * from "./toBigInt"; export * from "./RabbitMQ"; export * from "./Event"; +export * from "./checkToken"; diff --git a/util/src/util/toBigInt.ts b/util/util/toBigInt.ts similarity index 100% rename from util/src/util/toBigInt.ts rename to util/util/toBigInt.ts From ae2896fa6148cc1366573166368e157d6fa50b82 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Sun, 22 Aug 2021 12:41:21 +0200 Subject: [PATCH 02/50] :construction: typeorm --- Status.ts | 7 + util/package-lock.json | 11863 +++++++++++++++++++++++++- util/package.json | 4 +- util/src/models/BaseClass.ts | 24 +- util/src/models/User.ts | 171 +- util/{ => src}/util/AutoUpdate.ts | 0 util/{ => src}/util/BitField.ts | 0 util/{ => src}/util/Constants.ts | 0 util/{ => src}/util/MessageFlags.ts | 0 util/{ => src}/util/Permissions.ts | 0 util/{ => src}/util/RabbitMQ.ts | 0 util/{ => src}/util/Regex.ts | 0 util/{ => src}/util/Snowflake.ts | 0 util/{ => src}/util/String.ts | 0 util/{ => src}/util/UserFlags.ts | 0 util/{ => src}/util/checkToken.ts | 0 util/{ => src}/util/toBigInt.ts | 0 util/tsconfig.json | 8 +- 18 files changed, 11851 insertions(+), 226 deletions(-) create mode 100644 Status.ts rename util/{ => src}/util/AutoUpdate.ts (100%) rename util/{ => src}/util/BitField.ts (100%) rename util/{ => src}/util/Constants.ts (100%) rename util/{ => src}/util/MessageFlags.ts (100%) rename util/{ => src}/util/Permissions.ts (100%) rename util/{ => src}/util/RabbitMQ.ts (100%) rename util/{ => src}/util/Regex.ts (100%) rename util/{ => src}/util/Snowflake.ts (100%) rename util/{ => src}/util/String.ts (100%) rename util/{ => src}/util/UserFlags.ts (100%) rename util/{ => src}/util/checkToken.ts (100%) rename util/{ => src}/util/toBigInt.ts (100%) diff --git a/Status.ts b/Status.ts new file mode 100644 index 00000000..c4dab586 --- /dev/null +++ b/Status.ts @@ -0,0 +1,7 @@ +export type Status = "idle" | "dnd" | "online" | "offline"; + +export interface ClientStatus { + desktop?: string; // e.g. Windows/Linux/Mac + mobile?: string; // e.g. iOS/Android + web?: string; // e.g. browser, bot account +} diff --git a/util/package-lock.json b/util/package-lock.json index d0be1490..75f8f3b3 100644 --- a/util/package-lock.json +++ b/util/package-lock.json @@ -12,6 +12,7 @@ "dependencies": { "ajv": "^8.5.0", "amqplib": "^0.8.0", + "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", @@ -22,8 +23,9 @@ "node-fetch": "^2.6.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", + "ts-transform-json-schema": "^2.0.3", "typeorm": "^0.2.37", - "typescript": "^4.1.3" + "typescript": "^4.3.5" }, "devDependencies": { "@types/amqplib": "^0.8.1", @@ -35,6 +37,1071 @@ "@types/node-fetch": "^2.5.12" } }, + "node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "dependencies": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "dependencies": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "dependencies": { + "@babel/types": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "dependencies": { + "@babel/types": "^7.14.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "dependencies": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dependencies": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dependencies": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dependencies": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dependencies": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dependencies": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dependencies": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dependencies": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@marionebl/typescript-json-schema": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/@marionebl/typescript-json-schema/-/typescript-json-schema-0.36.0.tgz", + "integrity": "sha512-fw/prS+3RTkUmbgBxhjbpLuzLLYDjlULMmxZM7H51c+cf+jAdD3EPqn7wbGO+n+85srWXID5/EzZdI4S55C2jA==", + "dependencies": { + "glob": "~7.1.2", + "json-stable-stringify": "^1.0.1", + "typescript": "^3.4.1", + "yargs": "^12.0.1" + }, + "bin": { + "typescript-json-schema": "bin/typescript-json-schema" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/@marionebl/typescript-json-schema/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, "node_modules/@sqltools/formatter": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz", @@ -50,6 +1117,43 @@ "@types/node": "*" } }, + "node_modules/@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, "node_modules/@types/bluebird": { "version": "3.5.36", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz", @@ -64,6 +1168,33 @@ "@types/node": "*" } }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json5": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.30.tgz", + "integrity": "sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==" + }, "node_modules/@types/jsonwebtoken": { "version": "8.5.4", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz", @@ -125,16 +1256,109 @@ "form-data": "^3.0.0" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "node_modules/@types/read-pkg-up": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/read-pkg-up/-/read-pkg-up-3.0.1.tgz", + "integrity": "sha512-rMD+eDN93H/f6UGe6HJjJ08L+Vro+LN0bfCdYxsSb3Np13s75Lv+E/XBgw14kjz83Pfi82fb5z3/jtw1S3DvgA==", + "dependencies": { + "@types/normalize-package-data": "*" + } + }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-LjkxahYnTBr75YRCEI/FQnQVfP4fP69koNW+3bmSkZuiSCkXkTJpfl7SPcZ4biXfmZHduoVLElP4VWBhex+0zQ==" + }, + "node_modules/@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "node_modules/@types/validator": { + "version": "13.6.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.6.3.tgz", + "integrity": "sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw==" + }, + "node_modules/@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + }, "node_modules/@types/zen-observable": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ajv": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", @@ -166,6 +1390,14 @@ "node": ">=10" } }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -193,6 +1425,15 @@ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, "node_modules/app-root-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", @@ -252,11 +1493,47 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "optional": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -265,22 +1542,51 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true, "engines": { "node": ">=0.8" } }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "devOptional": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true, "engines": { "node": "*" } @@ -288,14 +1594,157 @@ "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dependencies": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dependencies": { + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dependencies": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -319,11 +1768,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, "dependencies": { "tweetnacl": "^0.14.3" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bitsyntax": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz", @@ -409,6 +1866,93 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dependencies": { + "resolve": "1.1.7" + } + }, + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + }, + "node_modules/browserslist": { + "version": "4.16.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz", + "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==", + "dependencies": { + "caniuse-lite": "^1.0.30001251", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.811", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, "node_modules/bson": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", @@ -445,16 +1989,87 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, "node_modules/buffer-more-ints": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "node_modules/chalk": { "version": "4.1.2", @@ -476,6 +2091,111 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-validator": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz", + "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==", + "dependencies": { + "@types/validator": "^13.1.3", + "libphonenumber-js": "^1.9.7", + "validator": "^13.5.2" + } + }, "node_modules/cli-highlight": { "version": "2.1.11", "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", @@ -523,6 +2243,15 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -531,6 +2260,18 @@ "node": ">=0.10.0" } }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -547,11 +2288,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/colorette": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", + "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "devOptional": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -559,6 +2304,11 @@ "node": ">= 0.8" } }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -569,16 +2319,64 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dependencies": { + "cssom": "0.3.x" + } + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -586,6 +2384,26 @@ "node": ">=0.10" } }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -594,6 +2412,22 @@ "ms": "2.0.0" } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -602,11 +2436,38 @@ "node": ">=4.0.0" } }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "devOptional": true, "engines": { "node": ">=0.4.0" } @@ -635,6 +2496,30 @@ "node": ">=0.10" } }, + "node_modules/detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, "node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -661,7 +2546,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -675,11 +2559,24 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/electron-to-chromium": { + "version": "1.3.814", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.814.tgz", + "integrity": "sha512-0mH03cyjh6OzMlmjauGg0TLd87ErIJqWiYxMcOLKf5w6p0YEOl7DJAj7BDlXEFmCguY5CQaKVOiMjAMODO2XDw==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -688,6 +2585,60 @@ "node": ">=6" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", + "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -704,11 +2655,301 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/extsprintf": { "version": "1.3.0", @@ -716,8 +2957,7 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "engines": [ "node >=0.6.0" - ], - "optional": true + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -727,8 +2967,20 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "optional": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dependencies": { + "bser": "2.1.1" + } }, "node_modules/figlet": { "version": "1.5.2", @@ -738,11 +2990,76 @@ "node": ">= 0.4.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true, "engines": { "node": "*" } @@ -761,6 +3078,17 @@ "node": ">= 6" } }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fs-minipass": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", @@ -774,6 +3102,24 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/fstream": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", @@ -801,6 +3147,11 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "node_modules/gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -859,6 +3210,14 @@ "node": ">=0.10.0" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -867,11 +3226,42 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -895,17 +3285,28 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "optional": true + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true, "engines": { "node": ">=4" } @@ -915,7 +3316,6 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", - "optional": true, "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -928,7 +3328,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -943,8 +3342,18 @@ "node_modules/har-validator/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/has-ansi": { "version": "2.0.0", @@ -965,6 +3374,14 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -973,11 +3390,72 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -986,11 +3464,28 @@ "node": "*" } }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1039,6 +3534,29 @@ "minimatch": "^3.0.4" } }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1058,6 +3576,164 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1066,6 +3742,61 @@ "node": ">=8" } }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -1074,11 +3805,88 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "optional": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "engines": { + "node": ">=4" + } }, "node_modules/isarray": { "version": "0.0.1", @@ -1088,14 +3896,1633 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "optional": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dependencies": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dependencies": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dependencies": { + "html-escaper": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dependencies": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dependencies": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-cli/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-cli/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-cli/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dependencies": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dependencies": { + "detect-newline": "^2.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dependencies": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dependencies": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dependencies": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dependencies": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 6" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dependencies": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dependencies": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dependencies": { + "@jest/types": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dependencies": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dependencies": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dependencies": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dependencies": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-runtime/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/jest-runtime/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/jest-runtime/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-snapshot/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dependencies": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-util/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dependencies": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dependencies": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -1111,25 +5538,106 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "node_modules/json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dependencies": { + "jsonify": "~0.0.0" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "engines": { + "node": "*" + } }, "node_modules/jsonwebtoken": { "version": "8.5.1", @@ -1164,7 +5672,6 @@ "engines": [ "node >=0.6.0" ], - "optional": true, "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -1196,6 +5703,103 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "deprecated": "use String.prototype.padStart()" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.9.23", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", + "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -1231,17 +5835,123 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "optional": true }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mime-db": { "version": "1.49.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "devOptional": true, "engines": { "node": ">= 0.6" } @@ -1250,7 +5960,6 @@ "version": "2.1.32", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "devOptional": true, "dependencies": { "mime-db": "1.49.0" }, @@ -1258,6 +5967,14 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1296,6 +6013,18 @@ "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz", "integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==" }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1458,6 +6187,38 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, "node_modules/needle": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", @@ -1487,6 +6248,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", @@ -1547,6 +6313,31 @@ "semver": "bin/semver" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, "node_modules/node-pre-gyp": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", @@ -1608,6 +6399,11 @@ "node": ">=4.5" } }, + "node_modules/node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + }, "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -1620,6 +6416,28 @@ "nopt": "bin/nopt.js" } }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -1643,6 +6461,17 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -1662,11 +6491,15 @@ "node": ">=0.10.0" } }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true, "engines": { "node": "*" } @@ -1679,6 +6512,155 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1698,6 +6680,22 @@ "node": ">=4" } }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -1706,6 +6704,19 @@ "node": ">=0.10.0" } }, + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -1723,6 +6734,82 @@ "os-tmpdir": "^1.0.0" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dependencies": { + "p-reduce": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/parent-require": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", @@ -1731,6 +6818,18 @@ "node": ">= 0.4.0" } }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", @@ -1749,6 +6848,22 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1757,22 +6872,170 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "optional": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "node_modules/punycode": { "version": "2.1.1", @@ -1786,7 +7049,6 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true, "engines": { "node": ">=0.6" } @@ -1810,6 +7072,36 @@ "rc": "cli.js" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dependencies": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", @@ -1821,22 +7113,65 @@ "string_decoder": "~0.10.x" } }, + "node_modules/realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dependencies": { + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "optional": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1863,11 +7198,41 @@ "node": ">= 6" } }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, "node_modules/request/node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1901,11 +7266,69 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -1917,6 +7340,14 @@ "rimraf": "bin.js" } }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "engines": { + "node": "6.* || >= 7.*" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1936,11 +7367,42 @@ } ] }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", @@ -1971,6 +7433,39 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -1983,6 +7478,43 @@ "sha.js": "bin.js" } }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sift": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", @@ -1993,11 +7525,225 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, "node_modules/sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -2007,6 +7753,45 @@ "memory-pager": "^1.0.2" } }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sqlite3": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", @@ -2032,7 +7817,6 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2053,11 +7837,157 @@ "node": ">=0.10.0" } }, + "node_modules/stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "node_modules/string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dependencies": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -2071,6 +8001,30 @@ "node": ">=8" } }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -2082,6 +8036,22 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -2101,6 +8071,11 @@ "node": ">=8" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "node_modules/tar": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", @@ -2113,6 +8088,20 @@ "inherits": "2" } }, + "node_modules/test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -2132,11 +8121,76 @@ "node": ">=0.8" } }, + "node_modules/throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -2145,6 +8199,32 @@ "node": ">=0.8" } }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ts-transform-json-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ts-transform-json-schema/-/ts-transform-json-schema-2.0.3.tgz", + "integrity": "sha512-e/JVutTf65lOqol9tXFfkjw2SHE1/H+OBnSS/tNdfO/voVQ7yQ65H/n+tZhN4adyaOS4349UkuBN2jPSP8s3pQ==", + "dependencies": { + "@marionebl/typescript-json-schema": "^0.36.0", + "@types/json5": "^0.0.30", + "@types/read-pkg-up": "^3.0.1", + "@types/resolve": "0.0.8", + "@types/resolve-from": "^4.0.0", + "jest-cli": "^24.7.1", + "json5": "^2.1.0", + "read-pkg-up": "^4.0.0", + "resolve": "^1.8.1", + "resolve-from": "^4.0.0", + "typescript-json-schema": "^0.32.0" + } + }, "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -2154,7 +8234,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -2165,8 +8244,18 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/typeorm": { "version": "0.2.37", @@ -2295,6 +8384,264 @@ "node": ">=4.2.0" } }, + "node_modules/typescript-json-schema": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz", + "integrity": "sha512-gNjjlQ+fQgwboTOKu7arXipwtPdp2Es6XlHhqGYRDUcOEHiMbFop8HPDinRZfsAxPAhfj4y13EwcTPIma9Mmyg==", + "dependencies": { + "glob": "~7.1.2", + "json-stable-stringify": "^1.0.1", + "typescript": "^3.0.1", + "yargs": "^12.0.1" + }, + "bin": { + "typescript-json-schema": "bin/typescript-json-schema" + } + }, + "node_modules/typescript-json-schema/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript-json-schema/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/typescript-json-schema/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/typescript-json-schema/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript-json-schema/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/typescript-json-schema/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript-json-schema/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript-json-schema/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typescript-json-schema/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-json-schema/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-json-schema/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-json-schema/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-json-schema/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-json-schema/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/typescript-json-schema/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/typescript-json-schema/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2303,6 +8650,12 @@ "punycode": "^2.1.0" } }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, "node_modules/url-parse": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", @@ -2312,21 +8665,60 @@ "requires-port": "^1.0.0" } }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "node_modules/util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, "bin": { "uuid": "bin/uuid" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -2334,18 +8726,60 @@ "engines": [ "node >=0.6.0" ], - "optional": true, "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "optional": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2353,6 +8787,26 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -2400,6 +8854,14 @@ "node": ">=4" } }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -2421,6 +8883,29 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, "node_modules/xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", @@ -2555,6 +9040,841 @@ } }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + }, + "@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "requires": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "requires": { + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + }, + "@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "requires": { + "@babel/types": "^7.14.8" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + }, + "@babel/helpers": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==" + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@marionebl/typescript-json-schema": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/@marionebl/typescript-json-schema/-/typescript-json-schema-0.36.0.tgz", + "integrity": "sha512-fw/prS+3RTkUmbgBxhjbpLuzLLYDjlULMmxZM7H51c+cf+jAdD3EPqn7wbGO+n+85srWXID5/EzZdI4S55C2jA==", + "requires": { + "glob": "~7.1.2", + "json-stable-stringify": "^1.0.1", + "typescript": "^3.4.1", + "yargs": "^12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "@sqltools/formatter": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz", @@ -2570,6 +9890,43 @@ "@types/node": "*" } }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "requires": { + "@babel/types": "^7.3.0" + } + }, "@types/bluebird": { "version": "3.5.36", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz", @@ -2584,6 +9941,33 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/json5": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.30.tgz", + "integrity": "sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==" + }, "@types/jsonwebtoken": { "version": "8.5.4", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz", @@ -2645,16 +10029,96 @@ "form-data": "^3.0.0" } }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "@types/read-pkg-up": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/read-pkg-up/-/read-pkg-up-3.0.1.tgz", + "integrity": "sha512-rMD+eDN93H/f6UGe6HJjJ08L+Vro+LN0bfCdYxsSb3Np13s75Lv+E/XBgw14kjz83Pfi82fb5z3/jtw1S3DvgA==", + "requires": { + "@types/normalize-package-data": "*" + } + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-LjkxahYnTBr75YRCEI/FQnQVfP4fP69koNW+3bmSkZuiSCkXkTJpfl7SPcZ4biXfmZHduoVLElP4VWBhex+0zQ==" + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "@types/validator": { + "version": "13.6.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.6.3.tgz", + "integrity": "sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw==" + }, + "@types/yargs": { + "version": "13.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz", + "integrity": "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + }, "@types/zen-observable": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, "ajv": { "version": "8.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", @@ -2679,6 +10143,11 @@ "url-parse": "~1.5.1" } }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -2697,6 +10166,15 @@ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, "app-root-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", @@ -2755,11 +10233,35 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "optional": true, "requires": { "safer-buffer": "~2.1.0" } @@ -2767,32 +10269,160 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "devOptional": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2802,11 +10432,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bitsyntax": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz", @@ -2890,6 +10528,78 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserslist": { + "version": "4.16.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz", + "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==", + "requires": { + "caniuse-lite": "^1.0.30001251", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.811", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, "bson": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", @@ -2909,16 +10619,68 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, "buffer-more-ints": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==" + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "requires": { + "rsvp": "^4.8.4" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "4.1.2", @@ -2934,6 +10696,93 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "class-validator": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz", + "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==", + "requires": { + "@types/validator": "^13.1.3", + "libphonenumber-js": "^1.9.7", + "validator": "^13.5.2" + } + }, "cli-highlight": { "version": "2.1.11", "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", @@ -2973,11 +10822,25 @@ "wrap-ansi": "^7.0.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2991,15 +10854,24 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "colorette": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", + "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "devOptional": true, "requires": { "delayed-stream": "~1.0.0" } }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3010,20 +10882,86 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, "requires": { "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3032,16 +10970,47 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "devOptional": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -3058,6 +11027,24 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -3075,7 +11062,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -3089,16 +11075,71 @@ "safe-buffer": "^5.0.1" } }, + "electron-to-chromium": { + "version": "1.3.814", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.814.tgz", + "integrity": "sha512-0mH03cyjh6OzMlmjauGg0TLd87ErIJqWiYxMcOLKf5w6p0YEOl7DJAj7BDlXEFmCguY5CQaKVOiMjAMODO2XDw==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", + "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3109,17 +11150,237 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "optional": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "3.1.3", @@ -3129,19 +11390,83 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "optional": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } }, "figlet": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "3.0.1", @@ -3154,6 +11479,14 @@ "mime-types": "^2.1.12" } }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, "fs-minipass": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", @@ -3167,6 +11500,16 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, "fstream": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", @@ -3190,6 +11533,11 @@ } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -3238,16 +11586,43 @@ } } }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, "requires": { "assert-plus": "^1.0.0" } @@ -3265,23 +11640,30 @@ "path-is-absolute": "^1.0.0" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, "graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "optional": true + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "optional": true, "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -3291,7 +11673,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3302,11 +11683,18 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" } } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3322,26 +11710,90 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -3369,6 +11821,20 @@ "minimatch": "^3.0.4" } }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3388,21 +11854,217 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "optional": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { "version": "0.0.1", @@ -3412,14 +12074,1325 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "optional": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "requires": {} + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "4.1.0", @@ -3432,25 +13405,93 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsonwebtoken": { "version": "8.5.1", @@ -3480,7 +13521,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -3512,6 +13552,80 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libphonenumber-js": { + "version": "1.9.23", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", + "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -3547,27 +13661,116 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, "memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "optional": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, "mime-db": { "version": "1.49.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "devOptional": true + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" }, "mime-types": { "version": "2.1.32", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "devOptional": true, "requires": { "mime-db": "1.49.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -3603,6 +13806,15 @@ "resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz", "integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==" }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -3717,6 +13929,35 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, "needle": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.8.0.tgz", @@ -3742,6 +13983,11 @@ } } }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", @@ -3789,6 +14035,28 @@ } } }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, "node-pre-gyp": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", @@ -3839,6 +14107,11 @@ } } }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==" + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -3848,6 +14121,25 @@ "abbrev": "1" } }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, "npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -3871,6 +14163,14 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -3887,17 +14187,129 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3914,11 +14326,34 @@ "require-at": "^1.0.6" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -3933,11 +14368,69 @@ "os-tmpdir": "^1.0.0" } }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, "parent-require": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=" }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", @@ -3958,27 +14451,153 @@ } } }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } + } }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "optional": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "punycode": { "version": "2.1.1", @@ -3988,8 +14607,7 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "querystringify": { "version": "2.2.0", @@ -4007,6 +14625,30 @@ "strip-json-comments": "~2.0.1" } }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", @@ -4018,21 +14660,52 @@ "string_decoder": "~0.10.x" } }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "requires": { + "util.promisify": "^1.0.0" + } + }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -4060,7 +14733,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -4069,6 +14741,24 @@ } } }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-at": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", @@ -4084,11 +14774,55 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -4097,16 +14831,45 @@ "glob": "^7.1.3" } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, "saslprep": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", @@ -4131,6 +14894,32 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -4140,6 +14929,34 @@ "safe-buffer": "^5.0.1" } }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "sift": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", @@ -4150,11 +14967,184 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, "sliced": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -4164,6 +15154,42 @@ "memory-pager": "^1.0.2" } }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sqlite3": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz", @@ -4178,7 +15204,6 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "optional": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -4191,11 +15216,125 @@ "tweetnacl": "~0.14.0" } }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -4206,6 +15345,24 @@ "strip-ansi": "^6.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -4214,6 +15371,16 @@ "ansi-regex": "^5.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4227,6 +15394,11 @@ "has-flag": "^4.0.0" } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "tar": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", @@ -4238,6 +15410,17 @@ "inherits": "2" } }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, "thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -4254,16 +15437,94 @@ "thenify": ">= 3.1.0 < 4" } }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-transform-json-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ts-transform-json-schema/-/ts-transform-json-schema-2.0.3.tgz", + "integrity": "sha512-e/JVutTf65lOqol9tXFfkjw2SHE1/H+OBnSS/tNdfO/voVQ7yQ65H/n+tZhN4adyaOS4349UkuBN2jPSP8s3pQ==", + "requires": { + "@marionebl/typescript-json-schema": "^0.36.0", + "@types/json5": "^0.0.30", + "@types/read-pkg-up": "^3.0.1", + "@types/resolve": "0.0.8", + "@types/resolve-from": "^4.0.0", + "jest-cli": "^24.7.1", + "json5": "^2.1.0", + "read-pkg-up": "^4.0.0", + "resolve": "^1.8.1", + "resolve-from": "^4.0.0", + "typescript-json-schema": "^0.32.0" + } + }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -4273,7 +15534,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -4281,8 +15541,15 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } }, "typeorm": { "version": "0.2.37", @@ -4328,6 +15595,216 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==" }, + "typescript-json-schema": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz", + "integrity": "sha512-gNjjlQ+fQgwboTOKu7arXipwtPdp2Es6XlHhqGYRDUcOEHiMbFop8HPDinRZfsAxPAhfj4y13EwcTPIma9Mmyg==", + "requires": { + "glob": "~7.1.2", + "json-stable-stringify": "^1.0.1", + "typescript": "^3.0.1", + "yargs": "^12.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4336,6 +15813,11 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "url-parse": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", @@ -4345,37 +15827,126 @@ "requires-port": "^1.0.0" } }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "optional": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "optional": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "optional": true, "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -4413,6 +15984,11 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -4428,6 +16004,29 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, "xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", diff --git a/util/package.json b/util/package.json index 5825ce87..0e7dcbc1 100644 --- a/util/package.json +++ b/util/package.json @@ -37,6 +37,7 @@ "dependencies": { "ajv": "^8.5.0", "amqplib": "^0.8.0", + "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", @@ -47,7 +48,8 @@ "node-fetch": "^2.6.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", + "ts-transform-json-schema": "^2.0.3", "typeorm": "^0.2.37", - "typescript": "^4.1.3" + "typescript": "^4.3.5" } } diff --git a/util/src/models/BaseClass.ts b/util/src/models/BaseClass.ts index 78cd329c..d4f635f6 100644 --- a/util/src/models/BaseClass.ts +++ b/util/src/models/BaseClass.ts @@ -1,22 +1,24 @@ import "reflect-metadata"; -import { BaseEntity, Column } from "typeorm"; +import { BaseEntity, BeforeInsert, BeforeUpdate, Column, PrimaryGeneratedColumn } from "typeorm"; +import { Snowflake } from "../util/Snowflake"; +import { IsString, validateOrReject } from "class-validator"; export class BaseClass extends BaseEntity { + @PrimaryGeneratedColumn() @Column() - id?: string; + @IsString() + id: string; - constructor(props?: any) { + constructor(props?: any, opts: { id?: string } = {}) { super(); - BaseClass.assign(props, this, "body."); + this.id = opts.id || Snowflake.generate(); + Object.defineProperties(this, props); } - private static assign(props: any, object: any, path?: string): any { - const expectedType = Reflect.getMetadata("design:type", object, props); - console.log(expectedType, object, props, path, typeof object); - - if (typeof object !== typeof props) throw new Error(`Property at ${path} must be`); - if (typeof object === "object") - return Object.keys(object).map((key) => BaseClass.assign(props[key], object[key], `${path}.${key}`)); + @BeforeUpdate() + @BeforeInsert() + async validate() { + await validateOrReject(this, {}); } } diff --git a/util/src/models/User.ts b/util/src/models/User.ts index 38045738..27aa63d1 100644 --- a/util/src/models/User.ts +++ b/util/src/models/User.ts @@ -2,6 +2,7 @@ import { Column, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; import { Activity } from "./Activity"; import { BaseClass } from "./BaseClass"; import { ClientStatus, Status } from "./Status"; +import { validateOrReject, IsInt, IsEmail, IsPhoneNumber, IsBoolean, IsString, ValidateNested } from "class-validator"; export const PublicUserProjection = { username: true, @@ -16,67 +17,80 @@ export const PublicUserProjection = { }; export class User extends BaseClass { - @PrimaryGeneratedColumn() - id: string; - @Column() + @IsString() username: string; // username max length 32, min 2 (should be configurable) @Column() + @IsInt() discriminator: string; // #0001 4 digit long string from #0001 - #9999 @Column() + @IsString() avatar: string | null; // hash of the user avatar @Column() + @IsInt() accent_color: number | null; // banner color of user @Column() banner: string | null; // hash of the user banner @Column() + @IsPhoneNumber() phone: string | null; // phone number of the user @Column() + @IsBoolean() desktop: boolean; // if the user has desktop app installed @Column() + @IsBoolean() mobile: boolean; // if the user has mobile app installed @Column() + @IsBoolean() premium: boolean; // if user bought nitro @Column() premium_type: number; // nitro level @Column() + @IsBoolean() bot: boolean; // if user is bot @Column() bio: string; // short description of the user (max 190 chars -> should be configurable) @Column() + @IsBoolean() system: boolean; // shouldn't be used, the api sents this field type true, if the generated message comes from a system generated author @Column() + @IsBoolean() nsfw_allowed: boolean; // if the user is older than 18 (resp. Config) @Column() + @IsBoolean() mfa_enabled: boolean; // if multi factor authentication is enabled @Column() created_at: Date; // registration date @Column() + @IsBoolean() verified: boolean; // if the user is offically verified @Column() + @IsBoolean() disabled: boolean; // if the account is disabled @Column() + @IsBoolean() deleted: boolean; // if the user was deleted @Column() + @IsEmail() email: string | null; // email of the user @Column() @@ -86,15 +100,19 @@ export class User extends BaseClass { public_flags: bigint; @Column("simple-array") // string in simple-array must not contain commas + @IsString({ each: true }) guilds: string[]; // array of guild ids the user is part of @Column("simple-json") - user_settings: UserSettings; - - @Column("simple-json") - user_data: UserData; + @ValidateNested() // TODO: https://github.com/typestack/class-validator#validating-nested-objects + user_data: { + valid_tokens_since: Date; // all tokens with a previous issue date are invalid + hash: string; // hash of the password, salt is saved in password (bcrypt) + fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts + }; @Column("simple-json") + @ValidateNested() // TODO: https://github.com/typestack/class-validator#validating-nested-objects presence: { status: Status; activities: Activity[]; @@ -102,22 +120,76 @@ export class User extends BaseClass { }; @Column("simple-json") - relationships: Relationship[]; + @ValidateNested() // TODO: https://github.com/typestack/class-validator#validating-nested-objects + relationships: { + id: string; + nickname?: string; + type: RelationshipType; + }[]; @Column("simple-json") - connected_accounts: ConnectedAccount[]; -} + @ValidateNested() // TODO: https://github.com/typestack/class-validator#validating-nested-objects + connected_accounts: { + access_token: string; + friend_sync: boolean; + id: string; + name: string; + revoked: boolean; + show_activity: boolean; + type: string; + verifie: boolean; + visibility: number; + }[]; -// @ts-ignore -global.User = User; + @Column("simple-json") + @ValidateNested() // TODO: https://github.com/typestack/class-validator#validating-nested-objects + 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: string | null; + emoji_name: string | null; + expires_at: number | null; + text: string | null; + }; + 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 }; + gateway_connected: boolean; + gif_auto_play: boolean; + guild_folders: // every top guild is displayed as a "folder" + { + color: number; + guild_ids: string[]; + id: number; + name: string; + }[]; + guild_positions: string[]; // guild ids ordered by position + inline_attachment_media: boolean; + inline_embed_media: boolean; + locale: string; // en_US + message_display_compact: boolean; + native_phone_integration_enabled: boolean; + render_embeds: boolean; + render_reactions: boolean; + restricted_guilds: string[]; + show_current_game: boolean; + status: "online" | "offline" | "dnd" | "idle"; + stream_notifications_enabled: boolean; + theme: "dark" | "white"; // dark + timezone_offset: number; // e.g -60 + }; +} // Private user data that should never get sent to the client -export interface UserData { - valid_tokens_since: Date; // all tokens with a previous issue date are invalid - hash: string; // hash of the password, salt is saved in password (bcrypt) - fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts -} - export interface PublicUser { id: string; discriminator: string; @@ -129,72 +201,9 @@ export interface PublicUser { bot: boolean; } -export interface ConnectedAccount { - access_token: string; - friend_sync: boolean; - id: string; - name: string; - revoked: boolean; - show_activity: boolean; - type: string; - verifie: boolean; - visibility: number; -} - -export interface Relationship { - id: string; - nickname?: string; - type: RelationshipType; -} - export enum RelationshipType { outgoing = 4, incoming = 3, blocked = 2, friends = 1, } - -export interface UserSettings { - afk_timeout: number; - allow_accessibility_detection: boolean; - animate_emoji: boolean; - animate_stickers: number; - contact_sync_enabled: boolean; - convert_emoticons: boolean; - custom_status: { - emoji_id: string | null; - emoji_name: string | null; - expires_at: number | null; - text: string | null; - }; - 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 }; - gateway_connected: boolean; - gif_auto_play: boolean; - guild_folders: // every top guild is displayed as a "folder" - { - color: number; - guild_ids: string[]; - id: number; - name: string; - }[]; - guild_positions: string[]; // guild ids ordered by position - inline_attachment_media: boolean; - inline_embed_media: boolean; - locale: string; // en_US - message_display_compact: boolean; - native_phone_integration_enabled: boolean; - render_embeds: boolean; - render_reactions: boolean; - restricted_guilds: string[]; - show_current_game: boolean; - status: "online" | "offline" | "dnd" | "idle"; - stream_notifications_enabled: boolean; - theme: "dark" | "white"; // dark - timezone_offset: number; // e.g -60 -} diff --git a/util/util/AutoUpdate.ts b/util/src/util/AutoUpdate.ts similarity index 100% rename from util/util/AutoUpdate.ts rename to util/src/util/AutoUpdate.ts diff --git a/util/util/BitField.ts b/util/src/util/BitField.ts similarity index 100% rename from util/util/BitField.ts rename to util/src/util/BitField.ts diff --git a/util/util/Constants.ts b/util/src/util/Constants.ts similarity index 100% rename from util/util/Constants.ts rename to util/src/util/Constants.ts diff --git a/util/util/MessageFlags.ts b/util/src/util/MessageFlags.ts similarity index 100% rename from util/util/MessageFlags.ts rename to util/src/util/MessageFlags.ts diff --git a/util/util/Permissions.ts b/util/src/util/Permissions.ts similarity index 100% rename from util/util/Permissions.ts rename to util/src/util/Permissions.ts diff --git a/util/util/RabbitMQ.ts b/util/src/util/RabbitMQ.ts similarity index 100% rename from util/util/RabbitMQ.ts rename to util/src/util/RabbitMQ.ts diff --git a/util/util/Regex.ts b/util/src/util/Regex.ts similarity index 100% rename from util/util/Regex.ts rename to util/src/util/Regex.ts diff --git a/util/util/Snowflake.ts b/util/src/util/Snowflake.ts similarity index 100% rename from util/util/Snowflake.ts rename to util/src/util/Snowflake.ts diff --git a/util/util/String.ts b/util/src/util/String.ts similarity index 100% rename from util/util/String.ts rename to util/src/util/String.ts diff --git a/util/util/UserFlags.ts b/util/src/util/UserFlags.ts similarity index 100% rename from util/util/UserFlags.ts rename to util/src/util/UserFlags.ts diff --git a/util/util/checkToken.ts b/util/src/util/checkToken.ts similarity index 100% rename from util/util/checkToken.ts rename to util/src/util/checkToken.ts diff --git a/util/util/toBigInt.ts b/util/src/util/toBigInt.ts similarity index 100% rename from util/util/toBigInt.ts rename to util/src/util/toBigInt.ts diff --git a/util/tsconfig.json b/util/tsconfig.json index fa3bc6cb..e7a2f36f 100644 --- a/util/tsconfig.json +++ b/util/tsconfig.json @@ -67,6 +67,12 @@ "skipLibCheck": true /* Skip type checking of declaration files. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "emitDecoratorMetadata": true, - "experimentalDecorators": true + "experimentalDecorators": true, + "plugins": [ + { + "transform": "ts-transform-json-schema", + "type": "program" + } + ] } } From 7fa8bd9e10dd1af3cf9e75014c9d608d46298fcc Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Mon, 23 Aug 2021 03:50:58 +0200 Subject: [PATCH 03/50] test --- api/package-lock.json | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index 00af4b5b..3221969a 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -66,26 +66,28 @@ "hasInstallScript": true, "license": "GPLV3", "dependencies": { - "ajv": "^8.5.0", + "ajv": "^8.6.2", "amqplib": "^0.8.0", + "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", "missing-native-js-functions": "^1.2.10", - "mongodb": "^3.6.9", - "mongoose": "^5.13.7", - "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", - "typescript": "^4.1.3" + "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.2", + "ts-transform-json-schema": "^2.0.3", + "typeorm": "^0.2.37", + "typescript": "^4.3.5", + "typescript-json-schema": "^0.50.1" }, "devDependencies": { "@types/amqplib": "^0.8.1", "@types/jsonwebtoken": "^8.5.0", - "@types/mongodb": "^3.6.9", "@types/mongoose-autopopulate": "^0.10.1", - "@types/mongoose-lean-virtuals": "^0.5.1", "@types/node": "^14.17.9", - "@types/node-fetch": "^2.5.12" + "@types/node-fetch": "^2.5.12", + "jest": "^27.0.6" } }, "node_modules/@babel/code-frame": { @@ -11870,22 +11872,24 @@ "requires": { "@types/amqplib": "^0.8.1", "@types/jsonwebtoken": "^8.5.0", - "@types/mongodb": "^3.6.9", "@types/mongoose-autopopulate": "^0.10.1", - "@types/mongoose-lean-virtuals": "^0.5.1", "@types/node": "^14.17.9", "@types/node-fetch": "^2.5.12", - "ajv": "^8.5.0", + "ajv": "^8.6.2", "amqplib": "^0.8.0", + "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", + "jest": "^27.0.6", "jsonwebtoken": "^8.5.1", "missing-native-js-functions": "^1.2.10", - "mongodb": "^3.6.9", - "mongoose": "^5.13.7", - "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", - "typescript": "^4.1.3" + "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.2", + "ts-transform-json-schema": "^2.0.3", + "typeorm": "^0.2.37", + "typescript": "^4.3.5", + "typescript-json-schema": "^0.50.1" } }, "@istanbuljs/load-nyc-config": { From af1b5f30c69a95f9e75fc0e8ef50398a7fb32000 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Mon, 23 Aug 2021 03:52:14 +0200 Subject: [PATCH 04/50] generate schema --- util/package.json | 17 +- util/schema.json | 19501 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 19509 insertions(+), 9 deletions(-) create mode 100644 util/schema.json diff --git a/util/package.json b/util/package.json index 0e7dcbc1..870c9344 100644 --- a/util/package.json +++ b/util/package.json @@ -5,8 +5,10 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { + "test": "jest", "postinstall": "npm run build", - "build": "npx tsc -b ." + "build": "npx tsc -b .", + "generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/models/schema.json" }, "repository": { "type": "git", @@ -28,28 +30,25 @@ "devDependencies": { "@types/amqplib": "^0.8.1", "@types/jsonwebtoken": "^8.5.0", - "@types/mongodb": "^3.6.9", "@types/mongoose-autopopulate": "^0.10.1", - "@types/mongoose-lean-virtuals": "^0.5.1", "@types/node": "^14.17.9", - "@types/node-fetch": "^2.5.12" + "@types/node-fetch": "^2.5.12", + "jest": "^27.0.6" }, "dependencies": { - "ajv": "^8.5.0", + "ajv": "^8.6.2", "amqplib": "^0.8.0", "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", "missing-native-js-functions": "^1.2.10", - "mongodb": "^3.6.9", - "mongoose": "^5.13.7", - "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", "ts-transform-json-schema": "^2.0.3", "typeorm": "^0.2.37", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "typescript-json-schema": "github:fosscord/typescript-json-schema" } } diff --git a/util/schema.json b/util/schema.json new file mode 100644 index 00000000..2ecbacf2 --- /dev/null +++ b/util/schema.json @@ -0,0 +1,19501 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "Activity": { + "properties": { + "application_id": { + "type": "string" + }, + "assets": { + "properties": { + "large_image": { + "type": "string" + }, + "large_text": { + "type": "string" + }, + "small_image": { + "type": "string" + }, + "small_text": { + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "details": { + "type": "string" + }, + "emoji": { + "properties": { + "amimated": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "flags": { + "type": "bigint" + }, + "instance": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "party": { + "properties": { + "id": { + "type": "string" + }, + "size": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "secrets": { + "properties": { + "join": { + "type": "string" + }, + "match": { + "type": "string" + }, + "spectate": { + "type": "string" + } + }, + "type": "object" + }, + "state": { + "type": "string" + }, + "timestamps": { + "items": { + "properties": { + "end": { + "type": "number" + }, + "start": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/ActivityType" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ActivityType": { + "enum": [ + 0, + 1, + 2, + 4, + 5 + ], + "type": "number" + }, + "AllowedMentions": { + "properties": { + "parse": { + "items": { + "enum": [ + "everyone", + "roles", + "users" + ], + "type": "string" + }, + "type": "array" + }, + "replied_user": { + "type": "boolean" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "users": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Application": { + "properties": { + "__filename": { + "type": "string" + }, + "bot_public": { + "type": "boolean" + }, + "bot_require_code_grant": { + "type": "boolean" + }, + "cover_image": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": "string" + }, + "flags": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner_id": { + "type": "string" + }, + "primary_sku_id": { + "type": [ + "null", + "string" + ] + }, + "privacy_policy_url": { + "type": [ + "null", + "string" + ] + }, + "rpc_origins": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "slug": { + "type": [ + "null", + "string" + ] + }, + "summary": { + "type": [ + "null", + "string" + ] + }, + "team": { + "anyOf": [ + { + "$ref": "#/definitions/Team" + }, + { + "type": "null" + } + ] + }, + "team_id": { + "type": "string" + }, + "terms_of_service_url": { + "type": [ + "null", + "string" + ] + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "verify_key": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommand": { + "properties": { + "application_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "ApplicationCommandCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommandDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommandInteractionData": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandInteractionDataOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "ApplicationCommandInteractionDataOption": { + "properties": { + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandInteractionDataOption" + }, + "type": "array" + }, + "value": { + } + }, + "type": "object" + }, + "ApplicationCommandOption": { + "properties": { + "choices": { + "items": { + "$ref": "#/definitions/ApplicationCommandOptionChoice" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandOption" + }, + "type": "array" + }, + "required": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/ApplicationCommandOptionType" + } + }, + "type": "object" + }, + "ApplicationCommandOptionChoice": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": [ + "string", + "number" + ] + } + }, + "type": "object" + }, + "ApplicationCommandOptionType": { + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "type": "number" + }, + "ApplicationCommandPayload": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "ApplicationCommandUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "AsyncSchema": { + "properties": { + "$async": { + "enum": [ + true + ], + "type": "boolean" + }, + "$id": { + "type": "string" + }, + "$schema": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "AsyncValidateFunction": { + "properties": { + "$async": { + "enum": [ + true + ], + "type": "boolean" + }, + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "Attachment": { + "properties": { + "content_type": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "height": { + "type": "number" + }, + "id": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "AuditLogChange": { + "properties": { + "key": { + "type": "string" + }, + "new_value": { + "$ref": "#/definitions/AuditLogChangeValue" + }, + "old_value": { + "$ref": "#/definitions/AuditLogChangeValue" + } + }, + "type": "object" + }, + "AuditLogChangeValue": { + "properties": { + "$add": { + "items": { + "properties": { + }, + "type": "object" + }, + "type": "array" + }, + "$remove": { + "items": { + "properties": { + }, + "type": "object" + }, + "type": "array" + }, + "afk_channel_id": { + "type": "string" + }, + "afk_timeout": { + "type": "number" + }, + "allow": { + "type": "string" + }, + "application_id": { + "type": "string" + }, + "avatar_hash": { + "type": "string" + }, + "banner_hash": { + "type": "string" + }, + "bitrate": { + "type": "number" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "color": { + "type": "number" + }, + "deaf": { + "type": "boolean" + }, + "default_message_notifications": { + "type": "number" + }, + "deny": { + "type": "string" + }, + "description": { + "type": "string" + }, + "discovery_splash_hash": { + "type": "string" + }, + "enable_emoticons": { + "type": "boolean" + }, + "expire_behavior": { + "type": "number" + }, + "expire_grace_period": { + "type": "number" + }, + "explicit_content_filter": { + "type": "number" + }, + "hoist": { + "type": "boolean" + }, + "icon_hash": { + "type": "string" + }, + "id": { + "type": "string" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "mentionable": { + "type": "boolean" + }, + "mfa_level": { + "type": "number" + }, + "mute": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "nick": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "owner_id": { + "type": "string" + }, + "permission_overwrites": { + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + }, + "type": "array" + }, + "permissions": { + "type": "string" + }, + "position": { + "type": "number" + }, + "preferred_locale": { + "type": "string" + }, + "prune_delete_days": { + "type": "number" + }, + "public_updates_channel_id": { + "type": "string" + }, + "rate_limit_per_user": { + "type": "number" + }, + "region": { + "type": "string" + }, + "rules_channel_id": { + "type": "string" + }, + "splash_hash": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "topic": { + "type": "string" + }, + "type": { + "type": "number" + }, + "user_limit": { + "type": "number" + }, + "uses": { + "type": "number" + }, + "vanity_url_code": { + "type": "string" + }, + "verification_level": { + "type": "number" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AuditLogEntry": { + "properties": { + "__filename": { + "type": "string" + }, + "action_type": { + "$ref": "#/definitions/AuditLogEvents" + }, + "changes": { + "items": { + "$ref": "#/definitions/AuditLogChange" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "options": { + "properties": { + "channel_id": { + "type": "string" + }, + "count": { + "type": "string" + }, + "delete_member_days": { + "type": "string" + }, + "id": { + "type": "string" + }, + "members_removed": { + "type": "string" + }, + "messaged_id": { + "type": "string" + }, + "role_name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "reason": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "target": { + "$ref": "#/definitions/User" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "AuditLogEvents": { + "enum": [ + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 30, + 31, + 32, + 40, + 41, + 42, + 50, + 51, + 52, + 60, + 61, + 62, + 72, + 73, + 74, + 75, + 80, + 81, + 82 + ], + "type": "number" + }, + "AuroraDataApiConnectionOptions": { + "description": "MySQL specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "formatOptions": { + "additionalProperties": { + }, + "properties": { + "castParameters": { + "type": "boolean" + } + }, + "type": "object" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "legacySpatialSupport": { + "description": "Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n(Default: true)", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "region": { + "type": "string" + }, + "resourceArn": { + "type": "string" + }, + "secretArn": { + "type": "string" + }, + "serviceConfigOptions": { + "additionalProperties": { + }, + "type": "object" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "aurora-data-api" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "AuroraDataApiPostgresConnectionOptions": { + "description": "Postgres-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "formatOptions": { + "additionalProperties": { + }, + "properties": { + "castParameters": { + "type": "boolean" + } + }, + "type": "object" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "poolErrorHandler": { + "type": "object" + }, + "region": { + "type": "string" + }, + "resourceArn": { + "type": "string" + }, + "secretArn": { + "type": "string" + }, + "serviceConfigOptions": { + "additionalProperties": { + }, + "type": "object" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "transformParameters": { + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "aurora-data-api-pg" + ], + "type": "string" + }, + "uuidExtension": { + "description": "The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\nIf pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\nIf uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.", + "enum": [ + "pgcrypto", + "uuid-ossp" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryAccessTokenAuthentication": { + "properties": { + "options": { + "properties": { + "token": { + "description": "A user need to provide `token` which they retrived else where\nto forming the connection.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-access-token" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryMsiAppServiceAuthentication": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "If you user want to connect to an Azure app service using a specific client account\nthey need to provide `clientId` asscoiate to their created idnetity.\n\nThis is optional for retrieve token from azure web app service", + "type": "string" + }, + "msiEndpoint": { + "description": "A msi app service environment need to provide `msiEndpoint` for retriving the accesstoken.", + "type": "string" + }, + "msiSecret": { + "description": "A msi app service environment need to provide `msiSecret` for retriving the accesstoken.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-msi-app-service" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryMsiVmAuthentication": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "If you user want to connect to an Azure app service using a specific client account\nthey need to provide `clientId` asscoiate to their created idnetity.\n\nThis is optional for retrieve token from azure web app service", + "type": "string" + }, + "msiEndpoint": { + "description": "A user need to provide `msiEndpoint` for retriving the accesstoken.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-msi-vm" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryPasswordAuthentication": { + "properties": { + "options": { + "properties": { + "domain": { + "description": "Optional parameter for specific Azure tenant ID", + "type": "string" + }, + "password": { + "description": "A user need to provide `password` asscoiate to their account.", + "type": "string" + }, + "userName": { + "description": "A user need to provide `userName` asscoiate to their account.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-password" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryServicePrincipalSecret": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "Application (`client`) ID from your registered Azure application", + "type": "string" + }, + "clientSecret": { + "description": "The created `client secret` for this registered Azure application", + "type": "string" + }, + "tenantId": { + "description": "Directory (`tenant`) ID from your registered Azure application", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-service-principal-secret" + ], + "type": "string" + } + }, + "type": "object" + }, + "Ban": { + "properties": { + "__filename": { + "type": "string" + }, + "executor": { + "$ref": "#/definitions/User" + }, + "executor_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "reason": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "BaseClass": { + "properties": { + "__filename": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "BaseConnectionOptions": { + "description": "BaseConnectionOptions is set of connection options shared by all database types.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/DatabaseType", + "description": "Database type. This value is required." + } + }, + "type": "object" + }, + "BetterSqlite3ConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Storage type or path to the storage.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "fileMustExist": { + "description": "If the database does not exist, an Error will be thrown instead of creating a new file.\nThis option does not affect in-memory or readonly database connections.\nDefault: false.", + "type": "boolean" + }, + "key": { + "description": "Encryption key for for SQLCipher.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "prepareDatabase": { + "description": "Function to run before a database is used in typeorm.\nYou can set pragmas, register plugins or register\nfunctions or aggregates in this function.", + "type": "object" + }, + "readonly": { + "description": "Open the database connection in readonly mode.\nDefault: false.", + "type": "boolean" + }, + "statementCacheSize": { + "description": "Cache size of sqlite statement to speed up queries.\nDefault: 100.", + "type": "number" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "timeout": { + "description": "The number of milliseconds to wait when executing queries\non a locked database, before throwing a SQLITE_BUSY error.\nDefault: 5000.", + "type": "number" + }, + "type": { + "description": "Database type.", + "enum": [ + "better-sqlite3" + ], + "type": "string" + }, + "verbose": { + "$ref": "#/definitions/Function", + "description": "Provide a function that gets called with every SQL string executed by the database connection." + } + }, + "type": "object" + }, + "BigInt": { + "properties": { + "__@toStringTag": { + "enum": [ + "BigInt" + ], + "type": "string" + } + }, + "type": "object" + }, + "BitField": { + "description": "Data structure that makes it easy to interact with a bitfield.", + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "BitFieldResolvable": { + "anyOf": [ + { + "$ref": "#/definitions/BigInt" + }, + { + "$ref": "#/definitions/BitField" + }, + { + "items": { + "$ref": "#/definitions/BitFieldResolvable" + }, + "type": "array" + }, + { + "type": [ + "string", + "number" + ] + } + ] + }, + "Boolean": { + "type": "object" + }, + "BooleanConstructor": { + "properties": { + "prototype": { + "$ref": "#/definitions/Boolean" + } + }, + "type": "object" + }, + "Broadcaster": { + "description": "Broadcaster provides a helper methods to broadcast events to the subscribers.", + "properties": { + "queryRunner": { + } + }, + "type": "object" + }, + "CUSTOMEVENTS": { + "enum": [ + "INVALIDATED" + ], + "type": "string" + }, + "CapacitorConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name (capacitor-sqlite will add the suffix `SQLite.db`)", + "type": "string" + }, + "driver": { + "description": "The capacitor-sqlite instance. For example, `new SQLiteConnection(CapacitorSQLite)`." + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "journalMode": { + "description": "The SQLite journal mode (optional)", + "enum": [ + "DELETE", + "MEMORY", + "OFF", + "PERSIST", + "TRUNCATE", + "WAL" + ], + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "mode": { + "description": "Set the mode for database encryption", + "enum": [ + "encryption", + "newsecret", + "no-encryption", + "secret" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "capacitor" + ], + "type": "string" + }, + "version": { + "description": "Database version", + "type": "number" + } + }, + "type": "object" + }, + "Channel": { + "properties": { + "__filename": { + "type": "string" + }, + "bitrate": { + "type": "number" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_auto_archive_duration": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "last_message": { + "$ref": "#/definitions/Message" + }, + "last_message_id": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "owner_id": { + "type": "string" + }, + "parent": { + "$ref": "#/definitions/Channel" + }, + "parent_id": { + "type": "string" + }, + "permission_overwrites": { + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + }, + "type": "array" + }, + "position": { + "type": "number" + }, + "rate_limit_per_user": { + "type": "number" + }, + "recipient_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recipients": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "topic": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_limit": { + "type": "number" + }, + "video_quality_mode": { + "type": "number" + } + }, + "type": "object" + }, + "ChannelCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelPermissionOverwrite": { + "properties": { + "allow": { + "type": "bigint" + }, + "deny": { + "type": "bigint" + }, + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + } + }, + "type": "object" + }, + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1 + ], + "type": "number" + }, + "ChannelPinsUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "number" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "CHANNEL_PINS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelType": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "number" + }, + "ChannelUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Channel_1": { + "type": "object" + }, + "CheckMetadata": { + "description": "Check metadata contains all information about table's check constraints.", + "properties": { + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this check constraint is applied." + }, + "expression": { + "description": "Check expression.", + "type": "string" + }, + "givenName": { + "description": "User specified check constraint name.", + "type": "string" + }, + "name": { + "description": "Final check constraint name.\nIf check constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf check constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "ClientStatus": { + "properties": { + "desktop": { + "type": "string" + }, + "mobile": { + "type": "string" + }, + "web": { + "type": "string" + } + }, + "type": "object" + }, + "ClosureTreeOptions": { + "properties": { + "ancestorColumnName": { + "type": "object" + }, + "closureTableName": { + "type": "string" + }, + "descendantColumnName": { + "type": "object" + } + }, + "type": "object" + }, + "CockroachConnectionCredentialsOptions": { + "description": "Cockroachdb specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "CockroachConnectionOptions": { + "description": "Cockroachdb-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "poolErrorHandler": { + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/CockroachConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/CockroachConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name.", + "type": "string" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "cockroachdb" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "ColumnMetadata": { + "description": "This metadata contains all information about entity's column.", + "properties": { + "asExpression": { + "description": "Generated column expression. Supports only in MySQL.", + "type": "string" + }, + "charset": { + "description": "Defines column character set.", + "type": "string" + }, + "closureType": { + "description": "Column type in the case if this column is in the closure table.\nColumn can be ancestor or descendant in the closure tables.", + "enum": [ + "ancestor", + "descendant" + ], + "type": "string" + }, + "collation": { + "description": "Defines column collation.", + "type": "string" + }, + "comment": { + "description": "Column comment.\nThis feature is not supported by all databases.", + "type": "string" + }, + "databaseName": { + "description": "Complete column name in the database including its embedded prefixes.", + "type": "string" + }, + "databaseNameWithoutPrefixes": { + "description": "Database name in the database without embedded prefixes applied.", + "type": "string" + }, + "databasePath": { + "description": "Gets full path to this column database name (including column database name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just database name of the column.", + "type": "string" + }, + "default": { + "anyOf": [ + { + "items": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "type": "array" + }, + { + "$ref": "#/definitions/Record" + }, + { + "type": [ + "null", + "string", + "number", + "object", + "boolean" + ] + } + ], + "description": "Default database value." + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata where this column metadata is.\nIf this column is not in embed then this property value is undefined." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is.\n\nFor example for @Column() name: string in Post, entityMetadata will be metadata of Post entity." + }, + "enum": { + "description": "Array of possible enumerated values.\n\n`postgres` and `mysql` store enum values as strings but we want to keep support\nfor numeric and heterogeneous based typescript enums, so we need (string|number)[]", + "items": { + "type": [ + "string", + "number" + ] + }, + "type": "array" + }, + "enumName": { + "description": "Exact name of enum", + "type": "string" + }, + "generatedType": { + "description": "Generated column type. Supports only in MySQL.", + "enum": [ + "STORED", + "VIRTUAL" + ], + "type": "string" + }, + "generationStrategy": { + "description": "Specifies generation strategy if this column will use auto increment.", + "enum": [ + "increment", + "rowid", + "uuid" + ], + "type": "string" + }, + "givenDatabaseName": { + "description": "Database name set by entity metadata builder, not yet passed naming strategy process and without embedded prefixes.", + "type": "string" + }, + "hstoreType": { + "description": "Return type of HSTORE column.\nReturns value as string or as object.", + "enum": [ + "object", + "string" + ], + "type": "string" + }, + "isArray": { + "description": "Indicates if this column is an array.", + "type": "boolean" + }, + "isCreateDate": { + "description": "Indicates if this column contains an entity creation date.", + "type": "boolean" + }, + "isDeleteDate": { + "description": "Indicates if this column contains an entity delete date.", + "type": "boolean" + }, + "isDiscriminator": { + "description": "Indicates if column is discriminator. Discriminator columns are not mapped to the entity.", + "type": "boolean" + }, + "isGenerated": { + "description": "Indicates if this column is generated (auto increment or generated other way).", + "type": "boolean" + }, + "isInsert": { + "description": "Indicates if column is inserted by default or not.", + "type": "boolean" + }, + "isMaterializedPath": { + "description": "Indicates if this column is materialized path's path column.\nUsed only in tree entities with materialized path type.", + "type": "boolean" + }, + "isNestedSetLeft": { + "description": "Indicates if this column is nested set's left column.\nUsed only in tree entities with nested-set type.", + "type": "boolean" + }, + "isNestedSetRight": { + "description": "Indicates if this column is nested set's right column.\nUsed only in tree entities with nested-set type.", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if column can contain nulls or not.", + "type": "boolean" + }, + "isObjectId": { + "description": "Indicates if this column contains an object id.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if this column is a primary key.", + "type": "boolean" + }, + "isSelect": { + "description": "Indicates if column is selected by query builder or not.", + "type": "boolean" + }, + "isTreeLevel": { + "description": "Indicates if column is tree-level column. Tree-level columns are used in closure entities.", + "type": "boolean" + }, + "isUpdate": { + "description": "Indicates if column allows updates or not.", + "type": "boolean" + }, + "isUpdateDate": { + "description": "Indicates if this column contains an entity update date.", + "type": "boolean" + }, + "isVersion": { + "description": "Indicates if this column contains an entity version.", + "type": "boolean" + }, + "isVirtual": { + "description": "Indicates if column is virtual. Virtual columns are not mapped to the entity.", + "type": "boolean" + }, + "length": { + "description": "Type's length in the database.", + "type": "string" + }, + "onUpdate": { + "description": "ON UPDATE trigger. Works only for MySQL.", + "type": "string" + }, + "precision": { + "description": "The precision for a decimal (exact numeric) column (applies only for decimal column),\nwhich is the maximum number of digits that are stored for the values.", + "type": [ + "null", + "number" + ] + }, + "propertyAliasName": { + "description": "Same as property path, but dots are replaced with '_'.\nUsed in query builder statements.", + "type": "string" + }, + "propertyName": { + "description": "Class's property name on which this column is applied.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this column property (including column property name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just property name of the column.", + "type": "string" + }, + "referencedColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "If this column is foreign key then it references some other column,\nand this property will contain reference to this column." + }, + "relationMetadata": { + "$ref": "#/definitions/RelationMetadata", + "description": "If column is a foreign key of some relation then this relation's metadata will be there.\nIf this column does not have a foreign key then this property value is undefined." + }, + "scale": { + "description": "The scale for a decimal (exact numeric) column (applies only for decimal column),\nwhich represents the number of digits to the right of the decimal point and must not be greater than precision.", + "type": "number" + }, + "spatialFeatureType": { + "description": "Spatial Feature Type (Geometry, Point, Polygon, etc.)", + "type": "string" + }, + "srid": { + "description": "SRID (Spatial Reference ID (EPSG code))", + "type": "number" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class where column decorator is used.\nThis may not be always equal to entity metadata (for example embeds or inheritance cases)." + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/definitions/ValueTransformer" + }, + { + "items": { + "$ref": "#/definitions/ValueTransformer" + }, + "type": "array" + } + ], + "description": "Specifies a value transformer that is to be used to (un)marshal\nthis column when reading or writing to the database." + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "The database type of the column." + }, + "unsigned": { + "description": "Puts UNSIGNED attribute on to numeric column. Works only for MySQL.", + "type": "boolean" + }, + "width": { + "description": "Type's display width in the database.", + "type": "number" + }, + "zerofill": { + "description": "Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\nIf you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column", + "type": "boolean" + } + }, + "type": "object" + }, + "ConnectedAccount": { + "properties": { + "__filename": { + "type": "string" + }, + "access_token": { + "type": "string" + }, + "friend_sync": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "revoked": { + "type": "boolean" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "show_activity": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "verifie": { + "type": "boolean" + }, + "visibility": { + "type": "number" + } + }, + "type": "object" + }, + "Connection": { + "description": "Connection is a single database ORM connection to a specific database.\nIts not required to be a database connection, depend on database type it can create connection pool.\nYou can have multiple connections to multiple databases in your application.", + "properties": { + "driver": { + "$ref": "#/definitions/Driver", + "description": "Database driver used by this connection." + }, + "entityMetadatas": { + "description": "All entity metadatas that are registered for this connection.", + "items": { + "$ref": "#/definitions/EntityMetadata" + }, + "type": "array" + }, + "isConnected": { + "description": "Indicates if connection is initialized or not.", + "type": "boolean" + }, + "logger": { + "$ref": "#/definitions/Logger", + "description": "Logger used to log orm events." + }, + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "EntityManager of this connection." + }, + "migrations": { + "description": "Migration instances that are registered for this connection.", + "items": { + "$ref": "#/definitions/MigrationInterface" + }, + "type": "array" + }, + "mongoManager": { + "$ref": "#/definitions/MongoEntityManager", + "description": "Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\nwith any entity in this connection.\n\nAvailable only in mongodb connections." + }, + "name": { + "description": "Connection name.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy used in the connection." + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/CockroachConnectionOptions" + }, + { + "$ref": "#/definitions/MysqlConnectionOptions" + }, + { + "$ref": "#/definitions/PostgresConnectionOptions" + }, + { + "$ref": "#/definitions/SqliteConnectionOptions" + }, + { + "$ref": "#/definitions/SqlServerConnectionOptions" + }, + { + "$ref": "#/definitions/OracleConnectionOptions" + }, + { + "$ref": "#/definitions/MongoConnectionOptions" + }, + { + "$ref": "#/definitions/CordovaConnectionOptions" + }, + { + "$ref": "#/definitions/SqljsConnectionOptions" + }, + { + "$ref": "#/definitions/ReactNativeConnectionOptions" + }, + { + "$ref": "#/definitions/NativescriptConnectionOptions" + }, + { + "$ref": "#/definitions/ExpoConnectionOptions" + }, + { + "$ref": "#/definitions/AuroraDataApiConnectionOptions" + }, + { + "$ref": "#/definitions/SapConnectionOptions" + }, + { + "$ref": "#/definitions/AuroraDataApiPostgresConnectionOptions" + }, + { + "$ref": "#/definitions/BetterSqlite3ConnectionOptions" + }, + { + "$ref": "#/definitions/CapacitorConnectionOptions" + } + ], + "description": "Connection options." + }, + "queryResultCache": { + "$ref": "#/definitions/QueryResultCache", + "description": "Used to work with query result cache." + }, + "relationLoader": { + "$ref": "#/definitions/RelationLoader", + "description": "Used to load relations and work with lazy relations." + }, + "sqljsManager": { + "$ref": "#/definitions/SqljsEntityManager", + "description": "Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n\nAvailable only in connection with the sqljs driver." + }, + "subscribers": { + "description": "Entity subscriber instances that are registered for this connection.", + "items": { + "$ref": "#/definitions/EntitySubscriberInterface" + }, + "type": "array" + } + }, + "type": "object" + }, + "CordovaConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "Storage Location", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "cordova" + ], + "type": "string" + } + }, + "type": "object" + }, + "DataTypeDefaults": { + "additionalProperties": { + "properties": { + "length": { + "type": "number" + }, + "precision": { + "type": "number" + }, + "scale": { + "type": "number" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "type": "object" + }, + "DatabaseType": { + "description": "Database type.", + "enum": [ + "aurora-data-api", + "aurora-data-api-pg", + "better-sqlite3", + "capacitor", + "cockroachdb", + "cordova", + "expo", + "mariadb", + "mongodb", + "mssql", + "mysql", + "nativescript", + "oracle", + "postgres", + "react-native", + "sap", + "sqlite", + "sqljs" + ], + "type": "string" + }, + "DateConstructor": { + "properties": { + "prototype": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "DefaultAuthentication": { + "properties": { + "options": { + "properties": { + "password": { + "description": "Password to use for sql server login.", + "type": "string" + }, + "userName": { + "description": "User name to use for sql server login.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Driver": { + "description": "Driver organizes TypeORM communication with specific database management system.", + "properties": { + "dataTypeDefaults": { + "$ref": "#/definitions/DataTypeDefaults", + "description": "Default values of length, precision and scale depends on column data type.\nUsed in the cases when length/precision/scale is not specified by user." + }, + "database": { + "description": "Master database used to perform all write queries.\n\ntodo: probably move into query runner.", + "type": "string" + }, + "isReplicated": { + "description": "Indicates if replication is enabled.", + "type": "boolean" + }, + "mappedDataTypes": { + "$ref": "#/definitions/MappedColumnTypes", + "description": "Orm has special columns and we need to know what database column types should be for those types.\nColumn types are driver dependant." + }, + "maxAliasLength": { + "description": "Max length allowed by the DBMS for aliases (execution of queries).", + "type": "number" + }, + "options": { + "$ref": "#/definitions/BaseConnectionOptions", + "description": "Connection options." + }, + "spatialTypes": { + "description": "Gets list of spatial column data types.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "supportedDataTypes": { + "description": "Gets list of supported column data types by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "treeSupport": { + "description": "Indicates if tree tables are supported by this driver.", + "type": "boolean" + }, + "withLengthColumnTypes": { + "description": "Gets list of column data types that support length by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "withPrecisionColumnTypes": { + "description": "Gets list of column data types that support precision by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "withScaleColumnTypes": { + "description": "Gets list of column data types that support scale by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + } + }, + "type": "object" + }, + "EVENT": { + "enum": [ + "APPLICATION_COMMAND_CREATE", + "APPLICATION_COMMAND_DELETE", + "APPLICATION_COMMAND_UPDATE", + "CHANNEL_CREATE", + "CHANNEL_DELETE", + "CHANNEL_PINS_UPDATE", + "CHANNEL_UPDATE", + "GUILD_BAN_ADD", + "GUILD_BAN_REMOVE", + "GUILD_CREATE", + "GUILD_DELETE", + "GUILD_EMOJI_UPDATE", + "GUILD_INTEGRATIONS_UPDATE", + "GUILD_MEMBERS_CHUNK", + "GUILD_MEMBER_ADD", + "GUILD_MEMBER_REMOVE", + "GUILD_MEMBER_SPEAKING", + "GUILD_MEMBER_UPDATE", + "GUILD_ROLE_CREATE", + "GUILD_ROLE_DELETE", + "GUILD_ROLE_UPDATE", + "GUILD_UPDATE", + "INTERACTION_CREATE", + "INVALIDATED", + "INVITE_CREATE", + "INVITE_DELETE", + "MESSAGE_ACK", + "MESSAGE_CREATE", + "MESSAGE_DELETE", + "MESSAGE_DELETE_BULK", + "MESSAGE_REACTION_ADD", + "MESSAGE_REACTION_REMOVE", + "MESSAGE_REACTION_REMOVE_ALL", + "MESSAGE_REACTION_REMOVE_EMOJI", + "MESSAGE_UPDATE", + "PRESENCE_UPDATE", + "READY", + "RELATIONSHIP_ADD", + "RELATIONSHIP_REMOVE", + "TYPING_START", + "USER_UPDATE", + "VOICE_SERVER_UPDATE", + "VOICE_STATE_UPDATE", + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "EVENTEnum": { + "enum": [ + "APPLICATION_COMMAND_CREATE", + "APPLICATION_COMMAND_DELETE", + "APPLICATION_COMMAND_UPDATE", + "CHANNEL_CREATE", + "CHANNEL_DELETE", + "CHANNEL_PINS_UPDATE", + "CHANNEL_UPDATE", + "GUILD_BAN_ADD", + "GUILD_BAN_REMOVE", + "GUILD_CREATE", + "GUILD_DELETE", + "GUILD_EMOJI_UPDATE", + "GUILD_INTEGRATIONS_UPDATE", + "GUILD_MEMBERS_CHUNK", + "GUILD_MEMBER_ADD", + "GUILD_MEMBER_REMOVE", + "GUILD_MEMBER_SPEAKING", + "GUILD_MEMBER_UPDATE", + "GUILD_ROLE_CREATE", + "GUILD_ROLE_DELETE", + "GUILD_ROLE_UPDATE", + "GUILD_UPDATE", + "INTERACTION_CREATE", + "INVITE_CREATE", + "INVITE_DELETE", + "MESSAGE_CREATE", + "MESSAGE_DELETE", + "MESSAGE_DELETE_BULK", + "MESSAGE_REACTION_ADD", + "MESSAGE_REACTION_REMOVE", + "MESSAGE_REACTION_REMOVE_ALL", + "MESSAGE_REACTION_REMOVE_EMOJI", + "MESSAGE_UPDATE", + "PRESENCE_UPDATE", + "READY", + "TYPING_START", + "USER_UPDATE", + "VOICE_SERVER_UPDATE", + "VOICE_STATE_UPDATE", + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "Embed": { + "properties": { + "author": { + "properties": { + "icon_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "color": { + "type": "number" + }, + "description": { + "type": "string" + }, + "fields": { + "items": { + "properties": { + "inline": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "footer": { + "properties": { + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "image": { + "$ref": "#/definitions/EmbedImage" + }, + "provider": { + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "thumbnail": { + "$ref": "#/definitions/EmbedImage" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "url": { + "type": "string" + }, + "video": { + "$ref": "#/definitions/EmbedImage" + } + }, + "type": "object" + }, + "EmbedImage": { + "properties": { + "height": { + "type": "number" + }, + "proxy_url": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "EmbedType": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "EmbeddedMetadata": { + "description": "Contains all information about entity's embedded property.", + "properties": { + "columns": { + "description": "Columns inside this embed.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "columnsFromTree": { + "description": "Embed metadatas from all levels of the parent tree.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nthis method will return [embed metadata of data, embed metadata of information, embed metadata of counters]", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "customPrefix": { + "description": "Prefix of the embedded, used instead of propertyName.\nIf set to empty string or false, then prefix is not set at all.", + "type": [ + "string", + "boolean" + ] + }, + "embeddedMetadataTree": { + "description": "Returns embed metadatas from all levels of the parent tree.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nthis method will return [embed metadata of data, embed metadata of information, embed metadata of counters]", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "embeddeds": { + "description": "Nested embeddable in this embeddable (which has current embedded as parent embedded).", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this embedded is." + }, + "indices": { + "description": "Indices applied to the embed columns.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "indicesFromTree": { + "description": "Indices of this embed and all indices from its child embeds.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "isAlwaysUsingConstructor": { + "description": "Indicates if the entity should be instantiated using the constructor\nor via allocating a new object via `Object.create()`.", + "type": "boolean" + }, + "isArray": { + "description": "Indicates if this embedded is in array mode.\n\nThis option works only in mongodb.", + "type": "boolean" + }, + "listeners": { + "description": "Entity listeners inside this embed.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "listenersFromTree": { + "description": "Relations of this embed and all relations from its child embeds.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "parentEmbeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Parent embedded in the case if this embedded inside other embedded." + }, + "parentPrefixes": { + "description": "Returns array of prefixes of current embed and all its parent embeds.", + "items": { + "type": "string" + }, + "type": "array" + }, + "parentPropertyNames": { + "description": "Returns array of property names of current embed and all its parent embeds.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nwe need to get value of \"id\" column from the post real entity object.\nthis method will return [\"data\", \"information\", \"counters\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "prefix": { + "description": "Gets the prefix of the columns.\nBy default its a property name of the class where this prefix is.\nBut if custom prefix is set then it takes its value as a prefix.\nHowever if custom prefix is set to empty string or false, then prefix to column is not applied at all.", + "type": "string" + }, + "propertyName": { + "description": "Property name on which this embedded is attached.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this embedded property (including embedded property name).\nFull path is relevant when embedded is used inside other embeds (one or multiple nested).\nFor example it will return \"counters.subcounters\".", + "type": "string" + }, + "relationCounts": { + "description": "Relation counts inside this embed.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationCountsFromTree": { + "description": "Relation counts of this embed and all relation counts from its child embeds.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationIds": { + "description": "Relation ids inside this embed.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relationIdsFromTree": { + "description": "Relation ids of this embed and all relation ids from its child embeds.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relations": { + "description": "Relations inside this embed.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "relationsFromTree": { + "description": "Relations of this embed and all relations from its child embeds.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/Function", + "description": "Embedded target type." + }, + "uniques": { + "description": "Uniques applied to the embed columns.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "uniquesFromTree": { + "description": "Uniques of this embed and all uniques from its child embeds.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + } + }, + "type": "object" + }, + "Emoji": { + "properties": { + "__filename": { + "type": "string" + }, + "animated": { + "type": "boolean" + }, + "available": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "managed": { + "type": "boolean" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "require_colons": { + "type": "boolean" + }, + "role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "url": { + "type": "string" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "EntityListenerMetadata": { + "description": "This metadata contains all information about entity's listeners.", + "properties": { + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata of the listener, in the case if listener is in embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the listener." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied.\nThis can be different then entityMetadata.target in the case if listener is in the embedded." + }, + "type": { + "$ref": "#/definitions/EventListenerType", + "description": "The type of the listener." + } + }, + "type": "object" + }, + "EntityManager": { + "description": "Entity manager supposed to work with any entity, automatically find its repository and call its methods,\nwhatever entity type are you passing.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntityMetadata": { + "description": "Contains all entity metadata.", + "properties": { + "afterInsertListeners": { + "description": "Listener metadatas with \"AFTER INSERT\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterLoadListeners": { + "description": "Listener metadatas with \"AFTER LOAD\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterRemoveListeners": { + "description": "Listener metadatas with \"AFTER REMOVE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterUpdateListeners": { + "description": "Listener metadatas with \"AFTER UPDATE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "allEmbeddeds": { + "description": "All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc.", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "ancestorColumns": { + "description": "Ancestor columns used only in closure junction tables.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "beforeInsertListeners": { + "description": "Listener metadatas with \"AFTER INSERT\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "beforeRemoveListeners": { + "description": "Listener metadatas with \"AFTER REMOVE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "beforeUpdateListeners": { + "description": "Listener metadatas with \"AFTER UPDATE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "checks": { + "description": "Entity's check metadatas.", + "items": { + "$ref": "#/definitions/CheckMetadata" + }, + "type": "array" + }, + "childEntityMetadatas": { + "description": "Children entity metadatas. Used in inheritance patterns.", + "items": { + "$ref": "#/definitions/EntityMetadata" + }, + "type": "array" + }, + "closureJunctionTable": { + "$ref": "#/definitions/EntityMetadata", + "description": "If entity's table is a closure-typed table, then this entity will have a closure junction table metadata." + }, + "columns": { + "description": "Columns of the entity, including columns that are coming from the embeddeds of this entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection where this entity metadata is created." + }, + "createDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains a create date value." + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "deleteDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains a delete date value." + }, + "descendantColumns": { + "description": "Descendant columns used only in closure junction tables.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "discriminatorColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets the discriminator column used to store entity identificator in single-table inheritance tables." + }, + "discriminatorValue": { + "description": "If this entity metadata is a child table of some table, it should have a discriminator value.\nUsed to store a value in a discriminator column.", + "type": "string" + }, + "eagerRelations": { + "description": "List of eager relations this metadata has.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "embeddeds": { + "description": "Entity's embedded metadatas.", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "engine": { + "description": "Table's database engine type (like \"InnoDB\", \"MyISAM\", etc).", + "type": "string" + }, + "exclusions": { + "description": "Entity's exclusion metadatas.", + "items": { + "$ref": "#/definitions/ExclusionMetadata" + }, + "type": "array" + }, + "expression": { + "description": "View's expression.\nUsed in views", + "type": [ + "string", + "object" + ] + }, + "foreignKeys": { + "description": "Entity's foreign key metadatas.", + "items": { + "$ref": "#/definitions/ForeignKeyMetadata" + }, + "type": "array" + }, + "generatedColumns": { + "description": "Gets the column with generated flag.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "getInverseEntityMetadata": { + }, + "givenTableName": { + "description": "Original user-given table name (taken from schema or @Entity(tableName) decorator).\nIf user haven't specified a table name this property will be undefined.", + "type": "string" + }, + "hasMultiplePrimaryKeys": { + "description": "Checks if entity's table has multiple primary columns.", + "type": "boolean" + }, + "hasNonNullableRelations": { + "description": "Checks if there any non-nullable column exist in this entity.", + "type": "boolean" + }, + "hasUUIDGeneratedColumns": { + "description": "Indicates if this entity metadata has uuid generated columns.", + "type": "boolean" + }, + "indices": { + "description": "Entity's index metadatas.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "inheritancePattern": { + "description": "If this entity metadata's table using one of the inheritance patterns,\nthen this will contain what pattern it uses.", + "enum": [ + "STI" + ], + "type": "string" + }, + "inheritanceTree": { + "description": "All \"inheritance tree\" from a target entity.\nFor example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit].\nIt also contains child entities for single table inheritance.", + "items": { + "$ref": "#/definitions/Function" + }, + "type": "array" + }, + "inverseColumns": { + "description": "In the case if this entity metadata is junction table's entity metadata,\nthis will contain all referenced columns of inverse entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "isAlwaysUsingConstructor": { + "description": "Indicates if the entity should be instantiated using the constructor\nor via allocating a new object via `Object.create()`.", + "type": "boolean" + }, + "isClosureJunction": { + "description": "Checks if this table is a junction table of the closure table.\nThis type is for tables that contain junction metadata of the closure tables.", + "type": "boolean" + }, + "isJunction": { + "description": "Indicates if this entity metadata of a junction table, or not.\nJunction table is a table created by many-to-many relationship.\n\nIts also possible to understand if entity is junction via tableType.", + "type": "boolean" + }, + "lazyRelations": { + "description": "List of eager relations this metadata has.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "listeners": { + "description": "Entity listener metadatas.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "manyToManyRelations": { + "description": "Gets only many-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "manyToOneRelations": { + "description": "Gets only many-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "materializedPathColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Materialized path column.\nUsed only in tree entities with materialized path pattern applied." + }, + "name": { + "description": "Entity's name.\nEqual to entity target class's name if target is set to table.\nIf target class is not then then it equals to table name.", + "type": "string" + }, + "nestedSetLeftColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Nested set's left value column.\nUsed only in tree entities with nested set pattern applied." + }, + "nestedSetRightColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Nested set's right value column.\nUsed only in tree entities with nested set pattern applied." + }, + "nonVirtualColumns": { + "description": "All columns except for virtual columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "objectIdColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets the object id column used with mongodb database." + }, + "oneToManyRelations": { + "description": "Gets only one-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "oneToOneRelations": { + "description": "Gets only one-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "orderBy": { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + "ownColumns": { + "description": "Entity's column metadatas defined by user.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "ownIndices": { + "description": "Entity's own indices.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "ownListeners": { + "description": "Entity's own listener metadatas.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "ownRelations": { + "description": "Entity's relation metadatas.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "ownUniques": { + "description": "Entity's own uniques.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "ownerColumns": { + "description": "In the case if this entity metadata is junction table's entity metadata,\nthis will contain all referenced columns of owner entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "ownerManyToManyRelations": { + "description": "Gets only owner many-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "ownerOneToOneRelations": { + "description": "Gets only owner one-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "parentClosureEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "If this is entity metadata for a junction closure table then its owner closure table metadata will be set here." + }, + "parentEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Parent's entity metadata. Used in inheritance patterns." + }, + "primaryColumns": { + "description": "Gets the primary columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "propertiesMap": { + "$ref": "#/definitions/ObjectLiteral", + "description": "Map of columns and relations of the entity.\n\nexample: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\nThis method will create following object:\n{ id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }" + }, + "relationCounts": { + "description": "Entity's relation id metadatas.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationIds": { + "description": "Entity's relation id metadatas.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relations": { + "description": "Relations of the entity, including relations that are coming from the embeddeds of this entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "relationsWithJoinColumns": { + "description": "Gets only owner one-to-one and many-to-one relations.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema will be synchronized for this entity or not.", + "type": "boolean" + }, + "tableMetadataArgs": { + "$ref": "#/definitions/TableMetadataArgs", + "description": "Metadata arguments used to build this entity metadata." + }, + "tableName": { + "description": "Entity table name in the database.\nThis is final table name of the entity.\nThis name already passed naming strategy, and generated based on\nmultiple criteria, including user table name and global table prefix.", + "type": "string" + }, + "tableNameWithoutPrefix": { + "description": "Gets the table name without global table prefix.\nWhen querying table you need a table name with prefix, but in some scenarios,\nfor example when you want to name a junction table that contains names of two other tables,\nyou may want a table name without prefix.", + "type": "string" + }, + "tablePath": { + "description": "Entity table path. Contains database name, schema name and table name.\nE.g. myDB.mySchema.myTable", + "type": "string" + }, + "tableType": { + "$ref": "#/definitions/TableType", + "description": "Table type. Tables can be closure, junction, etc." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which this entity metadata is bind.\nNote, that when using table inheritance patterns target can be different rather then table's target.\nFor virtual tables which lack of real entity (like junction tables) target is equal to their table name." + }, + "targetName": { + "description": "Gets the name of the target.", + "type": "string" + }, + "treeChildrenRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Tree children relation. Used only in tree-tables." + }, + "treeLevelColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Special column that stores tree level in tree entities." + }, + "treeOptions": { + "$ref": "#/definitions/ClosureTreeOptions", + "description": "Indicates if this entity is a tree, what options of tree it has." + }, + "treeParentRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Tree parent relation. Used only in tree-tables." + }, + "treeType": { + "description": "Indicates if this entity is a tree, what type of tree it is.", + "enum": [ + "adjacency-list", + "closure-table", + "materialized-path", + "nested-set" + ], + "type": "string" + }, + "uniques": { + "description": "Entity's unique metadatas.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "updateDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains an update date value." + }, + "versionColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains an entity version." + }, + "withoutRowid": { + "description": "Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement", + "type": "boolean" + } + }, + "type": "object" + }, + "EntitySchema": { + "description": "Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.", + "properties": { + "options": { + "$ref": "#/definitions/EntitySchemaOptions" + } + }, + "type": "object" + }, + "EntitySchemaCheckOptions": { + "properties": { + "expression": { + "description": "Check expression.", + "type": "string" + }, + "name": { + "description": "Check constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaExclusionOptions": { + "properties": { + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "name": { + "description": "Exclusion constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaIndexOptions": { + "properties": { + "columns": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "Index column names." + }, + "fulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "name": { + "description": "Index name.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "sparse": { + "description": "If true, the index only references documents with the specified field.\nThese indexes use less space but behave differently in some situations (particularly sorts).\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "spatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL and PostgreSQL.", + "type": "boolean" + }, + "synchronize": { + "description": "Indicates if index must sync with database index.", + "type": "boolean" + }, + "unique": { + "description": "Indicates if this index must be unique or not.", + "type": "boolean" + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaOptions": { + "description": "Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.", + "properties": { + "checks": { + "description": "Entity check options.", + "items": { + "$ref": "#/definitions/EntitySchemaCheckOptions" + }, + "type": "array" + }, + "columns": { + "$ref": "#/definitions/{[x:string]:EntitySchemaColumnOptions|undefined;}", + "description": "Entity column's options." + }, + "database": { + "description": "Database name. Used in MySql and Sql Server.", + "type": "string" + }, + "exclusions": { + "description": "Entity exclusion options.", + "items": { + "$ref": "#/definitions/EntitySchemaExclusionOptions" + }, + "type": "array" + }, + "expression": { + "description": "View expression.", + "type": [ + "string", + "object" + ] + }, + "extends": { + "description": "Name of the schema it extends.", + "type": "string" + }, + "indices": { + "description": "Entity indices options.", + "items": { + "$ref": "#/definitions/EntitySchemaIndexOptions" + }, + "type": "array" + }, + "name": { + "description": "Entity name.", + "type": "string" + }, + "orderBy": { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + "relations": { + "$ref": "#/definitions/{[x:string]:EntitySchemaRelationOptions|undefined;}", + "description": "Entity relation's options." + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema synchronization is enabled or disabled for this entity.\nIf it will be set to false then schema sync will and migrations ignore this entity.\nBy default schema synchronization is enabled for all entities.", + "type": "boolean" + }, + "tableName": { + "description": "Table name.", + "type": "string" + }, + "target": { + "$ref": "#/definitions/Function", + "description": "Target bind to this entity schema. Optional." + }, + "type": { + "description": "Table type.", + "enum": [ + "closure", + "closure-junction", + "entity-child", + "junction", + "regular", + "view" + ], + "type": "string" + }, + "uniques": { + "description": "Entity uniques options.", + "items": { + "$ref": "#/definitions/EntitySchemaUniqueOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntitySchemaUniqueOptions": { + "properties": { + "columns": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "Unique column names." + }, + "name": { + "description": "Unique constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySubscriberInterface": { + "description": "Classes that implement this interface are subscribers that subscribe for the specific events in the ORM.", + "type": "object" + }, + "ErrorObject,unknown>": { + "properties": { + "data": { + }, + "instancePath": { + "type": "string" + }, + "keyword": { + "type": "string" + }, + "message": { + "type": "string" + }, + "params": { + "$ref": "#/definitions/Record" + }, + "parentSchema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + } + ] + }, + "propertyName": { + "type": "string" + }, + "schema": { + }, + "schemaPath": { + "type": "string" + } + }, + "type": "object" + }, + "Evaluated": { + "properties": { + "dynamicItems": { + "type": "boolean" + }, + "dynamicProps": { + "type": "boolean" + }, + "items": { + "anyOf": [ + { + "enum": [ + true + ], + "type": "boolean" + }, + { + "type": "number" + } + ] + }, + "props": { + "anyOf": [ + { + "$ref": "#/definitions/{[x:string]:true|undefined;}" + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "Event": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "$ref": "#/definitions/EVENT" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "EventListenerType": { + "description": "All types that entity listener can be.", + "enum": [ + "after-insert", + "after-load", + "after-remove", + "after-update", + "before-insert", + "before-remove", + "before-update" + ], + "type": "string" + }, + "EventOpts": { + "properties": { + "acknowledge": { + "$ref": "#/definitions/Function" + }, + "cancel": { + "$ref": "#/definitions/Function" + }, + "channel": { + "$ref": "#/definitions/Channel_1" + }, + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "$ref": "#/definitions/EVENT" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ExclusionMetadata": { + "description": "Exclusion metadata contains all information about table's exclusion constraints.", + "properties": { + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this exclusion constraint is applied." + }, + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "givenName": { + "description": "User specified exclusion constraint name.", + "type": "string" + }, + "name": { + "description": "Final exclusion constraint name.\nIf exclusion constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf exclusion constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "ExpoConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "driver": { + "description": "Driver module" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "expo" + ], + "type": "string" + } + }, + "type": "object" + }, + "ForeignKeyMetadata": { + "description": "Contains all information about entity's foreign key.", + "properties": { + "columnNames": { + "description": "Gets array of column names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "columns": { + "description": "Array of columns of this foreign key.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "deferrable": { + "description": "When to check the constraints of a foreign key.", + "enum": [ + "INITIALLY DEFERRED", + "INITIALLY IMMEDIATE" + ], + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this foreign key is." + }, + "name": { + "description": "Gets foreign key name.", + "type": "string" + }, + "onDelete": { + "description": "What to do with a relation on deletion of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "onUpdate": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "referencedColumnNames": { + "description": "Gets array of referenced column names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "referencedColumns": { + "description": "Array of referenced columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "referencedEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata which this foreign key references." + }, + "referencedTablePath": { + "description": "Gets the table name to which this foreign key is referenced.", + "type": "string" + } + }, + "type": "object" + }, + "Function": { + "properties": { + "arguments": { + }, + "caller": { + "$ref": "#/definitions/Function" + }, + "length": { + "type": "number" + }, + "name": { + "type": "string" + }, + "prototype": { + } + }, + "type": "object" + }, + "Guild": { + "properties": { + "__filename": { + "type": "string" + }, + "afk_channel": { + "$ref": "#/definitions/Channel" + }, + "afk_timeout": { + "type": "number" + }, + "banner": { + "type": "string" + }, + "channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "default_message_notifications": { + "type": "number" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "emoji_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "emojis": { + "items": { + "$ref": "#/definitions/Emoji" + }, + "type": "array" + }, + "explicit_content_filter": { + "type": "number" + }, + "features": { + "items": { + "type": "string" + }, + "type": "array" + }, + "icon": { + "type": "string" + }, + "id": { + "type": "string" + }, + "large": { + "type": "boolean" + }, + "max_members": { + "type": "number" + }, + "max_presences": { + "type": "number" + }, + "max_video_channel_users": { + "type": "number" + }, + "member_count": { + "type": "number" + }, + "member_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "members": { + "items": { + "$ref": "#/definitions/Member" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mfa_level": { + "type": "number" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "owner_id": { + "type": "string" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "number" + }, + "premium_tier": { + "type": "number" + }, + "presence_count": { + "type": "number" + }, + "public_updates_channel": { + "$ref": "#/definitions/Channel" + }, + "region": { + "type": "string" + }, + "role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "rules_channel": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "splash": { + "type": "string" + }, + "system_channel": { + "$ref": "#/definitions/Channel" + }, + "system_channel_flags": { + "type": "number" + }, + "unavailable": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "vanity_url": { + "$ref": "#/definitions/Invite" + }, + "verification_level": { + "type": "number" + }, + "voice_state_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "voice_states": { + "items": { + "$ref": "#/definitions/VoiceState" + }, + "type": "array" + }, + "welcome_screen": { + "properties": { + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "welcome_channels": { + "items": { + "properties": { + "channel_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "widget_channel": { + "$ref": "#/definitions/Channel" + }, + "widget_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "GuildBanAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_BAN_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildBanRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_BAN_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Guild" + }, + "event": { + "enum": [ + "GUILD_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "id": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildEmojiUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "emojis": { + "items": { + "$ref": "#/definitions/Emoji" + }, + "type": "array" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_EMOJI_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildIntegrationUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_INTEGRATIONS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/PublicMember" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "GUILD_MEMBER_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBER_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "nick": { + "type": "string" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMembersChunkEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "chunk_count": { + "type": "number" + }, + "chunk_index": { + "type": "number" + }, + "guild_id": { + "type": "string" + }, + "members": { + "items": { + "$ref": "#/definitions/PublicMember" + }, + "type": "array" + }, + "nonce": { + "type": "string" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "presences": { + "items": { + "$ref": "#/definitions/Presence" + }, + "type": "array" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBERS_CHUNK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role": { + "$ref": "#/definitions/Role" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role": { + "$ref": "#/definitions/Role" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Guild" + }, + "event": { + "enum": [ + "GUILD_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "IndexMetadata": { + "description": "Index metadata contains all information about table's index.", + "properties": { + "columnNamesWithOrderingMap": { + "additionalProperties": { + "type": "number" + }, + "description": "Map of column names with order set.\nUsed only by MongoDB driver.", + "type": "object" + }, + "columns": { + "description": "Indexed columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata if this index was applied on embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this index is applied." + }, + "expireAfterSeconds": { + "description": "Specifies a time to live, in seconds.\nThis option is only supported for mongodb database.", + "type": "number" + }, + "givenColumnNames": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "User specified column names." + }, + "givenName": { + "description": "User specified index name.", + "type": "string" + }, + "isBackground": { + "description": "Builds the index in the background so that building an index an does not block other database activities.\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "isFulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "isSparse": { + "description": "If true, the index only references documents with the specified field.\nThese indexes use less space but behave differently in some situations (particularly sorts).\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "isSpatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if this index must be unique.", + "type": "boolean" + }, + "name": { + "description": "Final index name.\nIf index name was given by a user then it stores normalized (by naming strategy) givenName.\nIf index name was not given then its generated.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if this index must synchronize with database index.", + "type": "boolean" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "Intents": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "Interaction": { + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "properties": { + }, + "type": "object" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "member_id": { + "type": "string" + }, + "token": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "InteractionApplicationCommandCallbackData": { + "properties": { + "allowed_mentions": { + "$ref": "#/definitions/AllowedMentions" + }, + "content": { + "type": "string" + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "tts": { + "type": "boolean" + } + }, + "type": "object" + }, + "InteractionCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Interaction" + }, + "event": { + "enum": [ + "INTERACTION_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "InteractionResponseType": { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ], + "type": "number" + }, + "InteractionType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "InvalidatedEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "enum": [ + "INVALIDATED" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Invite": { + "properties": { + "__filename": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "number" + }, + "target_usser_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "uses": { + "type": "number" + } + }, + "type": "object" + }, + "InviteCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "INVITE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "InviteDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "INVITE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "KeyObject": { + "properties": { + "passphrase": { + "description": "Optional passphrase.", + "type": "string" + }, + "pem": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Private keys in PEM format." + } + }, + "type": "object" + }, + "ListenEventOpts": { + "properties": { + "acknowledge": { + "type": "boolean" + }, + "channel": { + "$ref": "#/definitions/Channel_1" + } + }, + "type": "object" + }, + "LocalRefs": { + "type": "object" + }, + "Logger": { + "description": "Performs logging of the events in TypeORM.", + "type": "object" + }, + "MappedColumnTypes": { + "description": "Orm has special columns and we need to know what database column types should be for those types.\nColumn types are driver dependant.", + "properties": { + "cacheDuration": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for duration column in query result cache table." + }, + "cacheId": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for identifier column in query result cache table." + }, + "cacheIdentifier": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for identifier column in query result cache table." + }, + "cacheQuery": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for query column in query result cache table." + }, + "cacheResult": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for result column in query result cache table." + }, + "cacheTime": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for time column in query result cache table." + }, + "createDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the create date column." + }, + "createDateDefault": { + "description": "Default value should be used by a database for \"created date\" column.", + "type": "string" + }, + "createDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "deleteDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the delete date column." + }, + "deleteDateNullable": { + "description": "Nullable value should be used by a database for \"deleted date\" column.", + "type": "boolean" + }, + "deleteDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "metadataDatabase": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata database name column in typeorm metadata table." + }, + "metadataName": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata name column in typeorm metadata table." + }, + "metadataSchema": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata schema name column in typeorm metadata table." + }, + "metadataTable": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata table name column in typeorm metadata table." + }, + "metadataType": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata type column in typeorm metadata table.\nStores type of metadata. E.g. 'VIEW' or 'CHECK'" + }, + "metadataValue": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata value column in typeorm metadata table." + }, + "migrationId": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type of id column used for migrations table." + }, + "migrationName": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for migration name column used for migrations table." + }, + "migrationTimestamp": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type of timestamp column used for migrations table." + }, + "treeLevel": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the tree level column." + }, + "updateDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the update date column." + }, + "updateDateDefault": { + "description": "Default value should be used by a database for \"updated date\" column.", + "type": "string" + }, + "updateDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "version": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the version column." + } + }, + "type": "object" + }, + "Member": { + "properties": { + "__filename": { + "type": "string" + }, + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "read_state": { + "$ref": "#/definitions/Record" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "settings": { + "$ref": "#/definitions/UserGuildSettings" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Message": { + "properties": { + "__filename": { + "type": "string" + }, + "activity": { + "properties": { + "party_id": { + "type": "string" + }, + "type": { + "type": "number" + } + }, + "type": "object" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "application_id": { + "type": "string" + }, + "attachments": { + "items": { + "$ref": "#/definitions/Attachment" + }, + "type": "array" + }, + "author": { + "$ref": "#/definitions/User" + }, + "author_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "content": { + "type": "string" + }, + "edited_timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "flags": { + "type": "bigint" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "interaction": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "member_id": { + "type": "string" + }, + "mention_channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "mention_everyone": { + "type": "boolean" + }, + "mention_role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "mention_user_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_users": { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + "message_reference": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nonce": { + "type": [ + "string", + "number" + ] + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pinned": { + "type": "boolean" + }, + "reactions": { + "items": { + "$ref": "#/definitions/Reaction" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "stickers": { + "items": { + }, + "type": "array" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "tts": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "webhook_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageAckEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "manual": { + "type": "boolean" + }, + "mention_count": { + "type": "number" + }, + "message_id": { + "type": "string" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_ACK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageComponent": { + "properties": { + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "custom_id": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "label": { + "type": "string" + }, + "style": { + "type": "number" + }, + "type": { + "type": "number" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "MessageComponentType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "MessageCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "MESSAGE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageDeleteBulkEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_DELETE_BULK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageFields": { + "properties": { + "consumerTag": { + "type": "string" + }, + "deliveryTag": { + "type": "number" + }, + "exchange": { + "type": "string" + }, + "messageCount": { + "type": "number" + }, + "redelivered": { + "type": "boolean" + }, + "routingKey": { + "type": "string" + } + }, + "type": "object" + }, + "MessageFlags": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "MessagePayload": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "MessageProperties": { + "properties": { + "appId": { + }, + "clusterId": { + }, + "contentEncoding": { + }, + "contentType": { + }, + "correlationId": { + }, + "deliveryMode": { + }, + "expiration": { + }, + "headers": { + "$ref": "#/definitions/MessagePropertyHeaders" + }, + "messageId": { + }, + "priority": { + }, + "replyTo": { + }, + "timestamp": { + }, + "type": { + }, + "userId": { + } + }, + "type": "object" + }, + "MessagePropertyHeaders": { + "additionalProperties": { + }, + "properties": { + "x-death": { + "items": { + "$ref": "#/definitions/XDeath" + }, + "type": "array" + }, + "x-first-death-exchange": { + "type": "string" + }, + "x-first-death-queue": { + "type": "string" + }, + "x-first-death-reason": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "message_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveAllEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE_ALL" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveEmojiEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE_EMOJI" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 14, + 15, + 19, + 2, + 20, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "type": "number" + }, + "MessageUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "MESSAGE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MigrationInterface": { + "description": "Migrations should implement this interface and all its methods.", + "properties": { + "name": { + "description": "Optional migration name, defaults to class name.", + "type": "string" + } + }, + "type": "object" + }, + "MongoClient": { + "description": "Creates a new MongoClient instance.", + "type": "object" + }, + "MongoConnectionOptions": { + "description": "MongoDB specific connection options.\nSynced with http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html", + "properties": { + "acceptableLatencyMS": { + "description": "Sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms).\nDefault: 15", + "type": "number" + }, + "appname": { + "description": "The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections", + "type": "string" + }, + "authMechanism": { + "description": "Sets the authentication mechanism that MongoDB will use to authenticate the connection", + "type": "string" + }, + "authSource": { + "description": "If the database authentication is dependent on another databaseName.", + "type": "string" + }, + "autoEncryption": { + "description": "Automatic Client-Side Field Level Encryption configuration." + }, + "autoReconnect": { + "description": "Reconnect on error. Default: true", + "type": "boolean" + }, + "auto_reconnect": { + "description": "Enable auto reconnecting for single server instances. Default: true", + "type": "boolean" + }, + "bufferMaxEntries": { + "description": "Sets a cap on how many operations the driver will buffer up before giving up on getting a working connection,\ndefault is -1 which is unlimited.", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "checkServerIdentity": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "boolean" + } + ], + "description": "Ensure we check server identify during SSL, set to false to disable checking. Only works for Node 0.12.x or higher. You can pass in a boolean or your own checkServerIdentity override function\nDefault: true" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "compression": { + "description": "Type of compression to use: snappy or zlib" + }, + "connectTimeoutMS": { + "description": "TCP Connection timeout setting. Default: 30000", + "type": "number" + }, + "connectWithNoPrimary": { + "description": "Sets if the driver should connect even if no primary is available. Default: false", + "type": "boolean" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domainsEnabled": { + "description": "Enable the wrapping of the callback in the current domain, disabled by default to avoid perf hit. Default: false", + "type": "boolean" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "family": { + "description": "Version of IP stack. Can be 4, 6.\nIf undefined, will attempt to connect with IPv6, and will fall back to IPv4 on failure", + "type": "number" + }, + "forceServerObjectId": { + "description": "Force server to assign _id values instead of driver. Default: false", + "type": "boolean" + }, + "fsync": { + "description": "Specify a file sync write concern. Default: false", + "type": "boolean" + }, + "ha": { + "description": "Control if high availability monitoring runs for Replicaset or Mongos proxies. Default true", + "type": "boolean" + }, + "haInterval": { + "description": "The High availability period for replicaset inquiry. Default: 10000", + "type": "number" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "hostReplicaSet": { + "description": "Database host replica set.", + "type": "string" + }, + "ignoreUndefined": { + "description": "Specify if the BSON serializer should ignore undefined fields. Default: false", + "type": "boolean" + }, + "j": { + "description": "Specify a journal write concern. Default: false", + "type": "boolean" + }, + "keepAlive": { + "description": "The number of milliseconds to wait before initiating keepAlive on the TCP socket. Default: 30000", + "type": "number" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "loggerLevel": { + "description": "Specify the log level used by the driver logger (error/warn/info/debug).", + "enum": [ + "debug", + "error", + "info", + "warn" + ], + "type": "string" + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "maxStalenessSeconds": { + "description": "Specify a maxStalenessSeconds value for secondary reads, minimum is 90 seconds", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "minSize": { + "description": "If present, the connection pool will be initialized with minSize connections, and will never dip below minSize connections", + "type": "number" + }, + "monitorCommands": { + "description": "Enable command monitoring for this client. Default: false", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "noDelay": { + "description": "TCP Socket NoDelay option. Default: true", + "type": "boolean" + }, + "numberOfRetries": { + "description": "The number of retries for a tailable cursor. Default: 5", + "type": "number" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pkFactory": { + "description": "A primary key factory object for generation of custom _id keys." + }, + "poolSize": { + "description": "Set the maximum poolSize for each individual server or proxy connection.", + "type": "number" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "promiseLibrary": { + "description": "A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible." + }, + "promoteBuffers": { + "description": "Promotes Binary BSON values to native Node Buffers. Default: false", + "type": "boolean" + }, + "promoteLongs": { + "description": "Promotes Long values to number if they fit inside the 53 bits resolution. Default: true", + "type": "boolean" + }, + "promoteValues": { + "description": "Promotes BSON values to native types where possible, set to false to only receive wrapper types. Default: true", + "type": "boolean" + }, + "raw": { + "description": "Return document results as raw BSON buffers. Default: false", + "type": "boolean" + }, + "readConcern": { + "description": "Specify a read concern for the collection. (only MongoDB 3.2 or higher supported)." + }, + "readPreference": { + "anyOf": [ + { + "$ref": "#/definitions/ReadPreference" + }, + { + "type": "string" + } + ], + "description": "The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY,\nReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST)." + }, + "readPreferenceTags": { + "description": "Read preference tags", + "items": { + }, + "type": "array" + }, + "reconnectInterval": { + "description": "Server will wait #milliseconds between retries. Default 1000", + "type": "number" + }, + "reconnectTries": { + "description": "Server attempt to reconnect #times. Default 30", + "type": "number" + }, + "replicaSet": { + "description": "The name of the replicaset to connect to", + "type": "string" + }, + "secondaryAcceptableLatencyMS": { + "description": "Sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms).\nDefault: 15", + "type": "number" + }, + "serializeFunctions": { + "description": "Serialize functions on any object. Default: false", + "type": "boolean" + }, + "socketTimeoutMS": { + "description": "TCP Socket timeout setting. Default: 360000", + "type": "number" + }, + "ssl": { + "description": "Use ssl connection (needs to have a mongod server with ssl support). Default: false", + "type": "boolean" + }, + "sslCA": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + } + ], + "description": "Array of valid certificates either as Buffers or Strings\n(needs to have a mongod server with ssl support, 2.4 or higher)." + }, + "sslCRL": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "SSL Certificate revocation list binary buffer\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslCert": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "String or buffer containing the certificate we wish to present\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslKey": { + "description": "String or buffer containing the certificate private key we wish to present\n(needs to have a mongod server with ssl support, 2.4 or higher)", + "type": "string" + }, + "sslPass": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "String or buffer containing the certificate password\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslValidate": { + "description": "Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher).\nDefault: true", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mongodb" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useNewUrlParser": { + "description": "Determines whether or not to use the new url parser. Default: false", + "type": "boolean" + }, + "useUnifiedTopology": { + "description": "Determines whether or not to use the new Server Discovery and Monitoring engine. Default: false\nhttps://github.com/mongodb/node-mongodb-native/releases/tag/v3.2.1", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + }, + "validateOptions": { + "description": "Validate MongoClient passed in options for correctness. Default: false" + }, + "w": { + "description": "The write concern.", + "type": [ + "string", + "number" + ] + }, + "wtimeout": { + "description": "The write concern timeout value.", + "type": "number" + } + }, + "type": "object" + }, + "MongoEntityManager": { + "description": "Entity manager supposed to work with any entity, automatically find its repository and call its methods,\nwhatever entity type are you passing.\n\nThis implementation is used for MongoDB driver which has some specifics in its EntityManager.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "mongoQueryRunner": { + "$ref": "#/definitions/MongoQueryRunner" + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "MongoQueryRunner": { + "description": "Runs queries on a single MongoDB connection.", + "properties": { + "broadcaster": { + "$ref": "#/definitions/Broadcaster", + "description": "Broadcaster used on this query runner to broadcast entity events." + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this query runner." + }, + "data": { + "description": "Stores temporarily user data.\nUseful for sharing data with subscribers.", + "properties": { + }, + "type": "object" + }, + "databaseConnection": { + "$ref": "#/definitions/MongoClient", + "description": "Real database connection from a connection pool used to perform queries." + }, + "isReleased": { + "description": "Indicates if connection for this query runner is released.\nOnce its released, query runner cannot run queries anymore.\nAlways false for mongodb since mongodb has a single query executor instance.", + "type": "boolean" + }, + "isTransactionActive": { + "description": "Indicates if transaction is active in this query executor.\nAlways false for mongodb since mongodb does not support transactions.", + "type": "boolean" + }, + "loadedTables": { + "description": "All synchronized tables in the database.", + "items": { + "$ref": "#/definitions/Table" + }, + "type": "array" + }, + "loadedViews": { + "description": "All synchronized views in the database.", + "items": { + "$ref": "#/definitions/View" + }, + "type": "array" + }, + "manager": { + "$ref": "#/definitions/MongoEntityManager", + "description": "Entity manager working only with current query runner." + } + }, + "type": "object" + }, + "MuteConfig": { + "properties": { + "end_time": { + "type": "number" + }, + "selected_time_window": { + "type": "number" + } + }, + "type": "object" + }, + "MysqlConnectionCredentialsOptions": { + "description": "MySQL specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "socketPath": { + "description": "Database socket path", + "type": "string" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "MysqlConnectionOptions": { + "description": "MySQL specific connection options.", + "properties": { + "acquireTimeout": { + "description": "The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: 10000)\nThis difference between connectTimeout and acquireTimeout is subtle and is described in the mysqljs/mysql docs\nhttps://github.com/mysqljs/mysql/tree/master#pool-options", + "type": "number" + }, + "bigNumberStrings": { + "description": "Enabling both supportBigNumbers and bigNumberStrings forces big numbers (BIGINT and DECIMAL columns) to be always\nreturned as JavaScript String objects (Default: false). Enabling supportBigNumbers but leaving bigNumberStrings\ndisabled will return big numbers as String objects only when they cannot be accurately represented with\n[JavaScript Number objects](http://ecma262-5.com/ELS5_HTML.htm#Section_8.5) (which happens when they exceed the [-2^53, +2^53] range),\notherwise they will be returned as Number objects. This option is ignored if supportBigNumbers is disabled.", + "type": "boolean" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "charset": { + "description": "The charset for the connection. This is called \"collation\" in the SQL-level of MySQL (like utf8_general_ci).\nIf a SQL-level charset is specified (like utf8mb4) then the default collation for that charset is used.\nDefault: 'UTF8_GENERAL_CI'", + "type": "string" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectTimeout": { + "description": "The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: 10000)", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dateStrings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "boolean" + } + ], + "description": "Force date types (TIMESTAMP, DATETIME, DATE) to be returned as strings rather then inflated into JavaScript Date objects.\nCan be true/false or an array of type names to keep as strings." + }, + "debug": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "boolean" + } + ], + "description": "Prints protocol details to stdout. Can be true/false or an array of packet type names that should be printed.\n(Default: false)" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "flags": { + "description": "List of connection flags to use other than the default ones. It is also possible to blacklist default ones.\nFor more information, check https://github.com/mysqljs/mysql#connection-flags.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "insecureAuth": { + "description": "Allow connecting to MySQL instances that ask for the old (insecure) authentication method. (Default: false)", + "type": "boolean" + }, + "legacySpatialSupport": { + "description": "Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n(Default: true)", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "multipleStatements": { + "description": "Allow multiple mysql statements per query. Be careful with this, it could increase the scope of SQL injection attacks.\n(Default: false)", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "canRetry": { + "description": "If true, PoolCluster will attempt to reconnect when connection fails. (Default: true)", + "type": "boolean" + }, + "master": { + "$ref": "#/definitions/MysqlConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "removeNodeErrorCount": { + "description": "If connection fails, node's errorCount increases.\nWhen errorCount is greater than removeNodeErrorCount, remove a node in the PoolCluster. (Default: 5)", + "type": "number" + }, + "restoreNodeTimeout": { + "description": "If connection fails, specifies the number of milliseconds before another connection attempt will be made.\nIf set to 0, then node will be removed instead and never re-used. (Default: 0)", + "type": "number" + }, + "selector": { + "description": "Determines how slaves are selected:\nRR: Select one alternately (Round-Robin).\nRANDOM: Select the node by random function.\nORDER: Select the first node available unconditionally.", + "enum": [ + "ORDER", + "RANDOM", + "RR" + ], + "type": "string" + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/MysqlConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "socketPath": { + "description": "Database socket path", + "type": "string" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "supportBigNumbers": { + "description": "When dealing with big numbers (BIGINT and DECIMAL columns) in the database, you should enable this option (Default: false)", + "type": "boolean" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "timezone": { + "description": "The timezone configured on the MySQL server.\nThis is used to type cast server date/time values to JavaScript Date object and vice versa.\nThis can be 'local', 'Z', or an offset in the form +HH:MM or -HH:MM. (Default: 'local')", + "type": "string" + }, + "trace": { + "description": "Generates stack traces on Error to include call site of library entrance (\"long stack traces\").\nSlight performance penalty for most calls. (Default: true)", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mariadb", + "mysql" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "Name": { + "properties": { + "names": { + "$ref": "#/definitions/UsedNames" + }, + "str": { + "type": "string" + } + }, + "type": "object" + }, + "NameValue": { + "properties": { + "code": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "key": { + }, + "ref": { + } + }, + "type": "object" + }, + "NamingStrategyInterface": { + "description": "Naming strategy defines how auto-generated names for such things like table name, or table column gonna be\ngenerated.", + "properties": { + "materializedPathColumnName": { + "description": "Column name for materialized paths.", + "type": "string" + }, + "name": { + "description": "Naming strategy name.", + "type": "string" + }, + "nestedSetColumnNames": { + "description": "Column names for nested sets.", + "properties": { + "left": { + "type": "string" + }, + "right": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NativescriptConnectionOptions": { + "description": "NativeScript-specific connection options.", + "properties": { + "androidFlags": { + "description": "Flags to pass to SQLite when opening the database on Android. (see https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html)", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "driver": { + "description": "The driver object\nyou should pass `require('nativescript-sqlite') here" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "iosFlags": { + "description": "Flags to pass to SQLite when opening the database on iOS. (see https://www.sqlite.org/c3ref/open.html)", + "type": "number" + }, + "key": { + "description": "The key to use for for using/opening encrypted databases. (requires the \"Encrypted Plugin\")", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrate": { + "description": "Migrates a Encrypted Sql database from v3 to the new v4. If you are a new user you do not need to set this flag as new created databases will already be in v4.\nIf you are upgrading a app that used v1.3.0 or earlier of NS-Sqlite-Encrypted; then you will probably want to set this flag to true. (requires the \"Encrypted Plugin\")", + "type": "boolean" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "multithreading": { + "description": "Whether to enable background multitasking. All SQL is ran on a background worker thread. (requires the \"Commercial Plugin\")", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "readOnly": { + "description": "Whether to mark the mark the database as read only on open (iOS only).", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "nativescript" + ], + "type": "string" + } + }, + "type": "object" + }, + "NtlmAuthentication": { + "properties": { + "options": { + "properties": { + "domain": { + "description": "Once you set domain for ntlm authentication type, driver will connect to SQL Server using domain login.\n\nThis is necessary for forming a connection using ntlm type", + "type": "string" + }, + "password": { + "description": "Password from your windows account.", + "type": "string" + }, + "userName": { + "description": "User name from your windows account.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "ntlm" + ], + "type": "string" + } + }, + "type": "object" + }, + "Number": { + "type": "object" + }, + "NumberConstructor": { + "properties": { + "EPSILON": { + "type": "number" + }, + "MAX_SAFE_INTEGER": { + "type": "number" + }, + "MAX_VALUE": { + "type": "number" + }, + "MIN_SAFE_INTEGER": { + "type": "number" + }, + "MIN_VALUE": { + "type": "number" + }, + "NEGATIVE_INFINITY": { + "type": "number" + }, + "NaN": { + "type": "number" + }, + "POSITIVE_INFINITY": { + "type": "number" + }, + "prototype": { + "$ref": "#/definitions/Number" + } + }, + "type": "object" + }, + "ObjectLiteral": { + "additionalProperties": { + }, + "description": "Interface of the simple literal object with any string keys.", + "type": "object" + }, + "Omit": { + "properties": { + "__filename": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "getFilepath": { + "type": "object" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "init": { + "type": "object" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "number" + }, + "target_usser_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "uses": { + "type": "number" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "__filename": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "deaf": { + "type": "boolean" + }, + "getFilepath": { + "type": "object" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "init": { + "type": "object" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "read_state": { + "$ref": "#/definitions/Record" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "__filename": { + "type": "string" + }, + "activity": { + "properties": { + "party_id": { + "type": "string" + }, + "type": { + "type": "number" + } + }, + "type": "object" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "application_id": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "attachments": { + "items": { + "$ref": "#/definitions/Attachment" + }, + "type": "array" + }, + "author": { + "$ref": "#/definitions/User" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "content": { + "type": "string" + }, + "edited_timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "flags": { + "type": "bigint" + }, + "getFilepath": { + "type": "object" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "init": { + "type": "object" + }, + "interaction": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "member_id": { + "type": "string" + }, + "mention_channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "mention_everyone": { + "type": "boolean" + }, + "mention_role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "mention_user_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_users": { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + "message_reference": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nonce": { + "type": [ + "string", + "number" + ] + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pinned": { + "type": "boolean" + }, + "reactions": { + "items": { + "$ref": "#/definitions/Reaction" + }, + "type": "array" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "stickers": { + "items": { + }, + "type": "array" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "toJSON": { + "type": "object" + }, + "tts": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "validate": { + "type": "object" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "webhook_id": { + "type": "string" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "__filename": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "getFilepath": { + "type": "object" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "init": { + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "OracleConnectionCredentialsOptions": { + "description": "Oracle specific connection credential options.", + "properties": { + "connectString": { + "description": "Embedded TNS Connection String", + "type": "string" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "serviceName": { + "description": "Connection Service Name.", + "type": "string" + }, + "sid": { + "description": "Connection SID.", + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "OracleConnectionOptions": { + "description": "Oracle-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectString": { + "description": "Embedded TNS Connection String", + "type": "string" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/OracleConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/OracleConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name. By default is \"public\".", + "type": "string" + }, + "serviceName": { + "description": "Connection Service Name.", + "type": "string" + }, + "sid": { + "description": "Connection SID.", + "type": "string" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "oracle" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "PartialEmoji": { + "properties": { + "animated": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "PermissionCache": { + "properties": { + "channel": { + "anyOf": [ + { + "$ref": "#/definitions/Channel" + }, + { + "type": "null" + } + ] + }, + "guild": { + "anyOf": [ + { + "$ref": "#/definitions/Guild" + }, + { + "type": "null" + } + ] + }, + "member": { + "anyOf": [ + { + "$ref": "#/definitions/Member" + }, + { + "type": "null" + } + ] + }, + "roles": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "PermissionResolvable": { + "anyOf": [ + { + "$ref": "#/definitions/Permissions" + }, + { + "items": { + "$ref": "#/definitions/PermissionResolvable" + }, + "type": "array" + }, + { + "enum": [ + "ADD_REACTIONS", + "ADMINISTRATOR", + "ATTACH_FILES", + "BAN_MEMBERS", + "CHANGE_NICKNAME", + "CONNECT", + "CREATE_INSTANT_INVITE", + "DEAFEN_MEMBERS", + "EMBED_LINKS", + "KICK_MEMBERS", + "MANAGE_CHANNELS", + "MANAGE_EMOJIS_AND_STICKERS", + "MANAGE_GUILD", + "MANAGE_MESSAGES", + "MANAGE_NICKNAMES", + "MANAGE_ROLES", + "MANAGE_WEBHOOKS", + "MENTION_EVERYONE", + "MOVE_MEMBERS", + "MUTE_MEMBERS", + "PRIORITY_SPEAKER", + "READ_MESSAGE_HISTORY", + "SEND_MESSAGES", + "SEND_TTS_MESSAGES", + "SPEAK", + "STREAM", + "USE_EXTERNAL_EMOJIS", + "USE_VAD", + "VIEW_AUDIT_LOG", + "VIEW_CHANNEL", + "VIEW_GUILD_INSIGHTS" + ], + "type": "string" + }, + { + "type": [ + "number", + "bigint" + ] + } + ] + }, + "PermissionString": { + "enum": [ + "ADD_REACTIONS", + "ADMINISTRATOR", + "ATTACH_FILES", + "BAN_MEMBERS", + "CHANGE_NICKNAME", + "CONNECT", + "CREATE_INSTANT_INVITE", + "DEAFEN_MEMBERS", + "EMBED_LINKS", + "KICK_MEMBERS", + "MANAGE_CHANNELS", + "MANAGE_EMOJIS_AND_STICKERS", + "MANAGE_GUILD", + "MANAGE_MESSAGES", + "MANAGE_NICKNAMES", + "MANAGE_ROLES", + "MANAGE_WEBHOOKS", + "MENTION_EVERYONE", + "MOVE_MEMBERS", + "MUTE_MEMBERS", + "PRIORITY_SPEAKER", + "READ_MESSAGE_HISTORY", + "SEND_MESSAGES", + "SEND_TTS_MESSAGES", + "SPEAK", + "STREAM", + "USE_EXTERNAL_EMOJIS", + "USE_VAD", + "VIEW_AUDIT_LOG", + "VIEW_CHANNEL", + "VIEW_GUILD_INSIGHTS" + ], + "type": "string" + }, + "Permissions": { + "properties": { + "bitfield": { + "type": "bigint" + }, + "cache": { + "properties": { + "channel": { + "anyOf": [ + { + "$ref": "#/definitions/Channel" + }, + { + "type": "null" + } + ] + }, + "guild": { + "anyOf": [ + { + "$ref": "#/definitions/Guild" + }, + { + "type": "null" + } + ] + }, + "member": { + "anyOf": [ + { + "$ref": "#/definitions/Member" + }, + { + "type": "null" + } + ] + }, + "roles": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PlainObjectToNewEntityTransformer": { + "description": "Transforms plain old javascript object\nEntity is constructed based on its entity metadata.", + "properties": { + "groupAndTransform": { + "description": "Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\nwe need to group our result and we must have some unique id (primary key in our case)" + } + }, + "type": "object" + }, + "PostgresConnectionCredentialsOptions": { + "description": "Postgres specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": [ + "string", + "object" + ] + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "PostgresConnectionOptions": { + "description": "Postgres-specific connection options.", + "properties": { + "applicationName": { + "description": "sets the application_name var to help db administrators identify\nthe service using this connection. Defaults to 'undefined'", + "type": "string" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectTimeoutMS": { + "description": "The milliseconds before a timeout occurs during the initial connection to the postgres\nserver. If undefined, or set to 0, there is no timeout. Defaults to undefined.", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "installExtensions": { + "description": "Automatically install postgres extensions", + "type": "boolean" + }, + "logNotifications": { + "description": "Include notification messages from Postgres server in client logs", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": [ + "string", + "object" + ] + }, + "poolErrorHandler": { + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/PostgresConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/PostgresConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name.", + "type": "string" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "postgres" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + }, + "uuidExtension": { + "description": "The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\nIf pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\nIf uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.", + "enum": [ + "pgcrypto", + "uuid-ossp" + ], + "type": "string" + } + }, + "type": "object" + }, + "Presence": { + "properties": { + "activities": { + "items": { + "$ref": "#/definitions/Activity" + }, + "type": "array" + }, + "client_status": { + "$ref": "#/definitions/ClientStatus" + }, + "guild_id": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "PresenceUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Presence" + }, + "event": { + "enum": [ + "PRESENCE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "PublicMember": { + "properties": { + "__filename": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "deaf": { + "type": "boolean" + }, + "getFilepath": { + "type": "object" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "init": { + "type": "object" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/PublicUser" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "PublicUser": { + "properties": { + "accent_color": { + "type": "number" + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "banner": { + "type": [ + "null", + "string" + ] + }, + "bot": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "bigint" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "PxfObject": { + "properties": { + "buf": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PFX or PKCS12 encoded private key and certificate chain." + }, + "passphrase": { + "description": "Optional passphrase.", + "type": "string" + } + }, + "type": "object" + }, + "QueryResultCache": { + "description": "Implementations of this interface provide different strategies to cache query builder results.", + "type": "object" + }, + "QueryRunner": { + "description": "Runs queries on a single database connection.", + "properties": { + "broadcaster": { + "$ref": "#/definitions/Broadcaster", + "description": "Broadcaster used on this query runner to broadcast entity events." + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this query runner." + }, + "data": { + "$ref": "#/definitions/ObjectLiteral", + "description": "Stores temporarily user data.\nUseful for sharing data with subscribers." + }, + "isReleased": { + "description": "Indicates if connection for this query runner is released.\nOnce its released, query runner cannot run queries anymore.", + "type": "boolean" + }, + "isTransactionActive": { + "description": "Indicates if transaction is in progress.", + "type": "boolean" + }, + "loadedTables": { + "description": "All synchronized tables in the database.", + "items": { + "$ref": "#/definitions/Table" + }, + "type": "array" + }, + "loadedViews": { + "description": "All synchronized views in the database.", + "items": { + "$ref": "#/definitions/View" + }, + "type": "array" + }, + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "Entity manager working only with this query runner." + } + }, + "type": "object" + }, + "RateLimit": { + "properties": { + "__filename": { + "type": "string" + }, + "blocked": { + "type": "boolean" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "hits": { + "type": "number" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReactNativeConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "Storage Location", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "react-native" + ], + "type": "string" + } + }, + "type": "object" + }, + "Reaction": { + "properties": { + "count": { + "type": "number" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "user_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ReadPreference": { + "description": "Creates a new ReadPreference instance.", + "properties": { + "mode": { + "description": "The ReadPreference mode as listed above.", + "type": "string" + }, + "tags": { + "description": "An object representing read preference tags." + } + }, + "type": "object" + }, + "ReadState": { + "properties": { + "__filename": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "last_message": { + "$ref": "#/definitions/Message" + }, + "last_pin_timestamp": { + "format": "date-time", + "type": "string" + }, + "manual": { + "type": "boolean" + }, + "mention_count": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReadyEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/ReadyEventData" + }, + "event": { + "enum": [ + "READY" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReadyEventData": { + "properties": { + "analytics_token": { + "type": "string" + }, + "application": { + "properties": { + "flags": { + "type": "bigint" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "connected_accounts": { + "items": { + "$ref": "#/definitions/ConnectedAccount" + }, + "type": "array" + }, + "consents": { + "properties": { + "personalization": { + "properties": { + "consented": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "country_code": { + "type": "string" + }, + "experiments": { + "items": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 5, + "minItems": 5, + "type": "array" + }, + "type": "array" + }, + "friend_suggestion_count": { + "type": "number" + }, + "geo_ordered_rtc_regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "guild_experiments": { + "items": { + "items": [ + { + "type": "number" + }, + { + "type": "null" + }, + { + "type": "number" + }, + { + "items": [ + { + "items": [ + { + "type": "number" + }, + { + "items": { + "properties": { + "e": { + "type": "number" + }, + "s": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "items": [ + { + "items": [ + { + "type": "number" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "properties": { + "b": { + "type": "number" + }, + "k": { + "items": { + "type": "bigint" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + }, + "type": "array" + }, + "guild_join_requests": { + "items": [ + ], + "maxItems": 0, + "minItems": 0, + "type": "array" + }, + "guilds": { + "items": { + "$ref": "#/definitions/Guild" + }, + "type": "array" + }, + "merged_members": { + "items": { + "items": { + "$ref": "#/definitions/Omit" + }, + "type": "array" + }, + "type": "array" + }, + "private_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "read_state": { + "properties": { + "entries": { + "items": [ + ], + "maxItems": 0, + "minItems": 0, + "type": "array" + }, + "partial": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "relationships": { + "items": { + "$ref": "#/definitions/Relationship" + }, + "type": "array" + }, + "session_id": { + "type": "string" + }, + "shard": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "user": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "bot": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "bigint" + }, + "mfa_enabled": { + "type": "boolean" + }, + "mobile": { + "type": "boolean" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "number" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + } + ] + }, + "user_guild_settings": { + "properties": { + "entries": { + "items": { + "$ref": "#/definitions/UserGuildSettings" + }, + "type": "array" + }, + "partial": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "user_settings": { + "$ref": "#/definitions/UserSettings" + }, + "users": { + "items": { + "properties": { + "avatar": { + "type": [ + "null", + "string" + ] + }, + "bot": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "bigint" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "v": { + "type": "number" + } + }, + "type": "object" + }, + "Record": { + "type": "object" + }, + "Record": { + "type": "object" + }, + "Record": { + "type": "object" + }, + "RelationCountMetadata": { + "description": "Contains all information about entity's relation count.", + "properties": { + "alias": { + "description": "Alias of the joined (destination) table.", + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "queryBuilderFactory": { + "description": "Extra condition applied to \"ON\" section of join.", + "type": "object" + }, + "relation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Relation which needs to be counted." + }, + "relationNameOrFactory": { + "description": "Relation name which need to count.", + "type": [ + "string", + "object" + ] + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "RelationIdMetadata": { + "description": "Contains all information about entity's relation count.", + "properties": { + "alias": { + "description": "Alias of the joined (destination) table.", + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "queryBuilderFactory": { + "description": "Extra condition applied to \"ON\" section of join.", + "type": "object" + }, + "relation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Relation from which ids will be extracted." + }, + "relationNameOrFactory": { + "description": "Relation name which need to count.", + "type": [ + "string", + "object" + ] + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "RelationLoader": { + "description": "Wraps entities and creates getters/setters for their relations\nto be able to lazily load relations when accessing these relations.", + "properties": { + "connection": { + } + }, + "type": "object" + }, + "RelationMetadata": { + "description": "Contains all information about some entity's relation.", + "properties": { + "createForeignKeyConstraints": { + "description": "Indicates whether foreign key constraints will be created for join columns.\nCan be used only for many-to-one and owner one-to-one relations.\nDefaults to true.", + "type": "boolean" + }, + "deferrable": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "INITIALLY DEFERRED", + "INITIALLY IMMEDIATE" + ], + "type": "string" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata where this relation is.\nIf this relation is not in embed then this property value is undefined." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity where this relation is placed.\n\nFor example for @ManyToMany(type => Category) in Post, entityMetadata will be metadata of Post entity." + }, + "foreignKeys": { + "description": "Foreign keys created for this relation.", + "items": { + "$ref": "#/definitions/ForeignKeyMetadata" + }, + "type": "array" + }, + "givenInverseSidePropertyFactory": { + "description": "Inverse side of the relation set by user.\n\nInverse side set in the relation can be either string - property name of the column on inverse side,\neither can be a function that accepts a map of properties with the object and returns one of them.\nSecond approach is used to achieve type-safety.", + "type": [ + "string", + "object" + ] + }, + "inverseEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity that is targeted by this relation.\n\nFor example for @ManyToMany(type => Category) in Post, inverseEntityMetadata will be metadata of Category entity." + }, + "inverseJoinColumns": { + "description": "Inverse join table columns.\nInverse join columns are supported only for many-to-many relations\nand can be obtained only from owner side of the relation.\nFrom non-owner side of the relation join columns will be undefined.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "inverseRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Gets the relation metadata of the inverse side of this relation." + }, + "inverseSidePropertyPath": { + "description": "Gets the property path of the inverse side of the relation.", + "type": "string" + }, + "isCascadeInsert": { + "description": "If set to true then related objects are allowed to be inserted to the database.", + "type": "boolean" + }, + "isCascadeRecover": { + "description": "If set to true then related objects are allowed to be recovered from the database.", + "type": "boolean" + }, + "isCascadeRemove": { + "description": "If set to true then related objects are allowed to be remove from the database.", + "type": "boolean" + }, + "isCascadeSoftRemove": { + "description": "If set to true then related objects are allowed to be soft-removed from the database.", + "type": "boolean" + }, + "isCascadeUpdate": { + "description": "If set to true then related objects are allowed to be updated in the database.", + "type": "boolean" + }, + "isEager": { + "description": "Indicates if this relation is eagerly loaded.", + "type": "boolean" + }, + "isLazy": { + "description": "Indicates if this relation is lazily loaded.", + "type": "boolean" + }, + "isManyToMany": { + "description": "Checks if this relation's type is \"many-to-many\".", + "type": "boolean" + }, + "isManyToManyNotOwner": { + "description": "Checks if this relation's type is \"many-to-many\", and is NOT owner side of the relationship.\nNot owner side means this side of relation does not have a join table.", + "type": "boolean" + }, + "isManyToManyOwner": { + "description": "Checks if this relation's type is \"many-to-many\", and is owner side of the relationship.\nOwner side means this side of relation has a join table.", + "type": "boolean" + }, + "isManyToOne": { + "description": "Checks if this relation's type is \"many-to-one\".", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if relation column value can be nullable or not.", + "type": "boolean" + }, + "isOneToMany": { + "description": "Checks if this relation's type is \"one-to-many\".", + "type": "boolean" + }, + "isOneToOne": { + "description": "Checks if this relation's type is \"one-to-one\".", + "type": "boolean" + }, + "isOneToOneNotOwner": { + "description": "Checks if this relation is NOT owner side of the \"one-to-one\" relation.\nNOT owner side means this side of relation does not have a join column in the table.", + "type": "boolean" + }, + "isOneToOneOwner": { + "description": "Checks if this relation is owner side of the \"one-to-one\" relation.\nOwner side means this side of relation has a join column in the table.", + "type": "boolean" + }, + "isOwning": { + "description": "Indicates if this side is an owner of this relation.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if this relation's column is a primary key.\nCan be used only for many-to-one and owner one-to-one relations.", + "type": "boolean" + }, + "isTreeChildren": { + "description": "Indicates if this is a children (can be only one-to-many relation) relation in the tree tables.", + "type": "boolean" + }, + "isTreeParent": { + "description": "Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables.", + "type": "boolean" + }, + "isWithJoinColumn": { + "description": "Checks if this relation has a join column (e.g. is it many-to-one or one-to-one owner side).", + "type": "boolean" + }, + "joinColumns": { + "description": "Join table columns.\nJoin columns can be obtained only from owner side of the relation.\nFrom non-owner side of the relation join columns will be empty.\nIf this relation is a many-to-one/one-to-one then it takes join columns from the current entity.\nIf this relation is many-to-many then it takes all owner join columns from the junction entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "joinTableName": { + "description": "Join table name.", + "type": "string" + }, + "junctionEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the junction table.\nJunction tables have their own entity metadata objects.\nDefined only for many-to-many relations." + }, + "onDelete": { + "description": "What to do with a relation on deletion of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "onUpdate": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "orphanedRowAction": { + "description": "When a child row is removed from its parent, determines if the child row should be orphaned (default) or deleted.", + "enum": [ + "delete", + "nullify" + ], + "type": "string" + }, + "persistenceEnabled": { + "description": "Indicates if persistence is enabled for the relation.\nBy default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\nIf its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\nThis is useful for performance optimization since its disabling avoid multiple extra queries during entity save.", + "type": "boolean" + }, + "propertyName": { + "description": "Target's property name to which relation decorator is applied.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this column property (including relation name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just property name of the column.", + "type": "string" + }, + "relationType": { + "$ref": "#/definitions/RelationType", + "description": "Relation type, e.g. is it one-to-one, one-to-many, many-to-one or many-to-many." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target entity to which this relation is applied.\nTarget IS NOT equal to entityMetadata.target, because relation\n\nFor example for @ManyToMany(type => Category) in Post, target will be Post.\nIf @ManyToMany(type => Category) is in Counters which is embedded into Post, target will be Counters.\nIf @ManyToMany(type => Category) is in abstract class BaseUser which Post extends, target will be BaseUser.\nTarget can be string if its defined in entity schema instead of class." + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Gets the property's type to which this relation is applied.\n\nFor example for @ManyToMany(type => Category) in Post, target will be Category." + } + }, + "type": "object" + }, + "RelationType": { + "description": "All types that relation can be.", + "enum": [ + "many-to-many", + "many-to-one", + "one-to-many", + "one-to-one" + ], + "type": "string" + }, + "Relationship": { + "properties": { + "__filename": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nickname": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Relationship" + }, + { + "properties": { + "should_notify": { + "type": "boolean" + }, + "user": { + "$ref": "#/definitions/PublicUser" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "RELATIONSHIP_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Omit" + }, + "event": { + "enum": [ + "RELATIONSHIP_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipType": { + "enum": [ + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "Repository": { + "description": "Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.", + "properties": { + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "Entity Manager used by this repository." + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity current repository manages." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Query runner provider used for this repository." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Returns object that is managed by this repository.\nIf this repository manages entity from schema,\nthen it returns a name of that schema instead." + } + }, + "type": "object" + }, + "Role": { + "properties": { + "__filename": { + "type": "string" + }, + "color": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hoist": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "managed": { + "type": "boolean" + }, + "mentionable": { + "type": "boolean" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "type": "bigint" + }, + "position": { + "type": "number" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "tags": { + "properties": { + "bot_id": { + "type": "string" + }, + "integration_id": { + "type": "string" + }, + "premium_subscriber": { + "type": "boolean" + } + }, + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "SapConnectionOptions": { + "description": "SAP Hana specific connection options.", + "properties": { + "ca": { + "description": "Ca for encrypted connection", + "type": "string" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cert": { + "description": "Cert for encrypted connection", + "type": "string" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "encrypt": { + "description": "Encrypt database connection", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "key": { + "description": "Key for encrypted connection", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pool": { + "description": "Pool options.", + "properties": { + "checkInterval": { + "description": "How often to run resource timeout checks. (default=0, disabled)", + "type": "number" + }, + "idleTimeout": { + "description": "Idle timeout", + "type": "number" + }, + "max": { + "description": "Max number of connections.", + "type": "number" + }, + "maxWaitingRequests": { + "description": "Maximum number of waiting requests allowed. (default=0, no limit).", + "type": "number" + }, + "min": { + "description": "Minimum number of connections.", + "type": "number" + }, + "poolErrorHandler": { + "description": "Function handling errors thrown by drivers pool.\nDefaults to logging error with `warn` level.", + "type": "object" + }, + "requestTimeout": { + "description": "Max milliseconds a request will wait for a resource before timing out. (default=5000)", + "type": "number" + } + }, + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "schema": { + "description": "Database schema.", + "type": "string" + }, + "sslValidateCertificate": { + "description": "Validate database certificate", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sap" + ], + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SchemaEnv": { + "properties": { + "$async": { + "type": "boolean" + }, + "baseId": { + "type": "string" + }, + "dynamicAnchors": { + "$ref": "#/definitions/{[x:string]:true|undefined;}_1" + }, + "localRefs": { + "$ref": "#/definitions/LocalRefs" + }, + "meta": { + "type": "boolean" + }, + "parse": { + "type": "object" + }, + "parseName": { + "$ref": "#/definitions/ValueScopeName" + }, + "refs": { + "$ref": "#/definitions/SchemaRefs" + }, + "root": { + "$ref": "#/definitions/SchemaEnv" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaId": { + "enum": [ + "$id", + "id" + ], + "type": "string" + }, + "schemaPath": { + "type": "string" + }, + "serialize": { + "type": "object" + }, + "serializeName": { + "$ref": "#/definitions/ValueScopeName" + }, + "validate": { + "anyOf": [ + { + "$ref": "#/definitions/ValidateFunction" + }, + { + "$ref": "#/definitions/AsyncValidateFunction" + } + ] + }, + "validateName": { + "$ref": "#/definitions/ValueScopeName" + } + }, + "type": "object" + }, + "SchemaObject": { + "additionalProperties": { + }, + "properties": { + "$async": { + "enum": [ + false + ], + "type": "boolean" + }, + "$id": { + "type": "string" + }, + "$schema": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "SchemaRefs": { + "type": "object" + }, + "ScopeValueSets": { + "type": "object" + }, + "SecureContext": { + "properties": { + "context": { + } + }, + "type": "object" + }, + "Snowflake": { + "description": "A container for useful snowflake-related methods.", + "type": "object" + }, + "SourceCode": { + "properties": { + "evaluated": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "scopeValues": { + "$ref": "#/definitions/ScopeValueSets" + }, + "validateCode": { + "type": "string" + }, + "validateName": { + "$ref": "#/definitions/ValueScopeName" + } + }, + "type": "object" + }, + "SqlServerConnectionCredentialsOptions": { + "description": "SqlServer specific connection credential options.", + "properties": { + "authentication": { + "anyOf": [ + { + "$ref": "#/definitions/DefaultAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryAccessTokenAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiAppServiceAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiVmAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryPasswordAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryServicePrincipalSecret" + }, + { + "$ref": "#/definitions/NtlmAuthentication" + } + ], + "description": "Authentication settings\nIt overrides username and password, when passed." + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domain": { + "description": "Once you set domain, driver will connect to SQL Server using domain login.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SqlServerConnectionOptions": { + "description": "Microsoft Sql Server specific connection options.", + "properties": { + "authentication": { + "anyOf": [ + { + "$ref": "#/definitions/DefaultAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryAccessTokenAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiAppServiceAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiVmAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryPasswordAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryServicePrincipalSecret" + }, + { + "$ref": "#/definitions/NtlmAuthentication" + } + ], + "description": "Authentication settings\nIt overrides username and password, when passed." + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectionTimeout": { + "description": "Connection timeout in ms (default: 15000).", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domain": { + "description": "Once you set domain, driver will connect to SQL Server using domain login.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "options": { + "description": "Extra options", + "properties": { + "abortTransactionOnError": { + "description": "A boolean determining whether to rollback a transaction automatically if any error is encountered during\nthe given transaction's execution. This sets the value for SET XACT_ABORT during the initial SQL phase\nof a connection (documentation).", + "type": "boolean" + }, + "camelCaseColumns": { + "description": "A boolean, controlling whether the column names returned will have the first letter converted to lower case\n(true) or not. This value is ignored if you provide a columnNameReplacer. (default: false).", + "type": "boolean" + }, + "cancelTimeout": { + "description": "The number of milliseconds before the cancel (abort) of a request is considered failed (default: 5000).", + "type": "number" + }, + "connectTimeout": { + "description": "The number of milliseconds before the attempt to connect is considered failed (default: 15000).", + "type": "number" + }, + "connectionIsolationLevel": { + "description": "The default isolation level for new connections. All out-of-transaction queries are executed with this\nsetting. The isolation levels are available from require('tedious').ISOLATION_LEVEL .", + "enum": [ + "READ_COMMITTED", + "READ_UNCOMMITTED", + "REPEATABLE_READ", + "SERIALIZABLE", + "SNAPSHOT" + ], + "type": "string" + }, + "cryptoCredentialsDetails": { + "description": "When encryption is used, an object may be supplied that will be used for the first argument when calling\ntls.createSecurePair (default: {})." + }, + "debug": { + "description": "Debug options", + "properties": { + "data": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet data details\n(default: false).", + "type": "boolean" + }, + "packet": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet details\n(default: false).", + "type": "boolean" + }, + "payload": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet payload details\n(default: false).", + "type": "boolean" + }, + "token": { + "description": "A boolean, controlling whether debug events will be emitted with text describing token stream tokens\n(default: false).", + "type": "boolean" + } + }, + "type": "object" + }, + "disableOutputReturning": { + "description": "A boolean, controlling whatever to disable RETURNING / OUTPUT statements.", + "type": "boolean" + }, + "enableAnsiNullDefault": { + "description": "If true, SET ANSI_NULL_DFLT_ON ON will be set in the initial sql. This means new columns will be nullable by\ndefault. See the T-SQL documentation for more details. (Default: true).", + "type": "boolean" + }, + "enableArithAbort": { + "description": "A boolean, that when true will abort a query when an overflow or divide-by-zero error occurs during query execution.", + "type": "boolean" + }, + "encrypt": { + "description": "A boolean determining whether or not the connection will be encrypted. Set to true if you're on\nWindows Azure. (default: false).", + "type": "boolean" + }, + "fallbackToDefaultDb": { + "description": "By default, if the database requestion by options.database cannot be accessed, the connection will fail with\nan error. However, if options.fallbackToDefaultDb is set to true, then the user's default database will\nbe used instead (Default: false).", + "type": "boolean" + }, + "isolation": { + "description": "The default isolation level that transactions will be run with. The isolation levels are available\nfrom require('tedious').ISOLATION_LEVEL. (default: READ_COMMITTED).", + "enum": [ + "READ_COMMITTED", + "READ_UNCOMMITTED", + "REPEATABLE_READ", + "SERIALIZABLE", + "SNAPSHOT" + ], + "type": "string" + }, + "localAddress": { + "description": "A string indicating which network interface (ip address) to use when connecting to SQL Server.", + "type": "string" + }, + "packetSize": { + "description": "The size of TDS packets (subject to negotiation with the server). Should be a power of 2. (default: 4096).", + "type": "number" + }, + "readOnlyIntent": { + "description": "A boolean, determining whether the connection will request read only access from a SQL Server\nAvailability Group. For more information, see here. (default: false).", + "type": "boolean" + }, + "rowCollectionOnDone": { + "description": "A boolean, that when true will expose received rows in Requests' done* events. See done, doneInProc and\ndoneProc. (default: false)\nCaution: If many row are received, enabling this option could result in excessive memory usage.", + "type": "boolean" + }, + "rowCollectionOnRequestCompletion": { + "description": "A boolean, that when true will expose received rows in Requests' completion callback. See new Request. (default: false)\nCaution: If many row are received, enabling this option could result in excessive memory usage.", + "type": "boolean" + }, + "tdsVersion": { + "description": "The version of TDS to use. If server doesn't support specified version, negotiated version is used instead.\nThe versions are available from require('tedious').TDS_VERSION. (default: 7_4).", + "type": "string" + }, + "useColumnNames": { + "description": "A boolean determining whether to return rows as arrays or key-value collections. (default: false).", + "type": "boolean" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + } + }, + "type": "object" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pool": { + "description": "An optional object/dictionary with the any of the properties", + "properties": { + "acquireTimeoutMillis": { + "description": "Max milliseconds an acquire call will wait for a resource before timing out. (default no limit), if supplied should non-zero positive integer.", + "type": "number" + }, + "errorHandler": { + "type": "object" + }, + "evictionRunIntervalMillis": { + "description": "How often to run eviction checks. Default: 0 (does not run).", + "type": "number" + }, + "fifo": { + "description": "If true the oldest resources will be first to be allocated. If false the most recently released resources will\nbe the first to be allocated. This in effect turns the pool's behaviour from a queue into a stack. boolean,\n(default true)", + "type": "boolean" + }, + "idleTimeoutMillis": { + "description": "The minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due\nto idle time. Supercedes softIdleTimeoutMillis Default: 30000", + "type": "number" + }, + "max": { + "description": "Maximum number of resources to create at any given time. (default=1)", + "type": "number" + }, + "maxWaitingClients": { + "description": "Maximum number of queued requests allowed, additional acquire calls will be callback with an err in a future\ncycle of the event loop.", + "type": "number" + }, + "min": { + "description": "Minimum number of resources to keep in pool at any given time. If this is set >= max, the pool will silently\nset the min to equal max. (default=0)", + "type": "number" + }, + "numTestsPerRun": { + "description": "Number of resources to check each eviction run. Default: 3.", + "type": "number" + }, + "priorityRange": { + "description": "Int between 1 and x - if set, borrowers can specify their relative priority in the queue if no resources\nare available. see example. (default 1)", + "type": "number" + }, + "softIdleTimeoutMillis": { + "description": "Amount of time an object may sit idle in the pool before it is eligible for eviction by the idle object\nevictor (if any), with the extra condition that at least \"min idle\" object instances remain in the pool.\nDefault -1 (nothing can get evicted)", + "type": "number" + }, + "testOnBorrow": { + "description": "Should the pool validate resources before giving them to clients. Requires that either factory.validate or\nfactory.validateAsync to be specified", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/SqlServerConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/SqlServerConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "requestTimeout": { + "description": "Request timeout in ms (default: 15000). NOTE: msnodesqlv8 driver doesn't support timeouts < 1 second.", + "type": "number" + }, + "schema": { + "description": "Database schema.", + "type": "string" + }, + "stream": { + "description": "Stream recordsets/rows instead of returning them all at once as an argument of callback (default: false).\nYou can also enable streaming for each request independently (request.stream = true).\nAlways set to true if you plan to work with large amount of rows.", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mssql" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SqliteConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "busyErrorRetry": { + "description": "In your SQLite application when you perform parallel writes its common to face SQLITE_BUSY error.\nThis error indicates that SQLite failed to write to the database file since someone else already writes into it.\nSince SQLite cannot handle parallel saves this error cannot be avoided.\n\nTo simplify life's of those who have this error this particular option sets a timeout within which ORM will try\nto perform requested write operation again and again until it receives SQLITE_BUSY error.\n\nEnabling WAL can improve your app performance and face less SQLITE_BUSY issues.\nTime in milliseconds.", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Storage type or path to the storage.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "enableWAL": { + "description": "Enables WAL mode. By default its disabled.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "key": { + "description": "Encryption key for for SQLCipher.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sqlite" + ], + "type": "string" + } + }, + "type": "object" + }, + "SqljsConnectionOptions": { + "description": "Sql.js-specific connection options.", + "properties": { + "autoSave": { + "description": "Enables the autoSave mechanism which either saves to location\nor calls autoSaveCallback every time a change to the database is made.", + "type": "boolean" + }, + "autoSaveCallback": { + "$ref": "#/definitions/Function", + "description": "A function that gets called on every change instead of the internal autoSave function.\nautoSave has to be enabled for this to work." + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "additionalProperties": false, + "description": "A Uint8Array that gets imported when the connection is opened.", + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "File path (Node.js) or local storage key (browser) to load and save database from.\nIf this is specified without autoSave, the database is loaded from the location\nand can be saved manually via the SqljsEntityManager. If autoSave is enabled,\nlocation is used to automatically save the database.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "sqlJsConfig": { + "description": "Config that's used to initialize sql.js." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sqljs" + ], + "type": "string" + }, + "useLocalForage": { + "description": "Enables the usage of the localforage library to save & load the database asynchronously from the\nindexedDB instead of using the synchron local storage methods in a browser environment.", + "type": "boolean" + } + }, + "type": "object" + }, + "SqljsEntityManager": { + "description": "A special EntityManager that includes import/export and load/save function\nthat are unique to Sql.js.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "driver": { + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "Status": { + "enum": [ + "dnd", + "idle", + "offline", + "online" + ], + "type": "string" + }, + "StringConstructor": { + "properties": { + "prototype": { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Table": { + "description": "Table in the database represented in this class.", + "properties": { + "checks": { + "description": "Table check constraints.", + "items": { + "$ref": "#/definitions/TableCheck" + }, + "type": "array" + }, + "columns": { + "description": "Table columns.", + "items": { + "$ref": "#/definitions/TableColumn" + }, + "type": "array" + }, + "database": { + "description": "Database name that this table resides in if it applies.", + "type": "string" + }, + "engine": { + "description": "Table engine.", + "type": "string" + }, + "exclusions": { + "description": "Table exclusion constraints.", + "items": { + "$ref": "#/definitions/TableExclusion" + }, + "type": "array" + }, + "foreignKeys": { + "description": "Table foreign keys.", + "items": { + "$ref": "#/definitions/TableForeignKey" + }, + "type": "array" + }, + "indices": { + "description": "Table indices.", + "items": { + "$ref": "#/definitions/TableIndex" + }, + "type": "array" + }, + "justCreated": { + "description": "Indicates if table was just created.\nThis is needed, for example to check if we need to skip primary keys creation\nfor new tables.", + "type": "boolean" + }, + "name": { + "description": "May contain database name, schema name and table name, unless they're the current database.\n\nE.g. myDB.mySchema.myTable", + "type": "string" + }, + "primaryColumns": { + "items": { + "$ref": "#/definitions/TableColumn" + }, + "type": "array" + }, + "schema": { + "description": "Schema name that this table resides in if it applies.", + "type": "string" + }, + "uniques": { + "description": "Table unique constraints.", + "items": { + "$ref": "#/definitions/TableUnique" + }, + "type": "array" + } + }, + "type": "object" + }, + "TableCheck": { + "description": "Database's table check constraint stored in this class.", + "properties": { + "columnNames": { + "description": "Column that contains this constraint.", + "items": { + "type": "string" + }, + "type": "array" + }, + "expression": { + "description": "Check expression.", + "type": "string" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "TableColumn": { + "description": "Table's columns in the database represented in this class.", + "properties": { + "asExpression": { + "description": "Generated column expression. Supports only in MySQL.", + "type": "string" + }, + "charset": { + "description": "Defines column character set.", + "type": "string" + }, + "collation": { + "description": "Defines column collation.", + "type": "string" + }, + "comment": { + "description": "Column's comment.", + "type": "string" + }, + "default": { + "description": "Column's default value." + }, + "enum": { + "description": "Array of possible enumerated values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "enumName": { + "description": "Exact name of enum", + "type": "string" + }, + "generatedType": { + "description": "Generated column type. Supports only in MySQL.", + "enum": [ + "STORED", + "VIRTUAL" + ], + "type": "string" + }, + "generationStrategy": { + "description": "Specifies generation strategy if this column will use auto increment.\n`rowid` option supported only in CockroachDB.", + "enum": [ + "increment", + "rowid", + "uuid" + ], + "type": "string" + }, + "isArray": { + "description": "Indicates if column stores array.", + "type": "boolean" + }, + "isGenerated": { + "description": "Indicates if column is auto-generated sequence.", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if column is NULL, or is NOT NULL in the database.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if column is a primary key.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if column has unique value.", + "type": "boolean" + }, + "length": { + "description": "Column type's length. Used only on some column types.\nFor example type = \"string\" and length = \"100\" means that ORM will create a column with type varchar(100).", + "type": "string" + }, + "name": { + "description": "Column name.", + "type": "string" + }, + "onUpdate": { + "description": "ON UPDATE trigger. Works only for MySQL.", + "type": "string" + }, + "precision": { + "description": "The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\nnumber of digits that are stored for the values.", + "type": [ + "null", + "number" + ] + }, + "scale": { + "description": "The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\nof digits to the right of the decimal point and must not be greater than precision.", + "type": "number" + }, + "spatialFeatureType": { + "description": "Spatial Feature Type (Geometry, Point, Polygon, etc.)", + "type": "string" + }, + "srid": { + "description": "SRID (Spatial Reference ID (EPSG code))", + "type": "number" + }, + "type": { + "description": "Column type.", + "type": "string" + }, + "unsigned": { + "description": "Puts UNSIGNED attribute on to numeric column. Works only for MySQL.", + "type": "boolean" + }, + "width": { + "description": "Column type's display width. Used only on some column types in MySQL.\nFor example, INT(4) specifies an INT with a display width of four digits.", + "type": "number" + }, + "zerofill": { + "description": "Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\nIf you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column", + "type": "boolean" + } + }, + "type": "object" + }, + "TableExclusion": { + "description": "Database's table exclusion constraint stored in this class.", + "properties": { + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "TableForeignKey": { + "description": "Foreign key from the database stored in this class.", + "properties": { + "columnNames": { + "description": "Column names which included by this foreign key.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deferrable": { + "description": "Set this foreign key constraint as \"DEFERRABLE\" e.g. check constraints at start\nor at the end of a transaction", + "type": "string" + }, + "name": { + "description": "Name of the foreign key constraint.", + "type": "string" + }, + "onDelete": { + "description": "\"ON DELETE\" of this foreign key, e.g. what action database should perform when\nreferenced stuff is being deleted.", + "type": "string" + }, + "onUpdate": { + "description": "\"ON UPDATE\" of this foreign key, e.g. what action database should perform when\nreferenced stuff is being updated.", + "type": "string" + }, + "referencedColumnNames": { + "description": "Column names which included by this foreign key.", + "items": { + "type": "string" + }, + "type": "array" + }, + "referencedDatabase": { + "description": "Database of Table referenced in the foreign key.", + "type": "string" + }, + "referencedSchema": { + "description": "Database of Table referenced in the foreign key.", + "type": "string" + }, + "referencedTableName": { + "description": "Table referenced in the foreign key.", + "type": "string" + } + }, + "type": "object" + }, + "TableIndex": { + "description": "Database's table index stored in this class.", + "properties": { + "columnNames": { + "description": "Columns included in this index.", + "items": { + "type": "string" + }, + "type": "array" + }, + "isFulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "isSpatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if this index is unique.", + "type": "boolean" + }, + "name": { + "description": "Index name.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataArgs": { + "description": "Arguments for TableMetadata class, helps to construct an TableMetadata object.", + "properties": { + "database": { + "description": "Database name. Used in MySql and Sql Server.", + "type": "string" + }, + "engine": { + "description": "Table's database engine type (like \"InnoDB\", \"MyISAM\", etc).", + "type": "string" + }, + "expression": { + "description": "View expression.", + "type": [ + "string", + "object" + ] + }, + "materialized": { + "description": "Indicates if view is materialized", + "type": "boolean" + }, + "name": { + "description": "Table's name. If name is not set then table's name will be generated from target's name.", + "type": "string" + }, + "orderBy": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + { + "type": "object" + } + ], + "description": "Specifies a default order by used for queries from this table when no explicit order by is specified." + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema synchronization is enabled or disabled for this entity.\nIf it will be set to false then schema sync will and migrations ignore this entity.\nBy default schema synchronization is enabled for all entities.", + "type": "boolean" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Class to which table is applied.\nFunction target is a table defined in the class.\nString target is a table defined in a json schema." + }, + "type": { + "$ref": "#/definitions/TableType", + "description": "Table type. Tables can be abstract, closure, junction, embedded, etc." + }, + "withoutRowid": { + "description": "If set to 'true' this option disables Sqlite's default behaviour of secretly creating\nan integer primary key column named 'rowid' on table creation.", + "type": "boolean" + } + }, + "type": "object" + }, + "TableType": { + "description": "Table type. Tables can be closure, junction,, etc.", + "enum": [ + "closure", + "closure-junction", + "entity-child", + "junction", + "regular", + "view" + ], + "type": "string" + }, + "TableUnique": { + "description": "Database's table unique constraint stored in this class.", + "properties": { + "columnNames": { + "description": "Columns that contains this constraint.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "Team": { + "properties": { + "__filename": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "members": { + "items": { + "$ref": "#/definitions/TeamMember" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner_user": { + "$ref": "#/definitions/User" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "TeamMember": { + "properties": { + "__filename": { + "type": "string" + }, + "id": { + "type": "string" + }, + "membership_state": { + "$ref": "#/definitions/TeamMemberState" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "TeamMemberState": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "Template": { + "properties": { + "__filename": { + "type": "string" + }, + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/definitions/User" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "usage_count": { + "type": "number" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "TlsOptions": { + "properties": { + "ALPNProtocols": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + { + "items": { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "description": "An array of strings or a Buffer naming possible ALPN protocols.\n(Protocols should be ordered by their priority.)" + }, + "SNICallback": { + "description": "SNICallback(servername, cb) A function that will be\ncalled if the client supports SNI TLS extension. Two arguments\nwill be passed when called: servername and cb. SNICallback should\ninvoke cb(null, ctx), where ctx is a SecureContext instance.\n(tls.createSecureContext(...) can be used to get a proper\nSecureContext.) If SNICallback wasn't provided the default callback\nwith high-level API will be used (see below).", + "type": "object" + }, + "allowHalfOpen": { + "default": false, + "description": "Indicates whether half-opened TCP connections are allowed.", + "type": "boolean" + }, + "ca": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Optionally override the trusted CA certificates. Default is to trust\nthe well-known CAs curated by Mozilla. Mozilla's CAs are completely\nreplaced when CAs are explicitly specified using this option." + }, + "cert": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Cert chains in PEM format. One cert chain should be provided per\nprivate key. Each cert chain should consist of the PEM formatted\ncertificate for a provided private key, followed by the PEM\nformatted intermediate certificates (if any), in order, and not\nincluding the root CA (the root CA must be pre-known to the peer,\nsee ca). When providing multiple cert chains, they do not have to\nbe in the same order as their private keys in key. If the\nintermediate certificates are not provided, the peer will not be\nable to validate the certificate, and the handshake will fail." + }, + "ciphers": { + "description": "Cipher suite specification, replacing the default. For more\ninformation, see modifying the default cipher suite. Permitted\nciphers can be obtained via tls.getCiphers(). Cipher names must be\nuppercased in order for OpenSSL to accept them.", + "type": "string" + }, + "clientCertEngine": { + "description": "Name of an OpenSSL engine which can provide the client certificate.", + "type": "string" + }, + "crl": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PEM formatted CRLs (Certificate Revocation Lists)." + }, + "dhparam": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Diffie Hellman parameters, required for Perfect Forward Secrecy. Use\nopenssl dhparam to create the parameters. The key length must be\ngreater than or equal to 1024 bits or else an error will be thrown.\nAlthough 1024 bits is permissible, use 2048 bits or larger for\nstronger security. If omitted or invalid, the parameters are\nsilently discarded and DHE ciphers will not be available." + }, + "ecdhCurve": { + "description": "A string describing a named curve or a colon separated list of curve\nNIDs or names, for example P-521:P-384:P-256, to use for ECDH key\nagreement. Set to auto to select the curve automatically. Use\ncrypto.getCurves() to obtain a list of available curve names. On\nrecent releases, openssl ecparam -list_curves will also display the\nname and description of each available elliptic curve. Default:\ntls.DEFAULT_ECDH_CURVE.", + "type": "string" + }, + "enableTrace": { + "default": false, + "description": "When enabled, TLS packet trace information is written to `stderr`. This can be\nused to debug TLS connection problems.", + "type": "boolean" + }, + "handshakeTimeout": { + "description": "Abort the connection if the SSL/TLS handshake does not finish in the\nspecified number of milliseconds. A 'tlsClientError' is emitted on\nthe tls.Server object whenever a handshake times out. Default:\n120000 (120 seconds).", + "type": "number" + }, + "honorCipherOrder": { + "description": "Attempt to use the server's cipher suite preferences instead of the\nclient's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be\nset in secureOptions", + "type": "boolean" + }, + "key": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "$ref": "#/definitions/KeyObject" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Private keys in PEM format. PEM allows the option of private keys\nbeing encrypted. Encrypted keys will be decrypted with\noptions.passphrase. Multiple keys using different algorithms can be\nprovided either as an array of unencrypted key strings or buffers,\nor an array of objects in the form {pem: [,\npassphrase: ]}. The object form can only occur in an array.\nobject.passphrase is optional. Encrypted keys will be decrypted with\nobject.passphrase if provided, or options.passphrase if it is not." + }, + "maxVersion": { + "description": "Optionally set the maximum TLS version to allow. One\nof `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the\n`secureProtocol` option, use one or the other.\n**Default:** `'TLSv1.3'`, unless changed using CLI options. Using\n`--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to\n`'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used.", + "enum": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "type": "string" + }, + "minVersion": { + "description": "Optionally set the minimum TLS version to allow. One\nof `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the\n`secureProtocol` option, use one or the other. It is not recommended to use\nless than TLSv1.2, but it may be required for interoperability.\n**Default:** `'TLSv1.2'`, unless changed using CLI options. Using\n`--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to\n`'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to\n'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used.", + "enum": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "type": "string" + }, + "passphrase": { + "description": "Shared passphrase used for a single private key and/or a PFX.", + "type": "string" + }, + "pauseOnConnect": { + "default": false, + "description": "Indicates whether the socket should be paused on incoming connections.", + "type": "boolean" + }, + "pfx": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "$ref": "#/definitions/PxfObject" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PFX or PKCS12 encoded private key and certificate chain. pfx is an\nalternative to providing key and cert individually. PFX is usually\nencrypted, if it is, passphrase will be used to decrypt it. Multiple\nPFX can be provided either as an array of unencrypted PFX buffers,\nor an array of objects in the form {buf: [,\npassphrase: ]}. The object form can only occur in an array.\nobject.passphrase is optional. Encrypted PFX will be decrypted with\nobject.passphrase if provided, or options.passphrase if it is not." + }, + "privateKeyEngine": { + "description": "Name of an OpenSSL engine to get private key from. Should be used\ntogether with privateKeyIdentifier.", + "type": "string" + }, + "privateKeyIdentifier": { + "description": "Identifier of a private key managed by an OpenSSL engine. Should be\nused together with privateKeyEngine. Should not be set together with\nkey, because both options define a private key in different ways.", + "type": "string" + }, + "pskIdentityHint": { + "description": "hint to send to a client to help\nwith selecting the identity during TLS-PSK negotiation. Will be ignored\nin TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be\nemitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code.", + "type": "string" + }, + "rejectUnauthorized": { + "default": true, + "description": "If true the server will reject any connection which is not\nauthorized with the list of supplied CAs. This option only has an\neffect if requestCert is true.", + "type": "boolean" + }, + "requestCert": { + "description": "If true the server will request a certificate from clients that\nconnect and attempt to verify that certificate. Defaults to\nfalse.", + "type": "boolean" + }, + "secureContext": { + "$ref": "#/definitions/SecureContext", + "description": "An optional TLS context object from tls.createSecureContext()" + }, + "secureOptions": { + "description": "Optionally affect the OpenSSL protocol behavior, which is not\nusually necessary. This should be used carefully if at all! Value is\na numeric bitmask of the SSL_OP_* options from OpenSSL Options", + "type": "number" + }, + "secureProtocol": { + "description": "Legacy mechanism to select the TLS protocol version to use, it does\nnot support independent control of the minimum and maximum version,\nand does not support limiting the protocol to TLSv1.3. Use\nminVersion and maxVersion instead. The possible values are listed as\nSSL_METHODS, use the function names as strings. For example, use\n'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow\nany TLS protocol version up to TLSv1.3. It is not recommended to use\nTLS versions less than 1.2, but it may be required for\ninteroperability. Default: none, see minVersion.", + "type": "string" + }, + "sessionIdContext": { + "description": "Opaque identifier used by servers to ensure session state is not\nshared between applications. Unused by clients.", + "type": "string" + }, + "sessionTimeout": { + "description": "The number of seconds after which a TLS session created by the\nserver will no longer be resumable. See Session Resumption for more\ninformation. Default: 300.", + "type": "number" + }, + "sigalgs": { + "description": "Colon-separated list of supported signature algorithms. The list\ncan contain digest algorithms (SHA256, MD5 etc.), public key\nalgorithms (RSA-PSS, ECDSA etc.), combination of both (e.g\n'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512).", + "type": "string" + }, + "ticketKeys": { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "TypingStartEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "timestamp": { + "type": "number" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "TYPING_START" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "UniqueMetadata": { + "description": "Unique metadata contains all information about table's unique constraints.", + "properties": { + "columnNamesWithOrderingMap": { + "additionalProperties": { + "type": "number" + }, + "description": "Map of column names with order set.\nUsed only by MongoDB driver.", + "type": "object" + }, + "columns": { + "description": "Unique columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata if this unique was applied on embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this unique constraint is applied." + }, + "givenColumnNames": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "User specified column names." + }, + "givenName": { + "description": "User specified unique constraint name.", + "type": "string" + }, + "name": { + "description": "Final unique constraint name.\nIf unique constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf unique constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "UsedNames": { + "type": "object" + }, + "User": { + "properties": { + "__filename": { + "type": "string" + }, + "accent_color": { + "type": [ + "null", + "number" + ] + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "banner": { + "type": [ + "null", + "string" + ] + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "connected_accounts": { + "items": { + "$ref": "#/definitions/ConnectedAccount" + }, + "type": "array" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "deleted": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "disabled": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "bigint" + }, + "guilds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mfa_enabled": { + "type": "boolean" + }, + "mobile": { + "type": "boolean" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "number" + }, + "public_flags": { + "type": "bigint" + }, + "relationships": { + "items": { + "$ref": "#/definitions/Relationship" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "settings": { + "$ref": "#/definitions/UserSettings" + }, + "system": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_data": { + "properties": { + "fingerprints": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hash": { + "type": "string" + }, + "valid_tokens_since": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "username": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + }, + "UserFlags": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "UserGuildSettings": { + "properties": { + "channel_overrides": { + "items": { + "properties": { + "channel_id": { + "type": "string" + }, + "message_notifications": { + "type": "number" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "message_notifications": { + "type": "number" + }, + "mobile_push": { + "type": "boolean" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "suppress_everyone": { + "type": "boolean" + }, + "suppress_roles": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "UserSettings": { + "properties": { + "afk_timeout": { + "type": "number" + }, + "allow_accessibility_detection": { + "type": "boolean" + }, + "animate_emoji": { + "type": "boolean" + }, + "animate_stickers": { + "type": "number" + }, + "contact_sync_enabled": { + "type": "boolean" + }, + "convert_emoticons": { + "type": "boolean" + }, + "custom_status": { + "properties": { + "emoji_id": { + "type": [ + "null", + "string" + ] + }, + "emoji_name": { + "type": [ + "null", + "string" + ] + }, + "expires_at": { + "type": [ + "null", + "number" + ] + }, + "text": { + "type": [ + "null", + "string" + ] + } + }, + "type": "object" + }, + "default_guilds_restricted": { + "type": "boolean" + }, + "detect_platform_accounts": { + "type": "boolean" + }, + "developer_mode": { + "type": "boolean" + }, + "disable_games_tab": { + "type": "boolean" + }, + "enable_tts_command": { + "type": "boolean" + }, + "explicit_content_filter": { + "type": "number" + }, + "friend_source_flags": { + "properties": { + "all": { + "type": "boolean" + } + }, + "type": "object" + }, + "gateway_connected": { + "type": "boolean" + }, + "gif_auto_play": { + "type": "boolean" + }, + "guild_folders": { + "items": { + "properties": { + "color": { + "type": "number" + }, + "guild_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "guild_positions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inline_attachment_media": { + "type": "boolean" + }, + "inline_embed_media": { + "type": "boolean" + }, + "locale": { + "type": "string" + }, + "message_display_compact": { + "type": "boolean" + }, + "native_phone_integration_enabled": { + "type": "boolean" + }, + "render_embeds": { + "type": "boolean" + }, + "render_reactions": { + "type": "boolean" + }, + "restricted_guilds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "show_current_game": { + "type": "boolean" + }, + "status": { + "enum": [ + "dnd", + "idle", + "offline", + "online" + ], + "type": "string" + }, + "stream_notifications_enabled": { + "type": "boolean" + }, + "theme": { + "enum": [ + "dark", + "white" + ], + "type": "string" + }, + "timezone_offset": { + "type": "number" + } + }, + "type": "object" + }, + "UserUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/User" + }, + "event": { + "enum": [ + "USER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ValidateFunction": { + "properties": { + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "ValidateFunction": { + "properties": { + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "ValueScopeName": { + "properties": { + "names": { + "$ref": "#/definitions/UsedNames" + }, + "prefix": { + "type": "string" + }, + "scopePath": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "str": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/NameValue" + } + }, + "type": "object" + }, + "ValueTransformer": { + "description": "Interface for objects that deal with (un)marshalling data.", + "type": "object" + }, + "View": { + "description": "View in the database represented in this class.", + "properties": { + "database": { + "description": "Database name that this view resides in if it applies.", + "type": "string" + }, + "expression": { + "description": "View definition.", + "type": [ + "string", + "object" + ] + }, + "materialized": { + "description": "Indicates if view is materialized.", + "type": "boolean" + }, + "name": { + "description": "View name", + "type": "string" + }, + "schema": { + "description": "Schema name that this view resides in if it applies.", + "type": "string" + } + }, + "type": "object" + }, + "VoiceServerUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "endpoint": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "VOICE_SERVER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "VoiceState": { + "properties": { + "__filename": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "self_deaf": { + "type": "boolean" + }, + "self_mute": { + "type": "boolean" + }, + "self_stream": { + "type": "boolean" + }, + "self_video": { + "type": "boolean" + }, + "session_id": { + "type": "string" + }, + "suppress": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "VoiceStateUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/VoiceState" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "VOICE_STATE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Webhook": { + "properties": { + "__filename": { + "type": "string" + }, + "application": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "channel": { + "type": "string" + }, + "guild": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "source_guild": { + "type": "string" + }, + "token": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/WebhookType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "type": "string" + } + }, + "type": "object" + }, + "WebhookType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "WebhooksUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "XDeath": { + "properties": { + "count": { + "type": "number" + }, + "exchange": { + "type": "string" + }, + "original-expiration": { + }, + "queue": { + "type": "string" + }, + "reason": { + "enum": [ + "expired", + "maxlen", + "rejected" + ], + "type": "string" + }, + "routing-keys": { + "items": { + "type": "string" + }, + "type": "array" + }, + "time": { + "properties": { + "!": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "_Code": { + "properties": { + "_items": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "type": [ + "null", + "string", + "number", + "boolean" + ] + } + ] + }, + "type": "array" + }, + "_names": { + }, + "_str": { + }, + "names": { + "$ref": "#/definitions/UsedNames" + }, + "str": { + "type": "string" + } + }, + "type": "object" + }, + "{[x:string]:EntitySchemaColumnOptions|undefined;}": { + "description": "Entity column's options.", + "type": "object" + }, + "{[x:string]:EntitySchemaRelationOptions|undefined;}": { + "description": "Entity relation's options.", + "type": "object" + }, + "{[x:string]:true|undefined;}": { + "type": "object" + }, + "{[x:string]:true|undefined;}_1": { + "type": "object" + } + } +} + From 1e5ed285141de779be3df51b7737400a57e12a8d Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:34:46 +0200 Subject: [PATCH 05/50] :sparkles: typeorm entities --- util/src/entities/Application.ts | 111 + util/src/entities/AuditLog.ts | 147 + util/src/entities/Ban.ts | 34 + util/src/entities/BaseClass.ts | 61 + util/src/entities/Channel.ts | 104 + util/src/entities/ConnectedAccount.ts | 29 + util/src/entities/Emoji.ts | 39 + util/src/entities/Guild.ts | 179 + util/src/entities/Invite.ts | 60 + util/src/entities/Member.ts | 87 + util/src/entities/Message.ts | 260 + util/src/entities/RateLimit.ts | 25 + util/src/entities/ReadState.ts | 35 + util/src/entities/Relationship.ts | 26 + util/src/entities/Role.ts | 41 + util/src/entities/Team.ts | 27 + util/src/entities/TeamMember.ts | 31 + util/src/entities/Template.ts | 33 + util/src/entities/User.ts | 188 + util/src/entities/VoiceState.ts | 44 + util/src/entities/Webhook.ts | 40 + util/src/entities/index.ts | 21 + util/src/entities/schema.json | 19389 ++++++++++++++++++++++++ 23 files changed, 21011 insertions(+) create mode 100644 util/src/entities/Application.ts create mode 100644 util/src/entities/AuditLog.ts create mode 100644 util/src/entities/Ban.ts create mode 100644 util/src/entities/BaseClass.ts create mode 100644 util/src/entities/Channel.ts create mode 100644 util/src/entities/ConnectedAccount.ts create mode 100644 util/src/entities/Emoji.ts create mode 100644 util/src/entities/Guild.ts create mode 100644 util/src/entities/Invite.ts create mode 100644 util/src/entities/Member.ts create mode 100644 util/src/entities/Message.ts create mode 100644 util/src/entities/RateLimit.ts create mode 100644 util/src/entities/ReadState.ts create mode 100644 util/src/entities/Relationship.ts create mode 100644 util/src/entities/Role.ts create mode 100644 util/src/entities/Team.ts create mode 100644 util/src/entities/TeamMember.ts create mode 100644 util/src/entities/Template.ts create mode 100644 util/src/entities/User.ts create mode 100644 util/src/entities/VoiceState.ts create mode 100644 util/src/entities/Webhook.ts create mode 100644 util/src/entities/index.ts create mode 100644 util/src/entities/schema.json diff --git a/util/src/entities/Application.ts b/util/src/entities/Application.ts new file mode 100644 index 00000000..64b5d2e2 --- /dev/null +++ b/util/src/entities/Application.ts @@ -0,0 +1,111 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { Team } from "./Team"; + +@Entity("applications") +export class Application extends BaseClass { + @Column() + name: string; + + @Column() + icon?: string; + + @Column() + description: string; + + @Column("simple-array") + rpc_origins?: string[]; + + @Column() + bot_public: boolean; + + @Column() + bot_require_code_grant: boolean; + + @Column() + terms_of_service_url?: string; + + @Column() + privacy_policy_url?: string; + + @Column() + owner_id: string; + + @Column() + summary?: string; + + @Column() + verify_key: string; + + @Column() + team_id: string; + + @JoinColumn({ name: "team_id" }) + @ManyToOne(() => Team, (team: Team) => team.id) + team?: Team; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; // if this application is a game sold, this field will be the guild to which it has been linked + + @Column() + primary_sku_id?: string; // if this application is a game sold, this field will be the id of the "Game SKU" that is created, + + @Column() + slug?: string; // if this application is a game sold, this field will be the URL slug that links to the store page + + @Column() + cover_image?: string; // the application's default rich presence invite cover image hash + + @Column() + flags: number; // the application's public flags +} + +export interface ApplicationCommand { + id: string; + application_id: string; + name: string; + description: string; + options?: ApplicationCommandOption[]; +} + +export interface ApplicationCommandOption { + type: ApplicationCommandOptionType; + name: string; + description: string; + required?: boolean; + choices?: ApplicationCommandOptionChoice[]; + options?: ApplicationCommandOption[]; +} + +export interface ApplicationCommandOptionChoice { + name: string; + value: string | number; +} + +export enum ApplicationCommandOptionType { + SUB_COMMAND = 1, + SUB_COMMAND_GROUP = 2, + STRING = 3, + INTEGER = 4, + BOOLEAN = 5, + USER = 6, + CHANNEL = 7, + ROLE = 8, +} + +export interface ApplicationCommandInteractionData { + id: string; + name: string; + options?: ApplicationCommandInteractionDataOption[]; +} + +export interface ApplicationCommandInteractionDataOption { + name: string; + value?: any; + options?: ApplicationCommandInteractionDataOption[]; +} diff --git a/util/src/entities/AuditLog.ts b/util/src/entities/AuditLog.ts new file mode 100644 index 00000000..53e99261 --- /dev/null +++ b/util/src/entities/AuditLog.ts @@ -0,0 +1,147 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { ChannelPermissionOverwrite } from "./Channel"; +import { User } from "./User"; + +export enum AuditLogEvents { + GUILD_UPDATE = 1, + CHANNEL_CREATE = 10, + CHANNEL_UPDATE = 11, + CHANNEL_DELETE = 12, + CHANNEL_OVERWRITE_CREATE = 13, + CHANNEL_OVERWRITE_UPDATE = 14, + CHANNEL_OVERWRITE_DELETE = 15, + MEMBER_KICK = 20, + MEMBER_PRUNE = 21, + MEMBER_BAN_ADD = 22, + MEMBER_BAN_REMOVE = 23, + MEMBER_UPDATE = 24, + MEMBER_ROLE_UPDATE = 25, + MEMBER_MOVE = 26, + MEMBER_DISCONNECT = 27, + BOT_ADD = 28, + ROLE_CREATE = 30, + ROLE_UPDATE = 31, + ROLE_DELETE = 32, + INVITE_CREATE = 40, + INVITE_UPDATE = 41, + INVITE_DELETE = 42, + WEBHOOK_CREATE = 50, + WEBHOOK_UPDATE = 51, + WEBHOOK_DELETE = 52, + EMOJI_CREATE = 60, + EMOJI_UPDATE = 61, + EMOJI_DELETE = 62, + MESSAGE_DELETE = 72, + MESSAGE_BULK_DELETE = 73, + MESSAGE_PIN = 74, + MESSAGE_UNPIN = 75, + INTEGRATION_CREATE = 80, + INTEGRATION_UPDATE = 81, + INTEGRATION_DELETE = 82, +} + +@Entity("audit_logs") +export class AuditLogEntry extends BaseClass { + @Column() + target_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + target?: User; + + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @Column({ + type: "simple-enum", + enum: AuditLogEvents, + }) + action_type: AuditLogEvents; + + @Column("simple-json") + options?: { + delete_member_days?: string; + members_removed?: string; + channel_id?: string; + messaged_id?: string; + count?: string; + id?: string; + type?: string; + role_name?: string; + }; + + @Column() + @Column("simple-json") + changes: AuditLogChange[]; + + @Column() + reason?: string; +} + +export interface AuditLogChange { + new_value?: AuditLogChangeValue; + old_value?: AuditLogChangeValue; + key: string; +} + +export interface AuditLogChangeValue { + name?: string; + description?: string; + icon_hash?: string; + splash_hash?: string; + discovery_splash_hash?: string; + banner_hash?: string; + owner_id?: string; + region?: string; + preferred_locale?: string; + afk_channel_id?: string; + afk_timeout?: number; + rules_channel_id?: string; + public_updates_channel_id?: string; + mfa_level?: number; + verification_level?: number; + explicit_content_filter?: number; + default_message_notifications?: number; + vanity_url_code?: string; + $add?: {}[]; + $remove?: {}[]; + prune_delete_days?: number; + widget_enabled?: boolean; + widget_channel_id?: string; + system_channel_id?: string; + position?: number; + topic?: string; + bitrate?: number; + permission_overwrites?: ChannelPermissionOverwrite[]; + nsfw?: boolean; + application_id?: string; + rate_limit_per_user?: number; + permissions?: string; + color?: number; + hoist?: boolean; + mentionable?: boolean; + allow?: string; + deny?: string; + code?: string; + channel_id?: string; + inviter_id?: string; + max_uses?: number; + uses?: number; + max_age?: number; + temporary?: boolean; + deaf?: boolean; + mute?: boolean; + nick?: string; + avatar_hash?: string; + id?: string; + type?: number; + enable_emoticons?: boolean; + expire_behavior?: number; + expire_grace_period?: number; + user_limit?: number; +} diff --git a/util/src/entities/Ban.ts b/util/src/entities/Ban.ts new file mode 100644 index 00000000..ceea4a05 --- /dev/null +++ b/util/src/entities/Ban.ts @@ -0,0 +1,34 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { User } from "./User"; + +@Entity("bans") +export class Ban extends BaseClass { + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + executor_id: string; + + @JoinColumn({ name: "executor_id" }) + @ManyToOne(() => User, (user: User) => user.id) + executor: User; + + @Column() + ip: string; + + @Column() + reason?: string; +} diff --git a/util/src/entities/BaseClass.ts b/util/src/entities/BaseClass.ts new file mode 100644 index 00000000..38f6a71b --- /dev/null +++ b/util/src/entities/BaseClass.ts @@ -0,0 +1,61 @@ +import "reflect-metadata"; +import { BaseEntity, BeforeInsert, BeforeUpdate, PrimaryColumn } from "typeorm"; +import { Snowflake } from "../util/Snowflake"; +import Ajv, { ValidateFunction } from "ajv"; +import schema from "./schema.json"; + +const ajv = new Ajv({ + removeAdditional: "all", + useDefaults: true, + coerceTypes: true, + validateFormats: false, + allowUnionTypes: true, +}); +// const validator = ajv.compile(schema); + +export class BaseClass extends BaseEntity { + @PrimaryColumn() + id: string; + + // @ts-ignore + constructor(props?: any, public opts: { id?: string } = {}) { + super(); + this.assign(props); + + if (!this.construct.schema) this.construct.schema = { ...schema, $ref: `#/definitions/${this.construct.name}` }; + } + + get construct(): any { + return this.constructor; + } + + assign(props: any) { + if (!props || typeof props !== "object") return; + + delete props.opts; + + for (const key in props) { + if (this.hasOwnProperty(key)) continue; + + Object.defineProperty(this, key, { value: props[key] }); + } + + this.id = this.opts.id || Snowflake.generate(); + } + + @BeforeUpdate() + @BeforeInsert() + validate() { + const valid = ajv.validate(this.construct.schema, this.toJSON()); + if (!valid) throw ajv.errors; + } + + get metadata() { + return this.construct.getRepository().metadata; + } + + toJSON(): any { + // @ts-ignore + return Object.fromEntries(this.metadata.columns.map((x) => [x.propertyName, this[x.propertyName]])); + } +} diff --git a/util/src/entities/Channel.ts b/util/src/entities/Channel.ts new file mode 100644 index 00000000..5845607a --- /dev/null +++ b/util/src/entities/Channel.ts @@ -0,0 +1,104 @@ +import { Column, Entity, JoinColumn, ManyToMany, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { Message } from "./Message"; +import { User } from "./User"; + +export enum ChannelType { + GUILD_TEXT = 0, // a text channel within a server + DM = 1, // a direct message between users + GUILD_VOICE = 2, // a voice channel within a server + GROUP_DM = 3, // a direct message between multiple users + GUILD_CATEGORY = 4, // an organizational category that contains up to 50 channels + GUILD_NEWS = 5, // a channel that users can follow and crosspost into their own server + GUILD_STORE = 6, // a channel in which game developers can sell their game on Discord +} + +@Entity("channels") +export class Channel extends BaseClass { + @Column() + created_at: Date; + + @Column() + name: string; + + @Column({ type: "simple-enum", enum: ChannelType }) + type: ChannelType; + + @Column("simple-array") + recipient_ids: string[]; + + @JoinColumn({ name: "recipient_ids" }) + @ManyToMany(() => User, (user: User) => user.id) + recipients?: User[]; + + @Column() + last_message_id: string; + + @JoinColumn({ name: "last_message_id" }) + @ManyToOne(() => Message, (message: Message) => message.id) + last_message?: Message; + + @Column() + guild_id?: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + parent_id: string; + + @JoinColumn({ name: "parent_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + parent?: Channel; + + @Column() + owner_id: string; + + @JoinColumn({ name: "owner_id" }) + @ManyToOne(() => User, (user: User) => user.id) + owner: User; + + @Column() + last_pin_timestamp?: number; + + @Column() + default_auto_archive_duration?: number; + + @Column() + position: number; + + @Column("simple-json") + permission_overwrites: ChannelPermissionOverwrite[]; + + @Column() + video_quality_mode?: number; + + @Column() + bitrate?: number; + + @Column() + user_limit?: number; + + @Column() + nsfw: boolean; + + @Column() + rate_limit_per_user: number; + + @Column() + topic?: string; +} + +export interface ChannelPermissionOverwrite { + allow: bigint; // for bitfields we use bigints + deny: bigint; // for bitfields we use bigints + id: string; + type: ChannelPermissionOverwriteType; +} + +export enum ChannelPermissionOverwriteType { + role = 0, + member = 1, +} diff --git a/util/src/entities/ConnectedAccount.ts b/util/src/entities/ConnectedAccount.ts new file mode 100644 index 00000000..6aa2b401 --- /dev/null +++ b/util/src/entities/ConnectedAccount.ts @@ -0,0 +1,29 @@ +import { Column, Entity } from "typeorm"; +import { BaseClass } from "./BaseClass"; + +@Entity("connected_accounts") +export class ConnectedAccount extends BaseClass { + @Column() + access_token: string; + + @Column() + friend_sync: boolean; + + @Column() + name: string; + + @Column() + revoked: boolean; + + @Column() + show_activity: boolean; + + @Column() + type: string; + + @Column() + verifie: boolean; + + @Column() + visibility: number; +} diff --git a/util/src/entities/Emoji.ts b/util/src/entities/Emoji.ts new file mode 100644 index 00000000..366549db --- /dev/null +++ b/util/src/entities/Emoji.ts @@ -0,0 +1,39 @@ +import { Column, Entity, JoinColumn, ManyToMany, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { Role } from "./Role"; + +@Entity("emojis") +export class Emoji extends BaseClass { + @Column() + animated: boolean; + + @Column() + available: boolean; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + managed: boolean; + + @Column() + name: string; + + @Column() + require_colons: boolean; + + @Column() + url: string; + + @Column("simple-array") + role_ids: string[]; + + @JoinColumn({ name: "role_ids" }) + @ManyToMany(() => Role, (role: Role) => role.id) + roles: Role[]; // roles this emoji is whitelisted to (new discord feature?) +} diff --git a/util/src/entities/Guild.ts b/util/src/entities/Guild.ts new file mode 100644 index 00000000..d46d31bc --- /dev/null +++ b/util/src/entities/Guild.ts @@ -0,0 +1,179 @@ +import { Column, Entity, JoinColumn, ManyToMany, ManyToOne, OneToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Channel } from "./Channel"; +import { Emoji } from "./Emoji"; +import { Invite } from "./Invite"; +import { Member } from "./Member"; +import { Role } from "./Role"; +import { User } from "./User"; +import { VoiceState } from "./VoiceState"; + +@Entity("guilds") +export class Guild extends BaseClass { + @Column() + afk_channel_id?: string; + + @JoinColumn({ name: "afk_channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + afk_channel?: Channel; + + @Column() + afk_timeout?: number; + + // * commented out -> use owner instead + // application id of the guild creator if it is bot-created + // @Column() + // application?: string; + + @Column() + banner?: string; + + @Column() + default_message_notifications?: number; + + @Column() + description?: string; + + @Column() + discovery_splash?: string; + + @Column() + explicit_content_filter?: number; + + @Column("simple-array") + features: string[]; + + @Column() + icon?: string; + + @Column() + large?: boolean; + + @Column() + max_members?: number; // e.g. default 100.000 + + @Column() + max_presences?: number; + + @Column() + max_video_channel_users?: number; // ? default: 25, is this max 25 streaming or watching + + @Column() + member_count?: number; + + @Column() + presence_count?: number; // users online + + @Column("simple-array") + member_ids: string[]; + + @JoinColumn({ name: "member_ids" }) + @ManyToMany(() => Member, (member: Member) => member.id) + members: Member[]; + + @Column("simple-array") + role_ids: string[]; + + @JoinColumn({ name: "role_ids" }) + @ManyToMany(() => Role, (role: Role) => role.id) + roles: Role[]; + + @Column("simple-array") + channel_ids: string[]; + + @JoinColumn({ name: "channel_ids" }) + @ManyToMany(() => Channel, (channel: Channel) => channel.id) + channels: Channel[]; + + @Column("simple-array") + emoji_ids: string[]; + + @JoinColumn({ name: "emoji_ids" }) + @ManyToMany(() => Emoji, (emoji: Emoji) => emoji.id) + emojis: Emoji[]; + + @Column("simple-array") + voice_state_ids: string[]; + + @JoinColumn({ name: "voice_state_ids" }) + @ManyToMany(() => VoiceState, (voicestate: VoiceState) => voicestate.id) + voice_states: VoiceState[]; + + @Column() + mfa_level?: number; + + @Column() + name: string; + + @Column() + owner_id: string; + + @JoinColumn({ name: "owner_id" }) + @ManyToOne(() => User, (user: User) => user.id) + owner: User; + + @Column() + preferred_locale?: string; // only community guilds can choose this + + @Column() + premium_subscription_count?: number; + + @Column() + premium_tier?: number; // nitro boost level + + @JoinColumn({ name: "public_updates_channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + public_updates_channel?: Channel; + + @Column() + rules_channel_id?: string; + + @JoinColumn({ name: "rules_channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + rules_channel?: string; + + @Column() + region?: string; + + @Column() + splash?: string; + + @Column() + system_channel_id?: string; + + @JoinColumn({ name: "system_channel_id" }) + @ManyToMany(() => Channel, (channel: Channel) => channel.id) + system_channel?: Channel; + + @Column() + system_channel_flags?: number; + + @Column() + unavailable?: boolean; + + @JoinColumn({ name: "vanity_url_code" }) + @OneToOne(() => Invite, (invite: Invite) => invite.code) + vanity_url?: Invite; + + @Column() + verification_level?: number; + + @Column("simple-json") + welcome_screen: { + enabled: boolean; + description: string; + welcome_channels: { + description: string; + emoji_id?: string; + emoji_name: string; + channel_id: string; + }[]; + }; + + @JoinColumn({ name: "widget_channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + widget_channel?: Channel; + + @Column() + widget_enabled?: boolean; +} diff --git a/util/src/entities/Invite.ts b/util/src/entities/Invite.ts new file mode 100644 index 00000000..19f7206a --- /dev/null +++ b/util/src/entities/Invite.ts @@ -0,0 +1,60 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Channel } from "./Channel"; +import { Guild } from "./Guild"; +import { User } from "./User"; + +@Entity("invites") +export class Invite extends BaseClass { + @Column() + code: string; + + @Column() + temporary: boolean; + + @Column() + uses: number; + + @Column() + max_uses: number; + + @Column() + max_age: number; + + @Column() + created_at: Date; + + @Column() + expires_at: Date; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + channel_id: string; + + @JoinColumn({ name: "channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + channel: Channel; + + @Column() + inviter_id: string; + + @JoinColumn({ name: "inviter_id" }) + @ManyToOne(() => User, (user: User) => user.id) + inviter: User; + + @Column() + target_usser_id: string; + + @JoinColumn({ name: "target_user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + target_user?: string; // could be used for "User specific invites" https://github.com/fosscord/fosscord/issues/62 + + @Column() + target_user_type?: number; +} diff --git a/util/src/entities/Member.ts b/util/src/entities/Member.ts new file mode 100644 index 00000000..c367755e --- /dev/null +++ b/util/src/entities/Member.ts @@ -0,0 +1,87 @@ +import { PublicUser, User } from "./User"; +import { BaseClass } from "./BaseClass"; +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { Guild } from "./Guild"; + +@Entity("members") +export class Member extends BaseClass { + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + nick?: string; + + @Column("simple-array") + roles: string[]; + + @Column() + joined_at: Date; + + @Column() + premium_since?: number; + + @Column() + deaf: boolean; + + @Column() + mute: boolean; + + @Column() + pending: boolean; + + @Column("simple-json") + settings: UserGuildSettings; + + // TODO: update + @Column("simple-json") + read_state: Record; +} + +export interface UserGuildSettings { + channel_overrides: { + channel_id: string; + 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; +} + +export interface MuteConfig { + end_time: number; + selected_time_window: number; +} + +// @ts-ignore +export interface PublicMember extends Omit { + user: PublicUser; +} + +export const PublicMemberProjection = { + id: true, + guild_id: true, + nick: true, + roles: true, + joined_at: true, + pending: true, + deaf: true, + mute: true, + premium_since: true, +}; diff --git a/util/src/entities/Message.ts b/util/src/entities/Message.ts new file mode 100644 index 00000000..2c0918c7 --- /dev/null +++ b/util/src/entities/Message.ts @@ -0,0 +1,260 @@ +import { User } from "./User"; +import { Member } from "./Member"; +import { Role } from "./Role"; +import { Channel } from "./Channel"; +import { InteractionType } from "../interfaces/Interaction"; +import { Application } from "./Application"; +import { Column, CreateDateColumn, Entity, JoinColumn, ManyToMany, ManyToOne, UpdateDateColumn } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { Webhook } from "./Webhook"; + +export enum MessageType { + DEFAULT = 0, + RECIPIENT_ADD = 1, + RECIPIENT_REMOVE = 2, + CALL = 3, + CHANNEL_NAME_CHANGE = 4, + CHANNEL_ICON_CHANGE = 5, + CHANNEL_PINNED_MESSAGE = 6, + GUILD_MEMBER_JOIN = 7, + USER_PREMIUM_GUILD_SUBSCRIPTION = 8, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1 = 9, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2 = 10, + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3 = 11, + CHANNEL_FOLLOW_ADD = 12, + GUILD_DISCOVERY_DISQUALIFIED = 14, + GUILD_DISCOVERY_REQUALIFIED = 15, + REPLY = 19, + APPLICATION_COMMAND = 20, +} + +@Entity("messages") +export class Message extends BaseClass { + @Column() + id: string; + + @Column() + channel_id: string; + + @JoinColumn({ name: "channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + channel: Channel; + + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild?: Guild; + + @Column() + author_id: string; + + @JoinColumn({ name: "author_id" }) + @ManyToOne(() => User, (user: User) => user.id) + author?: User; + + @Column() + member_id: string; + + @JoinColumn({ name: "member_id" }) + @ManyToOne(() => Member, (member: Member) => member.id) + member?: Member; + + @Column() + webhook_id: string; + + @JoinColumn({ name: "webhook_id" }) + @ManyToOne(() => Webhook, (webhook: Webhook) => webhook.id) + webhook?: Webhook; + + @Column() + application_id: string; + + @JoinColumn({ name: "application_id" }) + @ManyToOne(() => Application, (application: Application) => application.id) + application?: Application; + + @Column() + content?: string; + + @Column() + @CreateDateColumn() + timestamp: Date; + + @Column() + @UpdateDateColumn() + edited_timestamp?: Date; + + @Column() + tts?: boolean; + + @Column() + mention_everyone?: boolean; + + @Column("simple-array") + mention_user_ids: string[]; + + @JoinColumn({ name: "mention_user_ids" }) + @ManyToMany(() => User, (user: User) => user.id) + mention_users: User[]; + + @Column("simple-array") + mention_role_ids: string[]; + + @JoinColumn({ name: "mention_role_ids" }) + @ManyToMany(() => Role, (role: Role) => role.id) + mention_roles: Role[]; + + @Column("simple-array") + mention_channel_ids: string[]; + + @JoinColumn({ name: "mention_channel_ids" }) + @ManyToMany(() => Channel, (channel: Channel) => channel.id) + mention_channels: Channel[]; + + @Column("simple-json") + attachments: Attachment[]; + + @Column("simple-json") + embeds: Embed[]; + + @Column("simple-json") + reactions: Reaction[]; + + @Column({ type: "text" }) + nonce?: string | number; + + @Column() + pinned?: boolean; + + @Column({ type: "simple-enum", enum: MessageType }) + type: MessageType; + + @Column("simple-json") + activity?: { + type: number; + party_id: string; + }; + + @Column({ type: "bigint" }) + flags?: bigint; + + @Column("simple-json") + stickers?: any[]; + + @Column("simple-json") + message_reference?: { + message_id: string; + channel_id?: string; + guild_id?: string; + }; + + @Column("simple-json") + interaction?: { + id: string; + type: InteractionType; + name: string; + user_id: string; // the user who invoked the interaction + // user: User; // TODO: autopopulate user + }; + + @Column("simple-json") + components: MessageComponent[]; +} + +export interface MessageComponent { + type: number; + style?: number; + label?: string; + emoji?: PartialEmoji; + custom_id?: string; + url?: string; + disabled?: boolean; + components: MessageComponent[]; +} + +export enum MessageComponentType { + ActionRow = 1, + Button = 2, +} + +export interface Attachment { + id: string; // attachment id + filename: string; // name of file attached + size: number; // size of file in bytes + url: string; // source url of file + proxy_url: string; // a proxied url of file + height?: number; // height of file (if image) + width?: number; // width of file (if image) + content_type?: string; +} + +export interface Embed { + title?: string; //title of embed + type?: EmbedType; // type of embed (always "rich" for webhook embeds) + description?: string; // description of embed + url?: string; // url of embed + timestamp?: Date; // timestamp of embed content + color?: number; // color code of the embed + footer?: { + text: string; + icon_url?: string; + proxy_icon_url?: string; + }; // footer object footer information + image?: EmbedImage; // image object image information + thumbnail?: EmbedImage; // thumbnail object thumbnail information + video?: EmbedImage; // video object video information + provider?: { + name?: string; + url?: string; + }; // provider object provider information + author?: { + name?: string; + url?: string; + icon_url?: string; + proxy_icon_url?: string; + }; // author object author information + fields?: { + name: string; + value: string; + inline?: boolean; + }[]; +} + +export enum EmbedType { + rich = "rich", + image = "image", + video = "video", + gifv = "gifv", + article = "article", + link = "link", +} + +export interface EmbedImage { + url?: string; + proxy_url?: string; + height?: number; + width?: number; +} + +export interface Reaction { + count: number; + //// not saved in the database // me: boolean; // whether the current user reacted using this emoji + emoji: PartialEmoji; + user_ids: string[]; +} + +export interface PartialEmoji { + id?: string; + name: string; + animated?: boolean; +} + +export interface AllowedMentions { + parse?: ("users" | "roles" | "everyone")[]; + roles?: string[]; + users?: string[]; + replied_user?: boolean; +} diff --git a/util/src/entities/RateLimit.ts b/util/src/entities/RateLimit.ts new file mode 100644 index 00000000..374a0759 --- /dev/null +++ b/util/src/entities/RateLimit.ts @@ -0,0 +1,25 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { User } from "./User"; + +@Entity("rate_limits") +export class RateLimit extends BaseClass { + @Column() + id: "global" | "error" | string; // channel_239842397 | guild_238927349823 | webhook_238923423498 + + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user) => user.id) + user: User; + + @Column() + hits: number; + + @Column() + blocked: boolean; + + @Column() + expires_at: Date; +} diff --git a/util/src/entities/ReadState.ts b/util/src/entities/ReadState.ts new file mode 100644 index 00000000..7c56b6c6 --- /dev/null +++ b/util/src/entities/ReadState.ts @@ -0,0 +1,35 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Channel } from "./Channel"; +import { Message } from "./Message"; +import { User } from "./User"; + +@Entity("read_states") +export class ReadState extends BaseClass { + @Column() + channel_id: string; + + @JoinColumn({ name: "channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + channel: Channel; + + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @JoinColumn({ name: "last_message_id" }) + @ManyToOne(() => Message, (message: Message) => message.id) + last_message?: Message; + + @Column() + last_pin_timestamp?: Date; + + @Column() + mention_count: number; + + @Column() + manual: boolean; +} diff --git a/util/src/entities/Relationship.ts b/util/src/entities/Relationship.ts new file mode 100644 index 00000000..bd5861f0 --- /dev/null +++ b/util/src/entities/Relationship.ts @@ -0,0 +1,26 @@ +import { Column, Entity, JoinColumn, ManyToOne, OneToMany } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { User } from "./User"; + +export enum RelationshipType { + outgoing = 4, + incoming = 3, + blocked = 2, + friends = 1, +} + +@Entity("relationships") +export class Relationship extends BaseClass { + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @Column() + nickname?: string; + + @Column({ type: "simple-enum", enum: RelationshipType }) + type: RelationshipType; +} diff --git a/util/src/entities/Role.ts b/util/src/entities/Role.ts new file mode 100644 index 00000000..7bb144cc --- /dev/null +++ b/util/src/entities/Role.ts @@ -0,0 +1,41 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; + +@Entity("roles") +export class Role extends BaseClass { + @Column() + guild_id: string; + + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild: Guild; + + @Column() + color: number; + + @Column() + hoist: boolean; + + @Column() + managed: boolean; + + @Column() + mentionable: boolean; + + @Column() + name: string; + + @Column({ type: "bigint" }) + permissions: bigint; + + @Column() + position: number; + + @Column({ type: "simple-json" }) + tags?: { + bot_id?: string; + integration_id?: string; + premium_subscriber?: boolean; + }; +} diff --git a/util/src/entities/Team.ts b/util/src/entities/Team.ts new file mode 100644 index 00000000..5e645650 --- /dev/null +++ b/util/src/entities/Team.ts @@ -0,0 +1,27 @@ +import { Column, Entity, JoinColumn, ManyToMany, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { TeamMember } from "./TeamMember"; +import { User } from "./User"; + +@Entity("teams") +export class Team extends BaseClass { + @Column() + icon?: string; + + @Column("simple-array") + member_ids: string[]; + + @JoinColumn({ name: "member_ids" }) + @ManyToMany(() => TeamMember, (member: TeamMember) => member.id) + members: TeamMember[]; + + @Column() + name: string; + + @Column() + owner_user_id: string; + + @JoinColumn({ name: "owner_user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + owner_user: User; +} diff --git a/util/src/entities/TeamMember.ts b/util/src/entities/TeamMember.ts new file mode 100644 index 00000000..2b1c76f1 --- /dev/null +++ b/util/src/entities/TeamMember.ts @@ -0,0 +1,31 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { User } from "./User"; + +export enum TeamMemberState { + INVITED = 1, + ACCEPTED = 2, +} + +@Entity("team_members") +export class TeamMember extends BaseClass { + @Column({ type: "simple-enum", enum: TeamMemberState }) + membership_state: TeamMemberState; + + @Column("simple-array") + permissions: string[]; + + @Column() + team_id: string; + + @JoinColumn({ name: "team_id" }) + @ManyToOne(() => require("./Team").Team, (team: import("./Team").Team) => team.id) + team: import("./Team").Team; + + @Column() + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; +} diff --git a/util/src/entities/Template.ts b/util/src/entities/Template.ts new file mode 100644 index 00000000..5c9a5120 --- /dev/null +++ b/util/src/entities/Template.ts @@ -0,0 +1,33 @@ +import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Guild } from "./Guild"; +import { User } from "./User"; + +@Entity("templates") +export class Template extends BaseClass { + @Column() + code: string; + + @Column() + name: string; + + @Column() + description?: string; + + @Column() + usage_count?: number; + + @JoinColumn({ name: "creator_id" }) + @ManyToOne(() => User, (user: User) => user.id) + creator: User; + + @Column() + created_at: Date; + + @Column() + updated_at: Date; + + @JoinColumn({ name: "source_guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + source_guild: Guild; +} diff --git a/util/src/entities/User.ts b/util/src/entities/User.ts new file mode 100644 index 00000000..073f6217 --- /dev/null +++ b/util/src/entities/User.ts @@ -0,0 +1,188 @@ +import { Column, Entity, JoinColumn, OneToMany, OneToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { BitField } from "../util/BitField"; +import { Relationship } from "./Relationship"; +import { ConnectedAccount } from "./ConnectedAccount"; + +export const PublicUserProjection = { + username: true, + discriminator: true, + id: true, + public_flags: true, + avatar: true, + accent_color: true, + banner: true, + bio: true, + bot: true, +}; + +@Entity("users") +export class User extends BaseClass { + @Column() + username: string; // username max length 32, min 2 (should be configurable) + + @Column() + discriminator: string; // #0001 4 digit long string from #0001 - #9999 + + @Column() + avatar?: string; // hash of the user avatar + + @Column() + accent_color?: number; // banner color of user + + @Column() + banner?: string; // hash of the user banner + + @Column() + phone?: string; // phone number of the user + + @Column() + desktop: boolean; // if the user has desktop app installed + + @Column() + mobile: boolean; // if the user has mobile app installed + + @Column() + premium: boolean; // if user bought nitro + + @Column() + premium_type: number; // nitro level + + @Column() + bot: boolean; // if user is bot + + @Column() + bio: string; // short description of the user (max 190 chars -> should be configurable) + + @Column() + system: boolean; // shouldn't be used, the api sents this field type true, if the generated message comes from a system generated author + + @Column() + nsfw_allowed: boolean; // if the user is older than 18 (resp. Config) + + @Column() + mfa_enabled: boolean; // if multi factor authentication is enabled + + @Column() + created_at: Date; // registration date + + @Column() + verified: boolean; // if the user is offically verified + + @Column() + disabled: boolean; // if the account is disabled + + @Column() + deleted: boolean; // if the user was deleted + + @Column() + email?: string; // email of the user + + @Column({ type: "bigint" }) + flags: bigint; // UserFlags + + @Column({ type: "bigint" }) + public_flags: bigint; + + @Column("simple-array") // string in simple-array must not contain commas + guilds: string[]; // array of guild ids the user is part of + + @Column("simple-array") // string in simple-array must not contain commas + relationship_ids: string[]; // array of guild ids the user is part of + + @JoinColumn({ name: "relationship_ids" }) + @OneToMany(() => User, (user: User) => user.id) + relationships: Relationship[]; + + @Column("simple-array") // string in simple-array must not contain commas + connected_account_ids: string[]; // array of guild ids the user is part of + + @JoinColumn({ name: "connected_account_ids" }) + @OneToMany(() => ConnectedAccount, (account: ConnectedAccount) => account.id) + connected_accounts: ConnectedAccount[]; + + @Column({ type: "simple-json", select: false }) + user_data: { + valid_tokens_since: Date; // all tokens with a previous issue date are invalid + hash: string; // hash of the password, salt is saved in password (bcrypt) + fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts + }; + + @Column("simple-json") + settings: UserSettings; +} + +export interface UserSettings { + afk_timeout: number; + allow_accessibility_detection: boolean; + animate_emoji: boolean; + animate_stickers: number; + contact_sync_enabled: boolean; + convert_emoticons: boolean; + custom_status: { + emoji_id?: string; + 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 }; + gateway_connected: boolean; + gif_auto_play: boolean; + // every top guild is displayed as a "folder" + guild_folders: { + color: number; + guild_ids: string[]; + id: number; + name: string; + }[]; + guild_positions: string[]; // guild ids ordered by position + inline_attachment_media: boolean; + inline_embed_media: boolean; + locale: string; // en_US + message_display_compact: boolean; + native_phone_integration_enabled: boolean; + render_embeds: boolean; + render_reactions: boolean; + restricted_guilds: string[]; + show_current_game: boolean; + status: "online" | "offline" | "dnd" | "idle"; + stream_notifications_enabled: boolean; + theme: "dark" | "white"; // dark + timezone_offset: number; // e.g -60 +} + +// Private user data that should never get sent to the client +export interface PublicUser { + id: string; + discriminator: string; + username: string; + avatar?: string; + accent_color?: number; + banner?: string; + public_flags: bigint; + bot: boolean; +} + +export class UserFlags extends BitField { + static FLAGS = { + DISCORD_EMPLOYEE: BigInt(1) << BigInt(0), + PARTNERED_SERVER_OWNER: BigInt(1) << BigInt(1), + HYPESQUAD_EVENTS: BigInt(1) << BigInt(2), + BUGHUNTER_LEVEL_1: BigInt(1) << BigInt(3), + HOUSE_BRAVERY: BigInt(1) << BigInt(6), + HOUSE_BRILLIANCE: BigInt(1) << BigInt(7), + HOUSE_BALANCE: BigInt(1) << BigInt(8), + EARLY_SUPPORTER: BigInt(1) << BigInt(9), + TEAM_USER: BigInt(1) << BigInt(10), + SYSTEM: BigInt(1) << BigInt(12), + BUGHUNTER_LEVEL_2: BigInt(1) << BigInt(14), + VERIFIED_BOT: BigInt(1) << BigInt(16), + EARLY_VERIFIED_BOT_DEVELOPER: BigInt(1) << BigInt(17), + }; +} diff --git a/util/src/entities/VoiceState.ts b/util/src/entities/VoiceState.ts new file mode 100644 index 00000000..2416c6c0 --- /dev/null +++ b/util/src/entities/VoiceState.ts @@ -0,0 +1,44 @@ +import { Column, Entity, JoinColumn, ManyToOne, OneToOne } from "typeorm"; +import { BaseClass } from "./BaseClass"; +import { Channel } from "./Channel"; +import { Guild } from "./Guild"; +import { User } from "./User"; + +@Entity("voice_states") +export class VoiceState extends BaseClass { + @JoinColumn({ name: "guild_id" }) + @ManyToOne(() => Guild, (guild: Guild) => guild.id) + guild?: Guild; + + @JoinColumn({ name: "channel_id" }) + @ManyToOne(() => Channel, (channel: Channel) => channel.id) + channel: Channel; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User, (user: User) => user.id) + user: User; + + @Column() + session_id: string; + + @Column() + deaf: boolean; + + @Column() + mute: boolean; + + @Column() + self_deaf: boolean; + + @Column() + self_mute: boolean; + + @Column() + self_stream?: boolean; + + @Column() + self_video: boolean; + + @Column() + suppress: boolean; // whether this user is muted by the current user +} diff --git a/util/src/entities/Webhook.ts b/util/src/entities/Webhook.ts new file mode 100644 index 00000000..54233638 --- /dev/null +++ b/util/src/entities/Webhook.ts @@ -0,0 +1,40 @@ +import { Column, Entity, JoinColumn } from "typeorm"; +import { BaseClass } from "./BaseClass"; + +export enum WebhookType { + Incoming = 1, + ChannelFollower = 2, +} + +@Entity("webhooks") +export class Webhook extends BaseClass { + @Column() + id: string; + + @Column({ type: "simple-enum", enum: WebhookType }) + type: WebhookType; + + @Column() + name?: string; + + @Column() + avatar?: string; + + @Column() + token?: string; + + @JoinColumn() + guild?: string; + + @JoinColumn() + channel: string; + + @JoinColumn() + application?: string; + + @JoinColumn() + user?: string; + + @JoinColumn() + source_guild: string; +} diff --git a/util/src/entities/index.ts b/util/src/entities/index.ts new file mode 100644 index 00000000..9cb10016 --- /dev/null +++ b/util/src/entities/index.ts @@ -0,0 +1,21 @@ +export * from "./Application"; +export * from "./AuditLog"; +export * from "./Ban"; +export * from "./BaseClass"; +export * from "./Channel"; +export * from "./ConnectedAccount"; +export * from "./Emoji"; +export * from "./Guild"; +export * from "./Invite"; +export * from "./Member"; +export * from "./Message"; +export * from "./RateLimit"; +export * from "./ReadState"; +export * from "./Relationship"; +export * from "./Role"; +export * from "./Team"; +export * from "./TeamMember"; +export * from "./Template"; +export * from "./User"; +export * from "./VoiceState"; +export * from "./Webhook"; diff --git a/util/src/entities/schema.json b/util/src/entities/schema.json new file mode 100644 index 00000000..603ea0d5 --- /dev/null +++ b/util/src/entities/schema.json @@ -0,0 +1,19389 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "Activity": { + "properties": { + "application_id": { + "type": "string" + }, + "assets": { + "properties": { + "large_image": { + "type": "string" + }, + "large_text": { + "type": "string" + }, + "small_image": { + "type": "string" + }, + "small_text": { + "type": "string" + } + }, + "type": "object" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "details": { + "type": "string" + }, + "emoji": { + "properties": { + "amimated": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "flags": { + "type": "bigint" + }, + "instance": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "party": { + "properties": { + "id": { + "type": "string" + }, + "size": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "type": "object" + }, + "secrets": { + "properties": { + "join": { + "type": "string" + }, + "match": { + "type": "string" + }, + "spectate": { + "type": "string" + } + }, + "type": "object" + }, + "state": { + "type": "string" + }, + "timestamps": { + "items": { + "properties": { + "end": { + "type": "number" + }, + "start": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/ActivityType" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ActivityType": { + "enum": [ + 0, + 1, + 2, + 4, + 5 + ], + "type": "number" + }, + "AllowedMentions": { + "properties": { + "parse": { + "items": { + "enum": [ + "everyone", + "roles", + "users" + ], + "type": "string" + }, + "type": "array" + }, + "replied_user": { + "type": "boolean" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "users": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "Application": { + "properties": { + "bot_public": { + "type": "boolean" + }, + "bot_require_code_grant": { + "type": "boolean" + }, + "cover_image": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": "string" + }, + "flags": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner_id": { + "type": "string" + }, + "primary_sku_id": { + "type": [ + "null", + "string" + ] + }, + "privacy_policy_url": { + "type": [ + "null", + "string" + ] + }, + "rpc_origins": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "slug": { + "type": [ + "null", + "string" + ] + }, + "summary": { + "type": [ + "null", + "string" + ] + }, + "team": { + "anyOf": [ + { + "$ref": "#/definitions/Team" + }, + { + "type": "null" + } + ] + }, + "team_id": { + "type": "string" + }, + "terms_of_service_url": { + "type": [ + "null", + "string" + ] + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "verify_key": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommand": { + "properties": { + "application_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "ApplicationCommandCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommandDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ApplicationCommandInteractionData": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandInteractionDataOption" + }, + "type": "array" + } + }, + "type": "object" + }, + "ApplicationCommandInteractionDataOption": { + "properties": { + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandInteractionDataOption" + }, + "type": "array" + }, + "value": { + } + }, + "type": "object" + }, + "ApplicationCommandOption": { + "properties": { + "choices": { + "items": { + "$ref": "#/definitions/ApplicationCommandOptionChoice" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "items": { + "$ref": "#/definitions/ApplicationCommandOption" + }, + "type": "array" + }, + "required": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/ApplicationCommandOptionType" + } + }, + "type": "object" + }, + "ApplicationCommandOptionChoice": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": [ + "string", + "number" + ] + } + }, + "type": "object" + }, + "ApplicationCommandOptionType": { + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ], + "type": "number" + }, + "ApplicationCommandPayload": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "ApplicationCommandUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/ApplicationCommand" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "APPLICATION_COMMAND_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "AsyncSchema": { + "properties": { + "$async": { + "enum": [ + true + ], + "type": "boolean" + }, + "$id": { + "type": "string" + }, + "$schema": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "AsyncValidateFunction": { + "properties": { + "$async": { + "enum": [ + true + ], + "type": "boolean" + }, + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "Attachment": { + "properties": { + "content_type": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "height": { + "type": "number" + }, + "id": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "size": { + "type": "number" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "AuditLogChange": { + "properties": { + "key": { + "type": "string" + }, + "new_value": { + "$ref": "#/definitions/AuditLogChangeValue" + }, + "old_value": { + "$ref": "#/definitions/AuditLogChangeValue" + } + }, + "type": "object" + }, + "AuditLogChangeValue": { + "properties": { + "$add": { + "items": { + "properties": { + }, + "type": "object" + }, + "type": "array" + }, + "$remove": { + "items": { + "properties": { + }, + "type": "object" + }, + "type": "array" + }, + "afk_channel_id": { + "type": "string" + }, + "afk_timeout": { + "type": "number" + }, + "allow": { + "type": "string" + }, + "application_id": { + "type": "string" + }, + "avatar_hash": { + "type": "string" + }, + "banner_hash": { + "type": "string" + }, + "bitrate": { + "type": "number" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "color": { + "type": "number" + }, + "deaf": { + "type": "boolean" + }, + "default_message_notifications": { + "type": "number" + }, + "deny": { + "type": "string" + }, + "description": { + "type": "string" + }, + "discovery_splash_hash": { + "type": "string" + }, + "enable_emoticons": { + "type": "boolean" + }, + "expire_behavior": { + "type": "number" + }, + "expire_grace_period": { + "type": "number" + }, + "explicit_content_filter": { + "type": "number" + }, + "hoist": { + "type": "boolean" + }, + "icon_hash": { + "type": "string" + }, + "id": { + "type": "string" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "mentionable": { + "type": "boolean" + }, + "mfa_level": { + "type": "number" + }, + "mute": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "nick": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "owner_id": { + "type": "string" + }, + "permission_overwrites": { + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + }, + "type": "array" + }, + "permissions": { + "type": "string" + }, + "position": { + "type": "number" + }, + "preferred_locale": { + "type": "string" + }, + "prune_delete_days": { + "type": "number" + }, + "public_updates_channel_id": { + "type": "string" + }, + "rate_limit_per_user": { + "type": "number" + }, + "region": { + "type": "string" + }, + "rules_channel_id": { + "type": "string" + }, + "splash_hash": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "topic": { + "type": "string" + }, + "type": { + "type": "number" + }, + "user_limit": { + "type": "number" + }, + "uses": { + "type": "number" + }, + "vanity_url_code": { + "type": "string" + }, + "verification_level": { + "type": "number" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AuditLogEntry": { + "properties": { + "action_type": { + "$ref": "#/definitions/AuditLogEvents" + }, + "changes": { + "items": { + "$ref": "#/definitions/AuditLogChange" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "options": { + "properties": { + "channel_id": { + "type": "string" + }, + "count": { + "type": "string" + }, + "delete_member_days": { + "type": "string" + }, + "id": { + "type": "string" + }, + "members_removed": { + "type": "string" + }, + "messaged_id": { + "type": "string" + }, + "role_name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "reason": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "target": { + "$ref": "#/definitions/User" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "AuditLogEvents": { + "enum": [ + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 30, + 31, + 32, + 40, + 41, + 42, + 50, + 51, + 52, + 60, + 61, + 62, + 72, + 73, + 74, + 75, + 80, + 81, + 82 + ], + "type": "number" + }, + "AuroraDataApiConnectionOptions": { + "description": "MySQL specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "formatOptions": { + "additionalProperties": { + }, + "properties": { + "castParameters": { + "type": "boolean" + } + }, + "type": "object" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "legacySpatialSupport": { + "description": "Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n(Default: true)", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "region": { + "type": "string" + }, + "resourceArn": { + "type": "string" + }, + "secretArn": { + "type": "string" + }, + "serviceConfigOptions": { + "additionalProperties": { + }, + "type": "object" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "aurora-data-api" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "AuroraDataApiPostgresConnectionOptions": { + "description": "Postgres-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "formatOptions": { + "additionalProperties": { + }, + "properties": { + "castParameters": { + "type": "boolean" + } + }, + "type": "object" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "poolErrorHandler": { + "type": "object" + }, + "region": { + "type": "string" + }, + "resourceArn": { + "type": "string" + }, + "secretArn": { + "type": "string" + }, + "serviceConfigOptions": { + "additionalProperties": { + }, + "type": "object" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "transformParameters": { + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "aurora-data-api-pg" + ], + "type": "string" + }, + "uuidExtension": { + "description": "The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\nIf pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\nIf uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.", + "enum": [ + "pgcrypto", + "uuid-ossp" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryAccessTokenAuthentication": { + "properties": { + "options": { + "properties": { + "token": { + "description": "A user need to provide `token` which they retrived else where\nto forming the connection.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-access-token" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryMsiAppServiceAuthentication": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "If you user want to connect to an Azure app service using a specific client account\nthey need to provide `clientId` asscoiate to their created idnetity.\n\nThis is optional for retrieve token from azure web app service", + "type": "string" + }, + "msiEndpoint": { + "description": "A msi app service environment need to provide `msiEndpoint` for retriving the accesstoken.", + "type": "string" + }, + "msiSecret": { + "description": "A msi app service environment need to provide `msiSecret` for retriving the accesstoken.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-msi-app-service" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryMsiVmAuthentication": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "If you user want to connect to an Azure app service using a specific client account\nthey need to provide `clientId` asscoiate to their created idnetity.\n\nThis is optional for retrieve token from azure web app service", + "type": "string" + }, + "msiEndpoint": { + "description": "A user need to provide `msiEndpoint` for retriving the accesstoken.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-msi-vm" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryPasswordAuthentication": { + "properties": { + "options": { + "properties": { + "domain": { + "description": "Optional parameter for specific Azure tenant ID", + "type": "string" + }, + "password": { + "description": "A user need to provide `password` asscoiate to their account.", + "type": "string" + }, + "userName": { + "description": "A user need to provide `userName` asscoiate to their account.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-password" + ], + "type": "string" + } + }, + "type": "object" + }, + "AzureActiveDirectoryServicePrincipalSecret": { + "properties": { + "options": { + "properties": { + "clientId": { + "description": "Application (`client`) ID from your registered Azure application", + "type": "string" + }, + "clientSecret": { + "description": "The created `client secret` for this registered Azure application", + "type": "string" + }, + "tenantId": { + "description": "Directory (`tenant`) ID from your registered Azure application", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "azure-active-directory-service-principal-secret" + ], + "type": "string" + } + }, + "type": "object" + }, + "Ban": { + "properties": { + "executor": { + "$ref": "#/definitions/User" + }, + "executor_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "reason": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "BaseClass": { + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "BaseConnectionOptions": { + "description": "BaseConnectionOptions is set of connection options shared by all database types.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/DatabaseType", + "description": "Database type. This value is required." + } + }, + "type": "object" + }, + "BetterSqlite3ConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Storage type or path to the storage.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "fileMustExist": { + "description": "If the database does not exist, an Error will be thrown instead of creating a new file.\nThis option does not affect in-memory or readonly database connections.\nDefault: false.", + "type": "boolean" + }, + "key": { + "description": "Encryption key for for SQLCipher.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "prepareDatabase": { + "description": "Function to run before a database is used in typeorm.\nYou can set pragmas, register plugins or register\nfunctions or aggregates in this function.", + "type": "object" + }, + "readonly": { + "description": "Open the database connection in readonly mode.\nDefault: false.", + "type": "boolean" + }, + "statementCacheSize": { + "description": "Cache size of sqlite statement to speed up queries.\nDefault: 100.", + "type": "number" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "timeout": { + "description": "The number of milliseconds to wait when executing queries\non a locked database, before throwing a SQLITE_BUSY error.\nDefault: 5000.", + "type": "number" + }, + "type": { + "description": "Database type.", + "enum": [ + "better-sqlite3" + ], + "type": "string" + }, + "verbose": { + "$ref": "#/definitions/Function", + "description": "Provide a function that gets called with every SQL string executed by the database connection." + } + }, + "type": "object" + }, + "BigInt": { + "properties": { + "__@toStringTag": { + "enum": [ + "BigInt" + ], + "type": "string" + } + }, + "type": "object" + }, + "BitField": { + "description": "Data structure that makes it easy to interact with a bitfield.", + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "BitFieldResolvable": { + "anyOf": [ + { + "$ref": "#/definitions/BigInt" + }, + { + "$ref": "#/definitions/BitField" + }, + { + "items": { + "$ref": "#/definitions/BitFieldResolvable" + }, + "type": "array" + }, + { + "type": [ + "string", + "number" + ] + } + ] + }, + "Boolean": { + "type": "object" + }, + "BooleanConstructor": { + "properties": { + "prototype": { + "$ref": "#/definitions/Boolean" + } + }, + "type": "object" + }, + "Broadcaster": { + "description": "Broadcaster provides a helper methods to broadcast events to the subscribers.", + "properties": { + "queryRunner": { + } + }, + "type": "object" + }, + "CUSTOMEVENTS": { + "enum": [ + "INVALIDATED" + ], + "type": "string" + }, + "CapacitorConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name (capacitor-sqlite will add the suffix `SQLite.db`)", + "type": "string" + }, + "driver": { + "description": "The capacitor-sqlite instance. For example, `new SQLiteConnection(CapacitorSQLite)`." + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "journalMode": { + "description": "The SQLite journal mode (optional)", + "enum": [ + "DELETE", + "MEMORY", + "OFF", + "PERSIST", + "TRUNCATE", + "WAL" + ], + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "mode": { + "description": "Set the mode for database encryption", + "enum": [ + "encryption", + "newsecret", + "no-encryption", + "secret" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "capacitor" + ], + "type": "string" + }, + "version": { + "description": "Database version", + "type": "number" + } + }, + "type": "object" + }, + "Channel": { + "properties": { + "bitrate": { + "type": "number" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "default_auto_archive_duration": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "last_message": { + "$ref": "#/definitions/Message" + }, + "last_message_id": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "owner_id": { + "type": "string" + }, + "parent": { + "$ref": "#/definitions/Channel" + }, + "parent_id": { + "type": "string" + }, + "permission_overwrites": { + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + }, + "type": "array" + }, + "position": { + "type": "number" + }, + "rate_limit_per_user": { + "type": "number" + }, + "recipient_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recipients": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "topic": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_limit": { + "type": "number" + }, + "video_quality_mode": { + "type": "number" + } + }, + "type": "object" + }, + "ChannelCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelPermissionOverwrite": { + "properties": { + "allow": { + "type": "bigint" + }, + "deny": { + "type": "bigint" + }, + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + } + }, + "type": "object" + }, + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1 + ], + "type": "number" + }, + "ChannelPinsUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "number" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "CHANNEL_PINS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ChannelType": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "number" + }, + "ChannelUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Channel" + }, + "event": { + "enum": [ + "CHANNEL_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Channel_1": { + "type": "object" + }, + "CheckMetadata": { + "description": "Check metadata contains all information about table's check constraints.", + "properties": { + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this check constraint is applied." + }, + "expression": { + "description": "Check expression.", + "type": "string" + }, + "givenName": { + "description": "User specified check constraint name.", + "type": "string" + }, + "name": { + "description": "Final check constraint name.\nIf check constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf check constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "ClientStatus": { + "properties": { + "desktop": { + "type": "string" + }, + "mobile": { + "type": "string" + }, + "web": { + "type": "string" + } + }, + "type": "object" + }, + "ClosureTreeOptions": { + "properties": { + "ancestorColumnName": { + "type": "object" + }, + "closureTableName": { + "type": "string" + }, + "descendantColumnName": { + "type": "object" + } + }, + "type": "object" + }, + "CockroachConnectionCredentialsOptions": { + "description": "Cockroachdb specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "CockroachConnectionOptions": { + "description": "Cockroachdb-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "poolErrorHandler": { + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/CockroachConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/CockroachConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name.", + "type": "string" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "cockroachdb" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "ColumnMetadata": { + "description": "This metadata contains all information about entity's column.", + "properties": { + "asExpression": { + "description": "Generated column expression. Supports only in MySQL.", + "type": "string" + }, + "charset": { + "description": "Defines column character set.", + "type": "string" + }, + "closureType": { + "description": "Column type in the case if this column is in the closure table.\nColumn can be ancestor or descendant in the closure tables.", + "enum": [ + "ancestor", + "descendant" + ], + "type": "string" + }, + "collation": { + "description": "Defines column collation.", + "type": "string" + }, + "comment": { + "description": "Column comment.\nThis feature is not supported by all databases.", + "type": "string" + }, + "databaseName": { + "description": "Complete column name in the database including its embedded prefixes.", + "type": "string" + }, + "databaseNameWithoutPrefixes": { + "description": "Database name in the database without embedded prefixes applied.", + "type": "string" + }, + "databasePath": { + "description": "Gets full path to this column database name (including column database name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just database name of the column.", + "type": "string" + }, + "default": { + "anyOf": [ + { + "items": { + "type": [ + "string", + "number", + "boolean" + ] + }, + "type": "array" + }, + { + "$ref": "#/definitions/Record" + }, + { + "type": [ + "null", + "string", + "number", + "object", + "boolean" + ] + } + ], + "description": "Default database value." + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata where this column metadata is.\nIf this column is not in embed then this property value is undefined." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is.\n\nFor example for @Column() name: string in Post, entityMetadata will be metadata of Post entity." + }, + "enum": { + "description": "Array of possible enumerated values.\n\n`postgres` and `mysql` store enum values as strings but we want to keep support\nfor numeric and heterogeneous based typescript enums, so we need (string|number)[]", + "items": { + "type": [ + "string", + "number" + ] + }, + "type": "array" + }, + "enumName": { + "description": "Exact name of enum", + "type": "string" + }, + "generatedType": { + "description": "Generated column type. Supports only in MySQL.", + "enum": [ + "STORED", + "VIRTUAL" + ], + "type": "string" + }, + "generationStrategy": { + "description": "Specifies generation strategy if this column will use auto increment.", + "enum": [ + "increment", + "rowid", + "uuid" + ], + "type": "string" + }, + "givenDatabaseName": { + "description": "Database name set by entity metadata builder, not yet passed naming strategy process and without embedded prefixes.", + "type": "string" + }, + "hstoreType": { + "description": "Return type of HSTORE column.\nReturns value as string or as object.", + "enum": [ + "object", + "string" + ], + "type": "string" + }, + "isArray": { + "description": "Indicates if this column is an array.", + "type": "boolean" + }, + "isCreateDate": { + "description": "Indicates if this column contains an entity creation date.", + "type": "boolean" + }, + "isDeleteDate": { + "description": "Indicates if this column contains an entity delete date.", + "type": "boolean" + }, + "isDiscriminator": { + "description": "Indicates if column is discriminator. Discriminator columns are not mapped to the entity.", + "type": "boolean" + }, + "isGenerated": { + "description": "Indicates if this column is generated (auto increment or generated other way).", + "type": "boolean" + }, + "isInsert": { + "description": "Indicates if column is inserted by default or not.", + "type": "boolean" + }, + "isMaterializedPath": { + "description": "Indicates if this column is materialized path's path column.\nUsed only in tree entities with materialized path type.", + "type": "boolean" + }, + "isNestedSetLeft": { + "description": "Indicates if this column is nested set's left column.\nUsed only in tree entities with nested-set type.", + "type": "boolean" + }, + "isNestedSetRight": { + "description": "Indicates if this column is nested set's right column.\nUsed only in tree entities with nested-set type.", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if column can contain nulls or not.", + "type": "boolean" + }, + "isObjectId": { + "description": "Indicates if this column contains an object id.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if this column is a primary key.", + "type": "boolean" + }, + "isSelect": { + "description": "Indicates if column is selected by query builder or not.", + "type": "boolean" + }, + "isTreeLevel": { + "description": "Indicates if column is tree-level column. Tree-level columns are used in closure entities.", + "type": "boolean" + }, + "isUpdate": { + "description": "Indicates if column allows updates or not.", + "type": "boolean" + }, + "isUpdateDate": { + "description": "Indicates if this column contains an entity update date.", + "type": "boolean" + }, + "isVersion": { + "description": "Indicates if this column contains an entity version.", + "type": "boolean" + }, + "isVirtual": { + "description": "Indicates if column is virtual. Virtual columns are not mapped to the entity.", + "type": "boolean" + }, + "length": { + "description": "Type's length in the database.", + "type": "string" + }, + "onUpdate": { + "description": "ON UPDATE trigger. Works only for MySQL.", + "type": "string" + }, + "precision": { + "description": "The precision for a decimal (exact numeric) column (applies only for decimal column),\nwhich is the maximum number of digits that are stored for the values.", + "type": [ + "null", + "number" + ] + }, + "propertyAliasName": { + "description": "Same as property path, but dots are replaced with '_'.\nUsed in query builder statements.", + "type": "string" + }, + "propertyName": { + "description": "Class's property name on which this column is applied.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this column property (including column property name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just property name of the column.", + "type": "string" + }, + "referencedColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "If this column is foreign key then it references some other column,\nand this property will contain reference to this column." + }, + "relationMetadata": { + "$ref": "#/definitions/RelationMetadata", + "description": "If column is a foreign key of some relation then this relation's metadata will be there.\nIf this column does not have a foreign key then this property value is undefined." + }, + "scale": { + "description": "The scale for a decimal (exact numeric) column (applies only for decimal column),\nwhich represents the number of digits to the right of the decimal point and must not be greater than precision.", + "type": "number" + }, + "spatialFeatureType": { + "description": "Spatial Feature Type (Geometry, Point, Polygon, etc.)", + "type": "string" + }, + "srid": { + "description": "SRID (Spatial Reference ID (EPSG code))", + "type": "number" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class where column decorator is used.\nThis may not be always equal to entity metadata (for example embeds or inheritance cases)." + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/definitions/ValueTransformer" + }, + { + "items": { + "$ref": "#/definitions/ValueTransformer" + }, + "type": "array" + } + ], + "description": "Specifies a value transformer that is to be used to (un)marshal\nthis column when reading or writing to the database." + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "The database type of the column." + }, + "unsigned": { + "description": "Puts UNSIGNED attribute on to numeric column. Works only for MySQL.", + "type": "boolean" + }, + "width": { + "description": "Type's display width in the database.", + "type": "number" + }, + "zerofill": { + "description": "Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\nIf you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column", + "type": "boolean" + } + }, + "type": "object" + }, + "ConnectedAccount": { + "properties": { + "access_token": { + "type": "string" + }, + "friend_sync": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "revoked": { + "type": "boolean" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "show_activity": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "verifie": { + "type": "boolean" + }, + "visibility": { + "type": "number" + } + }, + "type": "object" + }, + "Connection": { + "description": "Connection is a single database ORM connection to a specific database.\nIts not required to be a database connection, depend on database type it can create connection pool.\nYou can have multiple connections to multiple databases in your application.", + "properties": { + "driver": { + "$ref": "#/definitions/Driver", + "description": "Database driver used by this connection." + }, + "entityMetadatas": { + "description": "All entity metadatas that are registered for this connection.", + "items": { + "$ref": "#/definitions/EntityMetadata" + }, + "type": "array" + }, + "isConnected": { + "description": "Indicates if connection is initialized or not.", + "type": "boolean" + }, + "logger": { + "$ref": "#/definitions/Logger", + "description": "Logger used to log orm events." + }, + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "EntityManager of this connection." + }, + "migrations": { + "description": "Migration instances that are registered for this connection.", + "items": { + "$ref": "#/definitions/MigrationInterface" + }, + "type": "array" + }, + "mongoManager": { + "$ref": "#/definitions/MongoEntityManager", + "description": "Gets the mongodb entity manager that allows to perform mongodb-specific repository operations\nwith any entity in this connection.\n\nAvailable only in mongodb connections." + }, + "name": { + "description": "Connection name.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy used in the connection." + }, + "options": { + "anyOf": [ + { + "$ref": "#/definitions/CockroachConnectionOptions" + }, + { + "$ref": "#/definitions/MysqlConnectionOptions" + }, + { + "$ref": "#/definitions/PostgresConnectionOptions" + }, + { + "$ref": "#/definitions/SqliteConnectionOptions" + }, + { + "$ref": "#/definitions/SqlServerConnectionOptions" + }, + { + "$ref": "#/definitions/OracleConnectionOptions" + }, + { + "$ref": "#/definitions/MongoConnectionOptions" + }, + { + "$ref": "#/definitions/CordovaConnectionOptions" + }, + { + "$ref": "#/definitions/SqljsConnectionOptions" + }, + { + "$ref": "#/definitions/ReactNativeConnectionOptions" + }, + { + "$ref": "#/definitions/NativescriptConnectionOptions" + }, + { + "$ref": "#/definitions/ExpoConnectionOptions" + }, + { + "$ref": "#/definitions/AuroraDataApiConnectionOptions" + }, + { + "$ref": "#/definitions/SapConnectionOptions" + }, + { + "$ref": "#/definitions/AuroraDataApiPostgresConnectionOptions" + }, + { + "$ref": "#/definitions/BetterSqlite3ConnectionOptions" + }, + { + "$ref": "#/definitions/CapacitorConnectionOptions" + } + ], + "description": "Connection options." + }, + "queryResultCache": { + "$ref": "#/definitions/QueryResultCache", + "description": "Used to work with query result cache." + }, + "relationLoader": { + "$ref": "#/definitions/RelationLoader", + "description": "Used to load relations and work with lazy relations." + }, + "sqljsManager": { + "$ref": "#/definitions/SqljsEntityManager", + "description": "Gets a sql.js specific Entity Manager that allows to perform special load and save operations\n\nAvailable only in connection with the sqljs driver." + }, + "subscribers": { + "description": "Entity subscriber instances that are registered for this connection.", + "items": { + "$ref": "#/definitions/EntitySubscriberInterface" + }, + "type": "array" + } + }, + "type": "object" + }, + "CordovaConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "Storage Location", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "cordova" + ], + "type": "string" + } + }, + "type": "object" + }, + "DataTypeDefaults": { + "additionalProperties": { + "properties": { + "length": { + "type": "number" + }, + "precision": { + "type": "number" + }, + "scale": { + "type": "number" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "type": "object" + }, + "DatabaseType": { + "description": "Database type.", + "enum": [ + "aurora-data-api", + "aurora-data-api-pg", + "better-sqlite3", + "capacitor", + "cockroachdb", + "cordova", + "expo", + "mariadb", + "mongodb", + "mssql", + "mysql", + "nativescript", + "oracle", + "postgres", + "react-native", + "sap", + "sqlite", + "sqljs" + ], + "type": "string" + }, + "DateConstructor": { + "properties": { + "prototype": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "DefaultAuthentication": { + "properties": { + "options": { + "properties": { + "password": { + "description": "Password to use for sql server login.", + "type": "string" + }, + "userName": { + "description": "User name to use for sql server login.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Driver": { + "description": "Driver organizes TypeORM communication with specific database management system.", + "properties": { + "dataTypeDefaults": { + "$ref": "#/definitions/DataTypeDefaults", + "description": "Default values of length, precision and scale depends on column data type.\nUsed in the cases when length/precision/scale is not specified by user." + }, + "database": { + "description": "Master database used to perform all write queries.\n\ntodo: probably move into query runner.", + "type": "string" + }, + "isReplicated": { + "description": "Indicates if replication is enabled.", + "type": "boolean" + }, + "mappedDataTypes": { + "$ref": "#/definitions/MappedColumnTypes", + "description": "Orm has special columns and we need to know what database column types should be for those types.\nColumn types are driver dependant." + }, + "maxAliasLength": { + "description": "Max length allowed by the DBMS for aliases (execution of queries).", + "type": "number" + }, + "options": { + "$ref": "#/definitions/BaseConnectionOptions", + "description": "Connection options." + }, + "spatialTypes": { + "description": "Gets list of spatial column data types.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "supportedDataTypes": { + "description": "Gets list of supported column data types by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "treeSupport": { + "description": "Indicates if tree tables are supported by this driver.", + "type": "boolean" + }, + "withLengthColumnTypes": { + "description": "Gets list of column data types that support length by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "withPrecisionColumnTypes": { + "description": "Gets list of column data types that support precision by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + }, + "withScaleColumnTypes": { + "description": "Gets list of column data types that support scale by a driver.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Any column type column can be." + }, + "type": "array" + } + }, + "type": "object" + }, + "EVENT": { + "enum": [ + "APPLICATION_COMMAND_CREATE", + "APPLICATION_COMMAND_DELETE", + "APPLICATION_COMMAND_UPDATE", + "CHANNEL_CREATE", + "CHANNEL_DELETE", + "CHANNEL_PINS_UPDATE", + "CHANNEL_UPDATE", + "GUILD_BAN_ADD", + "GUILD_BAN_REMOVE", + "GUILD_CREATE", + "GUILD_DELETE", + "GUILD_EMOJI_UPDATE", + "GUILD_INTEGRATIONS_UPDATE", + "GUILD_MEMBERS_CHUNK", + "GUILD_MEMBER_ADD", + "GUILD_MEMBER_REMOVE", + "GUILD_MEMBER_SPEAKING", + "GUILD_MEMBER_UPDATE", + "GUILD_ROLE_CREATE", + "GUILD_ROLE_DELETE", + "GUILD_ROLE_UPDATE", + "GUILD_UPDATE", + "INTERACTION_CREATE", + "INVALIDATED", + "INVITE_CREATE", + "INVITE_DELETE", + "MESSAGE_ACK", + "MESSAGE_CREATE", + "MESSAGE_DELETE", + "MESSAGE_DELETE_BULK", + "MESSAGE_REACTION_ADD", + "MESSAGE_REACTION_REMOVE", + "MESSAGE_REACTION_REMOVE_ALL", + "MESSAGE_REACTION_REMOVE_EMOJI", + "MESSAGE_UPDATE", + "PRESENCE_UPDATE", + "READY", + "RELATIONSHIP_ADD", + "RELATIONSHIP_REMOVE", + "TYPING_START", + "USER_UPDATE", + "VOICE_SERVER_UPDATE", + "VOICE_STATE_UPDATE", + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "EVENTEnum": { + "enum": [ + "APPLICATION_COMMAND_CREATE", + "APPLICATION_COMMAND_DELETE", + "APPLICATION_COMMAND_UPDATE", + "CHANNEL_CREATE", + "CHANNEL_DELETE", + "CHANNEL_PINS_UPDATE", + "CHANNEL_UPDATE", + "GUILD_BAN_ADD", + "GUILD_BAN_REMOVE", + "GUILD_CREATE", + "GUILD_DELETE", + "GUILD_EMOJI_UPDATE", + "GUILD_INTEGRATIONS_UPDATE", + "GUILD_MEMBERS_CHUNK", + "GUILD_MEMBER_ADD", + "GUILD_MEMBER_REMOVE", + "GUILD_MEMBER_SPEAKING", + "GUILD_MEMBER_UPDATE", + "GUILD_ROLE_CREATE", + "GUILD_ROLE_DELETE", + "GUILD_ROLE_UPDATE", + "GUILD_UPDATE", + "INTERACTION_CREATE", + "INVITE_CREATE", + "INVITE_DELETE", + "MESSAGE_CREATE", + "MESSAGE_DELETE", + "MESSAGE_DELETE_BULK", + "MESSAGE_REACTION_ADD", + "MESSAGE_REACTION_REMOVE", + "MESSAGE_REACTION_REMOVE_ALL", + "MESSAGE_REACTION_REMOVE_EMOJI", + "MESSAGE_UPDATE", + "PRESENCE_UPDATE", + "READY", + "TYPING_START", + "USER_UPDATE", + "VOICE_SERVER_UPDATE", + "VOICE_STATE_UPDATE", + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "Embed": { + "properties": { + "author": { + "properties": { + "icon_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "color": { + "type": "number" + }, + "description": { + "type": "string" + }, + "fields": { + "items": { + "properties": { + "inline": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "footer": { + "properties": { + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "image": { + "$ref": "#/definitions/EmbedImage" + }, + "provider": { + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "thumbnail": { + "$ref": "#/definitions/EmbedImage" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "url": { + "type": "string" + }, + "video": { + "$ref": "#/definitions/EmbedImage" + } + }, + "type": "object" + }, + "EmbedImage": { + "properties": { + "height": { + "type": "number" + }, + "proxy_url": { + "type": "string" + }, + "url": { + "type": "string" + }, + "width": { + "type": "number" + } + }, + "type": "object" + }, + "EmbedType": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "EmbeddedMetadata": { + "description": "Contains all information about entity's embedded property.", + "properties": { + "columns": { + "description": "Columns inside this embed.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "columnsFromTree": { + "description": "Embed metadatas from all levels of the parent tree.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nthis method will return [embed metadata of data, embed metadata of information, embed metadata of counters]", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "customPrefix": { + "description": "Prefix of the embedded, used instead of propertyName.\nIf set to empty string or false, then prefix is not set at all.", + "type": [ + "string", + "boolean" + ] + }, + "embeddedMetadataTree": { + "description": "Returns embed metadatas from all levels of the parent tree.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nthis method will return [embed metadata of data, embed metadata of information, embed metadata of counters]", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "embeddeds": { + "description": "Nested embeddable in this embeddable (which has current embedded as parent embedded).", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this embedded is." + }, + "indices": { + "description": "Indices applied to the embed columns.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "indicesFromTree": { + "description": "Indices of this embed and all indices from its child embeds.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "isAlwaysUsingConstructor": { + "description": "Indicates if the entity should be instantiated using the constructor\nor via allocating a new object via `Object.create()`.", + "type": "boolean" + }, + "isArray": { + "description": "Indicates if this embedded is in array mode.\n\nThis option works only in mongodb.", + "type": "boolean" + }, + "listeners": { + "description": "Entity listeners inside this embed.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "listenersFromTree": { + "description": "Relations of this embed and all relations from its child embeds.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "parentEmbeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Parent embedded in the case if this embedded inside other embedded." + }, + "parentPrefixes": { + "description": "Returns array of prefixes of current embed and all its parent embeds.", + "items": { + "type": "string" + }, + "type": "array" + }, + "parentPropertyNames": { + "description": "Returns array of property names of current embed and all its parent embeds.\n\nexample: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\nwe need to get value of \"id\" column from the post real entity object.\nthis method will return [\"data\", \"information\", \"counters\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "prefix": { + "description": "Gets the prefix of the columns.\nBy default its a property name of the class where this prefix is.\nBut if custom prefix is set then it takes its value as a prefix.\nHowever if custom prefix is set to empty string or false, then prefix to column is not applied at all.", + "type": "string" + }, + "propertyName": { + "description": "Property name on which this embedded is attached.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this embedded property (including embedded property name).\nFull path is relevant when embedded is used inside other embeds (one or multiple nested).\nFor example it will return \"counters.subcounters\".", + "type": "string" + }, + "relationCounts": { + "description": "Relation counts inside this embed.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationCountsFromTree": { + "description": "Relation counts of this embed and all relation counts from its child embeds.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationIds": { + "description": "Relation ids inside this embed.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relationIdsFromTree": { + "description": "Relation ids of this embed and all relation ids from its child embeds.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relations": { + "description": "Relations inside this embed.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "relationsFromTree": { + "description": "Relations of this embed and all relations from its child embeds.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/Function", + "description": "Embedded target type." + }, + "uniques": { + "description": "Uniques applied to the embed columns.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "uniquesFromTree": { + "description": "Uniques of this embed and all uniques from its child embeds.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + } + }, + "type": "object" + }, + "Emoji": { + "properties": { + "animated": { + "type": "boolean" + }, + "available": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "managed": { + "type": "boolean" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "require_colons": { + "type": "boolean" + }, + "role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "url": { + "type": "string" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "EntityListenerMetadata": { + "description": "This metadata contains all information about entity's listeners.", + "properties": { + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata of the listener, in the case if listener is in embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the listener." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied.\nThis can be different then entityMetadata.target in the case if listener is in the embedded." + }, + "type": { + "$ref": "#/definitions/EventListenerType", + "description": "The type of the listener." + } + }, + "type": "object" + }, + "EntityManager": { + "description": "Entity manager supposed to work with any entity, automatically find its repository and call its methods,\nwhatever entity type are you passing.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntityMetadata": { + "description": "Contains all entity metadata.", + "properties": { + "afterInsertListeners": { + "description": "Listener metadatas with \"AFTER INSERT\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterLoadListeners": { + "description": "Listener metadatas with \"AFTER LOAD\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterRemoveListeners": { + "description": "Listener metadatas with \"AFTER REMOVE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "afterUpdateListeners": { + "description": "Listener metadatas with \"AFTER UPDATE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "allEmbeddeds": { + "description": "All embeddeds - embeddeds from this entity metadata and from all child embeddeds, etc.", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "ancestorColumns": { + "description": "Ancestor columns used only in closure junction tables.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "beforeInsertListeners": { + "description": "Listener metadatas with \"AFTER INSERT\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "beforeRemoveListeners": { + "description": "Listener metadatas with \"AFTER REMOVE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "beforeUpdateListeners": { + "description": "Listener metadatas with \"AFTER UPDATE\" type.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "checks": { + "description": "Entity's check metadatas.", + "items": { + "$ref": "#/definitions/CheckMetadata" + }, + "type": "array" + }, + "childEntityMetadatas": { + "description": "Children entity metadatas. Used in inheritance patterns.", + "items": { + "$ref": "#/definitions/EntityMetadata" + }, + "type": "array" + }, + "closureJunctionTable": { + "$ref": "#/definitions/EntityMetadata", + "description": "If entity's table is a closure-typed table, then this entity will have a closure junction table metadata." + }, + "columns": { + "description": "Columns of the entity, including columns that are coming from the embeddeds of this entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection where this entity metadata is created." + }, + "createDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains a create date value." + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "deleteDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains a delete date value." + }, + "descendantColumns": { + "description": "Descendant columns used only in closure junction tables.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "discriminatorColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets the discriminator column used to store entity identificator in single-table inheritance tables." + }, + "discriminatorValue": { + "description": "If this entity metadata is a child table of some table, it should have a discriminator value.\nUsed to store a value in a discriminator column.", + "type": "string" + }, + "eagerRelations": { + "description": "List of eager relations this metadata has.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "embeddeds": { + "description": "Entity's embedded metadatas.", + "items": { + "$ref": "#/definitions/EmbeddedMetadata" + }, + "type": "array" + }, + "engine": { + "description": "Table's database engine type (like \"InnoDB\", \"MyISAM\", etc).", + "type": "string" + }, + "exclusions": { + "description": "Entity's exclusion metadatas.", + "items": { + "$ref": "#/definitions/ExclusionMetadata" + }, + "type": "array" + }, + "expression": { + "description": "View's expression.\nUsed in views", + "type": [ + "string", + "object" + ] + }, + "foreignKeys": { + "description": "Entity's foreign key metadatas.", + "items": { + "$ref": "#/definitions/ForeignKeyMetadata" + }, + "type": "array" + }, + "generatedColumns": { + "description": "Gets the column with generated flag.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "getInverseEntityMetadata": { + }, + "givenTableName": { + "description": "Original user-given table name (taken from schema or @Entity(tableName) decorator).\nIf user haven't specified a table name this property will be undefined.", + "type": "string" + }, + "hasMultiplePrimaryKeys": { + "description": "Checks if entity's table has multiple primary columns.", + "type": "boolean" + }, + "hasNonNullableRelations": { + "description": "Checks if there any non-nullable column exist in this entity.", + "type": "boolean" + }, + "hasUUIDGeneratedColumns": { + "description": "Indicates if this entity metadata has uuid generated columns.", + "type": "boolean" + }, + "indices": { + "description": "Entity's index metadatas.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "inheritancePattern": { + "description": "If this entity metadata's table using one of the inheritance patterns,\nthen this will contain what pattern it uses.", + "enum": [ + "STI" + ], + "type": "string" + }, + "inheritanceTree": { + "description": "All \"inheritance tree\" from a target entity.\nFor example for target Post < ContentModel < Unit it will be an array of [Post, ContentModel, Unit].\nIt also contains child entities for single table inheritance.", + "items": { + "$ref": "#/definitions/Function" + }, + "type": "array" + }, + "inverseColumns": { + "description": "In the case if this entity metadata is junction table's entity metadata,\nthis will contain all referenced columns of inverse entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "isAlwaysUsingConstructor": { + "description": "Indicates if the entity should be instantiated using the constructor\nor via allocating a new object via `Object.create()`.", + "type": "boolean" + }, + "isClosureJunction": { + "description": "Checks if this table is a junction table of the closure table.\nThis type is for tables that contain junction metadata of the closure tables.", + "type": "boolean" + }, + "isJunction": { + "description": "Indicates if this entity metadata of a junction table, or not.\nJunction table is a table created by many-to-many relationship.\n\nIts also possible to understand if entity is junction via tableType.", + "type": "boolean" + }, + "lazyRelations": { + "description": "List of eager relations this metadata has.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "listeners": { + "description": "Entity listener metadatas.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "manyToManyRelations": { + "description": "Gets only many-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "manyToOneRelations": { + "description": "Gets only many-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "materializedPathColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Materialized path column.\nUsed only in tree entities with materialized path pattern applied." + }, + "name": { + "description": "Entity's name.\nEqual to entity target class's name if target is set to table.\nIf target class is not then then it equals to table name.", + "type": "string" + }, + "nestedSetLeftColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Nested set's left value column.\nUsed only in tree entities with nested set pattern applied." + }, + "nestedSetRightColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Nested set's right value column.\nUsed only in tree entities with nested set pattern applied." + }, + "nonVirtualColumns": { + "description": "All columns except for virtual columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "objectIdColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets the object id column used with mongodb database." + }, + "oneToManyRelations": { + "description": "Gets only one-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "oneToOneRelations": { + "description": "Gets only one-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "orderBy": { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + "ownColumns": { + "description": "Entity's column metadatas defined by user.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "ownIndices": { + "description": "Entity's own indices.", + "items": { + "$ref": "#/definitions/IndexMetadata" + }, + "type": "array" + }, + "ownListeners": { + "description": "Entity's own listener metadatas.", + "items": { + "$ref": "#/definitions/EntityListenerMetadata" + }, + "type": "array" + }, + "ownRelations": { + "description": "Entity's relation metadatas.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "ownUniques": { + "description": "Entity's own uniques.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "ownerColumns": { + "description": "In the case if this entity metadata is junction table's entity metadata,\nthis will contain all referenced columns of owner entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "ownerManyToManyRelations": { + "description": "Gets only owner many-to-many relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "ownerOneToOneRelations": { + "description": "Gets only owner one-to-one relations of the entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "parentClosureEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "If this is entity metadata for a junction closure table then its owner closure table metadata will be set here." + }, + "parentEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Parent's entity metadata. Used in inheritance patterns." + }, + "primaryColumns": { + "description": "Gets the primary columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "propertiesMap": { + "$ref": "#/definitions/ObjectLiteral", + "description": "Map of columns and relations of the entity.\n\nexample: Post{ id: number, name: string, counterEmbed: { count: number }, category: Category }.\nThis method will create following object:\n{ id: \"id\", counterEmbed: { count: \"counterEmbed.count\" }, category: \"category\" }" + }, + "relationCounts": { + "description": "Entity's relation id metadatas.", + "items": { + "$ref": "#/definitions/RelationCountMetadata" + }, + "type": "array" + }, + "relationIds": { + "description": "Entity's relation id metadatas.", + "items": { + "$ref": "#/definitions/RelationIdMetadata" + }, + "type": "array" + }, + "relations": { + "description": "Relations of the entity, including relations that are coming from the embeddeds of this entity.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "relationsWithJoinColumns": { + "description": "Gets only owner one-to-one and many-to-one relations.", + "items": { + "$ref": "#/definitions/RelationMetadata" + }, + "type": "array" + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema will be synchronized for this entity or not.", + "type": "boolean" + }, + "tableMetadataArgs": { + "$ref": "#/definitions/TableMetadataArgs", + "description": "Metadata arguments used to build this entity metadata." + }, + "tableName": { + "description": "Entity table name in the database.\nThis is final table name of the entity.\nThis name already passed naming strategy, and generated based on\nmultiple criteria, including user table name and global table prefix.", + "type": "string" + }, + "tableNameWithoutPrefix": { + "description": "Gets the table name without global table prefix.\nWhen querying table you need a table name with prefix, but in some scenarios,\nfor example when you want to name a junction table that contains names of two other tables,\nyou may want a table name without prefix.", + "type": "string" + }, + "tablePath": { + "description": "Entity table path. Contains database name, schema name and table name.\nE.g. myDB.mySchema.myTable", + "type": "string" + }, + "tableType": { + "$ref": "#/definitions/TableType", + "description": "Table type. Tables can be closure, junction, etc." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which this entity metadata is bind.\nNote, that when using table inheritance patterns target can be different rather then table's target.\nFor virtual tables which lack of real entity (like junction tables) target is equal to their table name." + }, + "targetName": { + "description": "Gets the name of the target.", + "type": "string" + }, + "treeChildrenRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Tree children relation. Used only in tree-tables." + }, + "treeLevelColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Special column that stores tree level in tree entities." + }, + "treeOptions": { + "$ref": "#/definitions/ClosureTreeOptions", + "description": "Indicates if this entity is a tree, what options of tree it has." + }, + "treeParentRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Tree parent relation. Used only in tree-tables." + }, + "treeType": { + "description": "Indicates if this entity is a tree, what type of tree it is.", + "enum": [ + "adjacency-list", + "closure-table", + "materialized-path", + "nested-set" + ], + "type": "string" + }, + "uniques": { + "description": "Entity's unique metadatas.", + "items": { + "$ref": "#/definitions/UniqueMetadata" + }, + "type": "array" + }, + "updateDateColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains an update date value." + }, + "versionColumn": { + "$ref": "#/definitions/ColumnMetadata", + "description": "Gets entity column which contains an entity version." + }, + "withoutRowid": { + "description": "Enables Sqlite \"WITHOUT ROWID\" modifier for the \"CREATE TABLE\" statement", + "type": "boolean" + } + }, + "type": "object" + }, + "EntitySchema": { + "description": "Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.", + "properties": { + "options": { + "$ref": "#/definitions/EntitySchemaOptions" + } + }, + "type": "object" + }, + "EntitySchemaCheckOptions": { + "properties": { + "expression": { + "description": "Check expression.", + "type": "string" + }, + "name": { + "description": "Check constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaExclusionOptions": { + "properties": { + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "name": { + "description": "Exclusion constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaIndexOptions": { + "properties": { + "columns": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "Index column names." + }, + "fulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "name": { + "description": "Index name.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "sparse": { + "description": "If true, the index only references documents with the specified field.\nThese indexes use less space but behave differently in some situations (particularly sorts).\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "spatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL and PostgreSQL.", + "type": "boolean" + }, + "synchronize": { + "description": "Indicates if index must sync with database index.", + "type": "boolean" + }, + "unique": { + "description": "Indicates if this index must be unique or not.", + "type": "boolean" + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySchemaOptions": { + "description": "Interface for entity metadata mappings stored inside \"schemas\" instead of models decorated by decorators.", + "properties": { + "checks": { + "description": "Entity check options.", + "items": { + "$ref": "#/definitions/EntitySchemaCheckOptions" + }, + "type": "array" + }, + "columns": { + "$ref": "#/definitions/{[x:string]:EntitySchemaColumnOptions|undefined;}", + "description": "Entity column's options." + }, + "database": { + "description": "Database name. Used in MySql and Sql Server.", + "type": "string" + }, + "exclusions": { + "description": "Entity exclusion options.", + "items": { + "$ref": "#/definitions/EntitySchemaExclusionOptions" + }, + "type": "array" + }, + "expression": { + "description": "View expression.", + "type": [ + "string", + "object" + ] + }, + "extends": { + "description": "Name of the schema it extends.", + "type": "string" + }, + "indices": { + "description": "Entity indices options.", + "items": { + "$ref": "#/definitions/EntitySchemaIndexOptions" + }, + "type": "array" + }, + "name": { + "description": "Entity name.", + "type": "string" + }, + "orderBy": { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + "relations": { + "$ref": "#/definitions/{[x:string]:EntitySchemaRelationOptions|undefined;}", + "description": "Entity relation's options." + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema synchronization is enabled or disabled for this entity.\nIf it will be set to false then schema sync will and migrations ignore this entity.\nBy default schema synchronization is enabled for all entities.", + "type": "boolean" + }, + "tableName": { + "description": "Table name.", + "type": "string" + }, + "target": { + "$ref": "#/definitions/Function", + "description": "Target bind to this entity schema. Optional." + }, + "type": { + "description": "Table type.", + "enum": [ + "closure", + "closure-junction", + "entity-child", + "junction", + "regular", + "view" + ], + "type": "string" + }, + "uniques": { + "description": "Entity uniques options.", + "items": { + "$ref": "#/definitions/EntitySchemaUniqueOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntitySchemaUniqueOptions": { + "properties": { + "columns": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "Unique column names." + }, + "name": { + "description": "Unique constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "EntitySubscriberInterface": { + "description": "Classes that implement this interface are subscribers that subscribe for the specific events in the ORM.", + "type": "object" + }, + "ErrorObject,unknown>": { + "properties": { + "data": { + }, + "instancePath": { + "type": "string" + }, + "keyword": { + "type": "string" + }, + "message": { + "type": "string" + }, + "params": { + "$ref": "#/definitions/Record" + }, + "parentSchema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + } + ] + }, + "propertyName": { + "type": "string" + }, + "schema": { + }, + "schemaPath": { + "type": "string" + } + }, + "type": "object" + }, + "Evaluated": { + "properties": { + "dynamicItems": { + "type": "boolean" + }, + "dynamicProps": { + "type": "boolean" + }, + "items": { + "anyOf": [ + { + "enum": [ + true + ], + "type": "boolean" + }, + { + "type": "number" + } + ] + }, + "props": { + "anyOf": [ + { + "$ref": "#/definitions/{[x:string]:true|undefined;}" + }, + { + "enum": [ + true + ], + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "Event": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "$ref": "#/definitions/EVENT" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "EventListenerType": { + "description": "All types that entity listener can be.", + "enum": [ + "after-insert", + "after-load", + "after-remove", + "after-update", + "before-insert", + "before-remove", + "before-update" + ], + "type": "string" + }, + "EventOpts": { + "properties": { + "acknowledge": { + "$ref": "#/definitions/Function" + }, + "cancel": { + "$ref": "#/definitions/Function" + }, + "channel": { + "$ref": "#/definitions/Channel_1" + }, + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "$ref": "#/definitions/EVENT" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ExclusionMetadata": { + "description": "Exclusion metadata contains all information about table's exclusion constraints.", + "properties": { + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this exclusion constraint is applied." + }, + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "givenName": { + "description": "User specified exclusion constraint name.", + "type": "string" + }, + "name": { + "description": "Final exclusion constraint name.\nIf exclusion constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf exclusion constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "ExpoConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "driver": { + "description": "Driver module" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "expo" + ], + "type": "string" + } + }, + "type": "object" + }, + "ForeignKeyMetadata": { + "description": "Contains all information about entity's foreign key.", + "properties": { + "columnNames": { + "description": "Gets array of column names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "columns": { + "description": "Array of columns of this foreign key.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "deferrable": { + "description": "When to check the constraints of a foreign key.", + "enum": [ + "INITIALLY DEFERRED", + "INITIALLY IMMEDIATE" + ], + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this foreign key is." + }, + "name": { + "description": "Gets foreign key name.", + "type": "string" + }, + "onDelete": { + "description": "What to do with a relation on deletion of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "onUpdate": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "referencedColumnNames": { + "description": "Gets array of referenced column names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "referencedColumns": { + "description": "Array of referenced columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "referencedEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata which this foreign key references." + }, + "referencedTablePath": { + "description": "Gets the table name to which this foreign key is referenced.", + "type": "string" + } + }, + "type": "object" + }, + "Function": { + "properties": { + "arguments": { + }, + "caller": { + "$ref": "#/definitions/Function" + }, + "length": { + "type": "number" + }, + "name": { + "type": "string" + }, + "prototype": { + } + }, + "type": "object" + }, + "Guild": { + "properties": { + "afk_channel": { + "$ref": "#/definitions/Channel" + }, + "afk_timeout": { + "type": "number" + }, + "banner": { + "type": "string" + }, + "channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "default_message_notifications": { + "type": "number" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "emoji_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "emojis": { + "items": { + "$ref": "#/definitions/Emoji" + }, + "type": "array" + }, + "explicit_content_filter": { + "type": "number" + }, + "features": { + "items": { + "type": "string" + }, + "type": "array" + }, + "icon": { + "type": "string" + }, + "id": { + "type": "string" + }, + "large": { + "type": "boolean" + }, + "max_members": { + "type": "number" + }, + "max_presences": { + "type": "number" + }, + "max_video_channel_users": { + "type": "number" + }, + "member_count": { + "type": "number" + }, + "member_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "members": { + "items": { + "$ref": "#/definitions/Member" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mfa_level": { + "type": "number" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "owner_id": { + "type": "string" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "number" + }, + "premium_tier": { + "type": "number" + }, + "presence_count": { + "type": "number" + }, + "public_updates_channel": { + "$ref": "#/definitions/Channel" + }, + "region": { + "type": "string" + }, + "role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "rules_channel": { + "type": "string" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "splash": { + "type": "string" + }, + "system_channel": { + "$ref": "#/definitions/Channel" + }, + "system_channel_flags": { + "type": "number" + }, + "unavailable": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "vanity_url": { + "$ref": "#/definitions/Invite" + }, + "verification_level": { + "type": "number" + }, + "voice_state_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "voice_states": { + "items": { + "$ref": "#/definitions/VoiceState" + }, + "type": "array" + }, + "welcome_screen": { + "properties": { + "description": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "welcome_channels": { + "items": { + "properties": { + "channel_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "widget_channel": { + "$ref": "#/definitions/Channel" + }, + "widget_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "GuildBanAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_BAN_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildBanRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_BAN_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Guild" + }, + "event": { + "enum": [ + "GUILD_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "id": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildEmojiUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "emojis": { + "items": { + "$ref": "#/definitions/Emoji" + }, + "type": "array" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_EMOJI_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildIntegrationUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_INTEGRATIONS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/PublicMember" + }, + { + "properties": { + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "GUILD_MEMBER_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBER_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMemberUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "nick": { + "type": "string" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildMembersChunkEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "chunk_count": { + "type": "number" + }, + "chunk_index": { + "type": "number" + }, + "guild_id": { + "type": "string" + }, + "members": { + "items": { + "$ref": "#/definitions/PublicMember" + }, + "type": "array" + }, + "nonce": { + "type": "string" + }, + "not_found": { + "items": { + "type": "string" + }, + "type": "array" + }, + "presences": { + "items": { + "$ref": "#/definitions/Presence" + }, + "type": "array" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_MEMBERS_CHUNK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role": { + "$ref": "#/definitions/Role" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildRoleUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "guild_id": { + "type": "string" + }, + "role": { + "$ref": "#/definitions/Role" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "GUILD_ROLE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "GuildUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Guild" + }, + "event": { + "enum": [ + "GUILD_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "IndexMetadata": { + "description": "Index metadata contains all information about table's index.", + "properties": { + "columnNamesWithOrderingMap": { + "additionalProperties": { + "type": "number" + }, + "description": "Map of column names with order set.\nUsed only by MongoDB driver.", + "type": "object" + }, + "columns": { + "description": "Indexed columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata if this index was applied on embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this index is applied." + }, + "expireAfterSeconds": { + "description": "Specifies a time to live, in seconds.\nThis option is only supported for mongodb database.", + "type": "number" + }, + "givenColumnNames": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "User specified column names." + }, + "givenName": { + "description": "User specified index name.", + "type": "string" + }, + "isBackground": { + "description": "Builds the index in the background so that building an index an does not block other database activities.\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "isFulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "isSparse": { + "description": "If true, the index only references documents with the specified field.\nThese indexes use less space but behave differently in some situations (particularly sorts).\nThis option is only supported for mongodb database.", + "type": "boolean" + }, + "isSpatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if this index must be unique.", + "type": "boolean" + }, + "name": { + "description": "Final index name.\nIf index name was given by a user then it stores normalized (by naming strategy) givenName.\nIf index name was not given then its generated.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if this index must synchronize with database index.", + "type": "boolean" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "Intents": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "Interaction": { + "properties": { + "channel_id": { + "type": "string" + }, + "data": { + "properties": { + }, + "type": "object" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "member_id": { + "type": "string" + }, + "token": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "InteractionApplicationCommandCallbackData": { + "properties": { + "allowed_mentions": { + "$ref": "#/definitions/AllowedMentions" + }, + "content": { + "type": "string" + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "tts": { + "type": "boolean" + } + }, + "type": "object" + }, + "InteractionCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Interaction" + }, + "event": { + "enum": [ + "INTERACTION_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "InteractionResponseType": { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ], + "type": "number" + }, + "InteractionType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "InvalidatedEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + }, + "event": { + "enum": [ + "INVALIDATED" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Invite": { + "properties": { + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "number" + }, + "target_usser_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "uses": { + "type": "number" + } + }, + "type": "object" + }, + "InviteCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "INVITE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "InviteDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "INVITE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "KeyObject": { + "properties": { + "passphrase": { + "description": "Optional passphrase.", + "type": "string" + }, + "pem": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Private keys in PEM format." + } + }, + "type": "object" + }, + "ListenEventOpts": { + "properties": { + "acknowledge": { + "type": "boolean" + }, + "channel": { + "$ref": "#/definitions/Channel_1" + } + }, + "type": "object" + }, + "LocalRefs": { + "type": "object" + }, + "Logger": { + "description": "Performs logging of the events in TypeORM.", + "type": "object" + }, + "MappedColumnTypes": { + "description": "Orm has special columns and we need to know what database column types should be for those types.\nColumn types are driver dependant.", + "properties": { + "cacheDuration": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for duration column in query result cache table." + }, + "cacheId": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for identifier column in query result cache table." + }, + "cacheIdentifier": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for identifier column in query result cache table." + }, + "cacheQuery": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for query column in query result cache table." + }, + "cacheResult": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for result column in query result cache table." + }, + "cacheTime": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for time column in query result cache table." + }, + "createDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the create date column." + }, + "createDateDefault": { + "description": "Default value should be used by a database for \"created date\" column.", + "type": "string" + }, + "createDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "deleteDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the delete date column." + }, + "deleteDateNullable": { + "description": "Nullable value should be used by a database for \"deleted date\" column.", + "type": "boolean" + }, + "deleteDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "metadataDatabase": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata database name column in typeorm metadata table." + }, + "metadataName": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata name column in typeorm metadata table." + }, + "metadataSchema": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata schema name column in typeorm metadata table." + }, + "metadataTable": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata table name column in typeorm metadata table." + }, + "metadataType": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata type column in typeorm metadata table.\nStores type of metadata. E.g. 'VIEW' or 'CHECK'" + }, + "metadataValue": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for metadata value column in typeorm metadata table." + }, + "migrationId": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type of id column used for migrations table." + }, + "migrationName": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for migration name column used for migrations table." + }, + "migrationTimestamp": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type of timestamp column used for migrations table." + }, + "treeLevel": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the tree level column." + }, + "updateDate": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the update date column." + }, + "updateDateDefault": { + "description": "Default value should be used by a database for \"updated date\" column.", + "type": "string" + }, + "updateDatePrecision": { + "description": "Precision of datetime column. Used in MySql to define milliseconds.", + "type": "number" + }, + "version": { + "anyOf": [ + { + "$ref": "#/definitions/StringConstructor" + }, + { + "$ref": "#/definitions/BooleanConstructor" + }, + { + "$ref": "#/definitions/NumberConstructor" + }, + { + "$ref": "#/definitions/DateConstructor" + }, + { + "enum": [ + "alphanum", + "array", + "bfile", + "bigint", + "binary", + "bit", + "bit varying", + "blob", + "bool", + "boolean", + "box", + "bytea", + "bytes", + "char", + "char varying", + "character", + "character varying", + "cidr", + "circle", + "citext", + "clob", + "cube", + "date", + "daterange", + "datetime", + "datetime2", + "datetimeoffset", + "dec", + "decimal", + "double", + "double precision", + "enum", + "fixed", + "float", + "float4", + "float8", + "geography", + "geometry", + "geometrycollection", + "hierarchyid", + "hstore", + "image", + "inet", + "int", + "int2", + "int4", + "int4range", + "int64", + "int8", + "int8range", + "integer", + "interval", + "interval day to second", + "interval year to month", + "json", + "jsonb", + "line", + "linestring", + "long", + "long raw", + "longblob", + "longtext", + "lseg", + "ltree", + "macaddr", + "mediumblob", + "mediumint", + "mediumtext", + "money", + "multilinestring", + "multipoint", + "multipolygon", + "national char", + "national varchar", + "native character", + "nchar", + "nclob", + "ntext", + "number", + "numeric", + "numrange", + "nvarchar", + "nvarchar2", + "path", + "point", + "polygon", + "raw", + "real", + "rowid", + "rowversion", + "seconddate", + "set", + "shorttext", + "simple-array", + "simple-enum", + "simple-json", + "smalldatetime", + "smalldecimal", + "smallint", + "smallmoney", + "sql_variant", + "st_geometry", + "st_point", + "string", + "text", + "time", + "time with time zone", + "time without time zone", + "timestamp", + "timestamp with local time zone", + "timestamp with time zone", + "timestamp without time zone", + "timestamptz", + "timetz", + "tinyblob", + "tinyint", + "tinytext", + "tsquery", + "tsrange", + "tstzrange", + "tsvector", + "uniqueidentifier", + "unsigned big int", + "urowid", + "uuid", + "varbinary", + "varbit", + "varchar", + "varchar2", + "varying character", + "xml", + "year" + ], + "type": "string" + } + ], + "description": "Column type for the version column." + } + }, + "type": "object" + }, + "Member": { + "properties": { + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "read_state": { + "$ref": "#/definitions/Record" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "settings": { + "$ref": "#/definitions/UserGuildSettings" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Message": { + "properties": { + "activity": { + "properties": { + "party_id": { + "type": "string" + }, + "type": { + "type": "number" + } + }, + "type": "object" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "application_id": { + "type": "string" + }, + "attachments": { + "items": { + "$ref": "#/definitions/Attachment" + }, + "type": "array" + }, + "author": { + "$ref": "#/definitions/User" + }, + "author_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "content": { + "type": "string" + }, + "edited_timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "flags": { + "type": "bigint" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "interaction": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "member_id": { + "type": "string" + }, + "mention_channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "mention_everyone": { + "type": "boolean" + }, + "mention_role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "mention_user_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_users": { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + "message_reference": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nonce": { + "type": [ + "string", + "number" + ] + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pinned": { + "type": "boolean" + }, + "reactions": { + "items": { + "$ref": "#/definitions/Reaction" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "stickers": { + "items": { + }, + "type": "array" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "tts": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "webhook_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageAckEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "manual": { + "type": "boolean" + }, + "mention_count": { + "type": "number" + }, + "message_id": { + "type": "string" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_ACK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageComponent": { + "properties": { + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "custom_id": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "label": { + "type": "string" + }, + "style": { + "type": "number" + }, + "type": { + "type": "number" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "MessageComponentType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "MessageCreateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "MESSAGE_CREATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageDeleteBulkEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_DELETE_BULK" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageDeleteEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_DELETE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageFields": { + "properties": { + "consumerTag": { + "type": "string" + }, + "deliveryTag": { + "type": "number" + }, + "exchange": { + "type": "string" + }, + "messageCount": { + "type": "number" + }, + "redelivered": { + "type": "boolean" + }, + "routingKey": { + "type": "string" + } + }, + "type": "object" + }, + "MessageFlags": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "MessagePayload": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "MessageProperties": { + "properties": { + "appId": { + }, + "clusterId": { + }, + "contentEncoding": { + }, + "contentType": { + }, + "correlationId": { + }, + "deliveryMode": { + }, + "expiration": { + }, + "headers": { + "$ref": "#/definitions/MessagePropertyHeaders" + }, + "messageId": { + }, + "priority": { + }, + "replyTo": { + }, + "timestamp": { + }, + "type": { + }, + "userId": { + } + }, + "type": "object" + }, + "MessagePropertyHeaders": { + "additionalProperties": { + }, + "properties": { + "x-death": { + "items": { + "$ref": "#/definitions/XDeath" + }, + "type": "array" + }, + "x-first-death-exchange": { + "type": "string" + }, + "x-first-death-queue": { + "type": "string" + }, + "x-first-death-reason": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "message_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveAllEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE_ALL" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveEmojiEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE_EMOJI" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageReactionRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "MESSAGE_REACTION_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MessageType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 14, + 15, + 19, + 2, + 20, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], + "type": "number" + }, + "MessageUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Omit" + }, + { + "properties": { + "author": { + "$ref": "#/definitions/PublicUser" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "mentions": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "MESSAGE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "MigrationInterface": { + "description": "Migrations should implement this interface and all its methods.", + "properties": { + "name": { + "description": "Optional migration name, defaults to class name.", + "type": "string" + } + }, + "type": "object" + }, + "MongoClient": { + "description": "Creates a new MongoClient instance.", + "type": "object" + }, + "MongoConnectionOptions": { + "description": "MongoDB specific connection options.\nSynced with http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html", + "properties": { + "acceptableLatencyMS": { + "description": "Sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms).\nDefault: 15", + "type": "number" + }, + "appname": { + "description": "The name of the application that created this MongoClient instance. MongoDB 3.4 and newer will print this value in the server log upon establishing each connection. It is also recorded in the slow query log and profile collections", + "type": "string" + }, + "authMechanism": { + "description": "Sets the authentication mechanism that MongoDB will use to authenticate the connection", + "type": "string" + }, + "authSource": { + "description": "If the database authentication is dependent on another databaseName.", + "type": "string" + }, + "autoEncryption": { + "description": "Automatic Client-Side Field Level Encryption configuration." + }, + "autoReconnect": { + "description": "Reconnect on error. Default: true", + "type": "boolean" + }, + "auto_reconnect": { + "description": "Enable auto reconnecting for single server instances. Default: true", + "type": "boolean" + }, + "bufferMaxEntries": { + "description": "Sets a cap on how many operations the driver will buffer up before giving up on getting a working connection,\ndefault is -1 which is unlimited.", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "checkServerIdentity": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "boolean" + } + ], + "description": "Ensure we check server identify during SSL, set to false to disable checking. Only works for Node 0.12.x or higher. You can pass in a boolean or your own checkServerIdentity override function\nDefault: true" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "compression": { + "description": "Type of compression to use: snappy or zlib" + }, + "connectTimeoutMS": { + "description": "TCP Connection timeout setting. Default: 30000", + "type": "number" + }, + "connectWithNoPrimary": { + "description": "Sets if the driver should connect even if no primary is available. Default: false", + "type": "boolean" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domainsEnabled": { + "description": "Enable the wrapping of the callback in the current domain, disabled by default to avoid perf hit. Default: false", + "type": "boolean" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "family": { + "description": "Version of IP stack. Can be 4, 6.\nIf undefined, will attempt to connect with IPv6, and will fall back to IPv4 on failure", + "type": "number" + }, + "forceServerObjectId": { + "description": "Force server to assign _id values instead of driver. Default: false", + "type": "boolean" + }, + "fsync": { + "description": "Specify a file sync write concern. Default: false", + "type": "boolean" + }, + "ha": { + "description": "Control if high availability monitoring runs for Replicaset or Mongos proxies. Default true", + "type": "boolean" + }, + "haInterval": { + "description": "The High availability period for replicaset inquiry. Default: 10000", + "type": "number" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "hostReplicaSet": { + "description": "Database host replica set.", + "type": "string" + }, + "ignoreUndefined": { + "description": "Specify if the BSON serializer should ignore undefined fields. Default: false", + "type": "boolean" + }, + "j": { + "description": "Specify a journal write concern. Default: false", + "type": "boolean" + }, + "keepAlive": { + "description": "The number of milliseconds to wait before initiating keepAlive on the TCP socket. Default: 30000", + "type": "number" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "loggerLevel": { + "description": "Specify the log level used by the driver logger (error/warn/info/debug).", + "enum": [ + "debug", + "error", + "info", + "warn" + ], + "type": "string" + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "maxStalenessSeconds": { + "description": "Specify a maxStalenessSeconds value for secondary reads, minimum is 90 seconds", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "minSize": { + "description": "If present, the connection pool will be initialized with minSize connections, and will never dip below minSize connections", + "type": "number" + }, + "monitorCommands": { + "description": "Enable command monitoring for this client. Default: false", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "noDelay": { + "description": "TCP Socket NoDelay option. Default: true", + "type": "boolean" + }, + "numberOfRetries": { + "description": "The number of retries for a tailable cursor. Default: 5", + "type": "number" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pkFactory": { + "description": "A primary key factory object for generation of custom _id keys." + }, + "poolSize": { + "description": "Set the maximum poolSize for each individual server or proxy connection.", + "type": "number" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "promiseLibrary": { + "description": "A Promise library class the application wishes to use such as Bluebird, must be ES6 compatible." + }, + "promoteBuffers": { + "description": "Promotes Binary BSON values to native Node Buffers. Default: false", + "type": "boolean" + }, + "promoteLongs": { + "description": "Promotes Long values to number if they fit inside the 53 bits resolution. Default: true", + "type": "boolean" + }, + "promoteValues": { + "description": "Promotes BSON values to native types where possible, set to false to only receive wrapper types. Default: true", + "type": "boolean" + }, + "raw": { + "description": "Return document results as raw BSON buffers. Default: false", + "type": "boolean" + }, + "readConcern": { + "description": "Specify a read concern for the collection. (only MongoDB 3.2 or higher supported)." + }, + "readPreference": { + "anyOf": [ + { + "$ref": "#/definitions/ReadPreference" + }, + { + "type": "string" + } + ], + "description": "The preferred read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY,\nReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST)." + }, + "readPreferenceTags": { + "description": "Read preference tags", + "items": { + }, + "type": "array" + }, + "reconnectInterval": { + "description": "Server will wait #milliseconds between retries. Default 1000", + "type": "number" + }, + "reconnectTries": { + "description": "Server attempt to reconnect #times. Default 30", + "type": "number" + }, + "replicaSet": { + "description": "The name of the replicaset to connect to", + "type": "string" + }, + "secondaryAcceptableLatencyMS": { + "description": "Sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms).\nDefault: 15", + "type": "number" + }, + "serializeFunctions": { + "description": "Serialize functions on any object. Default: false", + "type": "boolean" + }, + "socketTimeoutMS": { + "description": "TCP Socket timeout setting. Default: 360000", + "type": "number" + }, + "ssl": { + "description": "Use ssl connection (needs to have a mongod server with ssl support). Default: false", + "type": "boolean" + }, + "sslCA": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + "type": "array" + } + ], + "description": "Array of valid certificates either as Buffers or Strings\n(needs to have a mongod server with ssl support, 2.4 or higher)." + }, + "sslCRL": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "SSL Certificate revocation list binary buffer\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslCert": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "String or buffer containing the certificate we wish to present\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslKey": { + "description": "String or buffer containing the certificate private key we wish to present\n(needs to have a mongod server with ssl support, 2.4 or higher)", + "type": "string" + }, + "sslPass": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "String or buffer containing the certificate password\n(needs to have a mongod server with ssl support, 2.4 or higher)" + }, + "sslValidate": { + "description": "Validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher).\nDefault: true", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mongodb" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useNewUrlParser": { + "description": "Determines whether or not to use the new url parser. Default: false", + "type": "boolean" + }, + "useUnifiedTopology": { + "description": "Determines whether or not to use the new Server Discovery and Monitoring engine. Default: false\nhttps://github.com/mongodb/node-mongodb-native/releases/tag/v3.2.1", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + }, + "validateOptions": { + "description": "Validate MongoClient passed in options for correctness. Default: false" + }, + "w": { + "description": "The write concern.", + "type": [ + "string", + "number" + ] + }, + "wtimeout": { + "description": "The write concern timeout value.", + "type": "number" + } + }, + "type": "object" + }, + "MongoEntityManager": { + "description": "Entity manager supposed to work with any entity, automatically find its repository and call its methods,\nwhatever entity type are you passing.\n\nThis implementation is used for MongoDB driver which has some specifics in its EntityManager.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "mongoQueryRunner": { + "$ref": "#/definitions/MongoQueryRunner" + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "MongoQueryRunner": { + "description": "Runs queries on a single MongoDB connection.", + "properties": { + "broadcaster": { + "$ref": "#/definitions/Broadcaster", + "description": "Broadcaster used on this query runner to broadcast entity events." + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this query runner." + }, + "data": { + "description": "Stores temporarily user data.\nUseful for sharing data with subscribers.", + "properties": { + }, + "type": "object" + }, + "databaseConnection": { + "$ref": "#/definitions/MongoClient", + "description": "Real database connection from a connection pool used to perform queries." + }, + "isReleased": { + "description": "Indicates if connection for this query runner is released.\nOnce its released, query runner cannot run queries anymore.\nAlways false for mongodb since mongodb has a single query executor instance.", + "type": "boolean" + }, + "isTransactionActive": { + "description": "Indicates if transaction is active in this query executor.\nAlways false for mongodb since mongodb does not support transactions.", + "type": "boolean" + }, + "loadedTables": { + "description": "All synchronized tables in the database.", + "items": { + "$ref": "#/definitions/Table" + }, + "type": "array" + }, + "loadedViews": { + "description": "All synchronized views in the database.", + "items": { + "$ref": "#/definitions/View" + }, + "type": "array" + }, + "manager": { + "$ref": "#/definitions/MongoEntityManager", + "description": "Entity manager working only with current query runner." + } + }, + "type": "object" + }, + "MuteConfig": { + "properties": { + "end_time": { + "type": "number" + }, + "selected_time_window": { + "type": "number" + } + }, + "type": "object" + }, + "MysqlConnectionCredentialsOptions": { + "description": "MySQL specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "socketPath": { + "description": "Database socket path", + "type": "string" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "MysqlConnectionOptions": { + "description": "MySQL specific connection options.", + "properties": { + "acquireTimeout": { + "description": "The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: 10000)\nThis difference between connectTimeout and acquireTimeout is subtle and is described in the mysqljs/mysql docs\nhttps://github.com/mysqljs/mysql/tree/master#pool-options", + "type": "number" + }, + "bigNumberStrings": { + "description": "Enabling both supportBigNumbers and bigNumberStrings forces big numbers (BIGINT and DECIMAL columns) to be always\nreturned as JavaScript String objects (Default: false). Enabling supportBigNumbers but leaving bigNumberStrings\ndisabled will return big numbers as String objects only when they cannot be accurately represented with\n[JavaScript Number objects](http://ecma262-5.com/ELS5_HTML.htm#Section_8.5) (which happens when they exceed the [-2^53, +2^53] range),\notherwise they will be returned as Number objects. This option is ignored if supportBigNumbers is disabled.", + "type": "boolean" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "charset": { + "description": "The charset for the connection. This is called \"collation\" in the SQL-level of MySQL (like utf8_general_ci).\nIf a SQL-level charset is specified (like utf8mb4) then the default collation for that charset is used.\nDefault: 'UTF8_GENERAL_CI'", + "type": "string" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectTimeout": { + "description": "The milliseconds before a timeout occurs during the initial connection to the MySQL server. (Default: 10000)", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dateStrings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "boolean" + } + ], + "description": "Force date types (TIMESTAMP, DATETIME, DATE) to be returned as strings rather then inflated into JavaScript Date objects.\nCan be true/false or an array of type names to keep as strings." + }, + "debug": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "boolean" + } + ], + "description": "Prints protocol details to stdout. Can be true/false or an array of packet type names that should be printed.\n(Default: false)" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "flags": { + "description": "List of connection flags to use other than the default ones. It is also possible to blacklist default ones.\nFor more information, check https://github.com/mysqljs/mysql#connection-flags.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "insecureAuth": { + "description": "Allow connecting to MySQL instances that ask for the old (insecure) authentication method. (Default: false)", + "type": "boolean" + }, + "legacySpatialSupport": { + "description": "Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n(Default: true)", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "multipleStatements": { + "description": "Allow multiple mysql statements per query. Be careful with this, it could increase the scope of SQL injection attacks.\n(Default: false)", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "canRetry": { + "description": "If true, PoolCluster will attempt to reconnect when connection fails. (Default: true)", + "type": "boolean" + }, + "master": { + "$ref": "#/definitions/MysqlConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "removeNodeErrorCount": { + "description": "If connection fails, node's errorCount increases.\nWhen errorCount is greater than removeNodeErrorCount, remove a node in the PoolCluster. (Default: 5)", + "type": "number" + }, + "restoreNodeTimeout": { + "description": "If connection fails, specifies the number of milliseconds before another connection attempt will be made.\nIf set to 0, then node will be removed instead and never re-used. (Default: 0)", + "type": "number" + }, + "selector": { + "description": "Determines how slaves are selected:\nRR: Select one alternately (Round-Robin).\nRANDOM: Select the node by random function.\nORDER: Select the first node available unconditionally.", + "enum": [ + "ORDER", + "RANDOM", + "RR" + ], + "type": "string" + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/MysqlConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "socketPath": { + "description": "Database socket path", + "type": "string" + }, + "ssl": { + "description": "Object with ssl parameters or a string containing name of ssl profile." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "supportBigNumbers": { + "description": "When dealing with big numbers (BIGINT and DECIMAL columns) in the database, you should enable this option (Default: false)", + "type": "boolean" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "timezone": { + "description": "The timezone configured on the MySQL server.\nThis is used to type cast server date/time values to JavaScript Date object and vice versa.\nThis can be 'local', 'Z', or an offset in the form +HH:MM or -HH:MM. (Default: 'local')", + "type": "string" + }, + "trace": { + "description": "Generates stack traces on Error to include call site of library entrance (\"long stack traces\").\nSlight performance penalty for most calls. (Default: true)", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mariadb", + "mysql" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "Name": { + "properties": { + "names": { + "$ref": "#/definitions/UsedNames" + }, + "str": { + "type": "string" + } + }, + "type": "object" + }, + "NameValue": { + "properties": { + "code": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "key": { + }, + "ref": { + } + }, + "type": "object" + }, + "NamingStrategyInterface": { + "description": "Naming strategy defines how auto-generated names for such things like table name, or table column gonna be\ngenerated.", + "properties": { + "materializedPathColumnName": { + "description": "Column name for materialized paths.", + "type": "string" + }, + "name": { + "description": "Naming strategy name.", + "type": "string" + }, + "nestedSetColumnNames": { + "description": "Column names for nested sets.", + "properties": { + "left": { + "type": "string" + }, + "right": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "NativescriptConnectionOptions": { + "description": "NativeScript-specific connection options.", + "properties": { + "androidFlags": { + "description": "Flags to pass to SQLite when opening the database on Android. (see https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html)", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "driver": { + "description": "The driver object\nyou should pass `require('nativescript-sqlite') here" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "iosFlags": { + "description": "Flags to pass to SQLite when opening the database on iOS. (see https://www.sqlite.org/c3ref/open.html)", + "type": "number" + }, + "key": { + "description": "The key to use for for using/opening encrypted databases. (requires the \"Encrypted Plugin\")", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrate": { + "description": "Migrates a Encrypted Sql database from v3 to the new v4. If you are a new user you do not need to set this flag as new created databases will already be in v4.\nIf you are upgrading a app that used v1.3.0 or earlier of NS-Sqlite-Encrypted; then you will probably want to set this flag to true. (requires the \"Encrypted Plugin\")", + "type": "boolean" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "multithreading": { + "description": "Whether to enable background multitasking. All SQL is ran on a background worker thread. (requires the \"Commercial Plugin\")", + "type": "boolean" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "readOnly": { + "description": "Whether to mark the mark the database as read only on open (iOS only).", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "nativescript" + ], + "type": "string" + } + }, + "type": "object" + }, + "NtlmAuthentication": { + "properties": { + "options": { + "properties": { + "domain": { + "description": "Once you set domain for ntlm authentication type, driver will connect to SQL Server using domain login.\n\nThis is necessary for forming a connection using ntlm type", + "type": "string" + }, + "password": { + "description": "Password from your windows account.", + "type": "string" + }, + "userName": { + "description": "User name from your windows account.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "enum": [ + "ntlm" + ], + "type": "string" + } + }, + "type": "object" + }, + "Number": { + "type": "object" + }, + "NumberConstructor": { + "properties": { + "EPSILON": { + "type": "number" + }, + "MAX_SAFE_INTEGER": { + "type": "number" + }, + "MAX_VALUE": { + "type": "number" + }, + "MIN_SAFE_INTEGER": { + "type": "number" + }, + "MIN_VALUE": { + "type": "number" + }, + "NEGATIVE_INFINITY": { + "type": "number" + }, + "NaN": { + "type": "number" + }, + "POSITIVE_INFINITY": { + "type": "number" + }, + "prototype": { + "$ref": "#/definitions/Number" + } + }, + "type": "object" + }, + "ObjectLiteral": { + "additionalProperties": { + }, + "description": "Interface of the simple literal object with any string keys.", + "type": "object" + }, + "Omit": { + "properties": { + "assign": { + "type": "object" + }, + "channel_id": { + "type": "string" + }, + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "inviter_id": { + "type": "string" + }, + "max_age": { + "type": "number" + }, + "max_uses": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "number" + }, + "target_usser_id": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "uses": { + "type": "number" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "assign": { + "type": "object" + }, + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "read_state": { + "$ref": "#/definitions/Record" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "activity": { + "properties": { + "party_id": { + "type": "string" + }, + "type": { + "type": "number" + } + }, + "type": "object" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "application_id": { + "type": "string" + }, + "assign": { + "type": "object" + }, + "attachments": { + "items": { + "$ref": "#/definitions/Attachment" + }, + "type": "array" + }, + "author": { + "$ref": "#/definitions/User" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "components": { + "items": { + "$ref": "#/definitions/MessageComponent" + }, + "type": "array" + }, + "content": { + "type": "string" + }, + "edited_timestamp": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "embeds": { + "items": { + "$ref": "#/definitions/Embed" + }, + "type": "array" + }, + "flags": { + "type": "bigint" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "interaction": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "member_id": { + "type": "string" + }, + "mention_channel_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "mention_everyone": { + "type": "boolean" + }, + "mention_role_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_roles": { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + "mention_user_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mention_users": { + "items": { + "$ref": "#/definitions/User" + }, + "type": "array" + }, + "message_reference": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "message_id": { + "type": "string" + } + }, + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nonce": { + "type": [ + "string", + "number" + ] + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pinned": { + "type": "boolean" + }, + "reactions": { + "items": { + "$ref": "#/definitions/Reaction" + }, + "type": "array" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "stickers": { + "items": { + }, + "type": "array" + }, + "timestamp": { + "format": "date-time", + "type": "string" + }, + "toJSON": { + "type": "object" + }, + "tts": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "validate": { + "type": "object" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "webhook_id": { + "type": "string" + } + }, + "type": "object" + }, + "Omit": { + "properties": { + "assign": { + "type": "object" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "OracleConnectionCredentialsOptions": { + "description": "Oracle specific connection credential options.", + "properties": { + "connectString": { + "description": "Embedded TNS Connection String", + "type": "string" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "serviceName": { + "description": "Connection Service Name.", + "type": "string" + }, + "sid": { + "description": "Connection SID.", + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "OracleConnectionOptions": { + "description": "Oracle-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectString": { + "description": "Embedded TNS Connection String", + "type": "string" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/OracleConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/OracleConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name. By default is \"public\".", + "type": "string" + }, + "serviceName": { + "description": "Connection Service Name.", + "type": "string" + }, + "sid": { + "description": "Connection SID.", + "type": "string" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "oracle" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "PartialEmoji": { + "properties": { + "animated": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "PermissionCache": { + "properties": { + "channel": { + "anyOf": [ + { + "$ref": "#/definitions/Channel" + }, + { + "type": "null" + } + ] + }, + "guild": { + "anyOf": [ + { + "$ref": "#/definitions/Guild" + }, + { + "type": "null" + } + ] + }, + "member": { + "anyOf": [ + { + "$ref": "#/definitions/Member" + }, + { + "type": "null" + } + ] + }, + "roles": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "PermissionResolvable": { + "anyOf": [ + { + "$ref": "#/definitions/Permissions" + }, + { + "items": { + "$ref": "#/definitions/PermissionResolvable" + }, + "type": "array" + }, + { + "enum": [ + "ADD_REACTIONS", + "ADMINISTRATOR", + "ATTACH_FILES", + "BAN_MEMBERS", + "CHANGE_NICKNAME", + "CONNECT", + "CREATE_INSTANT_INVITE", + "DEAFEN_MEMBERS", + "EMBED_LINKS", + "KICK_MEMBERS", + "MANAGE_CHANNELS", + "MANAGE_EMOJIS_AND_STICKERS", + "MANAGE_GUILD", + "MANAGE_MESSAGES", + "MANAGE_NICKNAMES", + "MANAGE_ROLES", + "MANAGE_WEBHOOKS", + "MENTION_EVERYONE", + "MOVE_MEMBERS", + "MUTE_MEMBERS", + "PRIORITY_SPEAKER", + "READ_MESSAGE_HISTORY", + "SEND_MESSAGES", + "SEND_TTS_MESSAGES", + "SPEAK", + "STREAM", + "USE_EXTERNAL_EMOJIS", + "USE_VAD", + "VIEW_AUDIT_LOG", + "VIEW_CHANNEL", + "VIEW_GUILD_INSIGHTS" + ], + "type": "string" + }, + { + "type": [ + "number", + "bigint" + ] + } + ] + }, + "PermissionString": { + "enum": [ + "ADD_REACTIONS", + "ADMINISTRATOR", + "ATTACH_FILES", + "BAN_MEMBERS", + "CHANGE_NICKNAME", + "CONNECT", + "CREATE_INSTANT_INVITE", + "DEAFEN_MEMBERS", + "EMBED_LINKS", + "KICK_MEMBERS", + "MANAGE_CHANNELS", + "MANAGE_EMOJIS_AND_STICKERS", + "MANAGE_GUILD", + "MANAGE_MESSAGES", + "MANAGE_NICKNAMES", + "MANAGE_ROLES", + "MANAGE_WEBHOOKS", + "MENTION_EVERYONE", + "MOVE_MEMBERS", + "MUTE_MEMBERS", + "PRIORITY_SPEAKER", + "READ_MESSAGE_HISTORY", + "SEND_MESSAGES", + "SEND_TTS_MESSAGES", + "SPEAK", + "STREAM", + "USE_EXTERNAL_EMOJIS", + "USE_VAD", + "VIEW_AUDIT_LOG", + "VIEW_CHANNEL", + "VIEW_GUILD_INSIGHTS" + ], + "type": "string" + }, + "Permissions": { + "properties": { + "bitfield": { + "type": "bigint" + }, + "cache": { + "properties": { + "channel": { + "anyOf": [ + { + "$ref": "#/definitions/Channel" + }, + { + "type": "null" + } + ] + }, + "guild": { + "anyOf": [ + { + "$ref": "#/definitions/Guild" + }, + { + "type": "null" + } + ] + }, + "member": { + "anyOf": [ + { + "$ref": "#/definitions/Member" + }, + { + "type": "null" + } + ] + }, + "roles": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/Role" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "PlainObjectToNewEntityTransformer": { + "description": "Transforms plain old javascript object\nEntity is constructed based on its entity metadata.", + "properties": { + "groupAndTransform": { + "description": "Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\nwe need to group our result and we must have some unique id (primary key in our case)" + } + }, + "type": "object" + }, + "PostgresConnectionCredentialsOptions": { + "description": "Postgres specific connection credential options.", + "properties": { + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": [ + "string", + "object" + ] + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "PostgresConnectionOptions": { + "description": "Postgres-specific connection options.", + "properties": { + "applicationName": { + "description": "sets the application_name var to help db administrators identify\nthe service using this connection. Defaults to 'undefined'", + "type": "string" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectTimeoutMS": { + "description": "The milliseconds before a timeout occurs during the initial connection to the postgres\nserver. If undefined, or set to 0, there is no timeout. Defaults to undefined.", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "installExtensions": { + "description": "Automatically install postgres extensions", + "type": "boolean" + }, + "logNotifications": { + "description": "Include notification messages from Postgres server in client logs", + "type": "boolean" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": [ + "string", + "object" + ] + }, + "poolErrorHandler": { + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/PostgresConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/PostgresConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Schema name.", + "type": "string" + }, + "ssl": { + "anyOf": [ + { + "$ref": "#/definitions/TlsOptions" + }, + { + "type": "boolean" + } + ], + "description": "Object with ssl parameters" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "postgres" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + }, + "username": { + "description": "Database username.", + "type": "string" + }, + "uuidExtension": { + "description": "The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\nIf pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\nIf uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.", + "enum": [ + "pgcrypto", + "uuid-ossp" + ], + "type": "string" + } + }, + "type": "object" + }, + "Presence": { + "properties": { + "activities": { + "items": { + "$ref": "#/definitions/Activity" + }, + "type": "array" + }, + "client_status": { + "$ref": "#/definitions/ClientStatus" + }, + "guild_id": { + "type": "string" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "PresenceUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Presence" + }, + "event": { + "enum": [ + "PRESENCE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "PublicMember": { + "properties": { + "assign": { + "type": "object" + }, + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object" + }, + "joined_at": { + "format": "date-time", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "nick": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "pending": { + "type": "boolean" + }, + "premium_since": { + "type": "number" + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object" + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object" + }, + "toJSON": { + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/PublicUser" + }, + "user_id": { + "type": "string" + }, + "validate": { + "type": "object" + } + }, + "type": "object" + }, + "PublicUser": { + "properties": { + "accent_color": { + "type": "number" + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "banner": { + "type": [ + "null", + "string" + ] + }, + "bot": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "bigint" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "PxfObject": { + "properties": { + "buf": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PFX or PKCS12 encoded private key and certificate chain." + }, + "passphrase": { + "description": "Optional passphrase.", + "type": "string" + } + }, + "type": "object" + }, + "QueryResultCache": { + "description": "Implementations of this interface provide different strategies to cache query builder results.", + "type": "object" + }, + "QueryRunner": { + "description": "Runs queries on a single database connection.", + "properties": { + "broadcaster": { + "$ref": "#/definitions/Broadcaster", + "description": "Broadcaster used on this query runner to broadcast entity events." + }, + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this query runner." + }, + "data": { + "$ref": "#/definitions/ObjectLiteral", + "description": "Stores temporarily user data.\nUseful for sharing data with subscribers." + }, + "isReleased": { + "description": "Indicates if connection for this query runner is released.\nOnce its released, query runner cannot run queries anymore.", + "type": "boolean" + }, + "isTransactionActive": { + "description": "Indicates if transaction is in progress.", + "type": "boolean" + }, + "loadedTables": { + "description": "All synchronized tables in the database.", + "items": { + "$ref": "#/definitions/Table" + }, + "type": "array" + }, + "loadedViews": { + "description": "All synchronized views in the database.", + "items": { + "$ref": "#/definitions/View" + }, + "type": "array" + }, + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "Entity manager working only with this query runner." + } + }, + "type": "object" + }, + "RateLimit": { + "properties": { + "blocked": { + "type": "boolean" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "hits": { + "type": "number" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReactNativeConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "Storage Location", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "react-native" + ], + "type": "string" + } + }, + "type": "object" + }, + "Reaction": { + "properties": { + "count": { + "type": "number" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "user_ids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ReadPreference": { + "description": "Creates a new ReadPreference instance.", + "properties": { + "mode": { + "description": "The ReadPreference mode as listed above.", + "type": "string" + }, + "tags": { + "description": "An object representing read preference tags." + } + }, + "type": "object" + }, + "ReadState": { + "properties": { + "channel": { + "$ref": "#/definitions/Channel" + }, + "channel_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "last_message": { + "$ref": "#/definitions/Message" + }, + "last_pin_timestamp": { + "format": "date-time", + "type": "string" + }, + "manual": { + "type": "boolean" + }, + "mention_count": { + "type": "number" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReadyEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/ReadyEventData" + }, + "event": { + "enum": [ + "READY" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ReadyEventData": { + "properties": { + "analytics_token": { + "type": "string" + }, + "application": { + "properties": { + "flags": { + "type": "bigint" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "connected_accounts": { + "items": { + "$ref": "#/definitions/ConnectedAccount" + }, + "type": "array" + }, + "consents": { + "properties": { + "personalization": { + "properties": { + "consented": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "country_code": { + "type": "string" + }, + "experiments": { + "items": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 5, + "minItems": 5, + "type": "array" + }, + "type": "array" + }, + "friend_suggestion_count": { + "type": "number" + }, + "geo_ordered_rtc_regions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "guild_experiments": { + "items": { + "items": [ + { + "type": "number" + }, + { + "type": "null" + }, + { + "type": "number" + }, + { + "items": [ + { + "items": [ + { + "type": "number" + }, + { + "items": { + "properties": { + "e": { + "type": "number" + }, + "s": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + { + "items": [ + { + "type": "number" + }, + { + "items": [ + { + "items": [ + { + "type": "number" + }, + { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ], + "maxItems": 1, + "minItems": 1, + "type": "array" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "items": { + "properties": { + "b": { + "type": "number" + }, + "k": { + "items": { + "type": "bigint" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + }, + "type": "array" + }, + "guild_join_requests": { + "items": { + }, + "type": "array" + }, + "guilds": { + "items": { + "$ref": "#/definitions/Guild" + }, + "type": "array" + }, + "merged_members": { + "items": { + "items": { + "$ref": "#/definitions/Omit" + }, + "type": "array" + }, + "type": "array" + }, + "private_channels": { + "items": { + "$ref": "#/definitions/Channel" + }, + "type": "array" + }, + "read_state": { + "properties": { + "entries": { + "items": { + }, + "type": "array" + }, + "partial": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "relationships": { + "items": { + "$ref": "#/definitions/Relationship" + }, + "type": "array" + }, + "session_id": { + "type": "string" + }, + "shard": { + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "user": { + "allOf": [ + { + "$ref": "#/definitions/PublicUser" + }, + { + "properties": { + "bot": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "bigint" + }, + "mfa_enabled": { + "type": "boolean" + }, + "mobile": { + "type": "boolean" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "number" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + } + ] + }, + "user_guild_settings": { + "properties": { + "entries": { + "items": { + "$ref": "#/definitions/UserGuildSettings" + }, + "type": "array" + }, + "partial": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "user_settings": { + "$ref": "#/definitions/UserSettings" + }, + "users": { + "items": { + "properties": { + "avatar": { + "type": [ + "null", + "string" + ] + }, + "bot": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "bigint" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "v": { + "type": "number" + } + }, + "type": "object" + }, + "Record": { + "type": "object" + }, + "Record": { + "type": "object" + }, + "Record": { + "type": "object" + }, + "RelationCountMetadata": { + "description": "Contains all information about entity's relation count.", + "properties": { + "alias": { + "description": "Alias of the joined (destination) table.", + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "queryBuilderFactory": { + "description": "Extra condition applied to \"ON\" section of join.", + "type": "object" + }, + "relation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Relation which needs to be counted." + }, + "relationNameOrFactory": { + "description": "Relation name which need to count.", + "type": [ + "string", + "object" + ] + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "RelationIdMetadata": { + "description": "Contains all information about entity's relation count.", + "properties": { + "alias": { + "description": "Alias of the joined (destination) table.", + "type": "string" + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata where this column metadata is." + }, + "propertyName": { + "description": "Target's property name to which this metadata is applied.", + "type": "string" + }, + "queryBuilderFactory": { + "description": "Extra condition applied to \"ON\" section of join.", + "type": "object" + }, + "relation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Relation from which ids will be extracted." + }, + "relationNameOrFactory": { + "description": "Relation name which need to count.", + "type": [ + "string", + "object" + ] + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "RelationLoader": { + "description": "Wraps entities and creates getters/setters for their relations\nto be able to lazily load relations when accessing these relations.", + "properties": { + "connection": { + } + }, + "type": "object" + }, + "RelationMetadata": { + "description": "Contains all information about some entity's relation.", + "properties": { + "createForeignKeyConstraints": { + "description": "Indicates whether foreign key constraints will be created for join columns.\nCan be used only for many-to-one and owner one-to-one relations.\nDefaults to true.", + "type": "boolean" + }, + "deferrable": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "INITIALLY DEFERRED", + "INITIALLY IMMEDIATE" + ], + "type": "string" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata where this relation is.\nIf this relation is not in embed then this property value is undefined." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity where this relation is placed.\n\nFor example for @ManyToMany(type => Category) in Post, entityMetadata will be metadata of Post entity." + }, + "foreignKeys": { + "description": "Foreign keys created for this relation.", + "items": { + "$ref": "#/definitions/ForeignKeyMetadata" + }, + "type": "array" + }, + "givenInverseSidePropertyFactory": { + "description": "Inverse side of the relation set by user.\n\nInverse side set in the relation can be either string - property name of the column on inverse side,\neither can be a function that accepts a map of properties with the object and returns one of them.\nSecond approach is used to achieve type-safety.", + "type": [ + "string", + "object" + ] + }, + "inverseEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity that is targeted by this relation.\n\nFor example for @ManyToMany(type => Category) in Post, inverseEntityMetadata will be metadata of Category entity." + }, + "inverseJoinColumns": { + "description": "Inverse join table columns.\nInverse join columns are supported only for many-to-many relations\nand can be obtained only from owner side of the relation.\nFrom non-owner side of the relation join columns will be undefined.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "inverseRelation": { + "$ref": "#/definitions/RelationMetadata", + "description": "Gets the relation metadata of the inverse side of this relation." + }, + "inverseSidePropertyPath": { + "description": "Gets the property path of the inverse side of the relation.", + "type": "string" + }, + "isCascadeInsert": { + "description": "If set to true then related objects are allowed to be inserted to the database.", + "type": "boolean" + }, + "isCascadeRecover": { + "description": "If set to true then related objects are allowed to be recovered from the database.", + "type": "boolean" + }, + "isCascadeRemove": { + "description": "If set to true then related objects are allowed to be remove from the database.", + "type": "boolean" + }, + "isCascadeSoftRemove": { + "description": "If set to true then related objects are allowed to be soft-removed from the database.", + "type": "boolean" + }, + "isCascadeUpdate": { + "description": "If set to true then related objects are allowed to be updated in the database.", + "type": "boolean" + }, + "isEager": { + "description": "Indicates if this relation is eagerly loaded.", + "type": "boolean" + }, + "isLazy": { + "description": "Indicates if this relation is lazily loaded.", + "type": "boolean" + }, + "isManyToMany": { + "description": "Checks if this relation's type is \"many-to-many\".", + "type": "boolean" + }, + "isManyToManyNotOwner": { + "description": "Checks if this relation's type is \"many-to-many\", and is NOT owner side of the relationship.\nNot owner side means this side of relation does not have a join table.", + "type": "boolean" + }, + "isManyToManyOwner": { + "description": "Checks if this relation's type is \"many-to-many\", and is owner side of the relationship.\nOwner side means this side of relation has a join table.", + "type": "boolean" + }, + "isManyToOne": { + "description": "Checks if this relation's type is \"many-to-one\".", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if relation column value can be nullable or not.", + "type": "boolean" + }, + "isOneToMany": { + "description": "Checks if this relation's type is \"one-to-many\".", + "type": "boolean" + }, + "isOneToOne": { + "description": "Checks if this relation's type is \"one-to-one\".", + "type": "boolean" + }, + "isOneToOneNotOwner": { + "description": "Checks if this relation is NOT owner side of the \"one-to-one\" relation.\nNOT owner side means this side of relation does not have a join column in the table.", + "type": "boolean" + }, + "isOneToOneOwner": { + "description": "Checks if this relation is owner side of the \"one-to-one\" relation.\nOwner side means this side of relation has a join column in the table.", + "type": "boolean" + }, + "isOwning": { + "description": "Indicates if this side is an owner of this relation.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if this relation's column is a primary key.\nCan be used only for many-to-one and owner one-to-one relations.", + "type": "boolean" + }, + "isTreeChildren": { + "description": "Indicates if this is a children (can be only one-to-many relation) relation in the tree tables.", + "type": "boolean" + }, + "isTreeParent": { + "description": "Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables.", + "type": "boolean" + }, + "isWithJoinColumn": { + "description": "Checks if this relation has a join column (e.g. is it many-to-one or one-to-one owner side).", + "type": "boolean" + }, + "joinColumns": { + "description": "Join table columns.\nJoin columns can be obtained only from owner side of the relation.\nFrom non-owner side of the relation join columns will be empty.\nIf this relation is a many-to-one/one-to-one then it takes join columns from the current entity.\nIf this relation is many-to-many then it takes all owner join columns from the junction entity.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "joinTableName": { + "description": "Join table name.", + "type": "string" + }, + "junctionEntityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the junction table.\nJunction tables have their own entity metadata objects.\nDefined only for many-to-many relations." + }, + "onDelete": { + "description": "What to do with a relation on deletion of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "onUpdate": { + "description": "What to do with a relation on update of the row containing a foreign key.", + "enum": [ + "CASCADE", + "DEFAULT", + "NO ACTION", + "RESTRICT", + "SET NULL" + ], + "type": "string" + }, + "orphanedRowAction": { + "description": "When a child row is removed from its parent, determines if the child row should be orphaned (default) or deleted.", + "enum": [ + "delete", + "nullify" + ], + "type": "string" + }, + "persistenceEnabled": { + "description": "Indicates if persistence is enabled for the relation.\nBy default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\nIf its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\nThis is useful for performance optimization since its disabling avoid multiple extra queries during entity save.", + "type": "boolean" + }, + "propertyName": { + "description": "Target's property name to which relation decorator is applied.", + "type": "string" + }, + "propertyPath": { + "description": "Gets full path to this column property (including relation name).\nFull path is relevant when column is used in embeds (one or multiple nested).\nFor example it will return \"counters.subcounters.likes\".\nIf property is not in embeds then it returns just property name of the column.", + "type": "string" + }, + "relationType": { + "$ref": "#/definitions/RelationType", + "description": "Relation type, e.g. is it one-to-one, one-to-many, many-to-one or many-to-many." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target entity to which this relation is applied.\nTarget IS NOT equal to entityMetadata.target, because relation\n\nFor example for @ManyToMany(type => Category) in Post, target will be Post.\nIf @ManyToMany(type => Category) is in Counters which is embedded into Post, target will be Counters.\nIf @ManyToMany(type => Category) is in abstract class BaseUser which Post extends, target will be BaseUser.\nTarget can be string if its defined in entity schema instead of class." + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Gets the property's type to which this relation is applied.\n\nFor example for @ManyToMany(type => Category) in Post, target will be Category." + } + }, + "type": "object" + }, + "RelationType": { + "description": "All types that relation can be.", + "enum": [ + "many-to-many", + "many-to-one", + "one-to-many", + "one-to-one" + ], + "type": "string" + }, + "Relationship": { + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "nickname": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipAddEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/Relationship" + }, + { + "properties": { + "should_notify": { + "type": "boolean" + }, + "user": { + "$ref": "#/definitions/PublicUser" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "RELATIONSHIP_ADD" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipRemoveEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/Omit" + }, + "event": { + "enum": [ + "RELATIONSHIP_REMOVE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "RelationshipType": { + "enum": [ + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "Repository": { + "description": "Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.", + "properties": { + "manager": { + "$ref": "#/definitions/EntityManager", + "description": "Entity Manager used by this repository." + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the entity current repository manages." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Query runner provider used for this repository." + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Returns object that is managed by this repository.\nIf this repository manages entity from schema,\nthen it returns a name of that schema instead." + } + }, + "type": "object" + }, + "Role": { + "properties": { + "color": { + "type": "number" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "guild_id": { + "type": "string" + }, + "hoist": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "managed": { + "type": "boolean" + }, + "mentionable": { + "type": "boolean" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "type": "bigint" + }, + "position": { + "type": "number" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "tags": { + "properties": { + "bot_id": { + "type": "string" + }, + "integration_id": { + "type": "string" + }, + "premium_subscriber": { + "type": "boolean" + } + }, + "type": "object" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "SapConnectionOptions": { + "description": "SAP Hana specific connection options.", + "properties": { + "ca": { + "description": "Ca for encrypted connection", + "type": "string" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cert": { + "description": "Cert for encrypted connection", + "type": "string" + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "encrypt": { + "description": "Encrypt database connection", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "key": { + "description": "Key for encrypted connection", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pool": { + "description": "Pool options.", + "properties": { + "checkInterval": { + "description": "How often to run resource timeout checks. (default=0, disabled)", + "type": "number" + }, + "idleTimeout": { + "description": "Idle timeout", + "type": "number" + }, + "max": { + "description": "Max number of connections.", + "type": "number" + }, + "maxWaitingRequests": { + "description": "Maximum number of waiting requests allowed. (default=0, no limit).", + "type": "number" + }, + "min": { + "description": "Minimum number of connections.", + "type": "number" + }, + "poolErrorHandler": { + "description": "Function handling errors thrown by drivers pool.\nDefaults to logging error with `warn` level.", + "type": "object" + }, + "requestTimeout": { + "description": "Max milliseconds a request will wait for a resource before timing out. (default=5000)", + "type": "number" + } + }, + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "schema": { + "description": "Database schema.", + "type": "string" + }, + "sslValidateCertificate": { + "description": "Validate database certificate", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sap" + ], + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SchemaEnv": { + "properties": { + "$async": { + "type": "boolean" + }, + "baseId": { + "type": "string" + }, + "dynamicAnchors": { + "$ref": "#/definitions/{[x:string]:true|undefined;}_1" + }, + "localRefs": { + "$ref": "#/definitions/LocalRefs" + }, + "meta": { + "type": "boolean" + }, + "parse": { + "type": "object" + }, + "parseName": { + "$ref": "#/definitions/ValueScopeName" + }, + "refs": { + "$ref": "#/definitions/SchemaRefs" + }, + "root": { + "$ref": "#/definitions/SchemaEnv" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaId": { + "enum": [ + "$id", + "id" + ], + "type": "string" + }, + "schemaPath": { + "type": "string" + }, + "serialize": { + "type": "object" + }, + "serializeName": { + "$ref": "#/definitions/ValueScopeName" + }, + "validate": { + "anyOf": [ + { + "$ref": "#/definitions/ValidateFunction" + }, + { + "$ref": "#/definitions/AsyncValidateFunction" + } + ] + }, + "validateName": { + "$ref": "#/definitions/ValueScopeName" + } + }, + "type": "object" + }, + "SchemaObject": { + "additionalProperties": { + }, + "properties": { + "$async": { + "enum": [ + false + ], + "type": "boolean" + }, + "$id": { + "type": "string" + }, + "$schema": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "SchemaRefs": { + "type": "object" + }, + "ScopeValueSets": { + "type": "object" + }, + "SecureContext": { + "properties": { + "context": { + } + }, + "type": "object" + }, + "Snowflake": { + "description": "A container for useful snowflake-related methods.", + "type": "object" + }, + "SourceCode": { + "properties": { + "evaluated": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "scopeValues": { + "$ref": "#/definitions/ScopeValueSets" + }, + "validateCode": { + "type": "string" + }, + "validateName": { + "$ref": "#/definitions/ValueScopeName" + } + }, + "type": "object" + }, + "SqlServerConnectionCredentialsOptions": { + "description": "SqlServer specific connection credential options.", + "properties": { + "authentication": { + "anyOf": [ + { + "$ref": "#/definitions/DefaultAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryAccessTokenAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiAppServiceAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiVmAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryPasswordAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryServicePrincipalSecret" + }, + { + "$ref": "#/definitions/NtlmAuthentication" + } + ], + "description": "Authentication settings\nIt overrides username and password, when passed." + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domain": { + "description": "Once you set domain, driver will connect to SQL Server using domain login.", + "type": "string" + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SqlServerConnectionOptions": { + "description": "Microsoft Sql Server specific connection options.", + "properties": { + "authentication": { + "anyOf": [ + { + "$ref": "#/definitions/DefaultAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryAccessTokenAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiAppServiceAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryMsiVmAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryPasswordAuthentication" + }, + { + "$ref": "#/definitions/AzureActiveDirectoryServicePrincipalSecret" + }, + { + "$ref": "#/definitions/NtlmAuthentication" + } + ], + "description": "Authentication settings\nIt overrides username and password, when passed." + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "connectionTimeout": { + "description": "Connection timeout in ms (default: 15000).", + "type": "number" + }, + "database": { + "description": "Database name to connect to.", + "type": "string" + }, + "domain": { + "description": "Once you set domain, driver will connect to SQL Server using domain login.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "host": { + "description": "Database host.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "options": { + "description": "Extra options", + "properties": { + "abortTransactionOnError": { + "description": "A boolean determining whether to rollback a transaction automatically if any error is encountered during\nthe given transaction's execution. This sets the value for SET XACT_ABORT during the initial SQL phase\nof a connection (documentation).", + "type": "boolean" + }, + "camelCaseColumns": { + "description": "A boolean, controlling whether the column names returned will have the first letter converted to lower case\n(true) or not. This value is ignored if you provide a columnNameReplacer. (default: false).", + "type": "boolean" + }, + "cancelTimeout": { + "description": "The number of milliseconds before the cancel (abort) of a request is considered failed (default: 5000).", + "type": "number" + }, + "connectTimeout": { + "description": "The number of milliseconds before the attempt to connect is considered failed (default: 15000).", + "type": "number" + }, + "connectionIsolationLevel": { + "description": "The default isolation level for new connections. All out-of-transaction queries are executed with this\nsetting. The isolation levels are available from require('tedious').ISOLATION_LEVEL .", + "enum": [ + "READ_COMMITTED", + "READ_UNCOMMITTED", + "REPEATABLE_READ", + "SERIALIZABLE", + "SNAPSHOT" + ], + "type": "string" + }, + "cryptoCredentialsDetails": { + "description": "When encryption is used, an object may be supplied that will be used for the first argument when calling\ntls.createSecurePair (default: {})." + }, + "debug": { + "description": "Debug options", + "properties": { + "data": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet data details\n(default: false).", + "type": "boolean" + }, + "packet": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet details\n(default: false).", + "type": "boolean" + }, + "payload": { + "description": "A boolean, controlling whether debug events will be emitted with text describing packet payload details\n(default: false).", + "type": "boolean" + }, + "token": { + "description": "A boolean, controlling whether debug events will be emitted with text describing token stream tokens\n(default: false).", + "type": "boolean" + } + }, + "type": "object" + }, + "disableOutputReturning": { + "description": "A boolean, controlling whatever to disable RETURNING / OUTPUT statements.", + "type": "boolean" + }, + "enableAnsiNullDefault": { + "description": "If true, SET ANSI_NULL_DFLT_ON ON will be set in the initial sql. This means new columns will be nullable by\ndefault. See the T-SQL documentation for more details. (Default: true).", + "type": "boolean" + }, + "enableArithAbort": { + "description": "A boolean, that when true will abort a query when an overflow or divide-by-zero error occurs during query execution.", + "type": "boolean" + }, + "encrypt": { + "description": "A boolean determining whether or not the connection will be encrypted. Set to true if you're on\nWindows Azure. (default: false).", + "type": "boolean" + }, + "fallbackToDefaultDb": { + "description": "By default, if the database requestion by options.database cannot be accessed, the connection will fail with\nan error. However, if options.fallbackToDefaultDb is set to true, then the user's default database will\nbe used instead (Default: false).", + "type": "boolean" + }, + "isolation": { + "description": "The default isolation level that transactions will be run with. The isolation levels are available\nfrom require('tedious').ISOLATION_LEVEL. (default: READ_COMMITTED).", + "enum": [ + "READ_COMMITTED", + "READ_UNCOMMITTED", + "REPEATABLE_READ", + "SERIALIZABLE", + "SNAPSHOT" + ], + "type": "string" + }, + "localAddress": { + "description": "A string indicating which network interface (ip address) to use when connecting to SQL Server.", + "type": "string" + }, + "packetSize": { + "description": "The size of TDS packets (subject to negotiation with the server). Should be a power of 2. (default: 4096).", + "type": "number" + }, + "readOnlyIntent": { + "description": "A boolean, determining whether the connection will request read only access from a SQL Server\nAvailability Group. For more information, see here. (default: false).", + "type": "boolean" + }, + "rowCollectionOnDone": { + "description": "A boolean, that when true will expose received rows in Requests' done* events. See done, doneInProc and\ndoneProc. (default: false)\nCaution: If many row are received, enabling this option could result in excessive memory usage.", + "type": "boolean" + }, + "rowCollectionOnRequestCompletion": { + "description": "A boolean, that when true will expose received rows in Requests' completion callback. See new Request. (default: false)\nCaution: If many row are received, enabling this option could result in excessive memory usage.", + "type": "boolean" + }, + "tdsVersion": { + "description": "The version of TDS to use. If server doesn't support specified version, negotiated version is used instead.\nThe versions are available from require('tedious').TDS_VERSION. (default: 7_4).", + "type": "string" + }, + "useColumnNames": { + "description": "A boolean determining whether to return rows as arrays or key-value collections. (default: false).", + "type": "boolean" + }, + "useUTC": { + "description": "A boolean determining whether to pass time values in UTC or local time. (default: true).", + "type": "boolean" + } + }, + "type": "object" + }, + "password": { + "description": "Database password.", + "type": "string" + }, + "pool": { + "description": "An optional object/dictionary with the any of the properties", + "properties": { + "acquireTimeoutMillis": { + "description": "Max milliseconds an acquire call will wait for a resource before timing out. (default no limit), if supplied should non-zero positive integer.", + "type": "number" + }, + "errorHandler": { + "type": "object" + }, + "evictionRunIntervalMillis": { + "description": "How often to run eviction checks. Default: 0 (does not run).", + "type": "number" + }, + "fifo": { + "description": "If true the oldest resources will be first to be allocated. If false the most recently released resources will\nbe the first to be allocated. This in effect turns the pool's behaviour from a queue into a stack. boolean,\n(default true)", + "type": "boolean" + }, + "idleTimeoutMillis": { + "description": "The minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due\nto idle time. Supercedes softIdleTimeoutMillis Default: 30000", + "type": "number" + }, + "max": { + "description": "Maximum number of resources to create at any given time. (default=1)", + "type": "number" + }, + "maxWaitingClients": { + "description": "Maximum number of queued requests allowed, additional acquire calls will be callback with an err in a future\ncycle of the event loop.", + "type": "number" + }, + "min": { + "description": "Minimum number of resources to keep in pool at any given time. If this is set >= max, the pool will silently\nset the min to equal max. (default=0)", + "type": "number" + }, + "numTestsPerRun": { + "description": "Number of resources to check each eviction run. Default: 3.", + "type": "number" + }, + "priorityRange": { + "description": "Int between 1 and x - if set, borrowers can specify their relative priority in the queue if no resources\nare available. see example. (default 1)", + "type": "number" + }, + "softIdleTimeoutMillis": { + "description": "Amount of time an object may sit idle in the pool before it is eligible for eviction by the idle object\nevictor (if any), with the extra condition that at least \"min idle\" object instances remain in the pool.\nDefault -1 (nothing can get evicted)", + "type": "number" + }, + "testOnBorrow": { + "description": "Should the pool validate resources before giving them to clients. Requires that either factory.validate or\nfactory.validateAsync to be specified", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "description": "Database host port.", + "type": "number" + }, + "replication": { + "description": "Replication setup.", + "properties": { + "master": { + "$ref": "#/definitions/SqlServerConnectionCredentialsOptions", + "description": "Master server used by orm to perform writes." + }, + "slaves": { + "description": "List of read-from severs (slaves).", + "items": { + "$ref": "#/definitions/SqlServerConnectionCredentialsOptions" + }, + "type": "array" + } + }, + "type": "object" + }, + "requestTimeout": { + "description": "Request timeout in ms (default: 15000). NOTE: msnodesqlv8 driver doesn't support timeouts < 1 second.", + "type": "number" + }, + "schema": { + "description": "Database schema.", + "type": "string" + }, + "stream": { + "description": "Stream recordsets/rows instead of returning them all at once as an argument of callback (default: false).\nYou can also enable streaming for each request independently (request.stream = true).\nAlways set to true if you plan to work with large amount of rows.", + "type": "boolean" + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "mssql" + ], + "type": "string" + }, + "url": { + "description": "Connection url where perform connection to.", + "type": "string" + }, + "username": { + "description": "Database username.", + "type": "string" + } + }, + "type": "object" + }, + "SqliteConnectionOptions": { + "description": "Sqlite-specific connection options.", + "properties": { + "busyErrorRetry": { + "description": "In your SQLite application when you perform parallel writes its common to face SQLITE_BUSY error.\nThis error indicates that SQLite failed to write to the database file since someone else already writes into it.\nSince SQLite cannot handle parallel saves this error cannot be avoided.\n\nTo simplify life's of those who have this error this particular option sets a timeout within which ORM will try\nto perform requested write operation again and again until it receives SQLITE_BUSY error.\n\nEnabling WAL can improve your app performance and face less SQLITE_BUSY issues.\nTime in milliseconds.", + "type": "number" + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "description": "Storage type or path to the storage.", + "type": "string" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "enableWAL": { + "description": "Enables WAL mode. By default its disabled.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "key": { + "description": "Encryption key for for SQLCipher.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sqlite" + ], + "type": "string" + } + }, + "type": "object" + }, + "SqljsConnectionOptions": { + "description": "Sql.js-specific connection options.", + "properties": { + "autoSave": { + "description": "Enables the autoSave mechanism which either saves to location\nor calls autoSaveCallback every time a change to the database is made.", + "type": "boolean" + }, + "autoSaveCallback": { + "$ref": "#/definitions/Function", + "description": "A function that gets called on every change instead of the internal autoSave function.\nautoSave has to be enabled for this to work." + }, + "cache": { + "anyOf": [ + { + "properties": { + "alwaysEnabled": { + "description": "If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.", + "type": "boolean" + }, + "duration": { + "description": "Time in milliseconds in which cache will expire.\nThis can be setup per-query.\nDefault value is 1000 which is equivalent to 1 second.", + "type": "number" + }, + "ignoreErrors": { + "description": "Used to specify if cache errors should be ignored, and pass through the call to the Database.", + "type": "boolean" + }, + "options": { + "description": "Used to provide redis connection options." + }, + "provider": { + "description": "Factory function for custom cache providers that implement QueryResultCache.", + "type": "object" + }, + "tableName": { + "description": "Configurable table name for \"database\" type cache.\nDefault value is \"query-result-cache\"", + "type": "string" + }, + "type": { + "description": "Type of caching.\n\n- \"database\" means cached values will be stored in the separate table in database. This is default value.\n- \"redis\" means cached values will be stored inside redis. You must provide redis connection options.", + "enum": [ + "database", + "ioredis", + "ioredis/cluster", + "redis" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "type": "boolean" + } + ], + "description": "Allows to setup cache options." + }, + "cli": { + "description": "CLI settings.", + "properties": { + "entitiesDir": { + "description": "Directory where entities should be created by default.", + "type": "string" + }, + "migrationsDir": { + "description": "Directory where migrations should be created by default.", + "type": "string" + }, + "subscribersDir": { + "description": "Directory where subscribers should be created by default.", + "type": "string" + } + }, + "type": "object" + }, + "database": { + "additionalProperties": false, + "description": "A Uint8Array that gets imported when the connection is opened.", + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + "dropSchema": { + "description": "Drops the schema each time connection is being established.\nBe careful with this option and don't use this in production - otherwise you'll lose all production data.\nThis option is useful during debug and development.", + "type": "boolean" + }, + "entities": { + "description": "Entities to be loaded for this connection.\nAccepts both entity classes and directories where from entities need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "$ref": "#/definitions/EntitySchema" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "entityPrefix": { + "description": "Prefix to use on all tables (collections) of this connection in the database.", + "type": "string" + }, + "entitySkipConstructor": { + "description": "When creating new Entity instances, skip all constructors when true.", + "type": "boolean" + }, + "extra": { + "description": "Extra connection options to be passed to the underlying driver.\n\ntodo: deprecate this and move all database-specific types into hts own connection options object." + }, + "location": { + "description": "File path (Node.js) or local storage key (browser) to load and save database from.\nIf this is specified without autoSave, the database is loaded from the location\nand can be saved manually via the SqljsEntityManager. If autoSave is enabled,\nlocation is used to automatically save the database.", + "type": "string" + }, + "logger": { + "anyOf": [ + { + "$ref": "#/definitions/Logger" + }, + { + "enum": [ + "advanced-console", + "debug", + "file", + "simple-console" + ], + "type": "string" + } + ], + "description": "Logger instance used to log queries and events in the ORM." + }, + "logging": { + "anyOf": [ + { + "items": { + "enum": [ + "error", + "info", + "log", + "migration", + "query", + "schema", + "warn" + ], + "type": "string" + }, + "type": "array" + }, + { + "enum": [ + "all", + false, + true + ] + } + ], + "description": "Logging options." + }, + "maxQueryExecutionTime": { + "description": "Maximum number of milliseconds query should be executed before logger log a warning.", + "type": "number" + }, + "migrations": { + "description": "Migrations to be loaded for this connection.\nAccepts both migration classes and directories where from migrations need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "migrationsRun": { + "description": "Indicates if migrations should be auto run on every application launch.\nAlternative to it, you can use CLI and run migrations:run command.", + "type": "boolean" + }, + "migrationsTableName": { + "description": "Migrations table name, in case of different name from \"migrations\".\nAccepts single string name.", + "type": "string" + }, + "migrationsTransactionMode": { + "description": "Transaction mode for migrations to run in", + "enum": [ + "all", + "each", + "none" + ], + "type": "string" + }, + "name": { + "description": "Connection name. If connection name is not given then it will be called \"default\".\nDifferent connections must have different names.", + "type": "string" + }, + "namingStrategy": { + "$ref": "#/definitions/NamingStrategyInterface", + "description": "Naming strategy to be used to name tables and columns in the database." + }, + "sqlJsConfig": { + "description": "Config that's used to initialize sql.js." + }, + "subscribers": { + "description": "Subscribers to be loaded for this connection.\nAccepts both subscriber classes and directories where from subscribers need to be loaded.\nDirectories support glob patterns.", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + "synchronize": { + "description": "Indicates if database schema should be auto created on every application launch.\nBe careful with this option and don't use this in production - otherwise you can lose production data.\nThis option is useful during debug and development.\nAlternative to it, you can use CLI and run schema:sync command.\n\nNote that for MongoDB database it does not create schema, because MongoDB is schemaless.\nInstead, it syncs just by creating indices.", + "type": "boolean" + }, + "type": { + "description": "Database type.", + "enum": [ + "sqljs" + ], + "type": "string" + }, + "useLocalForage": { + "description": "Enables the usage of the localforage library to save & load the database asynchronously from the\nindexedDB instead of using the synchron local storage methods in a browser environment.", + "type": "boolean" + } + }, + "type": "object" + }, + "SqljsEntityManager": { + "description": "A special EntityManager that includes import/export and load/save function\nthat are unique to Sql.js.", + "properties": { + "connection": { + "$ref": "#/definitions/Connection", + "description": "Connection used by this entity manager." + }, + "driver": { + }, + "plainObjectToEntityTransformer": { + "$ref": "#/definitions/PlainObjectToNewEntityTransformer", + "description": "Plain to object transformer used in create and merge operations." + }, + "queryRunner": { + "$ref": "#/definitions/QueryRunner", + "description": "Custom query runner to be used for operations in this entity manager.\nUsed only in non-global entity manager." + }, + "repositories": { + "description": "Once created and then reused by en repositories.", + "items": { + "$ref": "#/definitions/Repository" + }, + "type": "array" + } + }, + "type": "object" + }, + "Status": { + "enum": [ + "dnd", + "idle", + "offline", + "online" + ], + "type": "string" + }, + "StringConstructor": { + "properties": { + "prototype": { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Table": { + "description": "Table in the database represented in this class.", + "properties": { + "checks": { + "description": "Table check constraints.", + "items": { + "$ref": "#/definitions/TableCheck" + }, + "type": "array" + }, + "columns": { + "description": "Table columns.", + "items": { + "$ref": "#/definitions/TableColumn" + }, + "type": "array" + }, + "database": { + "description": "Database name that this table resides in if it applies.", + "type": "string" + }, + "engine": { + "description": "Table engine.", + "type": "string" + }, + "exclusions": { + "description": "Table exclusion constraints.", + "items": { + "$ref": "#/definitions/TableExclusion" + }, + "type": "array" + }, + "foreignKeys": { + "description": "Table foreign keys.", + "items": { + "$ref": "#/definitions/TableForeignKey" + }, + "type": "array" + }, + "indices": { + "description": "Table indices.", + "items": { + "$ref": "#/definitions/TableIndex" + }, + "type": "array" + }, + "justCreated": { + "description": "Indicates if table was just created.\nThis is needed, for example to check if we need to skip primary keys creation\nfor new tables.", + "type": "boolean" + }, + "name": { + "description": "May contain database name, schema name and table name, unless they're the current database.\n\nE.g. myDB.mySchema.myTable", + "type": "string" + }, + "primaryColumns": { + "items": { + "$ref": "#/definitions/TableColumn" + }, + "type": "array" + }, + "schema": { + "description": "Schema name that this table resides in if it applies.", + "type": "string" + }, + "uniques": { + "description": "Table unique constraints.", + "items": { + "$ref": "#/definitions/TableUnique" + }, + "type": "array" + } + }, + "type": "object" + }, + "TableCheck": { + "description": "Database's table check constraint stored in this class.", + "properties": { + "columnNames": { + "description": "Column that contains this constraint.", + "items": { + "type": "string" + }, + "type": "array" + }, + "expression": { + "description": "Check expression.", + "type": "string" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "TableColumn": { + "description": "Table's columns in the database represented in this class.", + "properties": { + "asExpression": { + "description": "Generated column expression. Supports only in MySQL.", + "type": "string" + }, + "charset": { + "description": "Defines column character set.", + "type": "string" + }, + "collation": { + "description": "Defines column collation.", + "type": "string" + }, + "comment": { + "description": "Column's comment.", + "type": "string" + }, + "default": { + "description": "Column's default value." + }, + "enum": { + "description": "Array of possible enumerated values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "enumName": { + "description": "Exact name of enum", + "type": "string" + }, + "generatedType": { + "description": "Generated column type. Supports only in MySQL.", + "enum": [ + "STORED", + "VIRTUAL" + ], + "type": "string" + }, + "generationStrategy": { + "description": "Specifies generation strategy if this column will use auto increment.\n`rowid` option supported only in CockroachDB.", + "enum": [ + "increment", + "rowid", + "uuid" + ], + "type": "string" + }, + "isArray": { + "description": "Indicates if column stores array.", + "type": "boolean" + }, + "isGenerated": { + "description": "Indicates if column is auto-generated sequence.", + "type": "boolean" + }, + "isNullable": { + "description": "Indicates if column is NULL, or is NOT NULL in the database.", + "type": "boolean" + }, + "isPrimary": { + "description": "Indicates if column is a primary key.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if column has unique value.", + "type": "boolean" + }, + "length": { + "description": "Column type's length. Used only on some column types.\nFor example type = \"string\" and length = \"100\" means that ORM will create a column with type varchar(100).", + "type": "string" + }, + "name": { + "description": "Column name.", + "type": "string" + }, + "onUpdate": { + "description": "ON UPDATE trigger. Works only for MySQL.", + "type": "string" + }, + "precision": { + "description": "The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\nnumber of digits that are stored for the values.", + "type": [ + "null", + "number" + ] + }, + "scale": { + "description": "The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\nof digits to the right of the decimal point and must not be greater than precision.", + "type": "number" + }, + "spatialFeatureType": { + "description": "Spatial Feature Type (Geometry, Point, Polygon, etc.)", + "type": "string" + }, + "srid": { + "description": "SRID (Spatial Reference ID (EPSG code))", + "type": "number" + }, + "type": { + "description": "Column type.", + "type": "string" + }, + "unsigned": { + "description": "Puts UNSIGNED attribute on to numeric column. Works only for MySQL.", + "type": "boolean" + }, + "width": { + "description": "Column type's display width. Used only on some column types in MySQL.\nFor example, INT(4) specifies an INT with a display width of four digits.", + "type": "number" + }, + "zerofill": { + "description": "Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\nIf you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column", + "type": "boolean" + } + }, + "type": "object" + }, + "TableExclusion": { + "description": "Database's table exclusion constraint stored in this class.", + "properties": { + "expression": { + "description": "Exclusion expression.", + "type": "string" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "TableForeignKey": { + "description": "Foreign key from the database stored in this class.", + "properties": { + "columnNames": { + "description": "Column names which included by this foreign key.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deferrable": { + "description": "Set this foreign key constraint as \"DEFERRABLE\" e.g. check constraints at start\nor at the end of a transaction", + "type": "string" + }, + "name": { + "description": "Name of the foreign key constraint.", + "type": "string" + }, + "onDelete": { + "description": "\"ON DELETE\" of this foreign key, e.g. what action database should perform when\nreferenced stuff is being deleted.", + "type": "string" + }, + "onUpdate": { + "description": "\"ON UPDATE\" of this foreign key, e.g. what action database should perform when\nreferenced stuff is being updated.", + "type": "string" + }, + "referencedColumnNames": { + "description": "Column names which included by this foreign key.", + "items": { + "type": "string" + }, + "type": "array" + }, + "referencedDatabase": { + "description": "Database of Table referenced in the foreign key.", + "type": "string" + }, + "referencedSchema": { + "description": "Database of Table referenced in the foreign key.", + "type": "string" + }, + "referencedTableName": { + "description": "Table referenced in the foreign key.", + "type": "string" + } + }, + "type": "object" + }, + "TableIndex": { + "description": "Database's table index stored in this class.", + "properties": { + "columnNames": { + "description": "Columns included in this index.", + "items": { + "type": "string" + }, + "type": "array" + }, + "isFulltext": { + "description": "The FULLTEXT modifier indexes the entire column and does not allow prefixing.\nWorks only in MySQL.", + "type": "boolean" + }, + "isSpatial": { + "description": "The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\nWorks only in MySQL.", + "type": "boolean" + }, + "isUnique": { + "description": "Indicates if this index is unique.", + "type": "boolean" + }, + "name": { + "description": "Index name.", + "type": "string" + }, + "parser": { + "description": "Fulltext parser.\nWorks only in MySQL.", + "type": "string" + }, + "where": { + "description": "Index filter condition.", + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataArgs": { + "description": "Arguments for TableMetadata class, helps to construct an TableMetadata object.", + "properties": { + "database": { + "description": "Database name. Used in MySql and Sql Server.", + "type": "string" + }, + "engine": { + "description": "Table's database engine type (like \"InnoDB\", \"MyISAM\", etc).", + "type": "string" + }, + "expression": { + "description": "View expression.", + "type": [ + "string", + "object" + ] + }, + "materialized": { + "description": "Indicates if view is materialized", + "type": "boolean" + }, + "name": { + "description": "Table's name. If name is not set then table's name will be generated from target's name.", + "type": "string" + }, + "orderBy": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "properties": { + "nulls": { + "enum": [ + "NULLS FIRST", + "NULLS LAST" + ], + "type": "string" + }, + "order": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + "type": "object" + }, + { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + ] + }, + "description": "Special object that defines order condition for ORDER BY in sql.\n\nExample:\n{\n \"name\": \"ASC\",\n \"id\": \"DESC\"\n}", + "type": "object" + }, + { + "type": "object" + } + ], + "description": "Specifies a default order by used for queries from this table when no explicit order by is specified." + }, + "schema": { + "description": "Schema name. Used in Postgres and Sql Server.", + "type": "string" + }, + "synchronize": { + "description": "Indicates if schema synchronization is enabled or disabled for this entity.\nIf it will be set to false then schema sync will and migrations ignore this entity.\nBy default schema synchronization is enabled for all entities.", + "type": "boolean" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Class to which table is applied.\nFunction target is a table defined in the class.\nString target is a table defined in a json schema." + }, + "type": { + "$ref": "#/definitions/TableType", + "description": "Table type. Tables can be abstract, closure, junction, embedded, etc." + }, + "withoutRowid": { + "description": "If set to 'true' this option disables Sqlite's default behaviour of secretly creating\nan integer primary key column named 'rowid' on table creation.", + "type": "boolean" + } + }, + "type": "object" + }, + "TableType": { + "description": "Table type. Tables can be closure, junction,, etc.", + "enum": [ + "closure", + "closure-junction", + "entity-child", + "junction", + "regular", + "view" + ], + "type": "string" + }, + "TableUnique": { + "description": "Database's table unique constraint stored in this class.", + "properties": { + "columnNames": { + "description": "Columns that contains this constraint.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Constraint name.", + "type": "string" + } + }, + "type": "object" + }, + "Team": { + "properties": { + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "members": { + "items": { + "$ref": "#/definitions/TeamMember" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "owner_user": { + "$ref": "#/definitions/User" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "TeamMember": { + "properties": { + "id": { + "type": "string" + }, + "membership_state": { + "$ref": "#/definitions/TeamMemberState" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "permissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "TeamMemberState": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "Template": { + "properties": { + "code": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "creator": { + "$ref": "#/definitions/User" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "updated_at": { + "format": "date-time", + "type": "string" + }, + "usage_count": { + "type": "number" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + } + }, + "type": "object" + }, + "TlsOptions": { + "properties": { + "ALPNProtocols": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + { + "items": { + "additionalProperties": false, + "patternProperties": { + "^[0-9]+$": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + ], + "description": "An array of strings or a Buffer naming possible ALPN protocols.\n(Protocols should be ordered by their priority.)" + }, + "SNICallback": { + "description": "SNICallback(servername, cb) A function that will be\ncalled if the client supports SNI TLS extension. Two arguments\nwill be passed when called: servername and cb. SNICallback should\ninvoke cb(null, ctx), where ctx is a SecureContext instance.\n(tls.createSecureContext(...) can be used to get a proper\nSecureContext.) If SNICallback wasn't provided the default callback\nwith high-level API will be used (see below).", + "type": "object" + }, + "allowHalfOpen": { + "default": false, + "description": "Indicates whether half-opened TCP connections are allowed.", + "type": "boolean" + }, + "ca": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Optionally override the trusted CA certificates. Default is to trust\nthe well-known CAs curated by Mozilla. Mozilla's CAs are completely\nreplaced when CAs are explicitly specified using this option." + }, + "cert": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Cert chains in PEM format. One cert chain should be provided per\nprivate key. Each cert chain should consist of the PEM formatted\ncertificate for a provided private key, followed by the PEM\nformatted intermediate certificates (if any), in order, and not\nincluding the root CA (the root CA must be pre-known to the peer,\nsee ca). When providing multiple cert chains, they do not have to\nbe in the same order as their private keys in key. If the\nintermediate certificates are not provided, the peer will not be\nable to validate the certificate, and the handshake will fail." + }, + "ciphers": { + "description": "Cipher suite specification, replacing the default. For more\ninformation, see modifying the default cipher suite. Permitted\nciphers can be obtained via tls.getCiphers(). Cipher names must be\nuppercased in order for OpenSSL to accept them.", + "type": "string" + }, + "clientCertEngine": { + "description": "Name of an OpenSSL engine which can provide the client certificate.", + "type": "string" + }, + "crl": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PEM formatted CRLs (Certificate Revocation Lists)." + }, + "dhparam": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Diffie Hellman parameters, required for Perfect Forward Secrecy. Use\nopenssl dhparam to create the parameters. The key length must be\ngreater than or equal to 1024 bits or else an error will be thrown.\nAlthough 1024 bits is permissible, use 2048 bits or larger for\nstronger security. If omitted or invalid, the parameters are\nsilently discarded and DHE ciphers will not be available." + }, + "ecdhCurve": { + "description": "A string describing a named curve or a colon separated list of curve\nNIDs or names, for example P-521:P-384:P-256, to use for ECDH key\nagreement. Set to auto to select the curve automatically. Use\ncrypto.getCurves() to obtain a list of available curve names. On\nrecent releases, openssl ecparam -list_curves will also display the\nname and description of each available elliptic curve. Default:\ntls.DEFAULT_ECDH_CURVE.", + "type": "string" + }, + "enableTrace": { + "default": false, + "description": "When enabled, TLS packet trace information is written to `stderr`. This can be\nused to debug TLS connection problems.", + "type": "boolean" + }, + "handshakeTimeout": { + "description": "Abort the connection if the SSL/TLS handshake does not finish in the\nspecified number of milliseconds. A 'tlsClientError' is emitted on\nthe tls.Server object whenever a handshake times out. Default:\n120000 (120 seconds).", + "type": "number" + }, + "honorCipherOrder": { + "description": "Attempt to use the server's cipher suite preferences instead of the\nclient's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be\nset in secureOptions", + "type": "boolean" + }, + "key": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "$ref": "#/definitions/KeyObject" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "Private keys in PEM format. PEM allows the option of private keys\nbeing encrypted. Encrypted keys will be decrypted with\noptions.passphrase. Multiple keys using different algorithms can be\nprovided either as an array of unencrypted key strings or buffers,\nor an array of objects in the form {pem: [,\npassphrase: ]}. The object form can only occur in an array.\nobject.passphrase is optional. Encrypted keys will be decrypted with\nobject.passphrase if provided, or options.passphrase if it is not." + }, + "maxVersion": { + "description": "Optionally set the maximum TLS version to allow. One\nof `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the\n`secureProtocol` option, use one or the other.\n**Default:** `'TLSv1.3'`, unless changed using CLI options. Using\n`--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to\n`'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used.", + "enum": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "type": "string" + }, + "minVersion": { + "description": "Optionally set the minimum TLS version to allow. One\nof `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the\n`secureProtocol` option, use one or the other. It is not recommended to use\nless than TLSv1.2, but it may be required for interoperability.\n**Default:** `'TLSv1.2'`, unless changed using CLI options. Using\n`--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to\n`'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to\n'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used.", + "enum": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "type": "string" + }, + "passphrase": { + "description": "Shared passphrase used for a single private key and/or a PFX.", + "type": "string" + }, + "pauseOnConnect": { + "default": false, + "description": "Indicates whether the socket should be paused on incoming connections.", + "type": "boolean" + }, + "pfx": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + }, + { + "$ref": "#/definitions/PxfObject" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "string" + } + ], + "description": "PFX or PKCS12 encoded private key and certificate chain. pfx is an\nalternative to providing key and cert individually. PFX is usually\nencrypted, if it is, passphrase will be used to decrypt it. Multiple\nPFX can be provided either as an array of unencrypted PFX buffers,\nor an array of objects in the form {buf: [,\npassphrase: ]}. The object form can only occur in an array.\nobject.passphrase is optional. Encrypted PFX will be decrypted with\nobject.passphrase if provided, or options.passphrase if it is not." + }, + "privateKeyEngine": { + "description": "Name of an OpenSSL engine to get private key from. Should be used\ntogether with privateKeyIdentifier.", + "type": "string" + }, + "privateKeyIdentifier": { + "description": "Identifier of a private key managed by an OpenSSL engine. Should be\nused together with privateKeyEngine. Should not be set together with\nkey, because both options define a private key in different ways.", + "type": "string" + }, + "pskIdentityHint": { + "description": "hint to send to a client to help\nwith selecting the identity during TLS-PSK negotiation. Will be ignored\nin TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be\nemitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code.", + "type": "string" + }, + "rejectUnauthorized": { + "default": true, + "description": "If true the server will reject any connection which is not\nauthorized with the list of supplied CAs. This option only has an\neffect if requestCert is true.", + "type": "boolean" + }, + "requestCert": { + "description": "If true the server will request a certificate from clients that\nconnect and attempt to verify that certificate. Defaults to\nfalse.", + "type": "boolean" + }, + "secureContext": { + "$ref": "#/definitions/SecureContext", + "description": "An optional TLS context object from tls.createSecureContext()" + }, + "secureOptions": { + "description": "Optionally affect the OpenSSL protocol behavior, which is not\nusually necessary. This should be used carefully if at all! Value is\na numeric bitmask of the SSL_OP_* options from OpenSSL Options", + "type": "number" + }, + "secureProtocol": { + "description": "Legacy mechanism to select the TLS protocol version to use, it does\nnot support independent control of the minimum and maximum version,\nand does not support limiting the protocol to TLSv1.3. Use\nminVersion and maxVersion instead. The possible values are listed as\nSSL_METHODS, use the function names as strings. For example, use\n'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow\nany TLS protocol version up to TLSv1.3. It is not recommended to use\nTLS versions less than 1.2, but it may be required for\ninteroperability. Default: none, see minVersion.", + "type": "string" + }, + "sessionIdContext": { + "description": "Opaque identifier used by servers to ensure session state is not\nshared between applications. Unused by clients.", + "type": "string" + }, + "sessionTimeout": { + "description": "The number of seconds after which a TLS session created by the\nserver will no longer be resumable. See Session Resumption for more\ninformation. Default: 300.", + "type": "number" + }, + "sigalgs": { + "description": "Colon-separated list of supported signature algorithms. The list\ncan contain digest algorithms (SHA256, MD5 etc.), public key\nalgorithms (RSA-PSS, ECDSA etc.), combination of both (e.g\n'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512).", + "type": "string" + }, + "ticketKeys": { + "description": "Raw data is stored in instances of the Buffer class.\nA Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. A Buffer cannot be resized.\nValid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'", + "items": { + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "TypingStartEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/PublicMember" + }, + "timestamp": { + "type": "number" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "TYPING_START" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "UniqueMetadata": { + "description": "Unique metadata contains all information about table's unique constraints.", + "properties": { + "columnNamesWithOrderingMap": { + "additionalProperties": { + "type": "number" + }, + "description": "Map of column names with order set.\nUsed only by MongoDB driver.", + "type": "object" + }, + "columns": { + "description": "Unique columns.", + "items": { + "$ref": "#/definitions/ColumnMetadata" + }, + "type": "array" + }, + "embeddedMetadata": { + "$ref": "#/definitions/EmbeddedMetadata", + "description": "Embedded metadata if this unique was applied on embedded." + }, + "entityMetadata": { + "$ref": "#/definitions/EntityMetadata", + "description": "Entity metadata of the class to which this unique constraint is applied." + }, + "givenColumnNames": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "object" + } + ], + "description": "User specified column names." + }, + "givenName": { + "description": "User specified unique constraint name.", + "type": "string" + }, + "name": { + "description": "Final unique constraint name.\nIf unique constraint name was given by a user then it stores normalized (by naming strategy) givenName.\nIf unique constraint name was not given then its generated.", + "type": "string" + }, + "target": { + "anyOf": [ + { + "$ref": "#/definitions/Function" + }, + { + "type": "string" + } + ], + "description": "Target class to which metadata is applied." + } + }, + "type": "object" + }, + "UsedNames": { + "type": "object" + }, + "User": { + "properties": { + "accent_color": { + "type": [ + "null", + "number" + ] + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "banner": { + "type": [ + "null", + "string" + ] + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "connected_accounts": { + "items": { + "$ref": "#/definitions/ConnectedAccount" + }, + "type": "array" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "deleted": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "disabled": { + "type": "boolean" + }, + "discriminator": { + "type": "string" + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "bigint" + }, + "guilds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mfa_enabled": { + "type": "boolean" + }, + "mobile": { + "type": "boolean" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "number" + }, + "public_flags": { + "type": "bigint" + }, + "relationships": { + "items": { + "$ref": "#/definitions/Relationship" + }, + "type": "array" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "settings": { + "$ref": "#/definitions/UserSettings" + }, + "system": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user_data": { + "properties": { + "fingerprints": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hash": { + "type": "string" + }, + "valid_tokens_since": { + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "username": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "type": "object" + }, + "UserFlags": { + "properties": { + "bitfield": { + "type": "bigint" + } + }, + "type": "object" + }, + "UserGuildSettings": { + "properties": { + "channel_overrides": { + "items": { + "properties": { + "channel_id": { + "type": "string" + }, + "message_notifications": { + "type": "number" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "message_notifications": { + "type": "number" + }, + "mobile_push": { + "type": "boolean" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "suppress_everyone": { + "type": "boolean" + }, + "suppress_roles": { + "type": "boolean" + }, + "version": { + "type": "number" + } + }, + "type": "object" + }, + "UserSettings": { + "properties": { + "afk_timeout": { + "type": "number" + }, + "allow_accessibility_detection": { + "type": "boolean" + }, + "animate_emoji": { + "type": "boolean" + }, + "animate_stickers": { + "type": "number" + }, + "contact_sync_enabled": { + "type": "boolean" + }, + "convert_emoticons": { + "type": "boolean" + }, + "custom_status": { + "properties": { + "emoji_id": { + "type": [ + "null", + "string" + ] + }, + "emoji_name": { + "type": [ + "null", + "string" + ] + }, + "expires_at": { + "type": [ + "null", + "number" + ] + }, + "text": { + "type": [ + "null", + "string" + ] + } + }, + "type": "object" + }, + "default_guilds_restricted": { + "type": "boolean" + }, + "detect_platform_accounts": { + "type": "boolean" + }, + "developer_mode": { + "type": "boolean" + }, + "disable_games_tab": { + "type": "boolean" + }, + "enable_tts_command": { + "type": "boolean" + }, + "explicit_content_filter": { + "type": "number" + }, + "friend_source_flags": { + "properties": { + "all": { + "type": "boolean" + } + }, + "type": "object" + }, + "gateway_connected": { + "type": "boolean" + }, + "gif_auto_play": { + "type": "boolean" + }, + "guild_folders": { + "items": { + "properties": { + "color": { + "type": "number" + }, + "guild_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "guild_positions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inline_attachment_media": { + "type": "boolean" + }, + "inline_embed_media": { + "type": "boolean" + }, + "locale": { + "type": "string" + }, + "message_display_compact": { + "type": "boolean" + }, + "native_phone_integration_enabled": { + "type": "boolean" + }, + "render_embeds": { + "type": "boolean" + }, + "render_reactions": { + "type": "boolean" + }, + "restricted_guilds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "show_current_game": { + "type": "boolean" + }, + "status": { + "enum": [ + "dnd", + "idle", + "offline", + "online" + ], + "type": "string" + }, + "stream_notifications_enabled": { + "type": "boolean" + }, + "theme": { + "enum": [ + "dark", + "white" + ], + "type": "string" + }, + "timezone_offset": { + "type": "number" + } + }, + "type": "object" + }, + "UserUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "$ref": "#/definitions/User" + }, + "event": { + "enum": [ + "USER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "ValidateFunction": { + "properties": { + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "ValidateFunction": { + "properties": { + "errors": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/ErrorObject,unknown>" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "evaluated": { + "$ref": "#/definitions/Evaluated" + }, + "schema": { + "anyOf": [ + { + "$ref": "#/definitions/SchemaObject" + }, + { + "$ref": "#/definitions/AsyncSchema" + }, + { + "type": "boolean" + } + ] + }, + "schemaEnv": { + "$ref": "#/definitions/SchemaEnv" + }, + "source": { + "$ref": "#/definitions/SourceCode" + } + }, + "type": "object" + }, + "ValueScopeName": { + "properties": { + "names": { + "$ref": "#/definitions/UsedNames" + }, + "prefix": { + "type": "string" + }, + "scopePath": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "$ref": "#/definitions/_Code" + } + ] + }, + "str": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/NameValue" + } + }, + "type": "object" + }, + "ValueTransformer": { + "description": "Interface for objects that deal with (un)marshalling data.", + "type": "object" + }, + "View": { + "description": "View in the database represented in this class.", + "properties": { + "database": { + "description": "Database name that this view resides in if it applies.", + "type": "string" + }, + "expression": { + "description": "View definition.", + "type": [ + "string", + "object" + ] + }, + "materialized": { + "description": "Indicates if view is materialized.", + "type": "boolean" + }, + "name": { + "description": "View name", + "type": "string" + }, + "schema": { + "description": "Schema name that this view resides in if it applies.", + "type": "string" + } + }, + "type": "object" + }, + "VoiceServerUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "endpoint": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "VOICE_SERVER_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "VoiceState": { + "properties": { + "channel": { + "$ref": "#/definitions/Channel" + }, + "deaf": { + "type": "boolean" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "mute": { + "type": "boolean" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "self_deaf": { + "type": "boolean" + }, + "self_mute": { + "type": "boolean" + }, + "self_stream": { + "type": "boolean" + }, + "self_video": { + "type": "boolean" + }, + "session_id": { + "type": "string" + }, + "suppress": { + "type": "boolean" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "$ref": "#/definitions/User" + } + }, + "type": "object" + }, + "VoiceStateUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/VoiceState" + }, + { + "properties": { + "member": { + "$ref": "#/definitions/PublicMember" + } + }, + "type": "object" + } + ] + }, + "event": { + "enum": [ + "VOICE_STATE_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "Webhook": { + "properties": { + "application": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "channel": { + "type": "string" + }, + "guild": { + "type": "string" + }, + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/EntityMetadata" + }, + "name": { + "type": "string" + }, + "opts": { + "properties": { + "id": { + "type": "string" + } + }, + "type": "object" + }, + "schemaValidator": { + "$ref": "#/definitions/ValidateFunction" + }, + "source_guild": { + "type": "string" + }, + "token": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/WebhookType" + }, + "usedConnection": { + "$ref": "#/definitions/Connection" + }, + "user": { + "type": "string" + } + }, + "type": "object" + }, + "WebhookType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "WebhooksUpdateEvent": { + "properties": { + "channel_id": { + "type": "string" + }, + "created_at": { + "format": "date-time", + "type": "string" + }, + "data": { + "properties": { + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "type": "object" + }, + "event": { + "enum": [ + "WEBHOOKS_UPDATE" + ], + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "type": "object" + }, + "XDeath": { + "properties": { + "count": { + "type": "number" + }, + "exchange": { + "type": "string" + }, + "original-expiration": { + }, + "queue": { + "type": "string" + }, + "reason": { + "enum": [ + "expired", + "maxlen", + "rejected" + ], + "type": "string" + }, + "routing-keys": { + "items": { + "type": "string" + }, + "type": "array" + }, + "time": { + "properties": { + "!": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "_Code": { + "properties": { + "_items": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Name" + }, + { + "type": [ + "null", + "string", + "number", + "boolean" + ] + } + ] + }, + "type": "array" + }, + "_names": { + }, + "_str": { + }, + "names": { + "$ref": "#/definitions/UsedNames" + }, + "str": { + "type": "string" + } + }, + "type": "object" + }, + "{[x:string]:EntitySchemaColumnOptions|undefined;}": { + "description": "Entity column's options.", + "type": "object" + }, + "{[x:string]:EntitySchemaRelationOptions|undefined;}": { + "description": "Entity relation's options.", + "type": "object" + }, + "{[x:string]:true|undefined;}": { + "type": "object" + }, + "{[x:string]:true|undefined;}_1": { + "type": "object" + } + } +} + From a567551c8a6b03a956d21354a5504b9f9e1f40b1 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:35:04 +0200 Subject: [PATCH 06/50] :construction: api --- api/src/middlewares/RateLimit.ts | 6 +- api/src/routes/auth/login.ts | 26 ++++----- api/src/routes/auth/register.ts | 18 +++--- api/src/routes/channels/#channel_id/index.ts | 16 ++--- .../routes/channels/#channel_id/invites.ts | 10 ++-- .../#channel_id/messages/#message_id/ack.ts | 7 +-- .../#channel_id/messages/#message_id/index.ts | 16 ++--- .../messages/#message_id/reactions.ts | 40 ++++++------- .../#channel_id/messages/bulk-delete.ts | 6 +- .../channels/#channel_id/messages/index.ts | 42 ++++++-------- .../channels/#channel_id/permissions.ts | 25 +++----- api/src/routes/channels/#channel_id/pins.ts | 29 ++++------ api/src/routes/channels/#channel_id/typing.ts | 8 +-- .../routes/channels/#channel_id/webhooks.ts | 4 +- api/src/routes/guilds/#guild_id/bans.ts | 18 +++--- api/src/routes/guilds/#guild_id/channels.ts | 17 +++--- api/src/routes/guilds/#guild_id/delete.ts | 31 ++++------ api/src/routes/guilds/#guild_id/index.ts | 29 +++++----- api/src/routes/guilds/#guild_id/invites.ts | 4 +- .../#guild_id/members/#member_id/index.ts | 20 +++---- .../routes/guilds/#guild_id/members/index.ts | 11 ++-- api/src/routes/guilds/#guild_id/roles.ts | 36 ++++++------ api/src/routes/guilds/#guild_id/templates.ts | 34 +++++------ api/src/routes/guilds/#guild_id/vanity-url.ts | 24 ++++---- .../routes/guilds/#guild_id/welcome_screen.ts | 12 ++-- .../routes/guilds/#guild_id/widget.json.ts | 12 ++-- api/src/routes/guilds/#guild_id/widget.png.ts | 4 +- api/src/routes/guilds/#guild_id/widget.ts | 6 +- api/src/routes/guilds/index.ts | 6 +- api/src/routes/guilds/templates/index.ts | 12 ++-- api/src/routes/invites/index.ts | 24 ++++---- api/src/routes/users/#id/profile.ts | 34 +++++------ api/src/routes/users/@me/channels.ts | 16 ++--- api/src/routes/users/@me/delete.ts | 10 ++-- api/src/routes/users/@me/disable.ts | 8 +-- api/src/routes/users/@me/guilds.ts | 17 +++--- api/src/routes/users/@me/index.ts | 6 +- api/src/routes/users/@me/profile.ts | 34 +++++------ api/src/routes/users/@me/relationships.ts | 40 ++++++------- api/src/routes/users/@me/settings.ts | 4 +- api/src/test/mongo_test.ts | 10 ++-- api/src/util/Channel.ts | 10 ++-- api/src/util/Member.ts | 58 +++++++++---------- api/src/util/Message.ts | 27 ++++----- api/src/util/User.ts | 8 +-- 45 files changed, 381 insertions(+), 454 deletions(-) diff --git a/api/src/middlewares/RateLimit.ts b/api/src/middlewares/RateLimit.ts index acf92606..9601dad3 100644 --- a/api/src/middlewares/RateLimit.ts +++ b/api/src/middlewares/RateLimit.ts @@ -72,7 +72,7 @@ export default function RateLimit(opts: { offender.expires_at = new Date(Date.now() + opts.window * 1000); offender.blocked = false; // mongodb ttl didn't update yet -> manually update/delete - db.collection("ratelimits").updateOne({ id: bucket_id, user_id }, { $set: offender }); + db.collection("ratelimits").update({ id: bucket_id, user_id }, { $set: offender }); Cache.delete(user_id + bucket_id); } } @@ -132,7 +132,7 @@ export async function initRateLimits(app: Router) { async function hitRoute(opts: { user_id: string; bucket_id: string; max_hits: number; window: number }) { const filter = { id: opts.bucket_id, user_id: opts.user_id }; - const { value } = await db.collection("ratelimits").findOneAndUpdate( + const { value } = await db.collection("ratelimits").findOneOrFailAndUpdate( filter, { $setOnInsert: { @@ -158,7 +158,7 @@ async function hitRoute(opts: { user_id: string; bucket_id: string; max_hits: nu event: EventRateLimit, data: value }); - await db.collection("ratelimits").updateOne(filter, { $set: { blocked: true } }); + await db.collection("ratelimits").update(filter, { $set: { blocked: true } }); } else { Cache.delete(opts.user_id); } diff --git a/api/src/routes/auth/login.ts b/api/src/routes/auth/login.ts index dc970e4c..579a097e 100644 --- a/api/src/routes/auth/login.ts +++ b/api/src/routes/auth/login.ts @@ -2,7 +2,7 @@ import { Request, Response, Router } from "express"; import { check, FieldErrors, Length } from "../../util/instanceOf"; import bcrypt from "bcrypt"; import jwt from "jsonwebtoken"; -import { Config, UserModel } from "@fosscord/util"; +import { Config, User } from "@fosscord/util"; import { adjustEmail } from "./register"; const router: Router = Router(); @@ -41,27 +41,25 @@ router.post( // TODO: check captcha } - const user = await UserModel.findOne( + const user = await User.findOneOrFail( { $or: query }, - { "user_data.hash": true, id: true, disabled: true, deleted: true, "user_settings.locale": true, "user_settings.theme": true } - ) - .exec() - .catch((e) => { - console.log(e, query); - throw FieldErrors({ login: { message: req.t("auth:login.INVALID_LOGIN"), code: "INVALID_LOGIN" } }); - }); + { "data.hash": true, id: true, disabled: true, deleted: true, "settings.locale": true, "settings.theme": true } + ).catch((e) => { + console.log(e, query); + throw FieldErrors({ login: { message: req.t("auth:login.INVALID_LOGIN"), code: "INVALID_LOGIN" } }); + }); if (undelete) { // undelete refers to un'disable' here - if (user.disabled) await UserModel.updateOne({ id: user.id }, { disabled: false }).exec(); - if (user.deleted) await UserModel.updateOne({ id: user.id }, { deleted: false }).exec(); + if (user.disabled) await User.update({ id: user.id }, { disabled: false }); + if (user.deleted) await User.update({ id: user.id }, { deleted: false }); } else { if (user.deleted) return res.status(400).json({ message: "This account is scheduled for deletion.", code: 20011 }); if (user.disabled) return res.status(400).json({ message: req.t("auth:login.ACCOUNT_DISABLED"), code: 20013 }); } // the salt is saved in the password refer to bcrypt docs - const same_password = await bcrypt.compare(password, user.user_data.hash || ""); + const same_password = await bcrypt.compare(password, user.data.hash || ""); if (!same_password) { throw FieldErrors({ password: { message: req.t("auth:login.INVALID_PASSWORD"), code: "INVALID_PASSWORD" } }); } @@ -72,7 +70,7 @@ router.post( // Discord header is just the user id as string, which is not possible with npm-jsonwebtoken package // https://user-images.githubusercontent.com/6506416/81051916-dd8c9900-8ec2-11ea-8794-daf12d6f31f0.png - res.json({ token, user_settings: user.user_settings }); + res.json({ token, settings: user.settings }); } ); @@ -106,6 +104,6 @@ export async function generateToken(id: string) { * @returns {"captcha_key": ["captcha-required"], "captcha_sitekey": null, "captcha_service": "recaptcha"} * Sucess: - * @returns {"token": "USERTOKEN", "user_settings": {"locale": "en", "theme": "dark"}} + * @returns {"token": "USERTOKEN", "settings": {"locale": "en", "theme": "dark"}} */ diff --git a/api/src/routes/auth/register.ts b/api/src/routes/auth/register.ts index fecde874..1405e219 100644 --- a/api/src/routes/auth/register.ts +++ b/api/src/routes/auth/register.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { trimSpecial, User, Snowflake, UserModel, Config } from "@fosscord/util"; +import { trimSpecial, User, Snowflake, User, Config } from "@fosscord/util"; import bcrypt from "bcrypt"; import { check, Email, EMAIL_REGEX, FieldErrors, Length } from "../../util/instanceOf"; import "missing-native-js-functions"; @@ -92,9 +92,7 @@ router.post( if (!adjusted_email) throw FieldErrors({ email: { code: "INVALID_EMAIL", message: req.t("auth:register.INVALID_EMAIL") } }); // check if there is already an account with this email - const exists = await UserModel.findOne({ email: adjusted_email }) - .exec() - .catch((e) => {}); + const exists = await User.findOneOrFail({ email: adjusted_email }).catch((e) => {}); if (exists) { throw FieldErrors({ @@ -131,9 +129,7 @@ router.post( if (!register.allowMultipleAccounts) { // TODO: check if fingerprint was eligible generated - const exists = await UserModel.findOne({ fingerprints: fingerprint }) - .exec() - .catch((e) => {}); + const exists = await User.findOneOrFail({ fingerprints: fingerprint }).catch((e) => {}); if (exists) { throw FieldErrors({ @@ -169,7 +165,7 @@ router.post( for (let tries = 0; tries < 5; tries++) { discriminator = Math.randomIntBetween(1, 9999).toString().padStart(4, "0"); try { - exists = await UserModel.findOne({ discriminator, username: adjusted_username }, "id").exec(); + exists = await User.findOneOrFail({ discriminator, username: adjusted_username }, "id"); } catch (error) { // doesn't exist -> break break; @@ -223,14 +219,14 @@ router.post( public_flags: 0n, flags: 0n, // TODO: generate default flags guilds: [], - user_data: { + data: { hash: adjusted_password, valid_tokens_since: new Date(), relationships: [], connected_accounts: [], fingerprints: [] }, - user_settings: { + settings: { afk_timeout: 300, allow_accessibility_detection: true, animate_emoji: true, @@ -272,7 +268,7 @@ router.post( }; // insert user into database - await new UserModel(user).save(); + await new User(user).save(); return res.json({ token: await generateToken(user.id) }); } diff --git a/api/src/routes/channels/#channel_id/index.ts b/api/src/routes/channels/#channel_id/index.ts index fb6bcb1a..91534602 100644 --- a/api/src/routes/channels/#channel_id/index.ts +++ b/api/src/routes/channels/#channel_id/index.ts @@ -1,4 +1,4 @@ -import { ChannelDeleteEvent, ChannelModel, ChannelUpdateEvent, emitEvent, getPermission, GuildUpdateEvent, toObject } from "@fosscord/util"; +import { ChannelDeleteEvent, Channel, ChannelUpdateEvent, emitEvent, getPermission, GuildUpdateEvent, toObject } from "@fosscord/util"; import { Router, Response, Request } from "express"; import { HTTPError } from "lambert-server"; import { ChannelModifySchema } from "../../../schema/Channel"; @@ -10,28 +10,28 @@ const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); const permission = await getPermission(req.user_id, channel.guild_id, channel_id); permission.hasThrow("VIEW_CHANNEL"); - return res.send(toObject(channel)); + return res.send(channel); }); router.delete("/", async (req: Request, res: Response) => { const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); const permission = await getPermission(req.user_id, channel?.guild_id, channel_id, { channel }); permission.hasThrow("MANAGE_CHANNELS"); // TODO: Dm channel "close" not delete - const data = toObject(channel); + const data = channel; await emitEvent({ event: "CHANNEL_DELETE", data, channel_id } as ChannelDeleteEvent); - await ChannelModel.deleteOne({ id: channel_id }); + await Channel.deleteOne({ id: channel_id }); res.send(data); }); @@ -43,9 +43,9 @@ router.patch("/", check(ChannelModifySchema), async (req: Request, res: Response const permission = await getPermission(req.user_id, undefined, channel_id); permission.hasThrow("MANAGE_CHANNELS"); - const channel = await ChannelModel.findOneAndUpdate({ id: channel_id }, payload, { new: true }).exec(); + const channel = await Channel.findOneOrFailAndUpdate({ id: channel_id }, payload, { new: true }); - const data = toObject(channel); + const data = channel; await emitEvent({ event: "CHANNEL_UPDATE", diff --git a/api/src/routes/channels/#channel_id/invites.ts b/api/src/routes/channels/#channel_id/invites.ts index 438f8c51..cc77df26 100644 --- a/api/src/routes/channels/#channel_id/invites.ts +++ b/api/src/routes/channels/#channel_id/invites.ts @@ -6,14 +6,14 @@ import { random } from "../../../util/RandomInviteID"; import { InviteCreateSchema } from "../../../schema/Invite"; -import { getPermission, ChannelModel, InviteModel, InviteCreateEvent, toObject, emitEvent } from "@fosscord/util"; +import { getPermission, Channel, InviteModel, InviteCreateEvent, toObject, emitEvent } from "@fosscord/util"; const router: Router = Router(); router.post("/", check(InviteCreateSchema), async (req: Request, res: Response) => { const { user_id } = req; const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); if (!channel.guild_id) { throw new HTTPError("This channel doesn't exist", 404); @@ -47,7 +47,7 @@ router.post("/", check(InviteCreateSchema), async (req: Request, res: Response) router.get("/", async (req: Request, res: Response) => { const { user_id } = req; const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); if (!channel.guild_id) { throw new HTTPError("This channel doesn't exist", 404); @@ -56,9 +56,9 @@ router.get("/", async (req: Request, res: Response) => { const permission = await getPermission(user_id, guild_id); permission.hasThrow("MANAGE_CHANNELS"); - const invites = await InviteModel.find({ guild_id }).exec(); + const invites = await Invite.find({ guild_id }); - res.status(200).send(toObject(invites)); + res.status(200).send(invites); }); export default router; diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts index bbc779dd..ff576d90 100644 --- a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts +++ b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts @@ -1,4 +1,4 @@ -import { emitEvent, getPermission, MessageAckEvent, ReadStateModel } from "@fosscord/util"; +import { emitEvent, getPermission, MessageAckEvent, ReadState } from "@fosscord/util"; import { Request, Response, Router } from "express"; import { check } from "../../../../../util/instanceOf"; @@ -14,10 +14,7 @@ router.post("/", check({ $manual: Boolean, $mention_count: Number }), async (req const permission = await getPermission(req.user_id, undefined, channel_id); permission.hasThrow("VIEW_CHANNEL"); - await ReadStateModel.updateOne( - { user_id: req.user_id, channel_id, message_id }, - { user_id: req.user_id, channel_id, message_id } - ).exec(); + await ReadState.update({ user_id: req.user_id, channel_id, message_id }, { user_id: req.user_id, channel_id, message_id }); await emitEvent({ event: "MESSAGE_ACK", diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/index.ts b/api/src/routes/channels/#channel_id/messages/#message_id/index.ts index 35952d26..058e2390 100644 --- a/api/src/routes/channels/#channel_id/messages/#message_id/index.ts +++ b/api/src/routes/channels/#channel_id/messages/#message_id/index.ts @@ -1,4 +1,4 @@ -import { ChannelModel, emitEvent, getPermission, MessageDeleteEvent, MessageModel, MessageUpdateEvent, toObject } from "@fosscord/util"; +import { Channel, emitEvent, getPermission, MessageDeleteEvent, Message, MessageUpdateEvent, toObject } from "@fosscord/util"; import { Router, Response, Request } from "express"; import { HTTPError } from "lambert-server"; import { MessageCreateSchema } from "../../../../../schema/Message"; @@ -12,7 +12,7 @@ router.patch("/", check(MessageCreateSchema), async (req: Request, res: Response const { message_id, channel_id } = req.params; var body = req.body as MessageCreateSchema; - var message = await MessageModel.findOne({ id: message_id, channel_id }, { author_id: true, message_reference: true }).lean().exec(); + var message = await Message.findOneOrFail({ id: message_id, channel_id }, { author_id: true, message_reference: true }); const permissions = await getPermission(req.user_id, undefined, channel_id); @@ -31,17 +31,17 @@ router.patch("/", check(MessageCreateSchema), async (req: Request, res: Response }); // @ts-ignore - message = await MessageModel.findOneAndUpdate({ id: message_id }, opts, { new: true }).populate("author").exec(); + message = await Message.findOneOrFailAndUpdate({ id: message_id }, opts, { new: true }).populate("author"); await emitEvent({ event: "MESSAGE_UPDATE", channel_id, - data: { ...toObject(message), nonce: undefined } + data: { ...message, nonce: undefined } } as MessageUpdateEvent); postHandleMessage(message); - return res.json(toObject(message)); + return res.json(message); }); // TODO: delete attachments in message @@ -49,13 +49,13 @@ router.patch("/", check(MessageCreateSchema), async (req: Request, res: Response router.delete("/", async (req: Request, res: Response) => { const { message_id, channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }); - const message = await MessageModel.findOne({ id: message_id }, { author_id: true }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true }); + const message = await Message.findOneOrFail({ id: message_id }, { author_id: true }); const permission = await getPermission(req.user_id, channel.guild_id, channel_id); if (message.author_id !== req.user_id) permission.hasThrow("MANAGE_MESSAGES"); - await MessageModel.deleteOne({ id: message_id }).exec(); + await Message.deleteOne({ id: message_id }); await emitEvent({ event: "MESSAGE_DELETE", diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/reactions.ts b/api/src/routes/channels/#channel_id/messages/#message_id/reactions.ts index 7da63644..9a6e4436 100644 --- a/api/src/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/api/src/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -1,10 +1,10 @@ import { - ChannelModel, + Channel, emitEvent, EmojiModel, getPermission, - MemberModel, - MessageModel, + Member, + Message, MessageReactionAddEvent, MessageReactionRemoveAllEvent, MessageReactionRemoveEmojiEvent, @@ -12,7 +12,7 @@ import { PartialEmoji, PublicUserProjection, toObject, - UserModel + User } from "@fosscord/util"; import { Router, Response, Request } from "express"; import { HTTPError } from "lambert-server"; @@ -38,12 +38,12 @@ function getEmoji(emoji: string): PartialEmoji { router.delete("/", async (req: Request, res: Response) => { const { message_id, channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true }); const permissions = await getPermission(req.user_id, undefined, channel_id); permissions.hasThrow("MANAGE_MESSAGES"); - await MessageModel.findOneAndUpdate({ id: message_id, channel_id }, { reactions: [] }, { new: true }).exec(); + await Message.findOneOrFailAndUpdate({ id: message_id, channel_id }, { reactions: [] }, { new: true }); await emitEvent({ event: "MESSAGE_REACTION_REMOVE_ALL", @@ -62,18 +62,18 @@ router.delete("/:emoji", async (req: Request, res: Response) => { const { message_id, channel_id } = req.params; const emoji = getEmoji(req.params.emoji); - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true }); const permissions = await getPermission(req.user_id, undefined, channel_id); permissions.hasThrow("MANAGE_MESSAGES"); - const message = await MessageModel.findOne({ id: message_id, channel_id }).exec(); + const message = await Message.findOneOrFail({ id: message_id, channel_id }); const already_added = message.reactions.find((x) => (x.emoji.id === emoji.id && emoji.id) || x.emoji.name === emoji.name); if (!already_added) throw new HTTPError("Reaction not found", 404); message.reactions.remove(already_added); - await MessageModel.updateOne({ id: message_id, channel_id }, message).exec(); + await Message.update({ id: message_id, channel_id }, message); await emitEvent({ event: "MESSAGE_REACTION_REMOVE_EMOJI", @@ -93,7 +93,7 @@ router.get("/:emoji", async (req: Request, res: Response) => { const { message_id, channel_id } = req.params; const emoji = getEmoji(req.params.emoji); - const message = await MessageModel.findOne({ id: message_id, channel_id }).exec(); + const message = await Message.findOneOrFail({ id: message_id, channel_id }); if (!message) throw new HTTPError("Message not found", 404); const reaction = message.reactions.find((x) => (x.emoji.id === emoji.id && emoji.id) || x.emoji.name === emoji.name); if (!reaction) throw new HTTPError("Reaction not found", 404); @@ -101,9 +101,9 @@ router.get("/:emoji", async (req: Request, res: Response) => { const permissions = await getPermission(req.user_id, undefined, channel_id); permissions.hasThrow("VIEW_CHANNEL"); - const users = await UserModel.find({ id: { $in: reaction.user_ids } }, PublicUserProjection).exec(); + const users = await User.find({ id: { $in: reaction.user_ids } }, PublicUserProjection); - res.json(toObject(users)); + res.json(users); }); router.put("/:emoji/:user_id", async (req: Request, res: Response) => { @@ -111,8 +111,8 @@ router.put("/:emoji/:user_id", async (req: Request, res: Response) => { if (user_id !== "@me") throw new HTTPError("Invalid user"); const emoji = getEmoji(req.params.emoji); - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); - const message = await MessageModel.findOne({ id: message_id, channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true }); + const message = await Message.findOneOrFail({ id: message_id, channel_id }); const already_added = message.reactions.find((x) => (x.emoji.id === emoji.id && emoji.id) || x.emoji.name === emoji.name); const permissions = await getPermission(req.user_id, undefined, channel_id); @@ -120,7 +120,7 @@ router.put("/:emoji/:user_id", async (req: Request, res: Response) => { if (!already_added) permissions.hasThrow("ADD_REACTIONS"); if (emoji.id) { - const external_emoji = await EmojiModel.findOne({ id: emoji.id }).exec(); + const external_emoji = await Emoji.findOneOrFail({ id: emoji.id }); if (!already_added) permissions.hasThrow("USE_EXTERNAL_EMOJIS"); emoji.animated = external_emoji.animated; emoji.name = external_emoji.name; @@ -131,9 +131,9 @@ router.put("/:emoji/:user_id", async (req: Request, res: Response) => { already_added.count++; } else message.reactions.push({ count: 1, emoji, user_ids: [req.user_id] }); - await MessageModel.updateOne({ id: message_id, channel_id }, message).exec(); + await Message.update({ id: message_id, channel_id }, message); - const member = channel.guild_id && (await MemberModel.findOne({ id: req.user_id }).exec()); + const member = channel.guild_id && (await Member.findOneOrFail({ id: req.user_id })); await emitEvent({ event: "MESSAGE_REACTION_ADD", @@ -156,8 +156,8 @@ router.delete("/:emoji/:user_id", async (req: Request, res: Response) => { const emoji = getEmoji(req.params.emoji); - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true }).exec(); - const message = await MessageModel.findOne({ id: message_id, channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true }); + const message = await Message.findOneOrFail({ id: message_id, channel_id }); const permissions = await getPermission(req.user_id, undefined, channel_id); @@ -171,7 +171,7 @@ router.delete("/:emoji/:user_id", async (req: Request, res: Response) => { if (already_added.count <= 0) message.reactions.remove(already_added); - await MessageModel.updateOne({ id: message_id, channel_id }, message).exec(); + await Message.update({ id: message_id, channel_id }, message); await emitEvent({ event: "MESSAGE_REACTION_REMOVE", diff --git a/api/src/routes/channels/#channel_id/messages/bulk-delete.ts b/api/src/routes/channels/#channel_id/messages/bulk-delete.ts index 8132462f..028a5d73 100644 --- a/api/src/routes/channels/#channel_id/messages/bulk-delete.ts +++ b/api/src/routes/channels/#channel_id/messages/bulk-delete.ts @@ -1,5 +1,5 @@ import { Router, Response, Request } from "express"; -import { ChannelModel, Config, emitEvent, getPermission, MessageDeleteBulkEvent, MessageModel } from "@fosscord/util"; +import { Channel, Config, emitEvent, getPermission, MessageDeleteBulkEvent, Message } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { check } from "../../../../util/instanceOf"; @@ -13,7 +13,7 @@ export default router; // https://discord.com/developers/docs/resources/channel#bulk-delete-messages router.post("/", check({ messages: [String] }), async (req: Request, res: Response) => { const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }, { permission_overwrites: true, guild_id: true }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { permission_overwrites: true, guild_id: true }); if (!channel.guild_id) throw new HTTPError("Can't bulk delete dm channel messages", 400); const permission = await getPermission(req.user_id, channel?.guild_id, channel_id, { channel }); @@ -25,7 +25,7 @@ router.post("/", check({ messages: [String] }), async (req: Request, res: Respon if (messages.length < 2) throw new HTTPError("You must at least specify 2 messages to bulk delete"); if (messages.length > maxBulkDelete) throw new HTTPError(`You cannot delete more than ${maxBulkDelete} messages`); - await MessageModel.deleteMany({ id: { $in: messages } }).exec(); + await Message.deleteMany({ id: { $in: messages } }); await emitEvent({ event: "MESSAGE_DELETE_BULK", diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts index 6ae6491f..b5c650bb 100644 --- a/api/src/routes/channels/#channel_id/messages/index.ts +++ b/api/src/routes/channels/#channel_id/messages/index.ts @@ -1,5 +1,5 @@ import { Router, Response, Request } from "express"; -import { Attachment, ChannelModel, ChannelType, getPermission, MessageDocument, MessageModel, toObject } from "@fosscord/util"; +import { Attachment, Channel, ChannelType, getPermission, MessageDocument, Message, toObject } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { MessageCreateSchema } from "../../../../schema/Message"; import { check, instanceOf, Length } from "../../../../util/instanceOf"; @@ -30,12 +30,10 @@ export function isTextChannel(type: ChannelType): boolean { // get messages router.get("/", async (req: Request, res: Response) => { const channel_id = req.params.channel_id; - const channel = await ChannelModel.findOne( + const channel = await Channel.findOneOrFail( { id: channel_id }, - { guild_id: true, type: true, permission_overwrites: true, recipient_ids: true, owner_id: true } - ) - .lean() // lean is needed, because we don't want to populate .recipients that also auto deletes .recipient_ids - .exec(); + { select: ["guild_id", "type", "permission_overwrites", "recipient_ids", "owner_id"] } + ); // lean is needed, because we don't want to populate .recipients that also auto deletes .recipient_ids if (!channel) throw new HTTPError("Channel not found", 404); isTextChannel(channel.type); @@ -58,35 +56,33 @@ router.get("/", async (req: Request, res: Response) => { if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json([]); var query: Query; - if (after) query = MessageModel.find({ channel_id, id: { $gt: after } }); - else if (before) query = MessageModel.find({ channel_id, id: { $lt: before } }); + if (after) query = Message.find({ channel_id, id: { $gt: after } }); + else if (before) query = Message.find({ channel_id, id: { $lt: before } }); else if (around) - query = MessageModel.find({ + query = Message.find({ channel_id, id: { $gt: (BigInt(around) - BigInt(halfLimit)).toString(), $lt: (BigInt(around) + BigInt(halfLimit)).toString() } }); else { - query = MessageModel.find({ channel_id }); + query = Message.find({ channel_id }); } query = query.sort({ id: -1 }); - const messages = await query.limit(limit).exec(); + const messages = await query.limit(limit); - return res.json( - toObject(messages).map((x) => { - (x.reactions || []).forEach((x) => { - // @ts-ignore - if ((x.user_ids || []).includes(req.user_id)) x.me = true; - // @ts-ignore - delete x.user_ids; - }); + return res.json(messages).map((x) => { + (x.reactions || []).forEach((x) => { // @ts-ignore - if (!x.author) x.author = { discriminator: "0000", username: "Deleted User", public_flags: 0n, avatar: null }; + if ((x.user_ids || []).includes(req.user_id)) x.me = true; + // @ts-ignore + delete x.user_ids; + }); + // @ts-ignore + if (!x.author) x.author = { discriminator: "0000", username: "Deleted User", public_flags: 0n, avatar: null }; - return x; - }) - ); + return x; + }); }); // TODO: config max upload size diff --git a/api/src/routes/channels/#channel_id/permissions.ts b/api/src/routes/channels/#channel_id/permissions.ts index f93075b1..2990e35b 100644 --- a/api/src/routes/channels/#channel_id/permissions.ts +++ b/api/src/routes/channels/#channel_id/permissions.ts @@ -1,13 +1,4 @@ -import { - ChannelModel, - ChannelPermissionOverwrite, - ChannelUpdateEvent, - emitEvent, - getPermission, - MemberModel, - RoleModel, - toObject -} from "@fosscord/util"; +import { Channel, ChannelPermissionOverwrite, ChannelUpdateEvent, emitEvent, getPermission, Member, Role, toObject } from "@fosscord/util"; import { Router, Response, Request } from "express"; import { HTTPError } from "lambert-server"; @@ -20,16 +11,16 @@ router.put("/:overwrite_id", check({ allow: String, deny: String, type: Number, const { channel_id, overwrite_id } = req.params; const body = req.body as { allow: bigint; deny: bigint; type: number; id: string }; - var channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true, permission_overwrites: true }).exec(); + var channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true, permission_overwrites: true }); if (!channel.guild_id) throw new HTTPError("Channel not found", 404); const permissions = await getPermission(req.user_id, channel.guild_id, channel_id); permissions.hasThrow("MANAGE_ROLES"); if (body.type === 0) { - if (!(await RoleModel.exists({ id: overwrite_id }))) throw new HTTPError("role not found", 404); + if (!(await Role.exists({ id: overwrite_id }))) throw new HTTPError("role not found", 404); } else if (body.type === 1) { - if (!(await MemberModel.exists({ id: overwrite_id }))) throw new HTTPError("user not found", 404); + if (!(await Member.exists({ id: overwrite_id }))) throw new HTTPError("user not found", 404); } else throw new HTTPError("type not supported", 501); // @ts-ignore @@ -48,12 +39,12 @@ router.put("/:overwrite_id", check({ allow: String, deny: String, type: Number, overwrite.deny = body.deny; // @ts-ignore - channel = await ChannelModel.findOneAndUpdate({ id: channel_id }, channel, { new: true }).exec(); + channel = await Channel.findOneOrFailAndUpdate({ id: channel_id }, channel, { new: true }); await emitEvent({ event: "CHANNEL_UPDATE", channel_id, - data: toObject(channel) + data: channel } as ChannelUpdateEvent); return res.sendStatus(204); @@ -66,7 +57,7 @@ router.delete("/:overwrite_id", async (req: Request, res: Response) => { const permissions = await getPermission(req.user_id, undefined, channel_id); permissions.hasThrow("MANAGE_ROLES"); - const channel = await ChannelModel.findOneAndUpdate( + const channel = await Channel.findOneOrFailAndUpdate( { id: channel_id }, { $pull: { permission_overwrites: { id: overwrite_id } } }, { new: true } @@ -76,7 +67,7 @@ router.delete("/:overwrite_id", async (req: Request, res: Response) => { await emitEvent({ event: "CHANNEL_UPDATE", channel_id, - data: toObject(channel) + data: channel } as ChannelUpdateEvent); return res.sendStatus(204); diff --git a/api/src/routes/channels/#channel_id/pins.ts b/api/src/routes/channels/#channel_id/pins.ts index 0dd81bd3..3ed42ab4 100644 --- a/api/src/routes/channels/#channel_id/pins.ts +++ b/api/src/routes/channels/#channel_id/pins.ts @@ -1,13 +1,4 @@ -import { - ChannelModel, - ChannelPinsUpdateEvent, - Config, - emitEvent, - getPermission, - MessageModel, - MessageUpdateEvent, - toObject -} from "@fosscord/util"; +import { Channel, ChannelPinsUpdateEvent, Config, emitEvent, getPermission, Message, MessageUpdateEvent, toObject } from "@fosscord/util"; import { Router, Request, Response } from "express"; import { HTTPError } from "lambert-server"; @@ -15,19 +6,19 @@ const router: Router = Router(); router.put("/:message_id", async (req: Request, res: Response) => { const { channel_id, message_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); const permission = await getPermission(req.user_id, channel.guild_id, channel_id); permission.hasThrow("VIEW_CHANNEL"); // * in dm channels anyone can pin messages -> only check for guilds if (channel.guild_id) permission.hasThrow("MANAGE_MESSAGES"); - const pinned_count = await MessageModel.count({ channel_id, pinned: true }).exec(); + const pinned_count = await Messagecount({ channel_id, pinned: true }); const { maxPins } = Config.get().limits.channel; if (pinned_count >= maxPins) throw new HTTPError("Max pin count reached: " + maxPins); - await MessageModel.updateOne({ id: message_id }, { pinned: true }).exec(); - const message = toObject(await MessageModel.findOne({ id: message_id }).exec()); + await Message.update({ id: message_id }, { pinned: true }); + const message = await Message.findOneOrFail({ id: message_id }); await emitEvent({ event: "MESSAGE_UPDATE", @@ -51,13 +42,13 @@ router.put("/:message_id", async (req: Request, res: Response) => { router.delete("/:message_id", async (req: Request, res: Response) => { const { channel_id, message_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); const permission = await getPermission(req.user_id, channel.guild_id, channel_id); permission.hasThrow("VIEW_CHANNEL"); if (channel.guild_id) permission.hasThrow("MANAGE_MESSAGES"); - const message = toObject(await MessageModel.findOneAndUpdate({ id: message_id }, { pinned: false }, { new: true }).exec()); + const message = await Message.findOneOrFailAndUpdate({ id: message_id }, { pinned: false }, { new: true }); await emitEvent({ event: "MESSAGE_UPDATE", @@ -81,13 +72,13 @@ router.delete("/:message_id", async (req: Request, res: Response) => { router.get("/", async (req: Request, res: Response) => { const { channel_id } = req.params; - const channel = await ChannelModel.findOne({ id: channel_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); const permission = await getPermission(req.user_id, channel.guild_id, channel_id); permission.hasThrow("VIEW_CHANNEL"); - let pins = await MessageModel.find({ channel_id: channel_id, pinned: true }).exec(); + let pins = await Message.find({ channel_id: channel_id, pinned: true }); - res.send(toObject(pins)); + res.send(pins); }); export default router; diff --git a/api/src/routes/channels/#channel_id/typing.ts b/api/src/routes/channels/#channel_id/typing.ts index 21d453d8..298d2f50 100644 --- a/api/src/routes/channels/#channel_id/typing.ts +++ b/api/src/routes/channels/#channel_id/typing.ts @@ -1,4 +1,4 @@ -import { ChannelModel, emitEvent, MemberModel, toObject, TypingStartEvent } from "@fosscord/util"; +import { Channel, emitEvent, Member, toObject, TypingStartEvent } from "@fosscord/util"; import { Router, Request, Response } from "express"; import { HTTPError } from "lambert-server"; @@ -9,15 +9,15 @@ router.post("/", async (req: Request, res: Response) => { const { channel_id } = req.params; const user_id = req.user_id; const timestamp = Date.now(); - const channel = await ChannelModel.findOne({ id: channel_id }); - const member = await MemberModel.findOne({ id: user_id }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }); + const member = await Member.findOneOrFail({ id: user_id }); await emitEvent({ event: "TYPING_START", channel_id: channel_id, data: { // this is the paylod - member: toObject(member), + member: member, channel_id, timestamp, user_id, diff --git a/api/src/routes/channels/#channel_id/webhooks.ts b/api/src/routes/channels/#channel_id/webhooks.ts index 7852f8f3..38a8226b 100644 --- a/api/src/routes/channels/#channel_id/webhooks.ts +++ b/api/src/routes/channels/#channel_id/webhooks.ts @@ -1,6 +1,6 @@ import { Router, Response, Request } from "express"; import { check, Length } from "../../../util/instanceOf"; -import { ChannelModel, getPermission, trimSpecial } from "@fosscord/util"; +import { Channel, getPermission, trimSpecial } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { isTextChannel } from "./messages/index"; @@ -10,7 +10,7 @@ const router: Router = Router(); // TODO: use Image Data Type for avatar instead of String router.post("/", check({ name: new Length(String, 1, 80), $avatar: String }), async (req: Request, res: Response) => { const channel_id = req.params.channel_id; - const channel = await ChannelModel.findOne({ id: channel_id }, { guild_id: true, type: true }).exec(); + const channel = await Channel.findOneOrFail({ id: channel_id }, { guild_id: true, type: true }); isTextChannel(channel.type); if (!channel.guild_id) throw new HTTPError("Not a guild channel", 400); diff --git a/api/src/routes/guilds/#guild_id/bans.ts b/api/src/routes/guilds/#guild_id/bans.ts index bb3eac03..cbc0b0fa 100644 --- a/api/src/routes/guilds/#guild_id/bans.ts +++ b/api/src/routes/guilds/#guild_id/bans.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { BanModel, emitEvent, getPermission, GuildBanAddEvent, GuildBanRemoveEvent, GuildModel, toObject } from "@fosscord/util"; +import { BanModel, emitEvent, getPermission, GuildBanAddEvent, GuildBanRemoveEvent, Guild, toObject } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { getIpAdress } from "../../../util/ipAddress"; import { BanCreateSchema } from "../../../schema/Ban"; @@ -13,18 +13,18 @@ const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.exists({ id: guild_id }); + const guild = await Guild.exists({ id: guild_id }); if (!guild) throw new HTTPError("Guild not found", 404); - var bans = await BanModel.find({ guild_id: guild_id }, { user_id: true, reason: true }).exec(); - return res.json(toObject(bans)); + var bans = await Ban.find({ guild_id: guild_id }, { user_id: true, reason: true }); + return res.json(bans); }); router.get("/:user", async (req: Request, res: Response) => { const { guild_id } = req.params; const user_id = req.params.ban; - var ban = await BanModel.findOne({ guild_id: guild_id, user_id: user_id }).exec(); + var ban = await Ban.findOneOrFail({ guild_id: guild_id, user_id: user_id }); return res.json(ban); }); @@ -56,7 +56,7 @@ router.put("/:user_id", check(BanCreateSchema), async (req: Request, res: Respon guild_id: guild_id } as GuildBanAddEvent); - return res.json(toObject(ban)); + return res.json(ban); }); router.delete("/:user_id", async (req: Request, res: Response) => { @@ -64,16 +64,16 @@ router.delete("/:user_id", async (req: Request, res: Response) => { var banned_user_id = req.params.user_id; const banned_user = await getPublicUser(banned_user_id); - const guild = await GuildModel.exists({ id: guild_id }); + const guild = await Guild.exists({ id: guild_id }); if (!guild) throw new HTTPError("Guild not found", 404); const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("BAN_MEMBERS"); - await BanModel.deleteOne({ + await Ban.deleteOne({ user_id: banned_user_id, guild_id - }).exec(); + }); await emitEvent({ event: "GUILD_BAN_REMOVE", diff --git a/api/src/routes/guilds/#guild_id/channels.ts b/api/src/routes/guilds/#guild_id/channels.ts index 1c55ef24..b53c9a5a 100644 --- a/api/src/routes/guilds/#guild_id/channels.ts +++ b/api/src/routes/guilds/#guild_id/channels.ts @@ -1,5 +1,5 @@ import { Router, Response, Request } from "express"; -import { ChannelModel, toObject, ChannelUpdateEvent, getPermission, emitEvent } from "@fosscord/util"; +import { Channel, toObject, ChannelUpdateEvent, getPermission, emitEvent } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { ChannelModifySchema } from "../../../schema/Channel"; @@ -9,9 +9,9 @@ const router = Router(); router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const channels = await ChannelModel.find({ guild_id }).exec(); + const channels = await Channel.find({ guild_id }); - res.json(toObject(channels)); + res.json(channels); }); // TODO: check if channel type is permitted @@ -24,7 +24,7 @@ router.post("/", check(ChannelModifySchema), async (req: Request, res: Response) const channel = await createChannel({ ...body, guild_id }, req.user_id); - res.status(201).json(toObject(channel)); + res.status(201).json(channel); }); // TODO: check if parent_id exists @@ -48,18 +48,15 @@ router.patch( if (x.parent_id) { opts.parent_id = x.parent_id; - const parent_channel = await ChannelModel.findOne( - { id: x.parent_id, guild_id }, - { permission_overwrites: true } - ).exec(); + const parent_channel = await Channel.findOneOrFail({ id: x.parent_id, guild_id }, { permission_overwrites: true }); if (x.lock_permissions) { opts.permission_overwrites = parent_channel.permission_overwrites; } } - const channel = await ChannelModel.findOneAndUpdate({ id: x.id, guild_id }, opts, { new: true }).exec(); + const channel = await Channel.findOneOrFailAndUpdate({ id: x.id, guild_id }, opts, { new: true }); - await emitEvent({ event: "CHANNEL_UPDATE", data: toObject(channel), channel_id: x.id, guild_id } as ChannelUpdateEvent); + await emitEvent({ event: "CHANNEL_UPDATE", data: channel), channel_id: x.id, guild_id } as ChannelUpdateEvent; }) ]); diff --git a/api/src/routes/guilds/#guild_id/delete.ts b/api/src/routes/guilds/#guild_id/delete.ts index ba1c2fde..a53271ce 100644 --- a/api/src/routes/guilds/#guild_id/delete.ts +++ b/api/src/routes/guilds/#guild_id/delete.ts @@ -1,15 +1,4 @@ -import { - ChannelModel, - emitEvent, - EmojiModel, - GuildDeleteEvent, - GuildModel, - InviteModel, - MemberModel, - MessageModel, - RoleModel, - UserModel -} from "@fosscord/util"; +import { Channel, emitEvent, EmojiModel, GuildDeleteEvent, Guild, InviteModel, Member, Message, Role, User } from "@fosscord/util"; import { Router, Request, Response } from "express"; import { HTTPError } from "lambert-server"; @@ -20,7 +9,7 @@ const router = Router(); router.post("/", async (req: Request, res: Response) => { var { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }, "owner_id").exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, "owner_id"); if (guild.owner_id !== req.user_id) throw new HTTPError("You are not the owner of this guild", 401); await emitEvent({ @@ -32,14 +21,14 @@ router.post("/", async (req: Request, res: Response) => { } as GuildDeleteEvent); await Promise.all([ - GuildModel.deleteOne({ id: guild_id }).exec(), - UserModel.updateMany({ guilds: guild_id }, { $pull: { guilds: guild_id } }).exec(), - RoleModel.deleteMany({ guild_id }).exec(), - ChannelModel.deleteMany({ guild_id }).exec(), - EmojiModel.deleteMany({ guild_id }).exec(), - InviteModel.deleteMany({ guild_id }).exec(), - MessageModel.deleteMany({ guild_id }).exec(), - MemberModel.deleteMany({ guild_id }).exec() + Guild.deleteOne({ id: guild_id }), + User.updateMany({ guilds: guild_id }, { $pull: { guilds: guild_id } }), + Role.deleteMany({ guild_id }), + Channel.deleteMany({ guild_id }), + Emoji.deleteMany({ guild_id }), + Invite.deleteMany({ guild_id }), + Message.deleteMany({ guild_id }), + Member.deleteMany({ guild_id }) ]); return res.sendStatus(204); diff --git a/api/src/routes/guilds/#guild_id/index.ts b/api/src/routes/guilds/#guild_id/index.ts index 87103caa..af9ea9d6 100644 --- a/api/src/routes/guilds/#guild_id/index.ts +++ b/api/src/routes/guilds/#guild_id/index.ts @@ -1,18 +1,18 @@ import { Request, Response, Router } from "express"; import { - ChannelModel, + Channel, emitEvent, EmojiModel, getPermission, GuildDeleteEvent, - GuildModel, + Guild, GuildUpdateEvent, InviteModel, - MemberModel, - MessageModel, - RoleModel, + Member, + Message, + Role, toObject, - UserModel + User } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { GuildUpdateSchema } from "../../../schema/Guild"; @@ -26,11 +26,8 @@ const router = Router(); router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }) - .populate({ path: "joined_at", match: { id: req.user_id } }) - .exec(); - - const member = await MemberModel.exists({ guild_id: guild_id, id: req.user_id }); + const guild = await Guild.findOneOrFail({ id: guild_id }).populate({ path: "joined_at", match: { id: req.user_id } }); + const member = await Member.exists({ guild_id: guild_id, id: req.user_id }); if (!member) throw new HTTPError("You are not a member of the guild you are trying to access", 401); return res.json(guild); @@ -48,11 +45,11 @@ router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response) if (body.banner) body.banner = await handleFile(`/banners/${guild_id}`, body.banner); if (body.splash) body.splash = await handleFile(`/splashes/${guild_id}`, body.splash); - const guild = await GuildModel.findOneAndUpdate({ id: guild_id }, body, { new: true }) - .populate({ path: "joined_at", match: { id: req.user_id } }) - .exec(); - - const data = toObject(guild); + const guild = await Guild.findOneOrFailAndUpdate({ id: guild_id }, body, { new: true }).populate({ + path: "joined_at", + match: { id: req.user_id } + }); + const data = guild; emitEvent({ event: "GUILD_UPDATE", data: data, guild_id } as GuildUpdateEvent); diff --git a/api/src/routes/guilds/#guild_id/invites.ts b/api/src/routes/guilds/#guild_id/invites.ts index 08048d61..ca72cce8 100644 --- a/api/src/routes/guilds/#guild_id/invites.ts +++ b/api/src/routes/guilds/#guild_id/invites.ts @@ -9,9 +9,9 @@ router.get("/", async (req: Request, res: Response) => { const permissions = await getPermission(req.user_id, guild_id); permissions.hasThrow("MANAGE_GUILD"); - const invites = await InviteModel.find({ guild_id }).exec(); + const invites = await Invite.find({ guild_id }); - return res.json(toObject(invites)); + return res.json(invites); }); export default router; diff --git a/api/src/routes/guilds/#guild_id/members/#member_id/index.ts b/api/src/routes/guilds/#guild_id/members/#member_id/index.ts index 515434d6..1dacbdad 100644 --- a/api/src/routes/guilds/#guild_id/members/#member_id/index.ts +++ b/api/src/routes/guilds/#guild_id/members/#member_id/index.ts @@ -1,13 +1,13 @@ import { Request, Response, Router } from "express"; import { - GuildModel, - MemberModel, - UserModel, + Guild, + Member, + User, toObject, GuildMemberAddEvent, getPermission, PermissionResolvable, - RoleModel, + Role, GuildMemberUpdateEvent, emitEvent } from "@fosscord/util"; @@ -22,29 +22,29 @@ router.get("/", async (req: Request, res: Response) => { const { guild_id, member_id } = req.params; await isMember(req.user_id, guild_id); - const member = await MemberModel.findOne({ id: member_id, guild_id }).exec(); + const member = await Member.findOneOrFail({ id: member_id, guild_id }); - return res.json(toObject(member)); + return res.json(member); }); router.patch("/", check(MemberChangeSchema), async (req: Request, res: Response) => { const { guild_id, member_id } = req.params; const body = req.body as MemberChangeSchema; if (body.roles) { - const roles = await RoleModel.find({ id: { $in: body.roles } }).exec(); + const roles = await Role.find({ id: { $in: body.roles } }); if (body.roles.length !== roles.length) throw new HTTPError("Roles not found", 404); // TODO: check if user has permission to add role } - const member = await MemberModel.findOneAndUpdate({ id: member_id, guild_id }, body, { new: true }).exec(); + const member = await Member.findOneOrFailAndUpdate({ id: member_id, guild_id }, body, { new: true }); await emitEvent({ event: "GUILD_MEMBER_UPDATE", guild_id, - data: toObject(member) + data: member } as GuildMemberUpdateEvent); - res.json(toObject(member)); + res.json(member); }); router.put("/", async (req: Request, res: Response) => { diff --git a/api/src/routes/guilds/#guild_id/members/index.ts b/api/src/routes/guilds/#guild_id/members/index.ts index 70303436..656d3acd 100644 --- a/api/src/routes/guilds/#guild_id/members/index.ts +++ b/api/src/routes/guilds/#guild_id/members/index.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { GuildModel, MemberModel, toObject } from "@fosscord/util"; +import { Guild, Member, toObject } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { instanceOf, Length } from "../../../../util/instanceOf"; import { PublicMemberProjection, isMember } from "../../../../util/Member"; @@ -10,7 +10,7 @@ const router = Router(); // TODO: send over websocket router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); await isMember(req.user_id, guild_id); try { @@ -28,11 +28,8 @@ router.get("/", async (req: Request, res: Response) => { const { limit, after } = (req.query) as { limit: number; after: string }; const query = after ? { id: { $gt: after } } : {}; - var members = await MemberModel.find({ guild_id, ...query }, PublicMemberProjection) - .limit(limit) - .exec(); - - return res.json(toObject(members)); + var members = await Member.find({ guild_id, ...query }, PublicMemberProjection).limit(limit); + return res.json(members); }); export default router; diff --git a/api/src/routes/guilds/#guild_id/roles.ts b/api/src/routes/guilds/#guild_id/roles.ts index f095c885..5ebc0580 100644 --- a/api/src/routes/guilds/#guild_id/roles.ts +++ b/api/src/routes/guilds/#guild_id/roles.ts @@ -1,12 +1,12 @@ import { Request, Response, Router } from "express"; import { - RoleModel, - GuildModel, + Role, + Guild, getPermission, toObject, - UserModel, + User, Snowflake, - MemberModel, + Member, GuildRoleCreateEvent, GuildRoleUpdateEvent, GuildRoleDeleteEvent, @@ -26,23 +26,23 @@ router.get("/", async (req: Request, res: Response) => { await isMember(req.user_id, guild_id); - const roles = await RoleModel.find({ guild_id: guild_id }).exec(); + const roles = await Role.find({ guild_id: guild_id }); - return res.json(toObject(roles)); + return res.json(roles); }); router.post("/", check(RoleModifySchema), async (req: Request, res: Response) => { const guild_id = req.params.guild_id; const body = req.body as RoleModifySchema; - const guild = await GuildModel.findOne({ id: guild_id }, { id: true }).exec(); - const user = await UserModel.findOne({ id: req.user_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, { id: true }); + const user = await User.findOneOrFail({ id: req.user_id }); const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_ROLES"); if (!body.name) throw new HTTPError("You need to specify a name"); - const role = await new RoleModel({ + const role = await new Role({ ...body, id: Snowflake.generate(), guild_id: guild_id, @@ -57,11 +57,11 @@ router.post("/", check(RoleModifySchema), async (req: Request, res: Response) => guild_id, data: { guild_id, - role: toObject(role) + role: role } } as GuildRoleCreateEvent); - res.json(toObject(role)); + res.json(role); }); router.delete("/:role_id", async (req: Request, res: Response) => { @@ -72,10 +72,10 @@ router.delete("/:role_id", async (req: Request, res: Response) => { const permissions = await getPermission(req.user_id, guild_id); permissions.hasThrow("MANAGE_ROLES"); - await RoleModel.deleteOne({ + await Role.deleteOne({ id: role_id, guild_id: guild_id - }).exec(); + }); await emitEvent({ event: "GUILD_ROLE_DELETE", @@ -96,13 +96,13 @@ router.patch("/:role_id", check(RoleModifySchema), async (req: Request, res: Res const { role_id } = req.params; const body = req.body as RoleModifySchema; - const guild = await GuildModel.findOne({ id: guild_id }, { id: true }).exec(); - const user = await UserModel.findOne({ id: req.user_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, { id: true }); + const user = await User.findOneOrFail({ id: req.user_id }); const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_ROLES"); - const role = await RoleModel.findOneAndUpdate( + const role = await Role.findOneOrFailAndUpdate( { id: role_id, guild_id: guild_id @@ -110,7 +110,7 @@ router.patch("/:role_id", check(RoleModifySchema), async (req: Request, res: Res // @ts-ignore body, { new: true } - ).exec(); + ); await emitEvent({ event: "GUILD_ROLE_UPDATE", @@ -121,7 +121,7 @@ router.patch("/:role_id", check(RoleModifySchema), async (req: Request, res: Res } } as GuildRoleUpdateEvent); - res.json(toObject(role)); + res.json(role); }); export default router; diff --git a/api/src/routes/guilds/#guild_id/templates.ts b/api/src/routes/guilds/#guild_id/templates.ts index e441ee12..13917dbd 100644 --- a/api/src/routes/guilds/#guild_id/templates.ts +++ b/api/src/routes/guilds/#guild_id/templates.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { TemplateModel, GuildModel, getPermission, toObject, UserModel, Snowflake } from "@fosscord/util"; +import { TemplateModel, Guild, getPermission, toObject, User, Snowflake } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { TemplateCreateSchema, TemplateModifySchema } from "../../../schema/Template"; import { check } from "../../../util/instanceOf"; @@ -27,20 +27,18 @@ const TemplateGuildProjection = { router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - var templates = await TemplateModel.find({ source_guild_id: guild_id }).exec(); + var templates = await Template.find({ source_guild_id: guild_id }); - return res.json(toObject(templates)); + return res.json(templates); }); router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }, TemplateGuildProjection).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, TemplateGuildProjection); const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - const exists = await TemplateModel.findOne({ id: guild_id }) - .exec() - .catch((e) => {}); + const exists = await Template.findOneOrFail({ id: guild_id }).catch((e) => {}); if (exists) throw new HTTPError("Template already exists", 400); const template = await new TemplateModel({ @@ -53,7 +51,7 @@ router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response serialized_source_guild: guild }).save(); - res.json(toObject(template)).send(); + res.json(template)).send(; }); router.delete("/:code", async (req: Request, res: Response) => { @@ -63,25 +61,25 @@ router.delete("/:code", async (req: Request, res: Response) => { const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - const template = await TemplateModel.findOneAndDelete({ + const template = await Template.findOneOrFailAndDelete({ code - }).exec(); + }); - res.send(toObject(template)); + res.send(template); }); router.put("/:code", async (req: Request, res: Response) => { const guild_id = req.params.guild_id; const { code } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }, TemplateGuildProjection).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, TemplateGuildProjection); const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - const template = await TemplateModel.findOneAndUpdate({ code }, { serialized_source_guild: guild }, { new: true }).exec(); + const template = await Template.findOneOrFailAndUpdate({ code }, { serialized_source_guild: guild }, { new: true }); - res.json(toObject(template)).send(); + res.json(template)).send(; }); router.patch("/:code", check(TemplateModifySchema), async (req: Request, res: Response) => { @@ -91,13 +89,9 @@ router.patch("/:code", check(TemplateModifySchema), async (req: Request, res: Re const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - const template = await TemplateModel.findOneAndUpdate( - { code }, - { name: req.body.name, description: req.body.description }, - { new: true } - ).exec(); + const template = await Template.findOneOrFailAndUpdate({ code }, { name: req.body.name, description: req.body.description }, { new: true }); - res.json(toObject(template)).send(); + res.json(template)).send(; }); export default router; diff --git a/api/src/routes/guilds/#guild_id/vanity-url.ts b/api/src/routes/guilds/#guild_id/vanity-url.ts index 1e659d8d..335cea27 100644 --- a/api/src/routes/guilds/#guild_id/vanity-url.ts +++ b/api/src/routes/guilds/#guild_id/vanity-url.ts @@ -1,4 +1,4 @@ -import { ChannelModel, ChannelType, getPermission, GuildModel, InviteModel, trimSpecial } from "@fosscord/util"; +import { Channel, ChannelType, getPermission, Guild, InviteModel, trimSpecial } from "@fosscord/util"; import { Router, Request, Response } from "express"; import { HTTPError } from "lambert-server"; import { check, Length } from "../../../util/instanceOf"; @@ -14,9 +14,9 @@ router.get("/", async (req: Request, res: Response) => { const permission = await getPermission(req.user_id, guild_id); permission.hasThrow("MANAGE_GUILD"); - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); if (!guild.vanity_url_code) return res.json({ code: null }); - const { uses } = await InviteModel.findOne({ code: guild.vanity_url_code }).exec(); + const { uses } = await Invite.findOneOrFail({ code: guild.vanity_url_code }); return res.json({ code: guild.vanity_url_code, uses }); }); @@ -27,23 +27,19 @@ router.patch("/", check({ code: new Length(String, 0, 20) }), async (req: Reques var code = req.body.code.replace(InviteRegex); if (!code) code = null; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); const permission = await getPermission(req.user_id, guild_id, undefined, { guild }); permission.hasThrow("MANAGE_GUILD"); const alreadyExists = await Promise.all([ - GuildModel.findOne({ vanity_url_code: code }) - .exec() - .catch(() => null), - InviteModel.findOne({ code: code }) - .exec() - .catch(() => null) + Guild.findOneOrFail({ vanity_url_code: code }).catch(() => null), + Invite.findOneOrFail({ code: code }).catch(() => null) ]); if (alreadyExists.some((x) => x)) throw new HTTPError("Vanity url already exists", 400); - await GuildModel.updateOne({ id: guild_id }, { vanity_url_code: code }).exec(); - const { id } = await ChannelModel.findOne({ guild_id, type: ChannelType.GUILD_TEXT }).exec(); - await InviteModel.updateOne( + await Guild.update({ id: guild_id }, { vanity_url_code: code }); + const { id } = await Channel.findOneOrFail({ guild_id, type: ChannelType.GUILD_TEXT }); + await Invite.update( { code: guild.vanity_url_code }, { code: code, @@ -53,7 +49,7 @@ router.patch("/", check({ code: new Length(String, 0, 20) }), async (req: Reques channel_id: id }, { upsert: true } - ).exec(); + ); return res.json({ code: code }); }); diff --git a/api/src/routes/guilds/#guild_id/welcome_screen.ts b/api/src/routes/guilds/#guild_id/welcome_screen.ts index c717042e..b457efb6 100644 --- a/api/src/routes/guilds/#guild_id/welcome_screen.ts +++ b/api/src/routes/guilds/#guild_id/welcome_screen.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { GuildModel, getPermission, toObject, Snowflake } from "@fosscord/util"; +import { Guild, getPermission, toObject, Snowflake } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { check } from "../../../util/instanceOf"; @@ -12,18 +12,18 @@ const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { const guild_id = req.params.guild_id; - const guild = await GuildModel.findOne({ id: guild_id }); + const guild = await Guild.findOneOrFail({ id: guild_id }); await isMember(req.user_id, guild_id); - res.json(toObject(guild.welcome_screen)); + res.json(guild.welcome_screen); }); router.post("/", check(GuildAddChannelToWelcomeScreenSchema), async (req: Request, res: Response) => { const guild_id = req.params.guild_id; const body = req.body as GuildAddChannelToWelcomeScreenSchema; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); var channelObject = { ...body @@ -36,12 +36,12 @@ router.post("/", check(GuildAddChannelToWelcomeScreenSchema), async (req: Reques if (guild.welcome_screen.welcome_channels.some((channel) => channel.channel_id === body.channel_id)) throw new Error("Welcome Channel exists"); - await GuildModel.findOneAndUpdate( + await Guild.findOneOrFailAndUpdate( { id: guild_id }, { $push: { "welcome_screen.welcome_channels": channelObject } } - ).exec(); + ); res.sendStatus(204); }); diff --git a/api/src/routes/guilds/#guild_id/widget.json.ts b/api/src/routes/guilds/#guild_id/widget.json.ts index 8719bd85..10bc3ac0 100644 --- a/api/src/routes/guilds/#guild_id/widget.json.ts +++ b/api/src/routes/guilds/#guild_id/widget.json.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { Config, Permissions, GuildModel, InviteModel, ChannelModel, MemberModel } from "@fosscord/util"; +import { Config, Permissions, Guild, InviteModel, Channel, Member } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { random } from "../../../util/RandomInviteID"; @@ -17,11 +17,11 @@ const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); if (!guild.widget_enabled) throw new HTTPError("Widget Disabled", 404); // Fetch existing widget invite for widget channel - var invite = await InviteModel.findOne({ channel_id: guild.widget_channel_id, inviter_id: { $type: 10 } }).exec(); + var invite = await Invite.findOneOrFail({ channel_id: guild.widget_channel_id, inviter_id: { $type: 10 } }); if (guild.widget_channel_id && !invite) { // Create invite for channel if none exists // TODO: Refactor invite create code to a shared function @@ -45,8 +45,7 @@ router.get("/", async (req: Request, res: Response) => { // Fetch voice channels, and the @everyone permissions object let channels: any[] = []; - await ChannelModel.find({ guild_id: guild_id, type: 2 }, { permission_overwrites: { $elemMatch: { id: guild_id } } }) - .lean() + await Channel.find({ guild_id: guild_id, type: 2 }, { permission_overwrites: { $elemMatch: { id: guild_id } } }) .select("id name position permission_overwrites") .sort({ position: 1 }) .cursor() @@ -67,8 +66,7 @@ router.get("/", async (req: Request, res: Response) => { // Fetch members // TODO: Understand how Discord's max 100 random member sample works, and apply to here (see top of this file) let members: any[] = []; - await MemberModel.find({ guild_id: guild_id }) - .lean() + await Member.find({ guild_id: guild_id }) .populate({ path: "user", select: { _id: 0, username: 1, avatar: 1, presence: 1 } }) .select("id user nick deaf mute") .cursor() diff --git a/api/src/routes/guilds/#guild_id/widget.png.ts b/api/src/routes/guilds/#guild_id/widget.png.ts index 80dc9f2b..89b31153 100644 --- a/api/src/routes/guilds/#guild_id/widget.png.ts +++ b/api/src/routes/guilds/#guild_id/widget.png.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { GuildModel } from "@fosscord/util"; +import { Guild } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import fs from "fs"; import path from "path"; @@ -13,7 +13,7 @@ const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { const { guild_id } = req.params; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); if (!guild.widget_enabled) throw new HTTPError("Unknown Guild", 404); // Fetch guild information diff --git a/api/src/routes/guilds/#guild_id/widget.ts b/api/src/routes/guilds/#guild_id/widget.ts index 85eed5e9..fcf71402 100644 --- a/api/src/routes/guilds/#guild_id/widget.ts +++ b/api/src/routes/guilds/#guild_id/widget.ts @@ -1,5 +1,5 @@ import { Request, Response, Router } from "express"; -import { getPermission, GuildModel } from "@fosscord/util"; +import { getPermission, Guild } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { check } from "../../../util/instanceOf"; import { WidgetModifySchema } from "../../../schema/Widget"; @@ -13,7 +13,7 @@ router.get("/", async (req: Request, res: Response) => { const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); return res.json({ enabled: guild.widget_enabled || false, channel_id: guild.widget_channel_id || null }); }); @@ -26,7 +26,7 @@ router.patch("/", check(WidgetModifySchema), async (req: Request, res: Response) const perms = await getPermission(req.user_id, guild_id); perms.hasThrow("MANAGE_GUILD"); - await GuildModel.updateOne({ id: guild_id }, { widget_enabled: body.enabled, widget_channel_id: body.channel_id }).exec(); + await Guild.update({ id: guild_id }, { widget_enabled: body.enabled, widget_channel_id: body.channel_id }); // Widget invite for the widget_channel_id gets created as part of the /guilds/{guild.id}/widget.json request return res.json(body); diff --git a/api/src/routes/guilds/index.ts b/api/src/routes/guilds/index.ts index 92feed4e..05be07d9 100644 --- a/api/src/routes/guilds/index.ts +++ b/api/src/routes/guilds/index.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { RoleModel, GuildModel, Snowflake, Guild, RoleDocument, Config } from "@fosscord/util"; +import { Role, Guild, Snowflake, Guild, RoleDocument, Config } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { check } from "./../../util/instanceOf"; import { GuildCreateSchema } from "../../schema/Guild"; @@ -65,8 +65,8 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) = }; const [guild_doc, role] = await Promise.all([ - new GuildModel(guild).save(), - new RoleModel({ + new Guild(guild).save(), + new Role({ id: guild_id, guild_id: guild_id, color: 0, diff --git a/api/src/routes/guilds/templates/index.ts b/api/src/routes/guilds/templates/index.ts index 7fed3c5d..ad8b676b 100644 --- a/api/src/routes/guilds/templates/index.ts +++ b/api/src/routes/guilds/templates/index.ts @@ -1,6 +1,6 @@ import { Request, Response, Router } from "express"; const router: Router = Router(); -import { TemplateModel, GuildModel, toObject, UserModel, RoleModel, Snowflake, Guild, Config } from "@fosscord/util"; +import { TemplateModel, Guild, toObject, User, Role, Snowflake, Guild, Config } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { GuildTemplateCreateSchema } from "../../../schema/Guild"; import { getPublicUser } from "../../../util/User"; @@ -10,9 +10,9 @@ import { addMember } from "../../../util/Member"; router.get("/:code", async (req: Request, res: Response) => { const { code } = req.params; - const template = await TemplateModel.findOne({ code: code }).exec(); + const template = await Template.findOneOrFail({ code: code }); - res.json(toObject(template)).send(); + res.json(template)).send(; }); router.post("/:code", check(GuildTemplateCreateSchema), async (req: Request, res: Response) => { @@ -26,7 +26,7 @@ router.post("/:code", check(GuildTemplateCreateSchema), async (req: Request, res throw new HTTPError(`Maximum number of guilds reached ${maxGuilds}`, 403); } - const template = await TemplateModel.findOne({ code: code }).exec(); + const template = await Template.findOneOrFail({ code: code }); const guild_id = Snowflake.generate(); @@ -38,8 +38,8 @@ router.post("/:code", check(GuildTemplateCreateSchema), async (req: Request, res }; const [guild_doc, role] = await Promise.all([ - new GuildModel(guild).save(), - new RoleModel({ + new Guild(guild).save(), + new Role({ id: guild_id, guild_id: guild_id, color: 0, diff --git a/api/src/routes/invites/index.ts b/api/src/routes/invites/index.ts index e7543dbb..e871af86 100644 --- a/api/src/routes/invites/index.ts +++ b/api/src/routes/invites/index.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { getPermission, GuildModel, InviteModel, toObject } from "@fosscord/util"; +import { getPermission, Guild, InviteModel, toObject } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { addMember } from "../../util/Member"; const router: Router = Router(); @@ -7,42 +7,40 @@ const router: Router = Router(); router.get("/:code", async (req: Request, res: Response) => { const { code } = req.params; - const invite = await InviteModel.findOne({ code }).exec(); + const invite = await Invite.findOneOrFail({ code }); if (!invite) throw new HTTPError("Unknown Invite", 404); - res.status(200).send(toObject(invite)); + res.status(200).send(invite); }); router.post("/:code", async (req: Request, res: Response) => { const { code } = req.params; - const invite = await InviteModel.findOneAndUpdate({ code }, { $inc: { uses: 1 } }, { new: true }).exec(); + const invite = await Invite.findOneOrFailAndUpdate({ code }, { $inc: { uses: 1 } }, { new: true }); if (!invite) throw new HTTPError("Unknown Invite", 404); - if (invite.uses >= invite.max_uses) await InviteModel.deleteOne({ code }); + if (invite.uses >= invite.max_uses) await Invite.deleteOne({ code }); await addMember(req.user_id, invite.guild_id); - res.status(200).send(toObject(invite)); + res.status(200).send(invite); }); router.delete("/:code", async (req: Request, res: Response) => { const { code } = req.params; - const invite = await InviteModel.findOne({ code }).exec(); + const invite = await Invite.findOneOrFail({ code }); const { guild_id, channel_id } = invite; - const guild = await GuildModel.findOne({ id: guild_id }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }); const permission = await getPermission(req.user_id, guild_id, channel_id, { guild }); if (!permission.has("MANAGE_GUILD") && !permission.has("MANAGE_CHANNELS")) throw new HTTPError("You missing the MANAGE_GUILD or MANAGE_CHANNELS permission", 401); - await InviteModel.deleteOne({ code }).exec(); + await Invite.deleteOne({ code }); - await GuildModel.updateOne({ vanity_url_code: code }, { $unset: { vanity_url_code: 1 } }) - .exec() - .catch((e) => {}); + await Guild.update({ vanity_url_code: code }, { $unset: { vanity_url_code: 1 } }).catch((e) => {}); - res.status(200).send({ invite: toObject(invite) }); + res.status(200).send({ invite: invite) }; }); export default router; diff --git a/api/src/routes/users/#id/profile.ts b/api/src/routes/users/#id/profile.ts index 4b4b9439..46c96698 100644 --- a/api/src/routes/users/#id/profile.ts +++ b/api/src/routes/users/#id/profile.ts @@ -4,24 +4,24 @@ import { getPublicUser } from "../../../util/User"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - const user = await getPublicUser(req.params.id, { user_data: true }) + const user = await getPublicUser(req.params.id, { data: true }); - res.json({ - connected_accounts: user.user_data.connected_accounts, - premium_guild_since: null, // TODO - premium_since: null, // TODO - user: { - username: user.username, - discriminator: user.discriminator, - id: user.id, - public_flags: user.public_flags, - avatar: user.avatar, - accent_color: user.accent_color, - banner: user.banner, - bio: req.user_bot ? null : user.bio, - bot: user.bot, - } - }); + res.json({ + connected_accounts: user.data.connected_accounts, + premium_guild_since: null, // TODO + premium_since: null, // TODO + user: { + username: user.username, + discriminator: user.discriminator, + id: user.id, + public_flags: user.public_flags, + avatar: user.avatar, + accent_color: user.accent_color, + banner: user.banner, + bio: req.user_bot ? null : user.bio, + bot: user.bot + } + }); }); export default router; diff --git a/api/src/routes/users/@me/channels.ts b/api/src/routes/users/@me/channels.ts index db9f8832..28e77dd9 100644 --- a/api/src/routes/users/@me/channels.ts +++ b/api/src/routes/users/@me/channels.ts @@ -1,6 +1,6 @@ import { Router, Request, Response } from "express"; import { - ChannelModel, + Channel, ChannelCreateEvent, toObject, ChannelType, @@ -8,7 +8,7 @@ import { trimSpecial, Channel, DMChannel, - UserModel, + User, emitEvent } from "@fosscord/util"; import { HTTPError } from "lambert-server"; @@ -19,9 +19,9 @@ import { check } from "../../../util/instanceOf"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - var channels = await ChannelModel.find({ recipient_ids: req.user_id }).exec(); + var channels = await Channel.find({ recipient_ids: req.user_id }); - res.json(toObject(channels)); + res.json(channels); }); router.post("/", check(DmChannelCreateSchema), async (req: Request, res: Response) => { @@ -29,14 +29,14 @@ router.post("/", check(DmChannelCreateSchema), async (req: Request, res: Respons body.recipients = body.recipients.filter((x) => x !== req.user_id).unique(); - if (!(await Promise.all(body.recipients.map((x) => UserModel.exists({ id: x })))).every((x) => x)) { + if (!(await Promise.all(body.recipients.map((x) => User.exists({ id: x })))).every((x) => x)) { throw new HTTPError("Recipient not found"); } const type = body.recipients.length === 1 ? ChannelType.DM : ChannelType.GROUP_DM; const name = trimSpecial(body.name); - const channel = await new ChannelModel({ + const channel = await new Channel({ name, type, owner_id: req.user_id, @@ -46,9 +46,9 @@ router.post("/", check(DmChannelCreateSchema), async (req: Request, res: Respons recipient_ids: [...body.recipients, req.user_id] }).save(); - await emitEvent({ event: "CHANNEL_CREATE", data: toObject(channel), user_id: req.user_id } as ChannelCreateEvent); + await emitEvent({ event: "CHANNEL_CREATE", data: channel), user_id: req.user_id } as ChannelCreateEvent; - res.json(toObject(channel)); + res.json(channel); }); export default router; diff --git a/api/src/routes/users/@me/delete.ts b/api/src/routes/users/@me/delete.ts index f863237d..fa8134cc 100644 --- a/api/src/routes/users/@me/delete.ts +++ b/api/src/routes/users/@me/delete.ts @@ -1,16 +1,16 @@ import { Router, Request, Response } from "express"; -import { GuildModel, MemberModel, UserModel } from "@fosscord/util"; +import { Guild, Member, User } from "@fosscord/util"; import bcrypt from "bcrypt"; const router = Router(); router.post("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }).exec(); //User object + const user = await User.findOneOrFail({ id: req.user_id }); //User object - let correctpass = await bcrypt.compare(req.body.password, user!.user_data.hash); //Not sure if user typed right password :/ + let correctpass = await bcrypt.compare(req.body.password, user!.data.hash); //Not sure if user typed right password :/ if (correctpass) { await Promise.all([ - UserModel.deleteOne({ id: req.user_id }).exec(), //Yeetus user deletus - MemberModel.deleteMany({ id: req.user_id }).exec() + User.deleteOne({ id: req.user_id }), //Yeetus user deletus + Member.deleteMany({ id: req.user_id }) ]); res.sendStatus(204); diff --git a/api/src/routes/users/@me/disable.ts b/api/src/routes/users/@me/disable.ts index 2d3a9850..a40c9e59 100644 --- a/api/src/routes/users/@me/disable.ts +++ b/api/src/routes/users/@me/disable.ts @@ -1,15 +1,15 @@ -import { UserModel } from "@fosscord/util"; +import { User } from "@fosscord/util"; import { Router, Response, Request } from "express"; import bcrypt from "bcrypt"; const router = Router(); router.post("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }).exec(); //User object + const user = await User.findOneOrFail({ id: req.user_id }); //User object - let correctpass = await bcrypt.compare(req.body.password, user!.user_data.hash); //Not sure if user typed right password :/ + let correctpass = await bcrypt.compare(req.body.password, user!.data.hash); //Not sure if user typed right password :/ if (correctpass) { - await UserModel.updateOne({ id: req.user_id }, { disabled: true }).exec(); + await User.update({ id: req.user_id }, { disabled: true }); res.sendStatus(204); } else { diff --git a/api/src/routes/users/@me/guilds.ts b/api/src/routes/users/@me/guilds.ts index a9b53b75..e40bfec9 100644 --- a/api/src/routes/users/@me/guilds.ts +++ b/api/src/routes/users/@me/guilds.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { GuildModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject, emitEvent } from "@fosscord/util"; +import { Guild, Member, User, GuildDeleteEvent, GuildMemberRemoveEvent, toObject, emitEvent } from "@fosscord/util"; import { HTTPError } from "lambert-server"; import { getPublicUser } from "../../../util/User"; @@ -7,28 +7,25 @@ import { getPublicUser } from "../../../util/User"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }, { guilds: true }).exec(); + const user = await User.findOneOrFail({ id: req.user_id }, { guilds: true }); if (!user) throw new HTTPError("User not found", 404); var guildIDs = user.guilds || []; - var guild = await GuildModel.find({ id: { $in: guildIDs } }) - .populate({ path: "joined_at", match: { id: req.user_id } }) - .exec(); - - res.json(toObject(guild)); + var guild = await Guild.find({ id: { $in: guildIDs } }).populate({ path: "joined_at", match: { id: req.user_id } }); + res.json(guild); }); // user send to leave a certain guild router.delete("/:id", async (req: Request, res: Response) => { const guild_id = req.params.id; - const guild = await GuildModel.findOne({ id: guild_id }, { guild_id: true }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, { guild_id: true }); if (!guild) throw new HTTPError("Guild doesn't exist", 404); if (guild.owner_id === req.user_id) throw new HTTPError("You can't leave your own guild", 400); await Promise.all([ - MemberModel.deleteOne({ id: req.user_id, guild_id: guild_id }).exec(), - UserModel.updateOne({ id: req.user_id }, { $pull: { guilds: guild_id } }).exec(), + Member.deleteOne({ id: req.user_id, guild_id: guild_id }), + User.update({ id: req.user_id }, { $pull: { guilds: guild_id } }), emitEvent({ event: "GUILD_DELETE", data: { diff --git a/api/src/routes/users/@me/index.ts b/api/src/routes/users/@me/index.ts index 6ebc6634..903b24aa 100644 --- a/api/src/routes/users/@me/index.ts +++ b/api/src/routes/users/@me/index.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { UserModel, toObject, PublicUserProjection } from "@fosscord/util"; +import { User, toObject, PublicUserProjection } from "@fosscord/util"; import { getPublicUser } from "../../../util/User"; import { UserModifySchema } from "../../../schema/User"; import { check } from "../../../util/instanceOf"; @@ -38,10 +38,10 @@ router.patch("/", check(UserModifySchema), async (req: Request, res: Response) = if (body.avatar) body.avatar = await handleFile(`/avatars/${req.user_id}`, body.avatar as string); if (body.banner) body.banner = await handleFile(`/banners/${req.user_id}`, body.banner as string); - const user = await UserModel.findOneAndUpdate({ id: req.user_id }, body, { projection: UserUpdateProjection, new: true }).exec(); + const user = await User.findOneOrFailAndUpdate({ id: req.user_id }, body, { projection: UserUpdateProjection, new: true }); // TODO: dispatch user update event - res.json(toObject(user)); + res.json(user); }); export default router; diff --git a/api/src/routes/users/@me/profile.ts b/api/src/routes/users/@me/profile.ts index b67d1964..fdb969dc 100644 --- a/api/src/routes/users/@me/profile.ts +++ b/api/src/routes/users/@me/profile.ts @@ -4,24 +4,24 @@ import { getPublicUser } from "../../../util/User"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - const user = await getPublicUser(req.user_id, { user_data: true }) + const user = await getPublicUser(req.user_id, { data: true }); - res.json({ - connected_accounts: user.user_data.connected_accounts, - premium_guild_since: null, // TODO - premium_since: null, // TODO - user: { - username: user.username, - discriminator: user.discriminator, - id: user.id, - public_flags: user.public_flags, - avatar: user.avatar, - accent_color: user.accent_color, - banner: user.banner, - bio: user.bio, - bot: user.bot, - } - }); + res.json({ + connected_accounts: user.data.connected_accounts, + premium_guild_since: null, // TODO + premium_since: null, // TODO + user: { + username: user.username, + discriminator: user.discriminator, + id: user.id, + public_flags: user.public_flags, + avatar: user.avatar, + accent_color: user.accent_color, + banner: user.banner, + bio: user.bio, + bot: user.bot + } + }); }); export default router; diff --git a/api/src/routes/users/@me/relationships.ts b/api/src/routes/users/@me/relationships.ts index 642ee5f9..9b8d6199 100644 --- a/api/src/routes/users/@me/relationships.ts +++ b/api/src/routes/users/@me/relationships.ts @@ -1,6 +1,6 @@ import { RelationshipAddEvent, - UserModel, + User, PublicUserProjection, toObject, RelationshipType, @@ -18,18 +18,18 @@ const router = Router(); const userProjection = { "user_data.relationships": true, ...PublicUserProjection }; router.get("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }, { user_data: { relationships: true } }) - .populate({ path: "user_data.relationships.id", model: UserModel }) - .exec(); - - return res.json(toObject(user.user_data.relationships)); + const user = await User.findOneOrFail({ id: req.user_id }, { user_data: { relationships: true } }).populate({ + path: "user_data.relationships.id", + model: User + }); + return res.json(user.user_data.relationships); }); async function addRelationship(req: Request, res: Response, friend: UserDocument, type: RelationshipType) { const id = friend.id; if (id === req.user_id) throw new HTTPError("You can't add yourself as a friend"); - const user = await UserModel.findOne({ id: req.user_id }, userProjection).exec(); + const user = await User.findOneOrFail({ id: req.user_id }, userProjection); const newUserRelationships = [...user.user_data.relationships]; const newFriendRelationships = [...friend.user_data.relationships]; @@ -48,7 +48,7 @@ async function addRelationship(req: Request, res: Response, friend: UserDocument if (friendRequest && friendRequest.type !== RelationshipType.blocked) { newFriendRelationships.remove(friendRequest); await Promise.all([ - UserModel.updateOne({ id: friend.id }, { "user_data.relationships": newFriendRelationships }).exec(), + User.update({ id: friend.id }, { "user_data.relationships": newFriendRelationships }), emitEvent({ event: "RELATIONSHIP_REMOVE", data: friendRequest, @@ -58,12 +58,12 @@ async function addRelationship(req: Request, res: Response, friend: UserDocument } await Promise.all([ - UserModel.updateOne({ id: req.user_id }, { "user_data.relationships": newUserRelationships }).exec(), + User.update({ id: req.user_id }, { "user_data.relationships": newUserRelationships }), emitEvent({ event: "RELATIONSHIP_ADD", data: { - ...toObject(relationship), - user: { ...toObject(friend), user_data: undefined } + ...relationship, + user: { ...friend, user_data: undefined } }, user_id: req.user_id } as RelationshipAddEvent) @@ -91,22 +91,22 @@ async function addRelationship(req: Request, res: Response, friend: UserDocument } else newUserRelationships.push(outgoing_relationship); await Promise.all([ - UserModel.updateOne({ id: req.user_id }, { "user_data.relationships": newUserRelationships }).exec(), - UserModel.updateOne({ id: friend.id }, { "user_data.relationships": newFriendRelationships }).exec(), + User.update({ id: req.user_id }, { "user_data.relationships": newUserRelationships }), + User.update({ id: friend.id }, { "user_data.relationships": newFriendRelationships }), emitEvent({ event: "RELATIONSHIP_ADD", data: { ...outgoing_relationship, - user: { ...toObject(friend), user_data: undefined } + user: { ...friend, user_data: undefined } }, user_id: req.user_id } as RelationshipAddEvent), emitEvent({ event: "RELATIONSHIP_ADD", data: { - ...toObject(incoming_relationship), + ...incoming_relationship, should_notify: true, - user: { ...toObject(user), user_data: undefined } + user: { ...user, user_data: undefined } }, user_id: id } as RelationshipAddEvent) @@ -116,14 +116,14 @@ async function addRelationship(req: Request, res: Response, friend: UserDocument } router.put("/:id", check({ $type: new Length(Number, 1, 4) }), async (req: Request, res: Response) => { - return await addRelationship(req, res, await UserModel.findOne({ id: req.params.id }), req.body.type); + return await addRelationship(req, res, await User.findOneOrFail({ id: req.params.id }), req.body.type); }); router.post("/", check({ discriminator: String, username: String }), async (req: Request, res: Response) => { return await addRelationship( req, res, - await UserModel.findOne(req.body as { discriminator: string; username: string }).exec(), + await User.findOneOrFail(req.body as { discriminator: string; username: string }), req.body.type ); }); @@ -132,10 +132,10 @@ router.delete("/:id", async (req: Request, res: Response) => { const { id } = req.params; if (id === req.user_id) throw new HTTPError("You can't remove yourself as a friend"); - const user = await UserModel.findOne({ id: req.user_id }).exec(); + const user = await User.findOneOrFail({ id: req.user_id }); if (!user) throw new HTTPError("Invalid token", 400); - const friend = await UserModel.findOne({ id }, userProjection).exec(); + const friend = await User.findOneOrFail({ id }, userProjection); if (!friend) throw new HTTPError("User not found", 404); const relationship = user.user_data.relationships.find((x) => x.id === id); diff --git a/api/src/routes/users/@me/settings.ts b/api/src/routes/users/@me/settings.ts index f045a010..90ee6372 100644 --- a/api/src/routes/users/@me/settings.ts +++ b/api/src/routes/users/@me/settings.ts @@ -1,5 +1,5 @@ import { Router, Response, Request } from "express"; -import { UserModel, UserSettings } from "@fosscord/util"; +import { User, UserSettings } from "@fosscord/util"; import { check } from "../../../util/instanceOf"; import { UserSettingsSchema } from "../../../schema/User"; @@ -9,7 +9,7 @@ router.patch("/", check(UserSettingsSchema), async (req: Request, res: Response) const body = req.body as UserSettings; // only users can update user settings - await UserModel.updateOne({ id: req.user_id, bot: false }, body).exec(); + await User.update({ id: req.user_id, bot: false }, { settings: body }); res.sendStatus(204); }); diff --git a/api/src/test/mongo_test.ts b/api/src/test/mongo_test.ts index 44b04c5b..bf203ea6 100644 --- a/api/src/test/mongo_test.ts +++ b/api/src/test/mongo_test.ts @@ -2,12 +2,12 @@ import mongoose, { Schema, Types } from "mongoose"; require("mongoose-long")(mongoose); const userSchema = new Schema({ - id: String, + id: String }); const messageSchema = new Schema({ id: String, - content: String, + content: String }); const message = mongoose.model("message", messageSchema, "messages"); const user = mongoose.model("user", userSchema, "users"); @@ -16,7 +16,7 @@ messageSchema.virtual("u", { ref: user, localField: "id", foreignField: "id", - justOne: true, + justOne: true }); messageSchema.set("toObject", { virtuals: true }); @@ -25,14 +25,14 @@ messageSchema.set("toJSON", { virtuals: true }); async function main() { const conn = await mongoose.connect("mongodb://localhost:27017/lambert?readPreference=secondaryPreferred", { useNewUrlParser: true, - useUnifiedTopology: false, + useUnifiedTopology: false }); console.log("connected"); // const u = await new user({ name: "test" }).save(); // await new message({ user: u._id, content: "test" }).save(); - const test = await message.findOne({}).populate("u").exec(); + const test = await message.findOneOrFail({}).populate("u"); // @ts-ignore console.log(test?.toJSON()); } diff --git a/api/src/util/Channel.ts b/api/src/util/Channel.ts index fb6f9c8c..a618d2df 100644 --- a/api/src/util/Channel.ts +++ b/api/src/util/Channel.ts @@ -1,10 +1,10 @@ import { ChannelCreateEvent, - ChannelModel, + Channel, ChannelType, emitEvent, getPermission, - GuildModel, + Guild, Snowflake, TextChannel, toObject, @@ -29,7 +29,7 @@ export async function createChannel( case ChannelType.GUILD_TEXT: case ChannelType.GUILD_VOICE: if (channel.parent_id && !opts?.skipExistsCheck) { - const exists = await ChannelModel.findOne({ id: channel.parent_id }, { guild_id: true }).exec(); + const exists = await Channel.findOneOrFail({ id: channel.parent_id }, { guild_id: true }); if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400); if (exists.guild_id !== channel.guild_id) throw new HTTPError("The category channel needs to be in the guild"); } @@ -49,7 +49,7 @@ export async function createChannel( if (!channel.permission_overwrites) channel.permission_overwrites = []; // TODO: auto generate position - channel = await new ChannelModel({ + channel = await new Channel({ ...channel, ...(!opts?.keepId && { id: Snowflake.generate() }), created_at: new Date(), @@ -57,7 +57,7 @@ export async function createChannel( recipient_ids: null }).save(); - await emitEvent({ event: "CHANNEL_CREATE", data: toObject(channel), guild_id: channel.guild_id } as ChannelCreateEvent); + await emitEvent({ event: "CHANNEL_CREATE", data: channel), guild_id: channel.guild_id } as ChannelCreateEvent; return channel; } diff --git a/api/src/util/Member.ts b/api/src/util/Member.ts index da02735c..6cb14d71 100644 --- a/api/src/util/Member.ts +++ b/api/src/util/Member.ts @@ -5,11 +5,11 @@ import { GuildMemberAddEvent, GuildMemberRemoveEvent, GuildMemberUpdateEvent, - GuildModel, - MemberModel, - RoleModel, + Guild, + Member, + Role, toObject, - UserModel, + User, GuildDocument, Config, emitEvent @@ -32,7 +32,7 @@ export const PublicMemberProjection = { }; export async function isMember(user_id: string, guild_id: string) { - const exists = await MemberModel.exists({ id: user_id, guild_id }); + const exists = await Member.exists({ id: user_id, guild_id }); if (!exists) throw new HTTPError("You are not a member of this guild", 403); return exists; } @@ -45,11 +45,11 @@ export async function addMember(user_id: string, guild_id: string, cache?: { gui throw new HTTPError(`You are at the ${maxGuilds} server limit.`, 403); } - const guild = cache?.guild || (await GuildModel.findOne({ id: guild_id }).exec()); + const guild = cache?.guild || (await Guild.findOneOrFail({ id: guild_id })); if (!guild) throw new HTTPError("Guild not found", 404); - if (await MemberModel.exists({ id: user.id, guild_id })) throw new HTTPError("You are already a member of this guild", 400); + if (await Member.exists({ id: user.id, guild_id })) throw new HTTPError("You are already a member of this guild", 400); const member = { id: user_id, @@ -64,7 +64,7 @@ export async function addMember(user_id: string, guild_id: string, cache?: { gui }; await Promise.all([ - new MemberModel({ + new Member({ ...member, read_state: {}, settings: { @@ -79,8 +79,8 @@ export async function addMember(user_id: string, guild_id: string, cache?: { gui } }).save(), - UserModel.updateOne({ id: user_id }, { $push: { guilds: guild_id } }).exec(), - GuildModel.updateOne({ id: guild_id }, { $inc: { member_count: 1 } }).exec(), + User.update({ id: user_id }, { $push: { guilds: guild_id } }), + Guild.update({ id: guild_id }, { $inc: { member_count: 1 } }), emitEvent({ event: "GUILD_MEMBER_ADD", @@ -95,12 +95,10 @@ export async function addMember(user_id: string, guild_id: string, cache?: { gui await emitEvent({ event: "GUILD_CREATE", - data: toObject( - await guild - .populate({ path: "members", match: { guild_id } }) - .populate({ path: "joined_at", match: { id: user.id } }) - .execPopulate() - ), + data: await guild + .populate({ path: "members", match: { guild_id } }) + .populate({ path: "joined_at", match: { id: user.id } }) + .execPopulate(), user_id } as GuildCreateEvent); } @@ -108,19 +106,19 @@ export async function addMember(user_id: string, guild_id: string, cache?: { gui export async function removeMember(user_id: string, guild_id: string) { const user = await getPublicUser(user_id); - const guild = await GuildModel.findOne({ id: guild_id }, { owner_id: true }).exec(); + const guild = await Guild.findOneOrFail({ id: guild_id }, { owner_id: true }); if (!guild) throw new HTTPError("Guild not found", 404); if (guild.owner_id === user_id) throw new Error("The owner cannot be removed of the guild"); - if (!(await MemberModel.exists({ id: user.id, guild_id }))) throw new HTTPError("Is not member of this guild", 404); + if (!(await Member.exists({ id: user.id, guild_id }))) throw new HTTPError("Is not member of this guild", 404); // use promise all to execute all promises at the same time -> save time return Promise.all([ - MemberModel.deleteOne({ + Member.deleteOne({ id: user_id, guild_id: guild_id - }).exec(), - UserModel.updateOne({ id: user.id }, { $pull: { guilds: guild_id } }).exec(), - GuildModel.updateOne({ id: guild_id }, { $inc: { member_count: -1 } }).exec(), + }), + User.update({ id: user.id }, { $pull: { guilds: guild_id } }), + Guild.update({ id: guild_id }, { $inc: { member_count: -1 } }), emitEvent({ event: "GUILD_DELETE", @@ -143,17 +141,17 @@ export async function removeMember(user_id: string, guild_id: string) { export async function addRole(user_id: string, guild_id: string, role_id: string) { const user = await getPublicUser(user_id); - const role = await RoleModel.findOne({ id: role_id, guild_id: guild_id }).exec(); + const role = await Role.findOneOrFail({ id: role_id, guild_id: guild_id }); if (!role) throw new HTTPError("role not found", 404); - var memberObj = await MemberModel.findOneAndUpdate( + var memberObj = await Member.findOneOrFailAndUpdate( { id: user_id, guild_id: guild_id }, { $push: { roles: role_id } }, { new: true } - ).exec(); + ); if (!memberObj) throw new HTTPError("Member not found", 404); @@ -171,17 +169,17 @@ export async function addRole(user_id: string, guild_id: string, role_id: string export async function removeRole(user_id: string, guild_id: string, role_id: string) { const user = await getPublicUser(user_id); - const role = await RoleModel.findOne({ id: role_id, guild_id: guild_id }).exec(); + const role = await Role.findOneOrFail({ id: role_id, guild_id: guild_id }); if (!role) throw new HTTPError("role not found", 404); - var memberObj = await MemberModel.findOneAndUpdate( + var memberObj = await Member.findOneOrFailAndUpdate( { id: user_id, guild_id: guild_id }, { $pull: { roles: role_id } }, { new: true } - ).exec(); + ); if (!memberObj) throw new HTTPError("Member not found", 404); @@ -199,14 +197,14 @@ export async function removeRole(user_id: string, guild_id: string, role_id: str export async function changeNickname(user_id: string, guild_id: string, nickname: string) { const user = await getPublicUser(user_id); - var memberObj = await MemberModel.findOneAndUpdate( + var memberObj = await Member.findOneOrFailAndUpdate( { id: user_id, guild_id: guild_id }, { nick: nickname }, { new: true } - ).exec(); + ); if (!memberObj) throw new HTTPError("Member not found", 404); diff --git a/api/src/util/Message.ts b/api/src/util/Message.ts index 8a1e959e..5561904b 100644 --- a/api/src/util/Message.ts +++ b/api/src/util/Message.ts @@ -1,5 +1,5 @@ import { - ChannelModel, + Channel, Embed, emitEvent, Message, @@ -7,13 +7,11 @@ import { MessageUpdateEvent, getPermission, CHANNEL_MENTION, - toObject, - MessageModel, Snowflake, PublicMemberProjection, USER_MENTION, ROLE_MENTION, - RoleModel, + Role, EVERYONE_MENTION, HERE_MENTION } from "@fosscord/util"; @@ -37,13 +35,11 @@ const DEFAULT_FETCH_OPTIONS: any = { method: "GET" }; -export async function handleMessage(opts: Partial) { - const channel = await ChannelModel.findOne( +export async function handleMessage(opts: Partial): Promise { + const channel = await Channel.findOneOrFail( { id: opts.channel_id }, - { guild_id: true, type: true, permission_overwrites: true, recipient_ids: true, owner_id: true } - ) - .lean() // lean is needed, because we don't want to populate .recipients that also auto deletes .recipient_ids - .exec(); + { select: ["guild_id", "type", "permission_overwrites", "recipient_ids", "owner_id"] } + ); // lean is needed, because we don't want to populate .recipients that also auto deletes .recipient_ids if (!channel || !opts.channel_id) throw new HTTPError("Channel not found", 404); // TODO: are tts messages allowed in dm channels? should permission be checked? @@ -83,7 +79,7 @@ export async function handleMessage(opts: Partial) { await Promise.all( Array.from(content.matchAll(ROLE_MENTION)).map(async ([_, mention]) => { - const role = await RoleModel.findOne({ id: mention, guild_id: channel.guild_id }).exec(); + const role = await Role.findOneOrFail({ id: mention, guild_id: channel.guild_id }); if (role.mentionable || permission.has("MANAGE_ROLES")) { mention_role_ids.push(mention); } @@ -160,16 +156,17 @@ export async function postHandleMessage(message: Message) { channel_id: message.channel_id, data } as MessageUpdateEvent), - MessageModel.updateOne({ id: message.id, channel_id: message.channel_id }, data).exec() + Message.update({ id: message.id, channel_id: message.channel_id }, data) ]); } export async function sendMessage(opts: Partial) { const message = await handleMessage({ ...opts, id: Snowflake.generate(), timestamp: new Date() }); - const data = toObject( - await new MessageModel(message).populate({ path: "member", select: PublicMemberProjection }).populate("referenced_message").save() - ); + const data = await new Message(message) + .populate({ path: "member", select: PublicMemberProjection }) + .populate("referenced_message") + .save(); await emitEvent({ event: "MESSAGE_CREATE", channel_id: opts.channel_id, data } as MessageCreateEvent); diff --git a/api/src/util/User.ts b/api/src/util/User.ts index 392c7101..4d9065c4 100644 --- a/api/src/util/User.ts +++ b/api/src/util/User.ts @@ -1,16 +1,16 @@ -import { toObject, UserModel, PublicUserProjection } from "@fosscord/util"; +import { toObject, User, PublicUserProjection } from "@fosscord/util"; import { HTTPError } from "lambert-server"; export { PublicUserProjection }; export async function getPublicUser(user_id: string, additional_fields?: any) { - const user = await UserModel.findOne( + const user = await User.findOneOrFail( { id: user_id }, { ...PublicUserProjection, ...additional_fields } - ).exec(); + ); if (!user) throw new HTTPError("User not found", 404); - return toObject(user); + return user; } From b57f8b33d498e9679182017741c524cdafbb8f20 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:35:20 +0200 Subject: [PATCH 07/50] :construction: gateway --- gateway/src/listener/listener.ts | 10 ++--- gateway/src/opcodes/Identify.ts | 43 ++++++------------ gateway/src/opcodes/LazyRequest.ts | 70 +++++++++++++++--------------- 3 files changed, 52 insertions(+), 71 deletions(-) diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts index 51082586..633580e3 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts @@ -1,10 +1,10 @@ import { db, Event, - UserModel, + User, getPermission, Permissions, - ChannelModel, + Channel, RabbitMQ, EVENT, listenEvent, @@ -27,11 +27,11 @@ import { Channel } from "amqplib"; // TODO: use already queried guilds/channels of Identify and don't fetch them again export async function setupListener(this: WebSocket) { - const user = await UserModel.findOne({ id: this.user_id }, { guilds: true }).exec(); - const channels = await ChannelModel.find( + const user = await User.findOneOrFail({ id: this.user_id }, { guilds: true }); + const channels = await Channel.find( { $or: [{ recipient_ids: this.user_id }, { guild_id: { $in: user.guilds } }] }, { id: true, permission_overwrites: true } - ).exec(); + ); const dm_channels = channels.filter((x) => !x.guild_id); const guild_channels = channels.filter((x) => x.guild_id); diff --git a/gateway/src/opcodes/Identify.ts b/gateway/src/opcodes/Identify.ts index 91f7f675..464d584c 100644 --- a/gateway/src/opcodes/Identify.ts +++ b/gateway/src/opcodes/Identify.ts @@ -1,18 +1,6 @@ import { CLOSECODES, Payload, OPCODES } from "../util/Constants"; import WebSocket from "../util/WebSocket"; -import { - ChannelModel, - checkToken, - GuildModel, - Intents, - MemberDocument, - MemberModel, - ReadyEventData, - UserModel, - toObject, - EVENTEnum, - Config, -} from "@fosscord/util"; +import { Channel, checkToken, Guild, Intents, Member, ReadyEventData, User, EVENTEnum, Config } from "@fosscord/util"; import { setupListener } from "../listener/listener"; import { IdentifySchema } from "../schema/Identify"; import { Send } from "../util/Send"; @@ -54,7 +42,7 @@ export async function onIdentify(this: WebSocket, data: Payload) { } } - const members = toObject(await MemberModel.find({ id: this.user_id }).exec()); + const members = await Member.find({ id: this.user_id }); const merged_members = members.map((x: any) => { const y = { ...x, user_id: x.id }; delete y.settings; @@ -63,8 +51,8 @@ export async function onIdentify(this: WebSocket, data: Payload) { }) as MemberDocument[][]; const user_guild_settings_entries = members.map((x) => x.settings); - const channels = await ChannelModel.find({ recipient_ids: this.user_id }).exec(); - const user = await UserModel.findOne({ id: this.user_id }).exec(); + const channels = await Channel.find({ recipient_ids: this.user_id }); + const user = await User.findOneOrFail({ id: this.user_id }); if (!user) return this.close(CLOSECODES.Authentication_failed); const public_user = { @@ -76,10 +64,10 @@ export async function onIdentify(this: WebSocket, data: Payload) { bot: user.bot, }; - const guilds = await GuildModel.find({ id: { $in: user.guilds } }) - .populate({ path: "joined_at", match: { id: this.user_id } }) - .exec(); - + const guilds = await Guild.find({ id: { $in: user.guilds } }).populate({ + path: "joined_at", + match: { id: this.user_id }, + }); const privateUser = { avatar: user.avatar, mobile: user.mobile, @@ -104,9 +92,9 @@ export async function onIdentify(this: WebSocket, data: Payload) { const d: ReadyEventData = { v: 8, user: privateUser, - user_settings: user.user_settings, + user_settings: user.settings, // @ts-ignore - guilds: toObject(guilds).map((x) => { + guilds: guilds.map((x) => { // @ts-ignore x.guild_hashes = { channels: { omitted: false, hash: "y4PV2fZ0gmo" }, @@ -131,7 +119,7 @@ export async function onIdentify(this: WebSocket, data: Payload) { version: 642, }, // @ts-ignore - private_channels: toObject(channels).map((x: ChannelDocument) => { + private_channels: channels.map((x): ChannelDocument => { x.recipient_ids = x.recipients.map((y: any) => y.id); delete x.recipients; return x; @@ -144,17 +132,12 @@ export async function onIdentify(this: WebSocket, data: Payload) { consented: false, // TODO }, }, - country_code: user.user_settings.locale, + country_code: user.settings.locale, friend_suggestion_count: 0, // TODO // @ts-ignore experiments: experiments, // TODO guild_join_requests: [], // TODO what is this? - users: [ - public_user, - ...toObject(channels) - .map((x: any) => x.recipients) - .flat(), - ].unique(), // TODO + users: [public_user, ...channels.map((x: any) => x.recipients).flat()].unique(), // TODO merged_members: merged_members, // shard // TODO: only for bots sharding // application // TODO for applications diff --git a/gateway/src/opcodes/LazyRequest.ts b/gateway/src/opcodes/LazyRequest.ts index 63075e5a..9f514f5f 100644 --- a/gateway/src/opcodes/LazyRequest.ts +++ b/gateway/src/opcodes/LazyRequest.ts @@ -18,45 +18,43 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) { permissions.hasThrow("VIEW_CHANNEL"); // MongoDB query to retrieve all hoisted roles and join them with the members and users collection - const roles = toObject( - await db - .collection("roles") - .aggregate([ - { - $match: { - guild_id, - // hoist: true // TODO: also match @everyone role - }, + const roles = await db + .collection("roles") + .aggregate([ + { + $match: { + guild_id, + // hoist: true // TODO: also match @everyone role }, - { $sort: { position: 1 } }, - { - $lookup: { - from: "members", - let: { id: "$id" }, - pipeline: [ - { $match: { $expr: { $in: ["$$id", "$roles"] } } }, - { $limit: 100 }, - { - $lookup: { - from: "users", - let: { user_id: "$id" }, - pipeline: [ - { $match: { $expr: { $eq: ["$id", "$$user_id"] } } }, - { $project: PublicUserProjection }, - ], - as: "user", - }, + }, + { $sort: { position: 1 } }, + { + $lookup: { + from: "members", + let: { id: "$id" }, + pipeline: [ + { $match: { $expr: { $in: ["$$id", "$roles"] } } }, + { $limit: 100 }, + { + $lookup: { + from: "users", + let: { user_id: "$id" }, + pipeline: [ + { $match: { $expr: { $eq: ["$id", "$$user_id"] } } }, + { $project: PublicUserProjection }, + ], + as: "user", }, - { - $unwind: "$user", - }, - ], - as: "members", - }, + }, + { + $unwind: "$user", + }, + ], + as: "members", }, - ]) - .toArray() - ); + }, + ]) + .toArray(); const groups = roles.map((x) => ({ id: x.id === guild_id ? "online" : x.id, count: x.members.length })); const member_count = roles.reduce((a, b) => b.members.length + a, 0); From 01ead4f734ac80f571dcd3e5c68454c563b3da62 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:35:39 +0200 Subject: [PATCH 08/50] :white_check_mark: util unit tests --- util/package.json | 11 +++++++++-- util/tests/validate.test.js | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 util/tests/validate.test.js diff --git a/util/package.json b/util/package.json index 870c9344..397eb47f 100644 --- a/util/package.json +++ b/util/package.json @@ -5,10 +5,11 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "test": "jest", + "start": "npm run build && node dist/", + "test": "npm run build && jest", "postinstall": "npm run build", "build": "npx tsc -b .", - "generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/models/schema.json" + "generate:schema": "npx typescript-json-schema tsconfig.json '*' -o src/entities/schema.json" }, "repository": { "type": "git", @@ -41,6 +42,7 @@ "class-validator": "^0.13.1", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", + "jest-test-performance": "^1.0.1", "jsonwebtoken": "^8.5.1", "missing-native-js-functions": "^1.2.10", "node-fetch": "^2.6.1", @@ -50,5 +52,10 @@ "typeorm": "^0.2.37", "typescript": "^4.3.5", "typescript-json-schema": "github:fosscord/typescript-json-schema" + }, + "jest": { + "setupFilesAfterEnv": [ + "jest-test-performance" + ] } } diff --git a/util/tests/validate.test.js b/util/tests/validate.test.js new file mode 100644 index 00000000..629c864f --- /dev/null +++ b/util/tests/validate.test.js @@ -0,0 +1,27 @@ +const { initDatabase } = require("../dist/util/Database"); +const { User } = require("../dist/entities/User"); + +beforeAll(async () => { + await initDatabase(); + + new User().validate(); // initalize schema validator +}); + +describe("Validate model class properties", () => { + describe("validation should be faster than 20ms", () => { + expect(() => new User().validate()).toBeFasterThan(20); + }); + + describe("User", () => { + test("object instead of string", () => { + expect(() => { + new User({ username: {} }).validate(); + }).toThrow(); + }); + }); + + test("should not set opts", () => { + const user = new User({ opts: { id: 0 } }); + expect(user.opts.id).not.toBe(0); + }); +}); From 05d72ac3ac0c8d887942c783a2c93a1ad7a34d1b Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 24 Aug 2021 16:35:59 +0200 Subject: [PATCH 09/50] :sparkles: util --- util/.gitignore | 3 +- util/oldModels/Application.ts | 67 - util/oldModels/AuditLog.ts | 220 - util/oldModels/Ban.ts | 32 - util/oldModels/Channel.ts | 111 - util/oldModels/Emoji.ts | 29 - util/oldModels/Guild.ts | 159 - util/oldModels/Invite.ts | 95 - util/oldModels/Member.ts | 109 - util/oldModels/Message.ts | 368 - util/oldModels/RateLimit.ts | 25 - util/oldModels/ReadState.ts | 26 - util/oldModels/Role.ts | 42 - util/oldModels/Team.ts | 17 - util/oldModels/Template.ts | 51 - util/oldModels/VoiceState.ts | 34 - util/oldModels/Webhook.ts | 84 - util/oldModels/index.ts | 93 - util/package-lock.json | 7846 ++++++- util/schema.json | 19501 ---------------- util/src/entities/schema.json | 13906 +---------- util/src/index.ts | 6 +- util/src/{models => interfaces}/Activity.ts | 11 - util/{oldModels => src/interfaces}/Event.ts | 30 +- .../interfaces}/Interaction.ts | 2 +- util/src/interfaces/Presence.ts | 10 + util/src/{models => interfaces}/Status.ts | 0 util/src/interfaces/index.ts | 5 + util/src/models/BaseClass.ts | 30 - util/src/models/User.ts | 209 - util/src/models/index.ts | 4 - util/src/util/BitField.ts | 12 +- util/src/util/Constants.ts | 28 - util/src/util/Database.ts | 25 + util/{ => src}/util/Event.ts | 2 +- util/{ => src}/util/Intents.ts | 0 util/src/util/Permissions.ts | 31 +- util/src/util/RabbitMQ.ts | 21 +- util/src/util/UserFlags.ts | 22 - util/src/util/checkToken.ts | 13 +- util/{ => src}/util/index.ts | 2 +- util/tsconfig.json | 3 +- util/util/Config.ts | 5 +- util/util/Database.ts | 7 - util/util/MongoBigInt.ts | 83 - 45 files changed, 7575 insertions(+), 35804 deletions(-) delete mode 100644 util/oldModels/Application.ts delete mode 100644 util/oldModels/AuditLog.ts delete mode 100644 util/oldModels/Ban.ts delete mode 100644 util/oldModels/Channel.ts delete mode 100644 util/oldModels/Emoji.ts delete mode 100644 util/oldModels/Guild.ts delete mode 100644 util/oldModels/Invite.ts delete mode 100644 util/oldModels/Member.ts delete mode 100644 util/oldModels/Message.ts delete mode 100644 util/oldModels/RateLimit.ts delete mode 100644 util/oldModels/ReadState.ts delete mode 100644 util/oldModels/Role.ts delete mode 100644 util/oldModels/Team.ts delete mode 100644 util/oldModels/Template.ts delete mode 100644 util/oldModels/VoiceState.ts delete mode 100644 util/oldModels/Webhook.ts delete mode 100644 util/oldModels/index.ts delete mode 100644 util/schema.json rename util/src/{models => interfaces}/Activity.ts (75%) rename util/{oldModels => src/interfaces}/Event.ts (92%) rename util/{oldModels => src/interfaces}/Interaction.ts (89%) create mode 100644 util/src/interfaces/Presence.ts rename util/src/{models => interfaces}/Status.ts (100%) create mode 100644 util/src/interfaces/index.ts delete mode 100644 util/src/models/BaseClass.ts delete mode 100644 util/src/models/User.ts delete mode 100644 util/src/models/index.ts delete mode 100644 util/src/util/Constants.ts create mode 100644 util/src/util/Database.ts rename util/{ => src}/util/Event.ts (98%) rename util/{ => src}/util/Intents.ts (100%) delete mode 100644 util/src/util/UserFlags.ts rename util/{ => src}/util/index.ts (91%) delete mode 100644 util/util/Database.ts delete mode 100644 util/util/MongoBigInt.ts diff --git a/util/.gitignore b/util/.gitignore index d7fc3f74..87263762 100644 --- a/util/.gitignore +++ b/util/.gitignore @@ -104,4 +104,5 @@ typings/ .DS_Store # Compiled TypeScript code -dist/ \ No newline at end of file +dist/ +database.db \ No newline at end of file diff --git a/util/oldModels/Application.ts b/util/oldModels/Application.ts deleted file mode 100644 index fae6e8db..00000000 --- a/util/oldModels/Application.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Team } from "./Team"; - -export interface Application { - id: string; - name: string; - icon: string | null; - description: string; - rpc_origins: string[] | null; - bot_public: boolean; - bot_require_code_grant: boolean; - terms_of_service_url: string | null; - privacy_policy_url: string | null; - owner_id: string; - summary: string | null; - verify_key: string; - team: Team | null; - guild_id: string; // if this application is a game sold on Discord, this field will be the guild to which it has been linked - primary_sku_id: string | null; // if this application is a game sold on Discord, this field will be the id of the "Game SKU" that is created, if exists - slug: string | null; // if this application is a game sold on Discord, this field will be the URL slug that links to the store page - cover_image: string | null; // the application's default rich presence invite cover image hash - flags: number; // the application's public flags -} - -export interface ApplicationCommand { - id: string; - application_id: string; - name: string; - description: string; - options?: ApplicationCommandOption[]; -} - -export interface ApplicationCommandOption { - type: ApplicationCommandOptionType; - name: string; - description: string; - required?: boolean; - choices?: ApplicationCommandOptionChoice[]; - options?: ApplicationCommandOption[]; -} - -export interface ApplicationCommandOptionChoice { - name: string; - value: string | number; -} - -export enum ApplicationCommandOptionType { - SUB_COMMAND = 1, - SUB_COMMAND_GROUP = 2, - STRING = 3, - INTEGER = 4, - BOOLEAN = 5, - USER = 6, - CHANNEL = 7, - ROLE = 8, -} - -export interface ApplicationCommandInteractionData { - id: string; - name: string; - options?: ApplicationCommandInteractionDataOption[]; -} - -export interface ApplicationCommandInteractionDataOption { - name: string; - value?: any; - options?: ApplicationCommandInteractionDataOption[]; -} diff --git a/util/oldModels/AuditLog.ts b/util/oldModels/AuditLog.ts deleted file mode 100644 index 02b2c444..00000000 --- a/util/oldModels/AuditLog.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { Schema, Document, Types } from "mongoose"; -import db from "../util/Database"; -import { ChannelPermissionOverwrite } from "./Channel"; -import { PublicUser } from "./User"; - -export interface AuditLogResponse { - webhooks: []; // TODO: - users: PublicUser[]; - audit_log_entries: AuditLogEntries[]; - integrations: []; // TODO: -} - -export interface AuditLogEntries { - target_id?: string; - user_id: string; - id: string; - action_type: AuditLogEvents; - options?: { - delete_member_days?: string; - members_removed?: string; - channel_id?: string; - messaged_id?: string; - count?: string; - id?: string; - type?: string; - role_name?: string; - }; - changes: AuditLogChange[]; - reason?: string; -} - -export interface AuditLogChange { - new_value?: AuditLogChangeValue; - old_value?: AuditLogChangeValue; - key: string; -} - -export interface AuditLogChangeValue { - name?: string; - description?: string; - icon_hash?: string; - splash_hash?: string; - discovery_splash_hash?: string; - banner_hash?: string; - owner_id?: string; - region?: string; - preferred_locale?: string; - afk_channel_id?: string; - afk_timeout?: number; - rules_channel_id?: string; - public_updates_channel_id?: string; - mfa_level?: number; - verification_level?: number; - explicit_content_filter?: number; - default_message_notifications?: number; - vanity_url_code?: string; - $add?: {}[]; - $remove?: {}[]; - prune_delete_days?: number; - widget_enabled?: boolean; - widget_channel_id?: string; - system_channel_id?: string; - position?: number; - topic?: string; - bitrate?: number; - permission_overwrites?: ChannelPermissionOverwrite[]; - nsfw?: boolean; - application_id?: string; - rate_limit_per_user?: number; - permissions?: string; - color?: number; - hoist?: boolean; - mentionable?: boolean; - allow?: string; - deny?: string; - code?: string; - channel_id?: string; - inviter_id?: string; - max_uses?: number; - uses?: number; - max_age?: number; - temporary?: boolean; - deaf?: boolean; - mute?: boolean; - nick?: string; - avatar_hash?: string; - id?: string; - type?: number; - enable_emoticons?: boolean; - expire_behavior?: number; - expire_grace_period?: number; - user_limit?: number; -} - -export interface AuditLogEntriesDocument extends Document, AuditLogEntries { - id: string; -} - -export const AuditLogChanges = { - name: String, - description: String, - icon_hash: String, - splash_hash: String, - discovery_splash_hash: String, - banner_hash: String, - owner_id: String, - region: String, - preferred_locale: String, - afk_channel_id: String, - afk_timeout: Number, - rules_channel_id: String, - public_updates_channel_id: String, - mfa_level: Number, - verification_level: Number, - explicit_content_filter: Number, - default_message_notifications: Number, - vanity_url_code: String, - $add: [{}], - $remove: [{}], - prune_delete_days: Number, - widget_enabled: Boolean, - widget_channel_id: String, - system_channel_id: String, - position: Number, - topic: String, - bitrate: Number, - permission_overwrites: [{}], - nsfw: Boolean, - application_id: String, - rate_limit_per_user: Number, - permissions: String, - color: Number, - hoist: Boolean, - mentionable: Boolean, - allow: String, - deny: String, - code: String, - channel_id: String, - inviter_id: String, - max_uses: Number, - uses: Number, - max_age: Number, - temporary: Boolean, - deaf: Boolean, - mute: Boolean, - nick: String, - avatar_hash: String, - id: String, - type: Number, - enable_emoticons: Boolean, - expire_behavior: Number, - expire_grace_period: Number, - user_limit: Number, -}; - -export const AuditLogSchema = new Schema({ - target_id: String, - user_id: { type: String, required: true }, - id: { type: String, required: true }, - action_type: { type: Number, required: true }, - options: { - delete_member_days: String, - members_removed: String, - channel_id: String, - messaged_id: String, - count: String, - id: String, - type: { type: Number }, - role_name: String, - }, - changes: [ - { - new_value: AuditLogChanges, - old_value: AuditLogChanges, - key: String, - }, - ], - reason: String, -}); - -// @ts-ignore -export const AuditLogModel = db.model("AuditLog", AuditLogSchema, "auditlogs"); - -export enum AuditLogEvents { - GUILD_UPDATE = 1, - CHANNEL_CREATE = 10, - CHANNEL_UPDATE = 11, - CHANNEL_DELETE = 12, - CHANNEL_OVERWRITE_CREATE = 13, - CHANNEL_OVERWRITE_UPDATE = 14, - CHANNEL_OVERWRITE_DELETE = 15, - MEMBER_KICK = 20, - MEMBER_PRUNE = 21, - MEMBER_BAN_ADD = 22, - MEMBER_BAN_REMOVE = 23, - MEMBER_UPDATE = 24, - MEMBER_ROLE_UPDATE = 25, - MEMBER_MOVE = 26, - MEMBER_DISCONNECT = 27, - BOT_ADD = 28, - ROLE_CREATE = 30, - ROLE_UPDATE = 31, - ROLE_DELETE = 32, - INVITE_CREATE = 40, - INVITE_UPDATE = 41, - INVITE_DELETE = 42, - WEBHOOK_CREATE = 50, - WEBHOOK_UPDATE = 51, - WEBHOOK_DELETE = 52, - EMOJI_CREATE = 60, - EMOJI_UPDATE = 61, - EMOJI_DELETE = 62, - MESSAGE_DELETE = 72, - MESSAGE_BULK_DELETE = 73, - MESSAGE_PIN = 74, - MESSAGE_UNPIN = 75, - INTEGRATION_CREATE = 80, - INTEGRATION_UPDATE = 81, - INTEGRATION_DELETE = 82, -} diff --git a/util/oldModels/Ban.ts b/util/oldModels/Ban.ts deleted file mode 100644 index f09950ee..00000000 --- a/util/oldModels/Ban.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; -import { PublicUserProjection, UserModel } from "./User"; - -export interface Ban extends Document { - user_id: string; - guild_id: string; - executor_id: string; - ip: string; - reason?: string; -} - -export const BanSchema = new Schema({ - user_id: { type: String, required: true }, - guild_id: { type: String, required: true }, - executor_id: { type: String, required: true }, - reason: String, - ip: String, // ? Should we store this in here, or in the UserModel? -}); - -BanSchema.virtual("user", { - ref: UserModel, - localField: "user_id", - foreignField: "id", - justOne: true, - autopopulate: { select: PublicUserProjection }, -}); - -BanSchema.set("removeResponse", ["user_id"]); - -// @ts-ignore -export const BanModel = db.model("Ban", BanSchema, "bans"); diff --git a/util/oldModels/Channel.ts b/util/oldModels/Channel.ts deleted file mode 100644 index 2959decd..00000000 --- a/util/oldModels/Channel.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; -import toBigInt from "../util/toBigInt"; -import { PublicUserProjection, UserModel } from "./User"; - -// @ts-ignore -export interface AnyChannel extends Channel, DMChannel, TextChannel, VoiceChannel { - recipient_ids: null | string[]; -} - -export interface ChannelDocument extends Document, AnyChannel { - id: string; -} - -export const ChannelSchema = new Schema({ - id: String, - created_at: { type: Schema.Types.Date, required: true }, - name: String, // can't be required for dm channels - type: { type: Number, required: true }, - guild_id: String, - owner_id: String, - parent_id: String, - recipient_ids: [String], - position: Number, - last_message_id: String, - last_pin_timestamp: Date, - nsfw: Boolean, - rate_limit_per_user: Number, - default_auto_archive_duration: Number, - topic: String, - permission_overwrites: [ - { - allow: { type: String, get: toBigInt }, - deny: { type: String, get: toBigInt }, - id: String, - type: { type: Number }, - }, - ], -}); - -ChannelSchema.virtual("recipients", { - ref: UserModel, - localField: "recipient_ids", - foreignField: "id", - justOne: false, - autopopulate: { select: PublicUserProjection }, -}); - -ChannelSchema.set("removeResponse", ["recipient_ids"]); - -// @ts-ignore -export const ChannelModel = db.model("Channel", ChannelSchema, "channels"); - -export interface Channel { - id: string; - created_at: Date; - name: string; - type: number; -} - -export interface TextBasedChannel { - last_message_id?: string; - last_pin_timestamp?: number; - default_auto_archive_duration?: number; -} - -export interface GuildChannel extends Channel { - guild_id: string; - position: number; - parent_id?: string; - permission_overwrites: ChannelPermissionOverwrite[]; -} - -export interface ChannelPermissionOverwrite { - allow: bigint; // for bitfields we use bigints - deny: bigint; // for bitfields we use bigints - id: string; - type: ChannelPermissionOverwriteType; -} - -export enum ChannelPermissionOverwriteType { - role = 0, - member = 1, -} - -export interface VoiceChannel extends GuildChannel { - video_quality_mode?: number; - bitrate?: number; - user_limit?: number; -} - -export interface TextChannel extends GuildChannel, TextBasedChannel { - nsfw: boolean; - rate_limit_per_user: number; - topic?: string; -} -// @ts-ignore -export interface DMChannel extends Channel, TextBasedChannel { - owner_id: string; - recipient_ids: string[]; -} - -export enum ChannelType { - GUILD_TEXT = 0, // a text channel within a server - DM = 1, // a direct message between users - GUILD_VOICE = 2, // a voice channel within a server - GROUP_DM = 3, // a direct message between multiple users - GUILD_CATEGORY = 4, // an organizational category that contains up to 50 channels - GUILD_NEWS = 5, // a channel that users can follow and crosspost into their own server - GUILD_STORE = 6, // a channel in which game developers can sell their game on Discord -} diff --git a/util/oldModels/Emoji.ts b/util/oldModels/Emoji.ts deleted file mode 100644 index 3e5cad53..00000000 --- a/util/oldModels/Emoji.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; - -export interface Emoji extends Document { - id: string; - animated: boolean; - available: boolean; - guild_id: string; - managed: boolean; - name: string; - require_colons: boolean; - url: string; - roles: string[]; // roles this emoji is whitelisted to (new discord feature?) -} - -export const EmojiSchema = new Schema({ - id: { type: String, required: true }, - animated: Boolean, - available: Boolean, - guild_id: String, - managed: Boolean, - name: String, - require_colons: Boolean, - url: String, - roles: [String], -}); - -// @ts-ignore -export const EmojiModel = db.model("Emoji", EmojiSchema, "emojis"); diff --git a/util/oldModels/Guild.ts b/util/oldModels/Guild.ts deleted file mode 100644 index a5dcd8e3..00000000 --- a/util/oldModels/Guild.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; -import { ChannelModel } from "./Channel"; -import { EmojiModel } from "./Emoji"; -import { MemberModel } from "./Member"; -import { RoleModel } from "./Role"; - -export interface GuildDocument extends Document, Guild { - id: string; -} - -export interface Guild { - id: string; - afk_channel_id?: string; - afk_timeout?: number; - application_id?: string; - banner?: string; - default_message_notifications?: number; - description?: string; - discovery_splash?: string; - explicit_content_filter?: number; - features: string[]; - icon?: string; - large?: boolean; - max_members?: number; // e.g. default 100.000 - max_presences?: number; - max_video_channel_users?: number; // ? default: 25, is this max 25 streaming or watching - member_count?: number; - presence_count?: number; // users online - // members?: Member[]; // * Members are stored in a seperate collection - // roles: Role[]; // * Role are stored in a seperate collection - // channels: GuildChannel[]; // * Channels are stored in a seperate collection - // emojis: Emoji[]; // * Emojis are stored in a seperate collection - // voice_states: []; // * voice_states are stored in a seperate collection - //TODO: - presences?: object[]; - mfa_level?: number; - name: string; - owner_id: string; - preferred_locale?: string; // only community guilds can choose this - premium_subscription_count?: number; - premium_tier?: number; // nitro boost level - public_updates_channel_id?: string; - region?: string; - rules_channel_id?: string; - splash?: string; - system_channel_flags?: number; - system_channel_id?: string; - unavailable?: boolean; - vanity_url_code?: string; - verification_level?: number; - welcome_screen: { - enabled: boolean; - description: string; - welcome_channels: { - description: string; - emoji_id?: string; - emoji_name: string; - channel_id: string; - }[]; - }; - widget_channel_id?: string; - widget_enabled?: boolean; -} - -export const GuildSchema = new Schema({ - id: { type: String, required: true }, - afk_channel_id: String, - afk_timeout: Number, - application_id: String, - banner: String, - default_message_notifications: Number, - description: String, - discovery_splash: String, - explicit_content_filter: Number, - features: { type: [String], default: [] }, - icon: String, - large: Boolean, - max_members: { type: Number, default: 100000 }, - max_presences: Number, - max_video_channel_users: { type: Number, default: 25 }, - member_count: Number, - presences: { type: [Object], default: [] }, - presence_count: Number, - mfa_level: Number, - name: { type: String, required: true }, - owner_id: { type: String, required: true }, - preferred_locale: String, - premium_subscription_count: Number, - premium_tier: Number, - public_updates_channel_id: String, - region: String, - rules_channel_id: String, - splash: String, - system_channel_flags: Number, - system_channel_id: String, - unavailable: Boolean, - vanity_url_code: String, - verification_level: Number, - voice_states: { type: [Object], default: [] }, - welcome_screen: { - enabled: Boolean, - description: String, - welcome_channels: [ - { - description: String, - emoji_id: String, - emoji_name: String, - channel_id: String, - }, - ], - }, - widget_channel_id: String, - widget_enabled: Boolean, -}); - -GuildSchema.virtual("channels", { - ref: ChannelModel, - localField: "id", - foreignField: "guild_id", - justOne: false, - autopopulate: true, -}); - -GuildSchema.virtual("roles", { - ref: RoleModel, - localField: "id", - foreignField: "guild_id", - justOne: false, - autopopulate: true, -}); - -// nested populate is needed for member users: https://gist.github.com/yangsu/5312204 -GuildSchema.virtual("members", { - ref: MemberModel, - localField: "id", - foreignField: "guild_id", - justOne: false, -}); - -GuildSchema.virtual("emojis", { - ref: EmojiModel, - localField: "id", - foreignField: "guild_id", - justOne: false, - autopopulate: true, -}); - -GuildSchema.virtual("joined_at", { - ref: MemberModel, - localField: "id", - foreignField: "guild_id", - justOne: true, -}).get((member: any, virtual: any, doc: any) => { - return member?.joined_at; -}); - -// @ts-ignore -export const GuildModel = db.model("Guild", GuildSchema, "guilds"); diff --git a/util/oldModels/Invite.ts b/util/oldModels/Invite.ts deleted file mode 100644 index 01f12003..00000000 --- a/util/oldModels/Invite.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Schema, Document, Types } from "mongoose"; -import db from "../util/Database"; -import { ChannelModel } from "./Channel"; -import { PublicUserProjection, UserModel } from "./User"; -import { GuildModel } from "./Guild"; - -export interface Invite { - code: string; - temporary: boolean; - uses: number; - max_uses: number; - max_age: number; - created_at: Date; - expires_at: Date; - guild_id: string; - channel_id: string; - inviter_id: string; - - // ? What is this? - target_user_id?: string; - target_user_type?: number; -} - -export interface InviteDocument extends Invite, Document {} - -export const InviteSchema = new Schema({ - code: String, - temporary: Boolean, - uses: Number, - max_uses: Number, - max_age: Number, - created_at: Date, - expires_at: Date, - guild_id: String, - channel_id: String, - inviter_id: String, - - // ? What is this? - target_user_id: String, - target_user_type: Number, -}); - -InviteSchema.virtual("channel", { - ref: ChannelModel, - localField: "channel_id", - foreignField: "id", - justOne: true, - autopopulate: { - select: { - id: true, - name: true, - type: true, - }, - }, -}); - -InviteSchema.virtual("inviter", { - ref: UserModel, - localField: "inviter_id", - foreignField: "id", - justOne: true, - autopopulate: { - select: PublicUserProjection, - }, -}); - -InviteSchema.virtual("guild", { - ref: GuildModel, - localField: "guild_id", - foreignField: "id", - justOne: true, - autopopulate: { - select: { - id: true, - name: true, - splash: true, - banner: true, - description: true, - icon: true, - features: true, - verification_level: true, - vanity_url_code: true, - welcome_screen: true, - nsfw: true, - - // TODO: hide the following entries: - // channels: false, - // roles: false, - // emojis: false, - }, - }, -}); - -// @ts-ignore -export const InviteModel = db.model("Invite", InviteSchema, "invites"); diff --git a/util/oldModels/Member.ts b/util/oldModels/Member.ts deleted file mode 100644 index d1c9ad9b..00000000 --- a/util/oldModels/Member.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { PublicUser, PublicUserProjection, User, UserModel } from "./User"; -import { Schema, Types, Document } from "mongoose"; -import db from "../util/Database"; - -export const PublicMemberProjection = { - id: true, - guild_id: true, - nick: true, - roles: true, - joined_at: true, - pending: true, - deaf: true, - mute: true, - premium_since: true, -}; - -export interface Member { - id: string; - guild_id: string; - nick?: string; - roles: string[]; - joined_at: Date; - premium_since?: number; - deaf: boolean; - mute: boolean; - pending: boolean; - settings: UserGuildSettings; - read_state: Record; - // virtual - user?: User; -} - -export interface MemberDocument extends Member, Document { - id: string; -} - -export interface UserGuildSettings { - channel_overrides: { - channel_id: string; - 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; -} - -export interface MuteConfig { - end_time: number; - selected_time_window: number; -} - -const MuteConfig = { - end_time: Number, - selected_time_window: Number, -}; - -export const MemberSchema = new Schema({ - id: { type: String, required: true }, - guild_id: String, - nick: String, - roles: [String], - joined_at: Date, - premium_since: Number, - deaf: Boolean, - mute: Boolean, - pending: Boolean, - read_state: Object, - settings: { - channel_overrides: [ - { - channel_id: String, - 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, - }, -}); - -MemberSchema.virtual("user", { - ref: UserModel, - localField: "id", - foreignField: "id", - justOne: true, - autopopulate: { - select: PublicUserProjection, - }, -}); - -// @ts-ignore -export const MemberModel = db.model("Member", MemberSchema, "members"); - -// @ts-ignore -export interface PublicMember extends Omit { - user: PublicUser; -} diff --git a/util/oldModels/Message.ts b/util/oldModels/Message.ts deleted file mode 100644 index 15a6f40d..00000000 --- a/util/oldModels/Message.ts +++ /dev/null @@ -1,368 +0,0 @@ -import { Schema, Types, Document } from "mongoose"; -import db from "../util/Database"; -import { PublicUser, PublicUserProjection, UserModel } from "./User"; -import { MemberModel, PublicMember } from "./Member"; -import { Role, RoleModel } from "./Role"; -import { Channel } from "./Channel"; -import { Snowflake } from "../util"; -import { InteractionType } from "./Interaction"; - -export interface Message { - id: string; - channel_id: string; - guild_id?: string; - author_id?: string; - webhook_id?: string; - application_id?: string; - content?: string; - timestamp: Date; - edited_timestamp: Date | null; - tts?: boolean; - mention_everyone?: boolean; - mention_user_ids: string[]; - mention_role_ids: string[]; - mention_channels_ids: string[]; - attachments: Attachment[]; - embeds: Embed[]; - reactions: Reaction[]; - nonce?: string | number; - pinned?: boolean; - type: MessageType; - activity?: { - type: number; - party_id: string; - }; - flags?: bigint; - stickers?: any[]; - message_reference?: { - message_id: string; - channel_id?: string; - guild_id?: string; - }; - interaction?: { - id: string; - type: InteractionType; - name: string; - user_id: string; // the user who invoked the interaction - // user: User; // TODO: autopopulate user - }; - components: MessageComponent[]; - - // * mongoose virtuals: - // TODO: - // application: Application; // TODO: auto pouplate application - author?: PublicUser; - member?: PublicMember; - mentions?: (PublicUser & { - member: PublicMember; - })[]; - mention_roles?: Role[]; - mention_channels?: Channel[]; - created_at?: Date; - // thread // TODO -} - -const PartialEmoji = { - id: String, - name: { type: String, required: true }, - animated: { type: Boolean, required: true }, -}; - -const MessageComponent: any = { - type: { type: Number, required: true }, - style: Number, - label: String, - emoji: PartialEmoji, - custom_id: String, - url: String, - disabled: Boolean, - components: [Object], -}; - -export interface MessageComponent { - type: number; - style?: number; - label?: string; - emoji?: PartialEmoji; - custom_id?: string; - url?: string; - disabled?: boolean; - components: MessageComponent[]; -} - -export enum MessageComponentType { - ActionRow = 1, - Button = 2, -} - -export interface MessageDocument extends Document, Message { - id: string; -} - -export enum MessageType { - DEFAULT = 0, - RECIPIENT_ADD = 1, - RECIPIENT_REMOVE = 2, - CALL = 3, - CHANNEL_NAME_CHANGE = 4, - CHANNEL_ICON_CHANGE = 5, - CHANNEL_PINNED_MESSAGE = 6, - GUILD_MEMBER_JOIN = 7, - USER_PREMIUM_GUILD_SUBSCRIPTION = 8, - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1 = 9, - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2 = 10, - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3 = 11, - CHANNEL_FOLLOW_ADD = 12, - GUILD_DISCOVERY_DISQUALIFIED = 14, - GUILD_DISCOVERY_REQUALIFIED = 15, - REPLY = 19, - APPLICATION_COMMAND = 20, -} - -export interface Attachment { - id: string; // attachment id - filename: string; // name of file attached - size: number; // size of file in bytes - url: string; // source url of file - proxy_url: string; // a proxied url of file - height?: number; // height of file (if image) - width?: number; // width of file (if image) - content_type?: string; -} - -export interface Embed { - title?: string; //title of embed - type?: EmbedType; // type of embed (always "rich" for webhook embeds) - description?: string; // description of embed - url?: string; // url of embed - timestamp?: Date; // timestamp of embed content - color?: number; // color code of the embed - footer?: { - text: string; - icon_url?: string; - proxy_icon_url?: string; - }; // footer object footer information - image?: EmbedImage; // image object image information - thumbnail?: EmbedImage; // thumbnail object thumbnail information - video?: EmbedImage; // video object video information - provider?: { - name?: string; - url?: string; - }; // provider object provider information - author?: { - name?: string; - url?: string; - icon_url?: string; - proxy_icon_url?: string; - }; // author object author information - fields?: { - name: string; - value: string; - inline?: boolean; - }[]; -} - -export enum EmbedType { - rich = "rich", - image = "image", - video = "video", - gifv = "gifv", - article = "article", - link = "link", -} - -export interface EmbedImage { - url?: string; - proxy_url?: string; - height?: number; - width?: number; -} - -export interface Reaction { - count: number; - //// not saved in the database // me: boolean; // whether the current user reacted using this emoji - emoji: PartialEmoji; - user_ids: string[]; -} - -export interface PartialEmoji { - id?: string; - name: string; - animated?: boolean; -} - -export interface AllowedMentions { - parse?: ("users" | "roles" | "everyone")[]; - roles?: string[]; - users?: string[]; - replied_user?: boolean; -} - -export const Attachment = { - id: String, // attachment id - filename: String, // name of file attached - size: Number, // size of file in bytes - url: String, // source url of file - proxy_url: String, // a proxied url of file - height: Number, // height of file (if image) - width: Number, // width of file (if image) - content_type: String, -}; - -export const EmbedImage = { - url: String, - proxy_url: String, - height: Number, - width: Number, -}; - -const Reaction = { - count: Number, - user_ids: [String], - emoji: { - id: String, - name: String, - animated: Boolean, - }, -}; - -export const Embed = { - title: String, //title of embed - type: { type: String }, // type of embed (always "rich" for webhook embeds) - description: String, // description of embed - url: String, // url of embed - timestamp: Date, // timestamp of embed content - color: Number, // color code of the embed - footer: { - text: String, - icon_url: String, - proxy_icon_url: String, - }, // footer object footer information - image: EmbedImage, // image object image information - thumbnail: EmbedImage, // thumbnail object thumbnail information - video: EmbedImage, // video object video information - provider: { - name: String, - url: String, - }, // provider object provider information - author: { - name: String, - url: String, - icon_url: String, - proxy_icon_url: String, - }, // author object author information - fields: [ - { - name: String, - value: String, - inline: Boolean, - }, - ], -}; - -export const MessageSchema = new Schema({ - id: String, - channel_id: String, - author_id: String, - webhook_id: String, - guild_id: String, - application_id: String, - content: String, - timestamp: Date, - edited_timestamp: Date, - tts: Boolean, - mention_everyone: Boolean, - mention_user_ids: [String], - mention_role_ids: [String], - mention_channel_ids: [String], - attachments: [Attachment], - embeds: [Embed], - reactions: [Reaction], - nonce: Schema.Types.Mixed, // can be a long or a string - pinned: Boolean, - type: { type: Number }, - activity: { - type: { type: Number }, - party_id: String, - }, - flags: Types.Long, - stickers: [], - message_reference: { - message_id: String, - channel_id: String, - guild_id: String, - }, - components: [MessageComponent], - // virtual: - // author: { - // ref: UserModel, - // localField: "author_id", - // foreignField: "id", - // justOne: true, - // autopopulate: { select: { id: true, user_data: false } }, - // }, -}); - -MessageSchema.virtual("author", { - ref: UserModel, - localField: "author_id", - foreignField: "id", - justOne: true, - autopopulate: { select: PublicUserProjection }, -}); - -MessageSchema.virtual("member", { - ref: MemberModel, - localField: "author_id", - foreignField: "id", - justOne: true, -}); - -MessageSchema.virtual("mentions", { - ref: UserModel, - localField: "mention_user_ids", - foreignField: "id", - justOne: false, - autopopulate: { select: PublicUserProjection }, -}); - -MessageSchema.virtual("mention_roles", { - ref: RoleModel, - localField: "mention_role_ids", - foreignField: "id", - justOne: false, - autopopulate: true, -}); - -MessageSchema.virtual("mention_channels", { - ref: RoleModel, - localField: "mention_channel_ids", - foreignField: "id", - justOne: false, - autopopulate: { select: { id: true, guild_id: true, type: true, name: true } }, -}); - -MessageSchema.virtual("referenced_message", { - ref: "Message", - localField: "message_reference.message_id", - foreignField: "id", - justOne: true, - autopopulate: true, -}); - -MessageSchema.virtual("created_at").get(function (this: MessageDocument) { - return new Date(Snowflake.deconstruct(this.id).timestamp); -}); - -MessageSchema.set("removeResponse", ["mention_channel_ids", "mention_role_ids", "mention_user_ids", "author_id"]); - -// TODO: missing Application Model -// MessageSchema.virtual("application", { -// ref: Application, -// localField: "mention_role_ids", -// foreignField: "id", -// justOne: true, -// }); - -// @ts-ignore -export const MessageModel = db.model("Message", MessageSchema, "messages"); diff --git a/util/oldModels/RateLimit.ts b/util/oldModels/RateLimit.ts deleted file mode 100644 index 6a0e1ffd..00000000 --- a/util/oldModels/RateLimit.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Schema, Document, Types } from "mongoose"; -import db from "../util/Database"; - -export interface Bucket { - id: "global" | "error" | string; // channel_239842397 | guild_238927349823 | webhook_238923423498 - user_id: string; - hits: number; - blocked: boolean; - expires_at: Date; -} - -export interface BucketDocument extends Bucket, Document { - id: string; -} - -export const BucketSchema = new Schema({ - id: { type: String, required: true }, - user_id: { type: String, required: true }, // bot, user, oauth_application, webhook - hits: { type: Number, required: true }, // Number of times the user hit this bucket - blocked: { type: Boolean, required: true }, - expires_at: { type: Date, required: true }, -}); - -// @ts-ignore -export const BucketModel = db.model("Bucket", BucketSchema, "ratelimits"); diff --git a/util/oldModels/ReadState.ts b/util/oldModels/ReadState.ts deleted file mode 100644 index 9c4fb323..00000000 --- a/util/oldModels/ReadState.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { PublicMember } from "./Member"; -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; - -export interface ReadState extends Document { - message_id: string; - channel_id: string; - user_id: string; - last_message_id?: string; - last_pin_timestamp?: Date; - mention_count: number; - manual: boolean; -} - -export const ReadStateSchema = new Schema({ - message_id: String, - channel_id: String, - user_id: String, - last_message_id: String, - last_pin_timestamp: Date, - mention_count: Number, - manual: Boolean, -}); - -// @ts-ignore -export const ReadStateModel = db.model("ReadState", ReadStateSchema, "readstates"); diff --git a/util/oldModels/Role.ts b/util/oldModels/Role.ts deleted file mode 100644 index c1111c84..00000000 --- a/util/oldModels/Role.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; -import toBigInt from "../util/toBigInt"; - -export interface Role { - id: string; - guild_id: string; - color: number; - hoist: boolean; - managed: boolean; - mentionable: boolean; - name: string; - permissions: bigint; - position: number; - tags?: { - bot_id?: string; - }; -} - -export interface RoleDocument extends Document, Role { - id: string; -} - -export const RoleSchema = new Schema({ - id: String, - guild_id: String, - color: Number, - hoist: Boolean, - managed: Boolean, - mentionable: Boolean, - name: String, - permissions: { type: String, get: toBigInt }, - position: Number, - tags: { - bot_id: String, - }, -}); - -RoleSchema.set("removeResponse", ["guild_id"]); - -// @ts-ignore -export const RoleModel = db.model("Role", RoleSchema, "roles"); diff --git a/util/oldModels/Team.ts b/util/oldModels/Team.ts deleted file mode 100644 index 795c82d2..00000000 --- a/util/oldModels/Team.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface Team { - icon: string | null; - id: string; - members: { - membership_state: number; - permissions: string[]; - team_id: string; - user_id: string; - }[]; - name: string; - owner_user_id: string; -} - -export enum TeamMemberState { - INVITED = 1, - ACCEPTED = 2, -} diff --git a/util/oldModels/Template.ts b/util/oldModels/Template.ts deleted file mode 100644 index ad0f9104..00000000 --- a/util/oldModels/Template.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Schema, model, Types, Document } from "mongoose"; -import db from "../util/Database"; -import { PublicUser, User, UserModel, PublicUserProjection } from "./User"; -import { Guild, GuildModel } from "./Guild"; - -export interface Template extends Document { - id: string; - code: string; - name: string; - description?: string; - usage_count?: number; - creator_id: string; - creator: User; - created_at: Date; - updated_at: Date; - source_guild_id: String; - serialized_source_guild: Guild; -} - -export const TemplateSchema = new Schema({ - id: String, - code: String, - name: String, - description: String, - usage_count: Number, - creator_id: String, - created_at: Date, - updated_at: Date, - source_guild_id: String, -}); - -TemplateSchema.virtual("creator", { - ref: UserModel, - localField: "creator_id", - foreignField: "id", - justOne: true, - autopopulate: { - select: PublicUserProjection, - }, -}); - -TemplateSchema.virtual("serialized_source_guild", { - ref: GuildModel, - localField: "source_guild_id", - foreignField: "id", - justOne: true, - autopopulate: true, -}); - -// @ts-ignore -export const TemplateModel = db.model