Added formatters to all built-in config files.
Added formatters to all built-in JSON config files for the Open Ticket interactive CLI. The new save() feature from the ODJsonConfig class will be using this formatter to save the config to the filesystem.
This commit is contained in:
@@ -1,12 +1,374 @@
|
||||
import {opendiscord, api, utilities} from "../../index"
|
||||
import * as fjs from "formatted-json-stringify"
|
||||
|
||||
export const loadAllConfigs = async () => {
|
||||
const devconfigFlag = opendiscord.flags.get("opendiscord:dev-config")
|
||||
const isDevconfig = devconfigFlag ? devconfigFlag.value : false
|
||||
|
||||
/** How to add more config variables?
|
||||
* - Add the variable to the config files in `./config/` & `./devconfig/`.
|
||||
* - Add the variable to the config in ./src/core/api/defaults/config.ts (interfaces + types)
|
||||
* - Add the variable to the config checker in ./src/data/framework/checkerLoader.ts
|
||||
* - Make sure it's compatible with the Interactive Setup CLI.
|
||||
* - Make sure the Migration Manager automatically adds the variable when missing.
|
||||
* - Add the variable to the formatters in this file.
|
||||
* - Update the documentation reference.
|
||||
*/
|
||||
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:general","general.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:options","options.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:panels","panels.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:questions","questions.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:transcripts","transcripts.json",(isDevconfig) ? "./devconfig/" : "./config/"))
|
||||
}
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:general","general.json",(isDevconfig) ? "./devconfig/" : "./config/",defaultGeneralFormatter))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:questions","questions.json",(isDevconfig) ? "./devconfig/" : "./config/",defaultQuestionsFormatter))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:options","options.json",(isDevconfig) ? "./devconfig/" : "./config/",defaultOptionsFormatter))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:panels","panels.json",(isDevconfig) ? "./devconfig/" : "./config/",defaultPanelsFormatter))
|
||||
opendiscord.configs.add(new api.ODJsonConfig("opendiscord:transcripts","transcripts.json",(isDevconfig) ? "./devconfig/" : "./config/",defaultTranscriptsFormatter))
|
||||
}
|
||||
|
||||
//FORMATTERS
|
||||
export const defaultGeneralFormatter = new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.ObjectFormatter("_INFO",true,[
|
||||
new fjs.PropertyFormatter("support"),
|
||||
new fjs.PropertyFormatter("discord"),
|
||||
new fjs.PropertyFormatter("version"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("token"),
|
||||
new fjs.PropertyFormatter("tokenFromENV"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("mainColor"),
|
||||
new fjs.PropertyFormatter("language"),
|
||||
new fjs.PropertyFormatter("prefix"),
|
||||
new fjs.PropertyFormatter("serverId"),
|
||||
new fjs.ArrayFormatter("globalAdmins",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("slashCommands"),
|
||||
new fjs.PropertyFormatter("textCommands"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("status",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.PropertyFormatter("text"),
|
||||
new fjs.PropertyFormatter("status"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("system",true,[
|
||||
new fjs.PropertyFormatter("removeParticipantsOnClose"),
|
||||
new fjs.PropertyFormatter("replyOnTicketCreation"),
|
||||
new fjs.PropertyFormatter("replyOnReactionRole"),
|
||||
new fjs.PropertyFormatter("useTranslatedConfigChecker"),
|
||||
new fjs.PropertyFormatter("preferSlashOverText"),
|
||||
new fjs.PropertyFormatter("sendErrorOnUnknownCommand"),
|
||||
new fjs.PropertyFormatter("questionFieldsInCodeBlock"),
|
||||
new fjs.PropertyFormatter("disableVerifyBars"),
|
||||
new fjs.PropertyFormatter("useRedErrorEmbeds"),
|
||||
new fjs.PropertyFormatter("emojiStyle"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("enableTicketClaimButtons"),
|
||||
new fjs.PropertyFormatter("enableTicketCloseButtons"),
|
||||
new fjs.PropertyFormatter("enableTicketPinButtons"),
|
||||
new fjs.PropertyFormatter("enableTicketDeleteButtons"),
|
||||
new fjs.PropertyFormatter("enableTicketActionWithReason"),
|
||||
new fjs.PropertyFormatter("enableDeleteWithoutTranscript"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("logs",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("channel"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("limits",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("globalMaximum"),
|
||||
new fjs.PropertyFormatter("userMaximum"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("permissions",true,[
|
||||
new fjs.PropertyFormatter("help"),
|
||||
new fjs.PropertyFormatter("panel"),
|
||||
new fjs.PropertyFormatter("ticket"),
|
||||
new fjs.PropertyFormatter("close"),
|
||||
new fjs.PropertyFormatter("delete"),
|
||||
new fjs.PropertyFormatter("reopen"),
|
||||
new fjs.PropertyFormatter("claim"),
|
||||
new fjs.PropertyFormatter("unclaim"),
|
||||
new fjs.PropertyFormatter("pin"),
|
||||
new fjs.PropertyFormatter("unpin"),
|
||||
new fjs.PropertyFormatter("move"),
|
||||
new fjs.PropertyFormatter("rename"),
|
||||
new fjs.PropertyFormatter("add"),
|
||||
new fjs.PropertyFormatter("remove"),
|
||||
new fjs.PropertyFormatter("blacklist"),
|
||||
new fjs.PropertyFormatter("stats"),
|
||||
new fjs.PropertyFormatter("clear"),
|
||||
new fjs.PropertyFormatter("autoclose"),
|
||||
new fjs.PropertyFormatter("autodelete"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("messages",true,[
|
||||
new fjs.DefaultFormatter("creation",false),
|
||||
new fjs.DefaultFormatter("closing",false),
|
||||
new fjs.DefaultFormatter("deleting",false),
|
||||
new fjs.DefaultFormatter("reopening",false),
|
||||
new fjs.DefaultFormatter("claiming",false),
|
||||
new fjs.DefaultFormatter("pinning",false),
|
||||
new fjs.DefaultFormatter("adding",false),
|
||||
new fjs.DefaultFormatter("removing",false),
|
||||
new fjs.DefaultFormatter("renaming",false),
|
||||
new fjs.DefaultFormatter("moving",false),
|
||||
new fjs.DefaultFormatter("blacklisting",false),
|
||||
new fjs.DefaultFormatter("roleAdding",false),
|
||||
new fjs.DefaultFormatter("roleRemoving",false),
|
||||
]),
|
||||
]),
|
||||
])
|
||||
|
||||
export const defaultQuestionsFormatter = new fjs.ArrayFormatter(null,true,new fjs.ObjectSwitchFormatter(null,[
|
||||
{key:"type",value:"short",formatter:new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("required"),
|
||||
new fjs.PropertyFormatter("placeholder"),
|
||||
new fjs.ObjectFormatter("length",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("min"),
|
||||
new fjs.PropertyFormatter("max"),
|
||||
]),
|
||||
])},
|
||||
{key:"type",value:"paragraph",formatter:new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("required"),
|
||||
new fjs.PropertyFormatter("placeholder"),
|
||||
new fjs.ObjectFormatter("length",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("min"),
|
||||
new fjs.PropertyFormatter("max"),
|
||||
]),
|
||||
])}
|
||||
]))
|
||||
|
||||
|
||||
export const defaultOptionsFormatter = new fjs.ArrayFormatter(null,true,new fjs.ObjectSwitchFormatter(null,[
|
||||
{key:"type",value:"ticket",formatter:new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("button",true,[
|
||||
new fjs.PropertyFormatter("emoji"),
|
||||
new fjs.PropertyFormatter("label"),
|
||||
new fjs.PropertyFormatter("color"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ArrayFormatter("ticketAdmins",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.ArrayFormatter("readonlyAdmins",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.PropertyFormatter("allowCreationByBlacklistedUsers"),
|
||||
new fjs.ArrayFormatter("questions",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("channel",true,[
|
||||
new fjs.PropertyFormatter("prefix"),
|
||||
new fjs.PropertyFormatter("suffix"),
|
||||
new fjs.PropertyFormatter("category"),
|
||||
new fjs.PropertyFormatter("backupCategory"),
|
||||
new fjs.PropertyFormatter("closedCategory"),
|
||||
new fjs.ArrayFormatter("claimedCategory",true,new fjs.ObjectFormatter(null,false,[
|
||||
new fjs.PropertyFormatter("user"),
|
||||
new fjs.PropertyFormatter("category"),
|
||||
])),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("dmMessage",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("text"),
|
||||
new fjs.ObjectFormatter("embed",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("title"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.PropertyFormatter("customColor"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("image"),
|
||||
new fjs.PropertyFormatter("thumbnail"),
|
||||
new fjs.ArrayFormatter("fields",true,new fjs.ObjectFormatter(null,false,[
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("value"),
|
||||
new fjs.PropertyFormatter("inline"),
|
||||
])),
|
||||
new fjs.PropertyFormatter("timestamp"),
|
||||
]),
|
||||
]),
|
||||
new fjs.ObjectFormatter("ticketMessage",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("text"),
|
||||
new fjs.ObjectFormatter("embed",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("title"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.PropertyFormatter("customColor"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("image"),
|
||||
new fjs.PropertyFormatter("thumbnail"),
|
||||
new fjs.ArrayFormatter("fields",true,new fjs.ObjectFormatter(null,false,[
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("value"),
|
||||
new fjs.PropertyFormatter("inline"),
|
||||
])),
|
||||
new fjs.PropertyFormatter("timestamp"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("ping",true,[
|
||||
new fjs.PropertyFormatter("@here"),
|
||||
new fjs.PropertyFormatter("@everyone"),
|
||||
new fjs.ArrayFormatter("custom",true,new fjs.PropertyFormatter(null)),
|
||||
]),
|
||||
]),
|
||||
new fjs.ObjectFormatter("autoclose",true,[
|
||||
new fjs.PropertyFormatter("enableInactiveHours"),
|
||||
new fjs.PropertyFormatter("inactiveHours"),
|
||||
new fjs.PropertyFormatter("enableUserLeave"),
|
||||
new fjs.PropertyFormatter("disableOnClaim"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("autodelete",true,[
|
||||
new fjs.PropertyFormatter("enableInactiveDays"),
|
||||
new fjs.PropertyFormatter("inactiveDays"),
|
||||
new fjs.PropertyFormatter("enableUserLeave"),
|
||||
new fjs.PropertyFormatter("disableOnClaim"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("cooldown",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("cooldownMinutes"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("limits",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("globalMaximum"),
|
||||
new fjs.PropertyFormatter("userMaximum"),
|
||||
]),
|
||||
])},
|
||||
{key:"type",value:"website",formatter:new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("button",true,[
|
||||
new fjs.PropertyFormatter("emoji"),
|
||||
new fjs.PropertyFormatter("label"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("url"),
|
||||
])},
|
||||
{key:"type",value:"role",formatter:new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.PropertyFormatter("type"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ObjectFormatter("button",true,[
|
||||
new fjs.PropertyFormatter("emoji"),
|
||||
new fjs.PropertyFormatter("label"),
|
||||
new fjs.PropertyFormatter("color"),
|
||||
]),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.ArrayFormatter("roles",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.PropertyFormatter("mode"),
|
||||
new fjs.ArrayFormatter("removeRolesOnAdd",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.PropertyFormatter("addOnMemberJoin"),
|
||||
])}
|
||||
]))
|
||||
|
||||
export const defaultPanelsFormatter = new fjs.ArrayFormatter(null,true,new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.PropertyFormatter("id"),
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("dropdown"),
|
||||
new fjs.ArrayFormatter("options",false,new fjs.PropertyFormatter(null)),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("text"),
|
||||
new fjs.ObjectFormatter("embed",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.PropertyFormatter("title"),
|
||||
new fjs.PropertyFormatter("description"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("customColor"),
|
||||
new fjs.PropertyFormatter("url"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("image"),
|
||||
new fjs.PropertyFormatter("thumbnail"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("footer"),
|
||||
new fjs.ArrayFormatter("fields",true,new fjs.ObjectFormatter(null,false,[
|
||||
new fjs.PropertyFormatter("name"),
|
||||
new fjs.PropertyFormatter("value"),
|
||||
new fjs.PropertyFormatter("inline"),
|
||||
])),
|
||||
new fjs.PropertyFormatter("timestamp"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("settings",true,[
|
||||
new fjs.PropertyFormatter("dropdownPlaceholder"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("enableMaxTicketsWarningInText"),
|
||||
new fjs.PropertyFormatter("enableMaxTicketsWarningInEmbed"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("describeOptionsLayout"),
|
||||
new fjs.PropertyFormatter("describeOptionsCustomTitle"),
|
||||
new fjs.PropertyFormatter("describeOptionsInText"),
|
||||
new fjs.PropertyFormatter("describeOptionsInEmbedFields"),
|
||||
new fjs.PropertyFormatter("describeOptionsInEmbedDescription"),
|
||||
]),
|
||||
]))
|
||||
|
||||
export const defaultTranscriptsFormatter = new fjs.ObjectFormatter(null,true,[
|
||||
new fjs.ObjectFormatter("general",true,[
|
||||
new fjs.PropertyFormatter("enabled"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("enableChannel"),
|
||||
new fjs.PropertyFormatter("enableCreatorDM"),
|
||||
new fjs.PropertyFormatter("enableParticipantDM"),
|
||||
new fjs.PropertyFormatter("enableActiveAdminDM"),
|
||||
new fjs.PropertyFormatter("enableEveryAdminDM"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("channel"),
|
||||
new fjs.PropertyFormatter("mode"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("embedSettings",true,[
|
||||
new fjs.PropertyFormatter("customColor"),
|
||||
new fjs.PropertyFormatter("listAllParticipants"),
|
||||
new fjs.PropertyFormatter("includeTicketStats"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("textTranscriptStyle",true,[
|
||||
new fjs.PropertyFormatter("layout"),
|
||||
new fjs.PropertyFormatter("includeStats"),
|
||||
new fjs.PropertyFormatter("includeIds"),
|
||||
new fjs.PropertyFormatter("includeEmbeds"),
|
||||
new fjs.PropertyFormatter("includeFiles"),
|
||||
new fjs.PropertyFormatter("includeBotMessages"),
|
||||
new fjs.TextFormatter(""),
|
||||
new fjs.PropertyFormatter("fileMode"),
|
||||
new fjs.PropertyFormatter("customFileName"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("htmlTranscriptStyle",true,[
|
||||
new fjs.ObjectFormatter("background",true,[
|
||||
new fjs.PropertyFormatter("enableCustomBackground"),
|
||||
new fjs.PropertyFormatter("backgroundColor"),
|
||||
new fjs.PropertyFormatter("backgroundImage"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("header",true,[
|
||||
new fjs.PropertyFormatter("enableCustomHeader"),
|
||||
new fjs.PropertyFormatter("backgroundColor"),
|
||||
new fjs.PropertyFormatter("decoColor"),
|
||||
new fjs.PropertyFormatter("textColor"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("stats",true,[
|
||||
new fjs.PropertyFormatter("enableCustomStats"),
|
||||
new fjs.PropertyFormatter("backgroundColor"),
|
||||
new fjs.PropertyFormatter("keyTextColor"),
|
||||
new fjs.PropertyFormatter("valueTextColor"),
|
||||
new fjs.PropertyFormatter("hideBackgroundColor"),
|
||||
new fjs.PropertyFormatter("hideTextColor"),
|
||||
]),
|
||||
new fjs.ObjectFormatter("favicon",true,[
|
||||
new fjs.PropertyFormatter("enableCustomFavicon"),
|
||||
new fjs.PropertyFormatter("imageUrl"),
|
||||
]),
|
||||
]),
|
||||
])
|
||||
Reference in New Issue
Block a user