owncast/web/types/config-section.ts
Jannik be5243f5f8 Update Next to 11.0.1 (including lint & import fixes) (#248)
* Bump next from 10.2.3 to 11.0.1

Bumps [next](https://github.com/vercel/next.js) from 10.2.3 to 11.0.1.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v10.2.3...v11.0.1)

---
updated-dependencies:
- dependency-name: next
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* 🚨 apply automatic linting

* 🎨 remove unused imports

* 🔇 allow console.* to give more debugging options

* 🎨 move stuff around to reduce linter messages

* 🚨 use destructuring so lint won't complain

* 📌 link Chartkick and Chart.js

Commit uses the linking code which was previously imported with
`import "chartkick/chart.js" [1]. Next did not like the import path,
but this does works now. ¯\_(ツ)_/¯

[1]: https://github.com/ankane/chartkick.js/blob/master/chart.js/chart.esm.js

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-09 11:42:01 -07:00

106 lines
2.1 KiB
TypeScript

// TS types for elements on the Config pages
// for dropdown
export interface SocialHandleDropdownItem {
icon: string;
platform: string;
key: string;
}
export type FieldUpdaterFunc = (args: UpdateArgs) => void;
export interface UpdateArgs {
value: any;
fieldName?: string;
path?: string;
}
export interface ApiPostArgs {
apiPath: string;
data: object;
onSuccess?: (arg: any) => void;
onError?: (arg: any) => void;
}
export interface ConfigDirectoryFields {
enabled: boolean;
instanceUrl: string;
}
export interface ConfigInstanceDetailsFields {
customStyles: string;
extraPageContent: string;
logo: string;
name: string;
nsfw: boolean;
socialHandles: SocialHandle[];
streamTitle: string;
summary: string;
tags: string[];
title: string;
welcomeMessage: string;
}
export type CpuUsageLevel = 1 | 2 | 3 | 4 | 5;
// from data
export interface SocialHandle {
platform: string;
url: string;
}
export interface VideoVariant {
key?: number; // unique identifier generated on client side just for ant table rendering
cpuUsageLevel: CpuUsageLevel;
framerate: number;
audioPassthrough: boolean;
audioBitrate: number;
videoPassthrough: boolean;
videoBitrate: number;
scaledWidth: number;
scaledHeight: number;
name: string;
}
export interface VideoSettingsFields {
latencyLevel: number;
videoQualityVariants: VideoVariant[];
cpuUsageLevel: CpuUsageLevel;
}
export interface S3Field {
acl?: string;
accessKey: string;
bucket: string;
enabled: boolean;
endpoint: string;
region: string;
secret: string;
servingEndpoint?: string;
}
export interface ExternalAction {
title: string;
description: string;
url: string;
openExternally: boolean;
}
export interface ConfigDetails {
chatDisabled: boolean;
externalActions: ExternalAction[];
ffmpegPath: string;
instanceDetails: ConfigInstanceDetailsFields;
rtmpServerPort: string;
s3: S3Field;
streamKey: string;
videoSettings: VideoSettingsFields;
webServerPort: string;
yp: ConfigDirectoryFields;
supportedCodecs: string[];
videoCodec: string;
usernameBlocklist: string;
}