# Change Log All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Dev] - 0.5.0 ### Added - [[#416](https://github.com/dirigeants/klasa/pull/416)] Added `KlasaClientOptions.createPiecesFolders` to not create pieces' folders if they do not exist. (kyranet) - [[#398](https://github.com/dirigeants/klasa/pull/398)] Added the `Settings#update(entries: Array<[string, any]>);` overload. (kyranet) - [[#392](https://github.com/dirigeants/klasa/pull/392)] Added support for empty prefixes. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Added the `SETTING_GATEWAY_INVALID_FILTERED_VALUE` language key. (bdistin) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Added `Base` class for schemas, extending `Map`. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Added `SchemaType` and `SchemaTypes` classes. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Added `SchemaPieceOptions.filter`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Added abstract method `SQLProvider#getColumns`. (kyranet) - [[#379](https://github.com/dirigeants/klasa/pull/379)] Added `prefixCaseInsensitive` option in `KlasaClientOptions`. (AdityaTD) - [[#362](https://github.com/dirigeants/klasa/pull/362)] Added `GatewayDriverRegisterOptions.syncArg` for custom arguments for `GatewayDriver#sync()`'s call. (kyranet) - [[#362](https://github.com/dirigeants/klasa/pull/362)] Added `GatewayDriver#@@iterator`. (kyranet) - [[#331](https://github.com/dirigeants/klasa/pull/331)] Added `Gateway#syncQueue` for centralized lazy load cache and memory reduction. (kyranet) - [[#331](https://github.com/dirigeants/klasa/pull/331)] Added `Configuration#synchronizing` getter to check whether a Configuration instance is lazy loading or not. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Added `Util.chunk`. (bdistin) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Added `Util.isPrimitive`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Added `constants.DEFAULTS.QUERYBUILDER`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Added `SQLProvider#updateColumn`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Added `SQLProvider#parseUpdateInput`, `Provider#parseUpdateInput`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Added `QueryBuilder` class util. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Added `Configuration#waitSync()` to wait for the sync to finish. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Added `SQLProvider`. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Added `SchemaPiece#sqlSchema` for consistency with `SchemaFolder#sqlSchema`. (kyranet) - [[#272](https://github.com/dirigeants/klasa/pull/272)] Added `disabledCorePieces` option in `KlasaClientOptions`. (bdistin) - [[#272](https://github.com/dirigeants/klasa/pull/272)] Added `Argument` and `ArgumentStore` classes for argument resolving in `Usage`. (bdistin) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Added `Util.objectToTuples` for object overload -> array overload in `Configuration#update`. (kyranet) - [[#260](https://github.com/dirigeants/klasa/pull/260)] Added support for functions with no arguments in `Language` to be called with a single argument in `Language#get`. (kyranet) - [[#213](https://github.com/dirigeants/klasa/pull/213)] Added `PermissionLevels#remove()`. (bdistin) - [[#210](https://github.com/dirigeants/klasa/pull/210)] Added `PermissionLevelsOptions.fetch` to autofetch uncached members. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] Added property of `ignoreEdits` in monitors for whether a monitor should run in edited messages. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] Added property of `catchUp` in `ScheduledTask`, making the scheduled task not execute if the bot was offline when it was supposed to run, if this option is set to false. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] Added support for static methods and properties in extendables. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] Added the options and properties `event`, `emitter` and `once` to all events. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] Added `onceReady` piece event. (bdistin) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added the key `COMMAND_CONF_NOCHANGE` to the **en-US** language file. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added support for `Configuration#reset(string[]);` to reset multiple keys. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added `util.arraysEqual`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added property `Symbol.iterator` to Schedule. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added `Gateway#toJSON()` and `GatewayDriver#toJSON()`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added `GatewayDriver#register` to be able to register new gateways without events (directly in your `app.js`). (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added `util.getIdentifier` as a replacement for the function validator. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Added `SchemaFolder#keys()`, `SchemaFolder#values()`, `SchemaFolder#entries()` and `SchemaFolder#[@@iterator]()`. Identical to Map's respective methods. (kyranet) - [[#201](https://github.com/dirigeants/klasa/pull/201)] Improve `util.toTitleCase`. (KingDGrizzle) - [[#186](https://github.com/dirigeants/klasa/pull/186)] Added a **load** command. (kyranet) - [[#176](https://github.com/dirigeants/klasa/pull/176)] Added `categorychannel` type to `ArgResolver`. (kyranet) - [[#166](https://github.com/dirigeants/klasa/pull/166)] Added support for TypeScript's `export default` in the loader. (kyranet) - [[#162](https://github.com/dirigeants/klasa/pull/162)] Added better dependent arguments support. (bdistin) - [[#162](https://github.com/dirigeants/klasa/pull/162)] Added subcommand support. (bdistin) - [[#162](https://github.com/dirigeants/klasa/pull/162)] Added per-command custom resolvers and per-command and per-argument custom responses (with i18n support). (bdistin) - [[#159](https://github.com/dirigeants/klasa/pull/159)] Added `Configuration#_syncStatus`. (kyranet) - [[#144](https://github.com/dirigeants/klasa/pull/144)] Added `SchemaPiece#setValidator` and `SchemaPiece#validator`, to "inhibit" certain values to be set. (kyranet) - [[`692e485d2b`](https://github.com/dirigeants/klasa/commit/692e485d2b7af5bf2b1d29c9e2dc4871f2e04f06)] Implemented the wildcards `?`, `H`, and the scheduling definition `@annually`. (bdistin) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `time`, `duration`, `date` and `task` types to `ArgResolver`. (bdistin) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `Duration`, a class helper to resolve human duration input into milliseconds. (bdistin) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added new key to `ClientStorage`: `schedules`. (kyranet) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `CreatingTasks` tutorial. (kyranet) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `arrayPosition` property to `ConfigurationUpdateOptions` to update objects in the middle of an array without removing/pushing. (kyranet) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `taskError` event. (bdistin) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Added `Schedule`, `ScheduledTask` and `Cron` alongside a new piece structure named `Task` and its store, `TaskStore`. (bdistin & kyranet) - [[#152](https://github.com/dirigeants/klasa/pull/152)] Added the possibility to configure each default gateway separately. (kyranet) - [[#146](https://github.com/dirigeants/klasa/pull/146)] Added a Creating Custom Arguments tutorial. (kyranet) - [[`14d2b19a9f`](https://github.com/dirigeants/klasa/commit/14d2b19a9fe62c775e393ee7e60c2b60e0c1fa9e)] Added the possibility to create custom Configuration classes by extending `Gateway#Configuration`. (bdistin) - [[`5130f9db6d`](https://github.com/dirigeants/klasa/commit/5130f9db6d3a5ab12dbb579c16debfc78675d9ec)] Added `Timestamp#displayUTC`. (bdistin) - [[`9f1ee51aa3`](https://github.com/dirigeants/klasa/commit/9f1ee51aa39c3134848e38a3d62d76224a54f05a)] Added `Timestamp.utc`. (bdistin) - [[`266d64b2ba`](https://github.com/dirigeants/klasa/commit/266d64b2ba6f06f31a49826fca470bae3dd28a7a)] Added **blacklist** command. (bdistin) - [[#150](https://github.com/dirigeants/klasa/pull/150)] Added `util.deepClone` to clone objects. (kyranet) - [[#142](https://github.com/dirigeants/klasa/pull/142)] Added several typing-related methods to get deeper (JSDoc) types. (kyranet) - [[#138](https://github.com/dirigeants/klasa/pull/138)] Added `util.getTypeName` to get the input's type. (kyranet) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Added flag arguments. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Added the options `CommandOptions.promptTime` and `CommandOptions.promptLimit`. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Added `KlasaMessage#prompt` - [[#136](https://github.com/dirigeants/klasa/pull/136)] Added CommandPrompt, CommandUsage and TextPrompt classes (fixes [#87](https://github.com/dirigeants/klasa/issues/87)). (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Added the event `finalizerError`. (bdistin) - [[#129](https://github.com/dirigeants/klasa/pull/129)] Added `Util#makeObject` to make objects given a path and a value. (kyranet) - [[#129](https://github.com/dirigeants/klasa/pull/129)] Added `Configuration#update`, much easier to use than `Configuration#updateOne`, `Configuration#updateArray`, and alias of `Configuration#updateMany` when a json object is providen. (kyranet) - [[#130](https://github.com/dirigeants/klasa/pull/130)] Added a new option in `KlasaClientOptions` to allow developers to set their own defaults for each kind of piece. (bdistin) - [[#128](https://github.com/dirigeants/klasa/pull/128)] Added the `monitorError` event. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Added the default gateways to `GatewayDriver` defaulted by null to reflect in the documentation. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Added `Schema` (the previous got renamed to `SchemaFolder`), reducing duplicated code and bringing more code consistency. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Added a private tool that ensures the `content` and `options` in `Message#sendMessage` and aliases are processed correctly while also reducing duplicated code. (kyranet w/ bdistin) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Added a default value for the prefix when not given: `!`. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Added `ProviderStore.default`, returning the default provider (by default `json`, but configurable via `KlasaClientOptions.provider.engine`). (kyranet) - [[#121](https://github.com/dirigeants/klasa/pull/121)] Added `constants` and `Util.mergeDefault` (bdistin) added `Util.isClass` (kyranet) - [[#121](https://github.com/dirigeants/klasa/pull/121)] Added `GatewayStorage`, containing `SettingsGateway`'s core (kyranet) - [[#121](https://github.com/dirigeants/klasa/pull/121)] Added a new gateway called `clientStorage`, for client-wide configs (kyranet) - [[#118](https://github.com/dirigeants/klasa/pull/118)] Now, if you edit the prefix value in `KlasaClientOptions`, the changes will be reflected in the schema. (kyranet) - [[#116](https://github.com/dirigeants/klasa/pull/116)] Added the Timestamp class to replace `moment.js`. (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Added the events `schemaKeyAdd`, `schemaKeyRemove` and `schemaKeyUpdate`. (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Added `isObject` method to `Util`. (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Added `SchemaPiece#modify`, allowing users to modify a SP's options. (kyranet) - [[#113](https://github.com/dirigeants/klasa/pull/113)] Added disableNaturalPrefix. (kyranet) - [[`550ac275c8`](https://github.com/dirigeants/klasa/commit/550ac275c849c285692ffff5c4e99cb53753a85b) ([#109](https://github.com/dirigeants/klasa/pull/109)) Added the keys `COMMAND_EVAL_DESCRIPTION`, `COMMAND_UNLOAD_DESCRIPTION`, `COMMAND_TRANSFER_DESCRIPTION`, `COMMAND_RELOAD_DESCRIPTION`, `COMMAND_REBOOT_DESCRIPTION`, `COMMAND_PING_DESCRIPTION`, `COMMAND_INVITE_DESCRIPTION`, `COMMAND_INFO_DESCRIPTION`, `COMMAND_ENABLE_DESCRIPTION`, `COMMAND_DISABLE_DESCRIPTION`, `COMMAND_CONF_SERVER_DESCRIPTION`, `COMMAND_CONF_SERVER`, `COMMAND_CONF_USER_DESCRIPTION`, `COMMAND_CONF_USER`, `COMMAND_STATS` and `COMMAND_STATS_DESCRIPTION` to the en-US language. (Pandraghon) - [[`6f16689144`](https://github.com/dirigeants/klasa/commit/6f1668914401bfa8d3e08f81594e5eedd514ccce) ([#104](https://github.com/dirigeants/klasa/pull/104)) Added `regexPrefix` as an option for `KlasaClientOptions`. (MrJacz) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) A changelog... (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `KlasaMessage`, `KlasaGuild`, and `KlasaUser`, extending `DiscordJS.Message`, `DiscordJS.Guild` and `DiscordJS.User`, respectively. Many of the getters have turned properties for performance. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `User#configs`, which has an empty schema by default. The developer can take advantage of this, expand the schema, and feature a full featured user configs. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `configUpdateEntry`, `configDeleteEntry` and `configCreateEntry` events. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) `Configuration` class, which all the new update methods from SettingsGateway, featuring full OOP and much easier to use and remember. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) `Schema` and `SchemaPiece` classes, with helper methods that allow the gateway parse and retrieve data much faster, as well as following the OOP paradigm when it comes to modifying the schema and much friendlier to use. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) More options to `GatewayDriver#add`, allowing you to set different providers in different gateway instances. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added **Folder** type (nested objects, yay!). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `SchemaPiece.configurable` to avoid certain keys to be processed by the default conf command. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added **any** type to SettingsResolver. Assigning this type to a SchemaPiece will make it set the property configureable to false, it accepts anything you pass to it, even objects. So you must use dedicated commands to configure these keys instead. (For example, you can store an array of objects with a certain number of properties, something not possible in the previous versions as the conf command cannot parse objects correctly). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** Much better, accurate and faster SchemaPiece validation and parsing. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** Added `Schema.toJSON();`, which converts the classes into a plain JSON object. This method is 27^level times faster than iterating over it with `Object.keys`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added a **Collection** provider. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `Provider.cache`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added GatewaySQL (extends Gateway, overriding the methods for better SQL parsing). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added `Gateway#insertEntry`, which inserts a new `Configuration` entry to the cache and sync if possible. (kyranet) ### Changed - [[#392](https://github.com/dirigeants/klasa/pull/392)] Changed default prefix from `'!'` to `''`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Changed SchemaFolder to extend Schema, which extends Map. All keys are now stored inside the map as opposed to being properties. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Changed `Schema#add` and `Schema#remove` to be synchronous. They must be called before ready. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Changed `GatewayDriver#register`'s arguments to move `schema`'s argument to `GatewayDriverRegisterOptions`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Changed schemas' root to be a `Schema` instance instead of a `SchemaFolder` instance. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Changed `GatewayStorage`'s schema argument to take a Schema instance. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Renamed events `configCreateEntry`, `configDeleteEntry`, and `configUpdateEntry` to `settingsCreateEntry`, `settingsDeleteEntry`, and `settingsUpdateEntry` respectively. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[SEMVER-MAJOR]** `SchemaFolder#add` will not longer throw on conflict, but edit the SchemaPiece or update the SchemaFolder. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] `SchemaPiece#edit` is now able to change any of the SchemaPiece's metadata. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] `Schema#get` (which `SchemaFolder` inherits) now supports paths or arrays. (kyranet) - [[#374](https://github.com/dirigeants/klasa/pull/374)] **[BREAKING]** Renamed `Configuration` to `Settings`. (kyranet) - [[#374](https://github.com/dirigeants/klasa/pull/374)] Renamed `INHIBITOR_REQUIRED_CONFIGS` to `INHIBITOR_REQUIRED_SETTINGS`. (kyranet) - [[#374](https://github.com/dirigeants/klasa/pull/374)] **[BREAKING]** Renamed `KlasaMessage#guildConfigs` to `KlasaMessage#guildSettings`, `KlasaGuild#configs` to `KlasaGuild#settings`, `KlasaClientOptions.preserveConfigs` to `KlasaClientOptions.preserveSettings`, and `Command#requiredConfigs` to `Command#requiredSettings`. (kyranet) - [[#333](https://github.com/dirigeants/klasa/pull/333)] Removed cross-shard individual configuration synchronization in favor of patching the current patched `Configuration` instance. (kyranet) - [[#333](https://github.com/dirigeants/klasa/pull/333)] Changed `configUpdateEntry` event to take only two parameters (patched `Configuration` instance, and the updated keys as `ConfigurationUpdateResultEntry[]`). (kyranet) - [[#332](https://github.com/dirigeants/klasa/pull/332)] Refactored `Configuration#reset`. (kyranet) - [[#330](https://github.com/dirigeants/klasa/pull/330)] Changed Gateway#sync to take an array of ids to sync as opposed to full download. (KingDGrizzle) - [[#320](https://github.com/dirigeants/klasa/pull/320)] **[BREAKING]** Changed the schema file names. (KingDGrizzle) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Changed `SQLProvider#createTable`. SettingsGateway will not provide columns, for consistency with JSON providers. Instead, retrieve the columns from `Gateway`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Changed `SQLProvider#addColumn` to have the arguments `table: string, columns: SchemaFolder | SchemaPiece`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Made `Gateway`'s constructor public in typings. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Made `Configuration#_existsInDB` nullable to denote Configuration instances that have never sync. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Tweaked initial synchronization for performance. (kyranet) - [[#299](https://github.com/dirigeants/klasa/pull/299)] Escape strings from initClean. (KingDGrizzle) - [[#272](https://github.com/dirigeants/klasa/pull/272)] Changed `Monitor#shouldRun` to accept a single argument. (bdistin) - [[#256](https://github.com/dirigeants/klasa/pull/256)] **[BREAKING]** Modified all SettingResolvers to resolve to primitives (string, number, boolean...) or storable data. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Added value array overload to `Configuration#update`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Changed `SchemaFolder#getSQL` to `SchemaFolder#sqlSchema`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Changed `SchemaPiece#sql`'s type from `[string, string]` to `string`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Changed ScheduledTask's default value for the property `data` from `null` to `{}`, allowing object spread to attach the id of the executed task in `Task#run`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Improved performance in `Configuration#update`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored `Gateway#getPath` to take `piece: null` as an option for mixed output. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored `GatewayStorage` to not depend on being inherited. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored `Util.isClass` and `Util.isObject` for a ~5 times performance boost. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored `Util.makeObject` to take an object as third parameter, allowing SettingsGateway's internals to append properties without `Object.assign`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored several utils for memory performance. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Refactored typings to have less code duplication. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Unified `[p]conf list` and `[p]conf get` (and `[p]userconf`) subcommands to `[p]conf show`. (kyranet) - [[#260](https://github.com/dirigeants/klasa/pull/260)] Refactored `Language#get`. (kyranet) - [[#227](https://github.com/dirigeants/klasa/pull/227)] Rewritten the Colors class to be constructable following a design similar to Timestamp's. (bdistin) - [[#213](https://github.com/dirigeants/klasa/pull/213)] Converted the not-set empty object instance to a Symbol for checking empty entries in PermissionLevels. (bdistin) - [[#210](https://github.com/dirigeants/klasa/pull/210)] **[BREAKING]** Changed the level adding to a more consistent format with the rest of the library: replaced `addLevel` to `add` and moved the `break` boolean to `PermissionLevelOptions.break`, which is taken as third parameter. (bdistin) - [[#196](https://github.com/dirigeants/klasa/pull/196)] **[BREAKING]** Moved the array for the argument `appliesTo` in extendables to be an option in `ExtendableOptions`. (bdistin) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Refactored Configuration's internals for maximum consistency and reduced code duplication. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Changed the type for `GatewayDriver#types` from `string[]` to `Set`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Renamed `SchemaPiece#modify()` to `SchemaPiece#edit()`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Renamed `Gateway#getKeys()` and `Gateway#getValues()` to `Gateway#keys(true)` and `Gateway#values(true)` respectively, which return iterators. (kyranet) - [[#184](https://github.com/dirigeants/klasa/pull/184)] `Piece#file` is now consistent between all pieces and it's type of `string[]`. (bdistin) - [[#184](https://github.com/dirigeants/klasa/pull/184)] **[MEM-PERF]** Tweaked `Command` to have category and subCategory properties as getters. (bdistin) - [[#184](https://github.com/dirigeants/klasa/pull/184)] Tweaked all stores to be able to load files in deep folders and abstracted it in `Store` for code reduction. (bdistin) - [[#182](https://github.com/dirigeants/klasa/pull/182)] **[BREAKING]** Refactored all pieces and stores to extend Piece and Store respectively. (bdistin) - [[#176](https://github.com/dirigeants/klasa/pull/176)] Marked several constructors as private (singleton, abstract or discouraged). (kyranet) - [[#162](https://github.com/dirigeants/klasa/pull/162)] Modified the built-in conf command to use `dependant arguments`-like arguments using custom arguments and messages. (bdistin) - [[#162](https://github.com/dirigeants/klasa/pull/162)] **[BREAKING]** Refactored ArgResolver. Now they take `arg`, `possible` and `msg` as parameters instead of `arg`, `currentUsage`, `possible`, `repeat` and `msg`. Repeating handling is now done in the backends. (bdistin) - [[#159](https://github.com/dirigeants/klasa/pull/159)] Made `'id'` a `PRIMARY KEY` in the SQL schema generator. (kyranet) - [[#158](https://github.com/dirigeants/klasa/pull/158)] Refactored typings and JSDoc types. (kyranet) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Tweaked `Configuration#update` to accept the overload `(key: string, value: any, options:ConfigurationUpdateOptions)` as opposed of passing `undefined` in the `guild` field between `value` and `options`. (kyranet) - [[#155](https://github.com/dirigeants/klasa/pull/155)] Complexity reductions for `SchemaFolder#addKey` and `Colors`. (bdistin) - [[`338ebb0eb2`](https://github.com/dirigeants/klasa/commit/338ebb0eb2334810229720eda3abab198d6cc0ba)] Prefixed `Timestamp#_resolveDate`. (bdistin) - [[`f2cc604ead`](https://github.com/dirigeants/klasa/commit/f2cc604eaddf2d6239378b638e4c2fb792455e3d)] Arguments are now trimmed. (bdistin) - [[`4a70f1c271`](https://github.com/dirigeants/klasa/commit/4a70f1c271e233f9884265a5b443afe892822ffa)] Added spaces to blacklist output. (bdistin) - [[#152](https://github.com/dirigeants/klasa/pull/152)] **[BREAKING]** Changed `KlasaClientOptions.provider.engine` to `KlasaClientOptions.providers.default`. (kyranet) - [[#143](https://github.com/dirigeants/klasa/pull/143)] TS' typings cleanup (kyranet) - [[#141](https://github.com/dirigeants/klasa/pull/141)] Added a shard prefix into the `KlasaConsole` class to recognize the shard the message got sent. (bdistin) - [[#138](https://github.com/dirigeants/klasa/pull/138)] Upgraded the built-in eval command, **inspired in tech6hutch's The Duke Of Evals**. (kyranet) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Changed command parsing internals, `KlasaMessage#args` and `KlasaMessage#params` are now readonly and getters from `KlasaMessage#prompter`. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Changed `KlasaClientOptions.promptTime` to `KlasaClientOptions.customPromptDefaults`, changing type from `number` to `KlasaCustomPromptDefaults` aswell. (bdistin) - [[#129](https://github.com/dirigeants/klasa/pull/129)] **[OPTIMIZATION]** Like new entries only store the id, `Configuration#update` will upload only the modified keys rather than all of them when using a `json` database. (kyranet) - [[#130](https://github.com/dirigeants/klasa/pull/130)] Updated the documentation and some outdated typings. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Moved the gateway resolvers from `GatewayDriver` (as getters) to `constants.GATEWAY_RESOLVERS`. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] `Schema#manager` and `SchemaPiece#manager` got renamed to `Schema#gateway` and `SchemaPiece#gateway`. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Updated typings. - [[#125](https://github.com/dirigeants/klasa/pull/125)] Refactored `Timestamp` to be able to show a formatted date with an arbitrary pattern. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Refactored `SchemaFolder` to extend the brand new `Schema` class. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] **[BREAKING]** Changed `KlasaClientConfigs` to `KlasaClientOptions` (kyranet) - [[#121](https://github.com/dirigeants/klasa/pull/121)] **[BREAKING]** Merged `this.client.config` to `this.client.options` (bdistin) - [[#121](https://github.com/dirigeants/klasa/pull/121)] Refactored `Gateway` to extend `GatewayStorage` (kyranet) - [[`550ac275c8`](https://github.com/dirigeants/klasa/commit/550ac275c849c285692ffff5c4e99cb53753a85b)] ([#109](https://github.com/dirigeants/klasa/pull/109)) Translated the description for all commands. (Pandraghon) - [[`550ac275c8`](https://github.com/dirigeants/klasa/commit/550ac275c849c285692ffff5c4e99cb53753a85b)] ([#109](https://github.com/dirigeants/klasa/pull/109)) Nested folders in the configuration will show with a format of `Folder1/Folder2/Folder3/...` instead of `Folder1.folder2.folder3...`. (bdistin and Pandraghon) - [[`63af836277`](https://github.com/dirigeants/klasa/commit/63af836277541695d1d3489397f901b51e7dc23a)] ([#80](https://github.com/dirigeants/klasa/pull/80)) If the command's name contains uppercase characters, they will get lowercased. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** Renamed `Guild#settings` and `Message#guildSettings` to `Guild#configs` and `Message#guildConfigs`, respectively. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** Renamed `client.settings` to `client.gateways`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Renamed the inhibitor `requiredSettings` to `requiredConfigs`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Renamed the key `Command#requiredSettings` to `Command#requiredConfigs`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Added a new option for the `guildDelete` event: `KlasaClientOptions.preserveConfigs`, which, if true, it will not delete the guild configs when the bot leaves a guild. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Renamed SettingsGateway to Gateway. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Renamed SettingsCache to GatewayDriver. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** `GatewayDriver#validate` does not longer have an instance of `SettingResolver` as first parameter, but a bound `this` referring to the GatewayDriver instance. (With access to KlasaClient and SettingResolver). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** `Gateway#get` -> `Gateway#getEntry`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** `Gateway#update` has been completely removed. Use `Configuration#updateOne`, `Configuration#updateArray` or `Configuration#updateMany` instead. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[FEATURE]** `Configuration#updateOne`, `Configuration#updateMany`, `Configuration#reset` and `Configuration#updateArray` can now filter unconfigurable keys if the parameter `avoidUnconfigurable` is passed and set to `true`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) `Gateway#schema` is not longer a plain object, but a `Schema` instance. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** Removed tuplifier in favor of cached tuples. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** Improved updateArray remove method. (~1.85 times faster). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** The cache now updates from the cache instead of re-syncing with the DB. (When using JSON and Collection, Samsung SSD at 600 MB/s read, performance is improved by 97k ops/sec to 53M ops/sec, 454 times faster). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) `Configuration#updateOne` now accepts array type. It'll call the private method that does the parsing for updateArray. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** SQL parsing is now shared with NoSQL, however, SettingsGateway's parsing procedures do not return JSON objects, instead, it returns data compatible for both environments. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** When using `SettingResolver`, SettingsGateway will not longer do `type.toLowerCase()`, but they're lowercased at startup. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[BREAKING]** Gateway do not longer extend SchemaManager and CacheManager, but it's a class by itself. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Made the types that SettingsGateway accepts for the key types dynamic (based on SettingResolver's prototype) and public through `client.gateways.types;`. (kyranet) ### Removed - [[#401](https://github.com/dirigeants/klasa/pull/401)] Removed `Settings#waitSync` in favor of `Settings#sync(?false);`. (kyranet) - [[#398](https://github.com/dirigeants/klasa/pull/398)] Removed the `Settings#update(keys: string[], values: any[])` overload. (kyranet) - [[#391](https://github.com/dirigeants/klasa/pull/391)] Removed `Util.getIdentifier()`. (kyranet) - [[#391](https://github.com/dirigeants/klasa/pull/391)] Removed Gateways' second caching layer. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Removed `bwd/*.schema.json` files. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] **[BREAKING]** Removed `Resolver` and `SettingsResolver` classes. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed `GatewayDriver#resolver` and `GatewayStorage#resolver`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed `GatewayStorage#baseDirectory` and `GatewayStorage#filePath`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed `guildsSchema`, `usersSchema`, and `clientStorageSchema` from `GatewayDriver`. (Unseenfaith) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed abstracted methods `Provider#removeValue` and `SQLProvider#removeValue`. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed `schemaKeyAdd`, `schemaKeyRemove`, and `schemaKeyUpdate` events. (kyranet) - [[#383](https://github.com/dirigeants/klasa/pull/383)] Removed types `GuildSettings`, `SchemaObject`, and `SchemaDefaults` from typings. (kyranet) - [[#343](https://github.com/dirigeants/klasa/pull/343)] Removed `Configuration._merge`, `Configuration._clone`, `Util.applyToClass`, and `Util.arraysEqual`. (kyranet) - [[#331](https://github.com/dirigeants/klasa/pull/331)] Removed `Configuration#_syncStatus`. (kyranet) - [[#323](https://github.com/dirigeants/klasa/pull/323)] Removed every check for selfbot users. (KingDGrizzle) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `GatewayGuildResolvable` type from typings. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `JSONProvider#set` and `JSONProvider#insert`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `Provider#sql` and `SQLProvider#sql`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `SchemaPiece#_generateSQLDatatype` and `SchemaPiece._parseSQLValue`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `SchemaPiece#sql`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `SchemaFolderAddOptions.sql`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `GatewayStorage#sqlSchema`, `SchemaFolder#sqlSchema`, and `SchemaPiece#sqlSchema`. (kyranet) - [[#306](https://github.com/dirigeants/klasa/pull/306)] Removed `Role` and `GuildMember` overloads for `GuildResolvable`. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Removed `GatewayStorage#initTable` and `GatewayStorage#initSchema`, they're now unified in `GatewayStorage#init`. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Removed `force` options in SettingsGateway operations. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Removed `ProviderOptions.cache` and `ProviderOptions.sql` options. (kyranet) - [[#272](https://github.com/dirigeants/klasa/pull/272)] Removed `ArgResolver` class. (bdistin) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Removed `Gateway#getEntry` (mixed getEntry and insertEntry into `Gateway#get`), `Gateway#createEntry`, and `Gateway#insertEntry`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Removed `Gateway#options` and `Gateway#defaultSchema`. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Removed `Provider`'s nice option. As it was only used by the JSON provider. Should use a better system instead. (kyranet) - [[#210](https://github.com/dirigeants/klasa/pull/210)] Removed PermissionLevels#requiredLevels as it's unnecessary do to inherited size parameter. (bdistin) - [[#179](https://github.com/dirigeants/klasa/pull/179)] **[BREAKING]** Removed `SchemaFolder#addKey` and `SchemaFolder#addFolder` in favor to a more consistent `Schema#add`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] **[BREAKING]** Removed `Configuration#resetConfiguration()`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] **[PERF-MEM]** Removed `Configuration#type`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] **[BREAKING]** Removed `SchemaFolder#removeKey` and `SchemaFolder#removeFolder` in favor to a more consistent `Schema#remove`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed the abstract method `resolveString()` from SchemaFolder and SchemaPiece. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed `SchemaFolder#getList` and replaced it to `Configuration#list`. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed the `ConfigUpdateEntryMany` typedef in favor of a more constant type. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed the resolver functions from constants. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed `SchemaFolder#keys` (`Map`) to reduce RAM usage and key caching duplication. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed SettingsGateway function validators. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Removed Collection cache provider (will be moved to klasa-pieces). (kyranet) - [[#159](https://github.com/dirigeants/klasa/pull/159)] Removed deprecated property `GatewayOptions.cache` to be locked to `'collection'`. (kyranet) - [[#158](https://github.com/dirigeants/klasa/pull/158)] `Configuration#updateMany` is now under `Configuration#update`, in favor of a much less confusing naming. (kyranet) - [[`5b0c468362`](https://github.com/dirigeants/klasa/commit/5b0c46836200a57577bbd4aaa5cd463089a3bff0)] Removed `KlasaClient.sharded` as `Client.shard` is now fixed. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Removed `util.newError`. (bdistin) - [[#129](https://github.com/dirigeants/klasa/pull/129)] **[BREAKING]** Removed the methods `Configuration#updateOne`, `Configuration#updateArray`. They're replaced by `Configuration#update`. (kyranet) - [[#130](https://github.com/dirigeants/klasa/pull/130)] Removed `KlasaClientOptions.quotedStringSupport` in favor of the new per-piece defaults. (bdistin) - [[#121](https://github.com/dirigeants/klasa/pull/121)] Removed `GatewaySQL`. (kyranet) - [[#116](https://github.com/dirigeants/klasa/pull/116)] Removed `moment.js` from the dependency list. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed a bunch of extendables. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) **[PERF]** Removed `CommandMessage` proxy in favor of the brand new `KlasaMessage`. As in *Node.js 9.2.0*, Proxy creation performs 37M ops/sec, and property access 1.7M ops/sec (all pieces after Inhibitors use that proxy). As it's now removed, property access should perform around 520M ops/sec (~305 times faster). (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed the `messageDelete` event. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed the `messageDeleteBulk` event. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed the `guildCreate` event. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed the `SQL` class. Replaced by GatewaySQL and Schema/Piece. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed the `CacheManager` class. Replaced by CacheProviders. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed `Gateway#add`. Replaced to `Schema#addKey`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed `Gateway#remove`. Replaced to `Schema#removeKey`. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Removed `SQLProvider#serialize`, `SQLProvider#sanitize`, `SQLProvider#CONSTANTS`. (kyranet) ### Fixed - [[#383](https://github.com/dirigeants/klasa/pull/383)] Fixed abstract `SQLProvider#qb` property being missing in typings. (kyranet) - [[#362](https://github.com/dirigeants/klasa/pull/362)] Fixed object mutation in `GatewayDriver#toJSON()`. (kyranet) - [[#355](https://github.com/dirigeants/klasa/pull/355)] Fixed Schedule not deleting entries that do not exist in ClientStorage but are still cached in Schedule#tasks. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Fixed a bug where SG's cache would download twice when `GatewayDriverRegisterOptions.download` is true. (kyranet) - [[#284](https://github.com/dirigeants/klasa/pull/284)] Fixed `Gateway#parseEntry` not being a function. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Fixed `Util.deepClone` trying to iterate over `WeakMap`s and `WeakSet`s. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Fixed a critical sync issue where `Configuration#_syncStatus` resolved too early. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Fixed many typings bugs. (kyranet) - [[#256](https://github.com/dirigeants/klasa/pull/256)] Fixed multiple bugs in `GatewayDriver#register` and improved performance. (kyranet) - [[#207](https://github.com/dirigeants/klasa/pull/207)] Fixed `Configuration#_parseSingle` not returning the modified array but the updated element. (kyranet) - [[#204](https://github.com/dirigeants/klasa/pull/204)] Fixed `Util.getIdentifier` nullifying numbers and booleans. (kyranet) - [[#203](https://github.com/dirigeants/klasa/pull/203)] Fixed `SettingResolver#integer` and `SettingResolver#float` not accepting `0` as input. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed `Util.deepClone` not cloning full objects. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed `SchemaFolder#_shardSyncSchema` not passing the action as string. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed `null` values in *updateMany*'s pattern not updating nested keys plus individual queries. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed update/reset methods in Configuration not emitting `configEntryCreate` when the entry does not exist. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed the updateMany pattern in Configuration not accepting a guild. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed the **configUpdateEntry** event (used to sync configuration instances across shards) running in non-sharded bots, now it will be disabled if the bot is not sharded. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed `Configuration._patch` not patching after the second nested folder. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed SettingResolver's return types. (kyranet) - [[#179](https://github.com/dirigeants/klasa/pull/179)] Fixed Gateway syncing keys even when it's unused. (kyranet) - [[#184](https://github.com/dirigeants/klasa/pull/184)] Fixed classes and options missing methods and properties in typings. (kyranet) - [[#184](https://github.com/dirigeants/klasa/pull/184)] Fixed `Provider` not having abstract methods in typings. (kyranet) - [[#184](https://github.com/dirigeants/klasa/pull/184)] Fixed typings using `Store` without generic parameters, causing the TypeScript compiler to fail. (kyranet) - [[#182](https://github.com/dirigeants/klasa/pull/182)] Reduced the amount of data stored per-piece, resulting on a RAM usage decrease. (bdistin) - [[#182](https://github.com/dirigeants/klasa/pull/182)] Fixed MessageOptions being not correctly applied to the *send* aliases. (bdistin) - [[#176](https://github.com/dirigeants/klasa/pull/176)] Fixed internal parser ignoring `0` as `min` and/or `max` due to falsy value check. (kyranet) - [[#170](https://github.com/dirigeants/klasa/pull/170)] Fixed guild resolvables not working correctly. (kyranet) - [[#165](https://github.com/dirigeants/klasa/pull/165)] Updated url for peer dependency `discord.js` and fixed all `JSDocs`. (kyranet) - [[#159](https://github.com/dirigeants/klasa/pull/159)] Fixed Timestamp's `'MM'` token not padding with zeroes in the start. (kyranet) - [[#156](https://github.com/dirigeants/klasa/pull/156)] Fixed a bug in Configuration not cloning objects correctly. (kyranet) - [[`35c42296fe`](https://github.com/dirigeants/klasa/commit/35c42296fe2738361dc48e3eee7716cfa73041b9)] Fixed GatewayStorage getting the wrong value. (bdistin) - [[`ab1f7c9ecf`](https://github.com/dirigeants/klasa/commit/ab1f7c9ecfa64e0b25c910ebe03d4f79eb29c8c0)] Fixed a bug where GatewayDriver wasn't checking if the provider was a CacheProvider correctly. (bdistin) - [[`d7b0eaaffc`](https://github.com/dirigeants/klasa/commit/d7b0eaaffc2d136cc5ca257f092630378efa3f6a)] Fixed `KlasaClientOptions.providers`. (bdistin) - [[#153](https://github.com/dirigeants/klasa/pull/153)] Fixed userBlacklist not ignoring the owner. (QuantumlyTangled) - [[`39380f29d4`](https://github.com/dirigeants/klasa/commit/39380f29d4fd908d3af312db7155667b40e9f47f)] Fixed mergeDefault not cloning arrays. (bdistin) - [[`08e5314565`](https://github.com/dirigeants/klasa/commit/08e5314565a4fa4c1cadc904815aaa74aacbc2cd)] Fixed duplication in Timestamp. (bdistin) - [[`9f1ee51aa3`](https://github.com/dirigeants/klasa/commit/9f1ee51aa39c3134848e38a3d62d76224a54f05a)] Fixed guildBlacklist being unable to add guilds where the bot is not in. (bdistin) - [[`649d088c06`](https://github.com/dirigeants/klasa/commit/649d088c0684d6658e7438296f22b16caf97b249)] Fixed multiple non repeating in Usage. (bdistin) - [[`d9459c78c7`](https://github.com/dirigeants/klasa/commit/d9459c78c73f1f07cd8965d55119079f69536fde)] Fixed the stats command not initializing the variables correctly. (bdistin) - [[#145](https://github.com/dirigeants/klasa/pull/145)] Fixed ClientStorage configs not updating across shards, and added a missing check in some `broadcastEval`s. (kyranet) - [[#150](https://github.com/dirigeants/klasa/pull/150)] Fixed a wrong type in typings. (kyranet) - [[#150](https://github.com/dirigeants/klasa/pull/150)] Fixed a bug where some objects would be partially cloned when adding new keys or defaulting. (kyranet) - [[#142](https://github.com/dirigeants/klasa/pull/142)] Fixed a critical bug in nested objects when using the JSON provider. Note: `Object.assign` doesn't merge nested objects. (kyranet) - [[#141](https://github.com/dirigeants/klasa/pull/141)] Fixed `KlasaConsoleConfigs` not defaulting correctly. (bdistin) - [[#141](https://github.com/dirigeants/klasa/pull/141)] Fixed wrong sharding behaviour when using PM2 in a non-sharded bot. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Fixed prompt bug [#78](https://github.com/dirigeants/klasa/issues/78). (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Fixed an unknown issue with sync providers. (bdistin) - [[#136](https://github.com/dirigeants/klasa/pull/136)] Fixed finalizers erroring incorrectly. (bdistin) - [[#135](https://github.com/dirigeants/klasa/pull/135)] Fixed `SchemaFolder#addFolder` not working correctly. (kyranet) - [[#131](https://github.com/dirigeants/klasa/pull/131)] Fixed Configuration's `updateMany` not parsing arrays. (kyranet) - [[#129](https://github.com/dirigeants/klasa/pull/129)] Fixed identifiers not being resolved correctly when using `Configuration#update`. (kyranet) - [[#129](https://github.com/dirigeants/klasa/pull/129)] Fixed both config commands not removing the entries. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Fixed many typos in the documentation. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Fixed `MessageOptions` not being correctly handled with `StringResolvable`, resulting on code like `msg.send({ embed });` to fail. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Fixed a serious security issue in `Configuration#get`. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Now instances of `Gateway` and `Schema` cannot re-init twice. (kyranet) - [[#125](https://github.com/dirigeants/klasa/pull/125)] Fixed many typos and many JSDocs. IntelliSense should work better now. (kyranet) - [[#118](https://github.com/dirigeants/klasa/pull/118)] Fixed `SchemaPiece#modify` not editing the datatype from the SQL database when using a SQL provider. (kyranet) - [[#118](https://github.com/dirigeants/klasa/pull/118)] Fixed `NULL` not being resolved correctly in `_parseSQLValue` (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Fixed Schema's updates not reflecting in other shards. (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Fixed some issues from ESLint's betrayal. (MrJacz with kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Improved object check for `Message#sendMessage` and `Message#send`. (kyranet) - [[#115](https://github.com/dirigeants/klasa/pull/115)] Fixed typings not including the `isFunction` method in Util. (kyranet) - [[#114](https://github.com/dirigeants/klasa/pull/114)] Fixed a typo in `UnderstandingSettingsGateway.md`. (Pandraghon) - [[`ede5894763`](https://github.com/dirigeants/klasa/commit/ede58947635bba77ebac32e94551e6246a61d1ad)] Fixed a typo in the help command. (bdistin) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) A lot of things in Typings and marked a lot of private methods properly. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Typos in languages. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Fixed `GatewayDriver#validate` not working properly. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) The eval command being unable to catch certain errors. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Fixed the JSON provider throwing errors. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Fixed multiple minor issues. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) Store loader not showing error stack. (kyranet) - [[`2915d31b92`](https://github.com/dirigeants/klasa/commit/2915d31b92c8ea4b9202edfdb146a2d8b36ad8d6)] ([#43](https://github.com/dirigeants/klasa/pull/43)) JSON provider loading files that are not JSON. (kyranet)