Files
Modrinth-plus/packages/utils/types.ts

365 lines
7.7 KiB
TypeScript
Raw Normal View History

App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
export const BASE62_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
export type Base62Char = (typeof BASE62_CHARS)[number]
export type ModrinthId = string
App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
export type Environment = 'required' | 'optional' | 'unsupported' | 'unknown'
export type RequestableStatus = 'approved' | 'archived' | 'unlisted' | 'private'
export type ApprovedStatus = RequestableStatus | 'scheduled'
export type UnapprovedStatus = 'draft' | 'processing' | 'rejected' | 'withheld'
export type ProjectStatus = ApprovedStatus | UnapprovedStatus | 'unknown'
export type DonationPlatform =
| { short: 'patreon'; name: 'Patreon' }
| { short: 'bmac'; name: 'Buy Me A Coffee' }
| { short: 'paypal'; name: 'PayPal' }
| { short: 'github'; name: 'GitHub Sponsors' }
| { short: 'ko-fi'; name: 'Ko-fi' }
| { short: 'other'; name: 'Other' }
export type ProjectType = 'mod' | 'modpack' | 'resourcepack' | 'shader'
export type MonetizationStatus = 'monetized' | 'demonetized' | 'force-demonetized'
export type GameVersion = string
export type Platform = string
export type Category = string
export type CategoryOrPlatform = Category | Platform
export interface DonationLink<T extends DonationPlatform> {
id: T['short']
platform: T['name']
url: string
}
export interface GalleryImage {
url: string
featured: boolean
created: string
ordering: number
title?: string
description?: string
}
export interface Project {
id: ModrinthId
project_type: ProjectType
slug: string
title: string
description: string
status: ProjectStatus
requested_status: RequestableStatus
monetization_status: MonetizationStatus
body: string
icon_url?: string
color?: number
categories: Category[]
additional_categories: Category[]
downloads: number
followers: number
client_side: Environment
server_side: Environment
team: ModrinthId
thread_id: ModrinthId
MR App 0.9.5 - Big bugfix update (#3585) * Add launcher_feature_version to Profile * Misc fixes - Add typing to theme and settings stuff - Push instance route on creation from installing a modpack - Fixed servers not reloading properly when first added * Make old instances scan the logs folder for joined servers on launcher startup * Create AttachedWorldData * Change AttachedWorldData interface * Rename WorldType::World to WorldType::Singleplayer * Implement world display status system * Fix Minecraft font * Fix set_world_display_status Tauri error * Add 'Play instance' option * Add option to disable worlds showing in Home * Fixes - Fix available server filter only showing if there are some available - Fixed server and singleplayer filters sometimes showing when there are only servers or singleplayer worlds - Fixed new worlds not being automatically added when detected - Rephrased Jump back into worlds option description * Fixed sometimes more than 6 items showing up in Jump back in * Fix servers.dat issue with instances you haven't played before * Fix too large of bulk requests being made, limit max to 800 #3430 * Add hiding from home page, add types to Mods.vue * Make recent worlds go into grid when display is huge * Fix lint * Remove redundant media query * Fix protocol version on home page, and home page being blocked by pinging servers * Clippy fix * More Clippy fixes * Fix Prettier lints * Undo `from_string` changes --------- Co-authored-by: Josiah Glosson <soujournme@gmail.com> Co-authored-by: Alejandro González <me@alegon.dev>
2025-05-01 16:13:13 -07:00
organization: ModrinthId
App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
issues_url?: string
source_url?: string
wiki_url?: string
discord_url?: string
donation_urls: DonationLink<DonationPlatform>[]
published: string
updated: string
approved: string
queued: string
game_versions: GameVersion[]
loaders: Platform[]
versions: ModrinthId[]
gallery?: GalleryImage[]
license: {
id: string
name: string
App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
url?: string
}
}
export interface SearchResult {
id: ModrinthId
project_type: ProjectType
slug: string
title: string
description: string
monetization_status: MonetizationStatus
icon_url?: string
color?: number
categories: CategoryOrPlatform[]
display_categories: CategoryOrPlatform[]
versions: GameVersion[]
latest_version: GameVersion
downloads: number
follows: number
client_side: Environment
server_side: Environment
author: string
date_created: string
date_modified: string
gallery: string[]
featured_gallery?: string[]
license: string
}
MR App 0.9.5 - Big bugfix update (#3585) * Add launcher_feature_version to Profile * Misc fixes - Add typing to theme and settings stuff - Push instance route on creation from installing a modpack - Fixed servers not reloading properly when first added * Make old instances scan the logs folder for joined servers on launcher startup * Create AttachedWorldData * Change AttachedWorldData interface * Rename WorldType::World to WorldType::Singleplayer * Implement world display status system * Fix Minecraft font * Fix set_world_display_status Tauri error * Add 'Play instance' option * Add option to disable worlds showing in Home * Fixes - Fix available server filter only showing if there are some available - Fixed server and singleplayer filters sometimes showing when there are only servers or singleplayer worlds - Fixed new worlds not being automatically added when detected - Rephrased Jump back into worlds option description * Fixed sometimes more than 6 items showing up in Jump back in * Fix servers.dat issue with instances you haven't played before * Fix too large of bulk requests being made, limit max to 800 #3430 * Add hiding from home page, add types to Mods.vue * Make recent worlds go into grid when display is huge * Fix lint * Remove redundant media query * Fix protocol version on home page, and home page being blocked by pinging servers * Clippy fix * More Clippy fixes * Fix Prettier lints * Undo `from_string` changes --------- Co-authored-by: Josiah Glosson <soujournme@gmail.com> Co-authored-by: Alejandro González <me@alegon.dev>
2025-05-01 16:13:13 -07:00
export type Organization = {
id: ModrinthId
slug: string
name: string
team_id: ModrinthId
description: string
icon_url: string
color: number
members: OrganizationMember[]
}
export type OrganizationPermissions = number
export type OrganizationMember = {
team_id: ModrinthId
user: User
role: string
is_owner: boolean
permissions: TeamMemberPermissions
organization_permissions: OrganizationPermissions
accepted: boolean
payouts_split: number
ordering: number
}
export type Collection = {
id: ModrinthId
user: User
name: string
description: string
icon_url: string
color: number
status: CollectionStatus
created: string
updated: string
projects: ModrinthId[]
}
export type CollectionStatus = 'listed' | 'unlisted' | 'private' | 'unknown'
App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
export type DependencyType = 'required' | 'optional' | 'incompatible' | 'embedded'
export interface VersionDependency {
dependency_type: DependencyType
file_name?: string
}
export interface ProjectDependency {
dependency_type: DependencyType
project_id?: string
}
export interface FileDependency {
dependency_type: DependencyType
file_name?: string
}
export type Dependency = VersionDependency | ProjectDependency | FileDependency
export type VersionChannel = 'release' | 'beta' | 'alpha'
export type VersionStatus = 'listed' | 'archived' | 'draft' | 'unlisted' | 'scheduled' | 'unknown'
export type FileType = 'required-resource-pack' | 'optional-resource-pack'
export interface VersionFileHash {
sha512: string
sha1: string
}
export interface VersionFile {
hashes: VersionFileHash[]
url: string
filename: string
primary: boolean
size: number
file_type?: FileType
}
export interface Version {
name: string
version_number: string
changelog?: string
dependencies: Dependency[]
game_versions: GameVersion[]
version_type: VersionChannel
loaders: Platform[]
featured: boolean
status: VersionStatus
id: ModrinthId
project_id: ModrinthId
author_id: ModrinthId
date_published: string
downloads: number
files: VersionFile[]
}
export interface PayoutData {
balance: number
payout_wallet: 'paypal' | 'venmo'
payout_wallet_type: 'email' | 'phone' | 'user_handle'
payout_address: string
}
export type UserRole = 'admin' | 'moderator' | 'pyro' | 'developer'
export enum UserBadge {
MIDAS = 1 << 0,
EARLY_MODPACK_ADOPTER = 1 << 1,
EARLY_RESPACK_ADOPTER = 1 << 2,
EARLY_PLUGIN_ADOPTER = 1 << 3,
ALPHA_TESTER = 1 << 4,
CONTRIBUTOR = 1 << 5,
TRANSLATOR = 1 << 6,
}
export type UserBadges = number
export interface User {
username: string
email?: string
bio?: string
payout_data?: PayoutData
id: ModrinthId
avatar_url: string
created: string
role: UserRole
badges: UserBadges
auth_providers?: string[]
email_verified?: boolean
has_password?: boolean
has_totp?: boolean
}
export enum TeamMemberPermission {
UPLOAD_VERSION = 1 << 0,
DELETE_VERSION = 1 << 1,
EDIT_DETAILS = 1 << 2,
EDIT_BODY = 1 << 3,
MANAGE_INVITES = 1 << 4,
REMOVE_MEMBER = 1 << 5,
EDIT_MEMBER = 1 << 6,
DELETE_PROJECT = 1 << 7,
VIEW_ANALYTICS = 1 << 8,
VIEW_PAYOUTS = 1 << 9,
}
export type TeamMemberPermissions = number
export interface TeamMember {
team_id: ModrinthId
user: User
role: string
permissions: TeamMemberPermissions
accepted: boolean
payouts_split: number
ordering: number
MR App 0.9.5 - Big bugfix update (#3585) * Add launcher_feature_version to Profile * Misc fixes - Add typing to theme and settings stuff - Push instance route on creation from installing a modpack - Fixed servers not reloading properly when first added * Make old instances scan the logs folder for joined servers on launcher startup * Create AttachedWorldData * Change AttachedWorldData interface * Rename WorldType::World to WorldType::Singleplayer * Implement world display status system * Fix Minecraft font * Fix set_world_display_status Tauri error * Add 'Play instance' option * Add option to disable worlds showing in Home * Fixes - Fix available server filter only showing if there are some available - Fixed server and singleplayer filters sometimes showing when there are only servers or singleplayer worlds - Fixed new worlds not being automatically added when detected - Rephrased Jump back into worlds option description * Fixed sometimes more than 6 items showing up in Jump back in * Fix servers.dat issue with instances you haven't played before * Fix too large of bulk requests being made, limit max to 800 #3430 * Add hiding from home page, add types to Mods.vue * Make recent worlds go into grid when display is huge * Fix lint * Remove redundant media query * Fix protocol version on home page, and home page being blocked by pinging servers * Clippy fix * More Clippy fixes * Fix Prettier lints * Undo `from_string` changes --------- Co-authored-by: Josiah Glosson <soujournme@gmail.com> Co-authored-by: Alejandro González <me@alegon.dev>
2025-05-01 16:13:13 -07:00
is_owner: boolean
App redesign (#2946) * Start of app redesign * format * continue progress * Content page nearly done * Fix recursion issues with content page * Fix update all alignment * Discover page progress * Settings progress * Removed unlocked-size hack that breaks web * Revamp project page, refactor web project page to share code with app, fixed loading bar, misc UI/UX enhancements, update ko-fi logo, update arrow icons, fix web issues caused by floating-vue migration, fix tooltip issues, update web tooltips, clean up web hydration issues * Ads + run prettier * Begin auth refactor, move common messages to ui lib, add i18n extraction to all apps, begin Library refactor * fix ads not hiding when plus log in * rev lockfile changes/conflicts * Fix sign in page * Add generated * (mostly) Data driven search * Fix search mobile issue * profile fixes * Project versions page, fix typescript on UI lib and misc fixes * Remove unused gallery component * Fix linkfunction err * Search filter controls at top, localization for locked filters * Fix provided filter names * Fix navigating from instance browse to main browse * Friends frontend (#2995) * Friends system frontend * (almost) finish frontend * finish friends, fix lint * Fix lint --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> * Refresh macOS app icon * Update web search UI more * Fix link opens * Fix frontend build --------- Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A <jaiagr+gpg@pm.me> Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
2024-12-11 19:54:18 -08:00
}
export type Report = {
id: ModrinthId
item_id: ModrinthId
item_type: 'project' | 'version' | 'user'
report_type: string
reporter: ModrinthId
thread_id: ModrinthId
closed: boolean
created: string
body: string
}
// Moderation
export interface ModerationModpackPermissionApprovalType {
id:
| 'yes'
| 'no'
| 'with-attribution'
| 'unidentified'
| 'with-attribution-and-source'
| 'permanent-no'
name: string
}
export interface ModerationPermissionType {
id: 'yes' | 'no'
name: string
}
export interface ModerationBaseModpackItem {
sha1: string
file_name: string
type: 'unknown' | 'flame'
status: ModerationModpackPermissionApprovalType['id'] | null
approved: ModerationPermissionType['id'] | null
}
export interface ModerationUnknownModpackItem extends ModerationBaseModpackItem {
type: 'unknown'
proof: string
url: string
title: string
}
export interface ModerationFlameModpackItem extends ModerationBaseModpackItem {
type: 'flame'
id: string
title: string
url: string
}
export type ModerationModpackItem = ModerationUnknownModpackItem | ModerationFlameModpackItem
export interface ModerationModpackResponse {
unknown_files?: Record<string, string>
flame_files?: Record<
string,
{
file_name: string
id: string
title?: string
url?: string
}
>
}
export interface ModerationJudgement {
type: 'flame' | 'unknown'
status: string
id?: string
link?: string
title?: string
proof?: string
file_name?: string
}
export interface ModerationJudgements {
[sha1: string]: ModerationJudgement
}