
This PR adds the ability to filter the list of extensions by category: https://github.com/user-attachments/assets/ea7b518e-4769-4e2e-8bbe-e75f9f01edf9 Release Notes: - Added the ability to filter the list of extensions by category.
62 lines
1.3 KiB
Rust
62 lines
1.3 KiB
Rust
use std::collections::BTreeSet;
|
|
use std::sync::Arc;
|
|
|
|
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
use strum::EnumString;
|
|
|
|
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
|
|
pub struct ExtensionApiManifest {
|
|
pub name: String,
|
|
pub version: Arc<str>,
|
|
pub description: Option<String>,
|
|
pub authors: Vec<String>,
|
|
pub repository: String,
|
|
pub schema_version: Option<i32>,
|
|
pub wasm_api_version: Option<String>,
|
|
#[serde(default)]
|
|
pub provides: BTreeSet<ExtensionProvides>,
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
PartialEq,
|
|
Eq,
|
|
PartialOrd,
|
|
Ord,
|
|
Hash,
|
|
Clone,
|
|
Copy,
|
|
Serialize,
|
|
Deserialize,
|
|
EnumString,
|
|
strum::Display,
|
|
strum::EnumIter,
|
|
)]
|
|
#[serde(rename_all = "kebab-case")]
|
|
#[strum(serialize_all = "kebab-case")]
|
|
pub enum ExtensionProvides {
|
|
Themes,
|
|
IconThemes,
|
|
Languages,
|
|
Grammars,
|
|
LanguageServers,
|
|
ContextServers,
|
|
SlashCommands,
|
|
IndexedDocsProviders,
|
|
Snippets,
|
|
}
|
|
|
|
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
|
|
pub struct ExtensionMetadata {
|
|
pub id: Arc<str>,
|
|
#[serde(flatten)]
|
|
pub manifest: ExtensionApiManifest,
|
|
pub published_at: DateTime<Utc>,
|
|
pub download_count: u64,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
pub struct GetExtensionsResponse {
|
|
pub data: Vec<ExtensionMetadata>,
|
|
}
|