mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-05 19:24:39 +00:00
104 lines
2.9 KiB
TypeScript
104 lines
2.9 KiB
TypeScript
import type { ManifestV3Export } from '@crxjs/vite-plugin'
|
|
import { type AnyCase, createEnum } from './utils'
|
|
|
|
export const FrameworkEnum = {
|
|
React: 'React',
|
|
Vanilla: 'Vanilla',
|
|
Preact: 'Preact',
|
|
Lit: 'Lit',
|
|
Svelte: 'Svelte',
|
|
Vue: 'Vue',
|
|
} as const
|
|
|
|
export const BrowserEnum = {
|
|
Chrome: 'Chrome',
|
|
Brave: 'Brave',
|
|
Opera: 'Opera',
|
|
Edge: 'Edge',
|
|
Firefox: 'Firefox',
|
|
Safari: 'Safari',
|
|
} as const
|
|
|
|
const LanguageEnum = {
|
|
TypeScript: 'TypeScript',
|
|
JavaScript: 'JavaScript',
|
|
} as const
|
|
|
|
export const StyleEnum = {
|
|
Tailwind: 'Tailwind',
|
|
} as const
|
|
|
|
export const PackageManagerEnum = {
|
|
Bun: 'Bun',
|
|
PnPm: 'PnPm',
|
|
Npm: 'Npm',
|
|
Yarn: 'Yarn',
|
|
} as const
|
|
|
|
// see: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/firefox-webext-browser/index.d.ts
|
|
export type BrowserSpecificSettings = {
|
|
browser_specific_settings?: {
|
|
gecko?: {
|
|
id: string
|
|
strict_min_version?: string
|
|
strict_max_version?: string
|
|
}
|
|
}
|
|
}
|
|
|
|
export type Manifest = ManifestV3Export
|
|
export type ManifestIcons = chrome.runtime.ManifestIcons
|
|
export type ManifestBackground = chrome.runtime.ManifestV3['background']
|
|
export type ManifestContentScripts =
|
|
chrome.runtime.ManifestV3['content_scripts']
|
|
export type ManifestWebAccessibleResources =
|
|
chrome.runtime.ManifestV3['web_accessible_resources']
|
|
export type ManifestCommands = chrome.runtime.ManifestV3['commands']
|
|
export type ManifestAction = chrome.runtime.ManifestV3['action']
|
|
export type ManifestPermissions = chrome.runtime.ManifestV3['permissions']
|
|
export type ManifestOptionsUI = chrome.runtime.ManifestV3['options_ui']
|
|
export type ManifestURLOverrides =
|
|
chrome.runtime.ManifestV3['chrome_url_overrides']
|
|
|
|
export type BrowserName<T extends string> = Capitalize<T> | Lowercase<T>
|
|
export type BrowserEnumType<T extends string> = {
|
|
[browser in BrowserName<T>]: BrowserName<T>
|
|
}
|
|
|
|
export type BuildMode = AnyCase<Browser>
|
|
export type BuildTarget = {
|
|
manifest: Manifest
|
|
browser: AnyCase<Browser>
|
|
}
|
|
export type BuildConfig = {
|
|
command?: 'build' | 'serve'
|
|
mode?: AnyCase<Browser> | string | undefined
|
|
}
|
|
|
|
export interface Repository {
|
|
type: string
|
|
url?: string
|
|
bugs?: Bugs
|
|
}
|
|
|
|
export interface Bugs {
|
|
url?: string
|
|
email?: string
|
|
}
|
|
|
|
export type Browser = (typeof BrowserEnum)[keyof typeof BrowserEnum]
|
|
export const Browser: AnyCase<Browser> = createEnum(BrowserEnum)
|
|
|
|
export type PackageManager =
|
|
(typeof PackageManagerEnum)[keyof typeof PackageManagerEnum]
|
|
export const PackageManager: AnyCase<PackageManager> =
|
|
createEnum(PackageManagerEnum)
|
|
|
|
export type Framework = (typeof FrameworkEnum)[keyof typeof FrameworkEnum]
|
|
export const Framework: AnyCase<Framework> = createEnum(FrameworkEnum)
|
|
|
|
export type Style = (typeof StyleEnum)[keyof typeof StyleEnum]
|
|
export const Style: AnyCase<Style> = createEnum(StyleEnum)
|
|
|
|
export type Language = (typeof LanguageEnum)[keyof typeof LanguageEnum]
|
|
export const Language: AnyCase<Language> = createEnum(LanguageEnum) |