[
    {
        "DisplayName": "App Download Type",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "Sets how to download the app. Specify the App Download Source and the relevant Git repo or GitHub release settings accordingly. Update the app after changing this setting",
        "Keywords": "download,type",
        "FieldName": "DownloadType",
        "InputType": "enum",
        "IsFlagArgument": false,
        "ParamFieldName": "DownloadType",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Required": true,
        "EnumValues": {
            "": "--Please select--",
            "DownloadURL": "Download URL",
            "GithubRelease": "GitHub release",
            "GitRepo": "Git repo",
            "None": "None"
        }
    },
    {
        "DisplayName": "App Download Source",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "Sets the source for the App Download Type. Git repo = URL that ends in .git. GitHub release = User/Repo. Download URL = URL to a zip file. Update the app after changing this setting",
        "Keywords": "download,source",
        "FieldName": "DownloadSource",
        "InputType": "text",
        "IsFlagArgument": false,
        "ParamFieldName": "DownloadSource",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Placeholder": "https://github.com/IceOfWraith/IceBot.git",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Branch",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the branch if required. Empty = default branch",
        "Keywords": "git,repo,branch,DownloadBranch",
        "FieldName": "DownloadBranch",
        "InputType": "text",
        "ParamFieldName": "DownloadBranch",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Username",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the username if login is required",
        "Keywords": "git,repo,username,DownloadUsername",
        "FieldName": "DownloadUsername",
        "InputType": "text",
        "ParamFieldName": "DownloadUsername",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Password/Token",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the password/token if login is required",
        "Keywords": "git,repo,password,token,DownloadPassword",
        "FieldName": "DownloadPassword",
        "InputType": "Password",
        "ParamFieldName": "DownloadPassword",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "GitHub Release Filename",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"GitHub release\" is selected under App Download Type, sets the name of the zip file to download",
        "Keywords": "github,release,filename",
        "FieldName": "DownloadFilename",
        "InputType": "text",
        "IsFlagArgument": false,
        "ParamFieldName": "DownloadFilename",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Placeholder": "discordbot.zip",
        "EnumValues": {}
    },
    {
        "DisplayName": "GitHub Release Version",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"GitHub release\" is selected under App Download Type, sets the release version to download. Empty = latest",
        "Keywords": "github,release,version",
        "FieldName": "DownloadVersion",
        "InputType": "text",
        "IsFlagArgument": false,
        "ParamFieldName": "DownloadVersion",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Placeholder": "1.0.0",
        "EnumValues": {}
    },
    {
        "DisplayName": "Node.js Release Stream",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the Node.js release stream from which to install the latest version (including the corresponding npm package), unless a specific version is specified under Node.js Version. Update the server after changing this setting",
        "Keywords": "node,nodejs,release,stream,NodeRelease",
        "FieldName": "NodeRelease",
        "InputType": "enum",
        "ParamFieldName": "NodeRelease",
        "DefaultValue": "22",
        "EnumValues": {
            "26": "26",
            "25": "25",
            "24": "24",
            "23": "23",
            "22": "22 - LTS (default)",
            "21": "21",
            "20": "20 - LTS",
            "19": "19",
            "18": "18 - LTS",
            "17": "17",
            "16": "16 - LTS",
            "15": "15",
            "14": "14 - LTS",
            "13": "13",
            "12": "12 - LTS",
            "11": "11",
            "10": "10 - LTS",
            "9": "9",
            "8": "8 - LTS",
            "7": "7",
            "6": "6 - LTS",
            "5": "5",
            "4": "4 - LTS"
        }
    },
    {
        "DisplayName": "Node.js Version",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the [Node.js version](https://nodejs.org/download/release/) to install. Format: v22.12.0. Empty = latest version for the release stream specified under Node.js Release Stream. Update the server after changing this setting",
        "Keywords": "node,nodejs,version,NodeVersion",
        "FieldName": "NodeVersion",
        "InputType": "text",
        "ParamFieldName": "NodeVersion",
        "DefaultValue": "",
        "Placeholder": "v22.12.0",
        "EnumValues": {}
    },
    {
        "DisplayName": "npm Install Type",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Specify \"npm i\" to use a packages.json or specify \"npm ci\" to use a packages-lock.json. If \"Specific packages\" is chosen you must enter the packages under Specific npm Packages",
        "Keywords": "npm,install,type",
        "FieldName": "NpmInstallType",
        "InputType": "enum",
        "ParamFieldName": "NpmInstallType",
        "DefaultValue": "npmi",
        "EnumValues": {
            "none": "None",
            "npmi": "npm i (default)",
            "npmci": "npm ci (clean install)",
            "specify": "Specific packages"
        }
    },
    {
        "DisplayName": "Specific npm Packages",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Specify any additional npm packages to install separated by a space. Select \"Specific packages\" for the npm Install Type",
        "Keywords": "additional,npm,packages",
        "FieldName": "NpmPackages",
        "InputType": "text",
        "ParamFieldName": "NpmPackages",
        "DefaultValue": "",
        "Placeholder": "express fastify socket.io",
        "EnumValues": {}
    },
    {
        "DisplayName": "Run App Setup Commands",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "If enabled, the command(s) specified under App Setup Commands will be run when the server is updated and after the app is installed",
        "Keywords": "app,setup,command,RunAppSetupCommands",
        "FieldName": "RunAppSetupCommands",
        "InputType": "checkbox",
        "ParamFieldName": "RunAppSetupCommands",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "App Setup Commands",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets any required command(s) to run to set up the app after it is installed, if Run App Setup Commands is enabled. Linux: command1; command2 | Windows: command1 & command2. Include \"node\", \"npm\" or \"npx\" as needed",
        "Keywords": "app,setup,command,AppSetupCommands",
        "FieldName": "AppSetupCommands",
        "InputType": "text",
        "ParamFieldName": "AppSetupCommands",
        "DefaultValue": "",
        "Placeholder": "node setup.js | npm run build",
        "EnumValues": {}
    },
    {
        "DisplayName": "Run App Pre-start Commands",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "If enabled, the command(s) specified under App Pre-start Commands will be run immediately before each app start",
        "Keywords": "app,prestart,pre-start,command,RunAppPrestartCommands",
        "FieldName": "RunAppPrestartCommands",
        "InputType": "checkbox",
        "ParamFieldName": "RunAppPrestartCommands",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "App Pre-start Commands",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets any required command(s) to run immediately before each app start, if Run App Pre-start Commands is enabled. Linux: command1; command2 | Windows: command1 & command2. Include \"node\", \"npm\" or \"npx\" as needed",
        "Keywords": "app,prestart,pre-start,command,AppPrestartCommands",
        "FieldName": "AppPrestartCommands",
        "InputType": "text",
        "ParamFieldName": "AppPrestartCommands",
        "DefaultValue": "",
        "Placeholder": "node deploy-commands.js | npm run deploy",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Name",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the name of the Node.js app to execute. Do not include \"node\" in front. Include any relative path from the base directory or App Installation Location, if applicable. For apps that are otherwise run with npm, specify the corresponding Node.js app identified in packages.json",
        "Keywords": "app,application,name",
        "FieldName": "ApplicationName",
        "InputType": "text",
        "IsFlagArgument": false,
        "ParamFieldName": "ApplicationName",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Placeholder": "index.js | build/main.js",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Installation Location",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets any applicable subdirectory path (under the base directory) that the app is installed in. This will set the working directory for running the app accordingly",
        "Keywords": "app,application,location,directory,subdirectory,path,ApplicationLocation",
        "FieldName": "ApplicationLocation",
        "InputType": "text",
        "ParamFieldName": "ApplicationLocation",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Node.js Command Line Arguments",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets Node.js command line arguments (not app command line arguments) to include as startup parameters",
        "Keywords": "node,command,line,arguments,args",
        "FieldName": "NodeArgs",
        "InputType": "text",
        "ParamFieldName": "NodeArgs",
        "DefaultValue": "",
        "Placeholder": "--value1=foo --value2=bar",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Environment Variables",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "To set a list of environment variables to run the app with, create a '.env' file in the working directory. For example, this may include a [Discord bot token](https://discord.com/developers/applications/). Consult any example '.env' file included with the app for relevant variables to specify",
        "Keywords": "environment,variables,EnvVars",
        "FieldName": "EnvVars",
        "InputType": "hidden",
        "ParamFieldName": "EnvVars",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Command Line Arguments",
        "Category": "NodeJS App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets app command line arguments (not Node.js command line arguments) to include as startup parameters",
        "Keywords": "app,command,line,arguments,args",
        "FieldName": "CommandLineArgs",
        "InputType": "text",
        "IsFlagArgument": false,
        "ParamFieldName": "CommandLineArgs",
        "IncludeInCommandLine": false,
        "DefaultValue": "",
        "Placeholder": "value1=foo value2=bar",
        "EnumValues": {}
    }
]