1use serde::{Deserialize, Serialize};
2use litty::literal;
3use std::collections::BTreeMap;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum Package {
9 PackageNpm(PackageNpm),
10 PackagePip(PackagePip),
11}
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct PackageNpm {
16 pub r#type: PackageNpmTypeNpm,
18 pub name: String,
20 pub version: String,
22 pub shasum: String,
24 pub tarball: String,
26 pub tag: String,
28 pub time: i64,
30 pub dependencies: PackageNpmDependencies,
32}
33
34#[literal("npm")]
35pub struct PackageNpmTypeNpm;
36
37pub type PackageNpmDependencies = BTreeMap<String, String>;
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
42pub struct PackagePip {
43 pub r#type: PackagePipTypePip,
45 pub name: String,
47 pub version: String,
49 pub sha256: String,
51 pub wheel: String,
53}
54
55#[literal("pip")]
56pub struct PackagePipTypePip;
57
58#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60pub struct PackagesSettings {
61 pub npm: Option<PackageNpmSettings>,
63 pub pip: Option<PackagePipSettings>,
65}
66
67#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
68pub struct PackageBaseSettings {
69 pub enabled: Option<bool>,
72 #[serde(rename = "transformCase")]
75 pub transform_case: Option<PackageSettingTransformCase>,
76 #[serde(rename = "clientPrerelease")]
79 pub client_prerelease: Option<bool>,
80}
81
82#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
84#[serde(untagged)]
85pub enum PackageSettingTransformCase {
86 Never(PackageSettingTransformCaseNever),
87 Shallow(PackageSettingTransformCaseShallow),
88 Everything(PackageSettingTransformCaseEverything),
89}
90
91#[literal("never")]
92pub struct PackageSettingTransformCaseNever;
93
94#[literal("shallow")]
95pub struct PackageSettingTransformCaseShallow;
96
97#[literal("everything")]
98pub struct PackageSettingTransformCaseEverything;
99
100#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
102pub struct PackageNpmSettings {
103 pub enabled: Option<bool>,
106 #[serde(rename = "transformCase")]
109 pub transform_case: Option<PackageSettingTransformCase>,
110 #[serde(rename = "clientPrerelease")]
113 pub client_prerelease: Option<bool>,
114 #[serde(rename = "clientVersion")]
117 pub client_version: Option<PackageNpmClientVersion>,
118}
119
120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
122#[serde(untagged)]
123pub enum PackageNpmClientVersion {
124 Lit0(PackageNpmClientVersion0),
125 Lit1(PackageNpmClientVersion1),
126}
127
128#[literal(0)]
129pub struct PackageNpmClientVersion0;
130
131#[literal(1)]
132pub struct PackageNpmClientVersion1;
133
134#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
136pub struct PackagePipSettings {
137 pub enabled: Option<bool>,
140 #[serde(rename = "transformCase")]
143 pub transform_case: Option<PackageSettingTransformCase>,
144 #[serde(rename = "clientPrerelease")]
147 pub client_prerelease: Option<bool>,
148 #[serde(rename = "clientVersion")]
151 pub client_version: Option<PackagePipClientVersion>,
152}
153
154#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
156#[serde(untagged)]
157pub enum PackagePipClientVersion {
158 Lit0(PackagePipClientVersion0),
159 Lit1(PackagePipClientVersion1),
160}
161
162#[literal(0)]
163pub struct PackagePipClientVersion0;
164
165#[literal(1)]
166pub struct PackagePipClientVersion1;
167
168#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
170#[serde(untagged)]
171pub enum PackageStatus {
172 Pending(PackageStatusPending),
173 Building(PackageStatusBuilding),
174 Errored(PackageStatusErrored),
175 Published(PackageStatusPublished),
176}
177
178#[literal("pending")]
179pub struct PackageStatusPending;
180
181#[literal("building")]
182pub struct PackageStatusBuilding;
183
184#[literal("errored")]
185pub struct PackageStatusErrored;
186
187#[literal("published")]
188pub struct PackageStatusPublished;
189
190#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
192pub struct PackageTrigger {
193 pub id: u32,
195}