tsarr 2.9.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -5
- package/dist/cli/commands/bazarr.d.ts +2 -0
- package/dist/cli/commands/bazarr.d.ts.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/lidarr.d.ts +2 -0
- package/dist/cli/commands/lidarr.d.ts.map +1 -1
- package/dist/cli/commands/radarr.d.ts.map +1 -1
- package/dist/cli/commands/readarr.d.ts +2 -0
- package/dist/cli/commands/readarr.d.ts.map +1 -1
- package/dist/cli/commands/sonarr.d.ts.map +1 -1
- package/dist/cli/index.js +2138 -2405
- package/dist/clients/base.d.ts +136 -0
- package/dist/clients/base.d.ts.map +1 -0
- package/dist/clients/bazarr.d.ts +1 -1
- package/dist/clients/bazarr.d.ts.map +1 -1
- package/dist/clients/bazarr.js +100 -3
- package/dist/clients/lidarr.d.ts +24 -681
- package/dist/clients/lidarr.d.ts.map +1 -1
- package/dist/clients/lidarr.js +323 -196
- package/dist/clients/prowlarr.d.ts +25 -638
- package/dist/clients/prowlarr.d.ts.map +1 -1
- package/dist/clients/prowlarr.js +331 -175
- package/dist/clients/qbittorrent.d.ts +1 -17
- package/dist/clients/qbittorrent.d.ts.map +1 -1
- package/dist/clients/qbittorrent.js +97 -2
- package/dist/clients/radarr.d.ts +4 -657
- package/dist/clients/radarr.d.ts.map +1 -1
- package/dist/clients/radarr.js +323 -164
- package/dist/clients/readarr.d.ts +4 -635
- package/dist/clients/readarr.d.ts.map +1 -1
- package/dist/clients/readarr.js +323 -164
- package/dist/clients/seerr.d.ts +1 -1
- package/dist/clients/seerr.d.ts.map +1 -1
- package/dist/clients/seerr.js +100 -3
- package/dist/clients/sonarr.d.ts +181 -772
- package/dist/clients/sonarr.d.ts.map +1 -1
- package/dist/clients/sonarr.js +346 -157
- package/dist/core/client.d.ts +3 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/fetch.d.ts +23 -0
- package/dist/core/fetch.d.ts.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/types.d.ts +7 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tsarr-2.10.0.tgz +0 -0
- package/package.json +2 -4
- package/dist/tsarr-2.9.0.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lidarr.d.ts","sourceRoot":"","sources":["../../src/clients/lidarr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lidarr.d.ts","sourceRoot":"","sources":["../../src/clients/lidarr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,SAAQ,iBAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAmEhC;gBAEU,MAAM,EAAE,mBAAmB;IAMvC;;OAEG;IACG,UAAU;;;;;;;;;;IAIV,SAAS,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAIpB,SAAS,CAAC,MAAM,EAAE,cAAc;;;;;;;;;;IAIhC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc;;;;;;;;;;IAI/C,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAKvB,SAAS;;;;;;;;;;IAIT,QAAQ,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAMzB;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;IAK1B,cAAc;;;;;;;;;;IAId,aAAa,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;IAM1B,gBAAgB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAK3B,QAAQ,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;IAI7B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;;;;;;;;;;IAI5C,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;IAKzB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO;;;;;;;;;;IAU/D,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;IAW3E;;OAEG;IACG,aAAa,CACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,QAAQ,CAAC,EAAE,OAAO;;;;;;;;;;IAWpB;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI7B;;OAEG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB;;;;;;;;;;IAI9D;;OAEG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAIhC;;OAEG;IACG,sBAAsB,CAAC,aAAa,EAAE,qBAAqB;;;;;;;;;;IAIjE;;OAEG;IACG,oBAAoB,CAAC,aAAa,EAAE,qBAAqB;;;;;;;;;;IAKzD,kBAAkB;;;;;;;;;;IAIlB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI5B,iBAAiB,CAAC,OAAO,EAAE,sBAAsB;;;;;;;;;;IAIjD,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;;;;;;;;;;IAIhE,oBAAoB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI/B,uBAAuB;;;;;;;;;;IAKvB,gBAAgB;;;;;;;;;;IAIhB,eAAe,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI1B,eAAe,CAAC,MAAM,EAAE,oBAAoB;;;;;;;;;;IAI5C,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB;;;;;;;;;;IAI3D,kBAAkB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI7B,uBAAuB,CAAC,OAAO,EAAE,wBAAwB;;;;;;;;;;IAIzD,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;;;;;IAIrC,qBAAqB;;;;;;;;;;IAM3B;;OAEG;IACG,eAAe;;;;;;;;;;IAIrB;;OAEG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAIpC;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB;;;;;;;;;;IAIjE;;OAEG;IACG,uBAAuB;;;;;;;;;;IAI7B;;OAEG;IACG,wBAAwB;;;;;;;;;;IAI9B;;OAEG;IACG,4BAA4B,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI7C;;OAEG;IACG,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B;;;;;;;;;;IAInF;;OAEG;IACG,yBAAyB;;;;;;;;;;IAI/B;;OAEG;IACG,6BAA6B,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI9C;;OAEG;IACG,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B;;;;;;;;;;IAIrF;;OAEG;IACG,aAAa;;;;;;;;;;IAInB;;OAEG;IACG,YAAY;;;;;;;;;;IAMlB;;OAEG;IACG,cAAc;;;;;;;;;;IAIpB;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI9B;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,kBAAkB;;;;;;;;;;IAIlD;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB;;;;;;;;;;IAIjE;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAIjC;;OAEG;IACG,mBAAmB;;;;;;;;;;IAIzB;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,kBAAkB;;;;;;;;;;IAInD;;OAEG;IACG,kBAAkB;;;;;;;;;;IAMxB;;OAEG;IACG,UAAU,CACd,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM;;;;;;;;;;IAarB;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;;;;;;;;;;IAOrD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG;;;;;;;;;;IAOxD;;OAEG;IACG,qBAAqB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAMtC;;OAEG;IACG,QAAQ,CACZ,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,yBAAyB,CAAC,EAAE,OAAO;;;;;;;;;;IAarC;;OAEG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO;;;;;;;;;;IAWjF;;OAEG;IACG,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO;;;;;;;;;;IAWzF;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAI9B;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;;;;;IAItC;;OAEG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,OAAO;;;;;;;;;;IAS5E;;OAEG;IACG,cAAc;;;;;;;;;;IAMpB;;OAEG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;;;;;;;;;;IAU7F;;OAEG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAIpC;;OAEG;IACG,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;;;;;IAI5C;;OAEG;IACG,gBAAgB,CACpB,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,OAAO;;;;;;;;;;IAYrB;;OAEG;IACG,eAAe,CACnB,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,OAAO;;;;;;;;;;CAWtB;AAGD,cAAc,mBAAmB,CAAC"}
|
package/dist/clients/lidarr.js
CHANGED
|
@@ -26,7 +26,95 @@ class ConnectionError extends TsarrError {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
// src/core/fetch.ts
|
|
30
|
+
var DEFAULT_TIMEOUT = 30000;
|
|
31
|
+
var DEFAULT_MAX_RETRIES = 3;
|
|
32
|
+
var DEFAULT_INITIAL_DELAY = 1000;
|
|
33
|
+
var DEFAULT_MAX_DELAY = 1e4;
|
|
34
|
+
var RETRYABLE_STATUS_CODES = new Set([408, 429, 502, 503, 504]);
|
|
35
|
+
function isRetryable(error) {
|
|
36
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (error instanceof TypeError) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
function getRetryDelay(attempt, initialDelayMs, maxDelayMs) {
|
|
45
|
+
const delay = initialDelayMs * 2 ** attempt;
|
|
46
|
+
const jitter = delay * 0.2 * Math.random();
|
|
47
|
+
return Math.min(delay + jitter, maxDelayMs);
|
|
48
|
+
}
|
|
49
|
+
function createResilientFetch(options = {}) {
|
|
50
|
+
const timeout = options.timeout ?? DEFAULT_TIMEOUT;
|
|
51
|
+
const maxRetries = options.retry ? options.retry.maxRetries ?? DEFAULT_MAX_RETRIES : 0;
|
|
52
|
+
const initialDelayMs = options.retry?.initialDelayMs ?? DEFAULT_INITIAL_DELAY;
|
|
53
|
+
const maxDelayMs = options.retry?.maxDelayMs ?? DEFAULT_MAX_DELAY;
|
|
54
|
+
const resilientFetch = async (input, init) => {
|
|
55
|
+
let lastError;
|
|
56
|
+
const template = createRequestTemplate(input, init);
|
|
57
|
+
for (let attempt = 0;attempt <= maxRetries; attempt++) {
|
|
58
|
+
const controller = new AbortController;
|
|
59
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
60
|
+
const callerSignal = init?.signal;
|
|
61
|
+
if (callerSignal?.aborted) {
|
|
62
|
+
clearTimeout(timeoutId);
|
|
63
|
+
throw callerSignal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
64
|
+
}
|
|
65
|
+
const onCallerAbort = () => controller.abort(callerSignal.reason);
|
|
66
|
+
callerSignal?.addEventListener("abort", onCallerAbort, { once: true });
|
|
67
|
+
try {
|
|
68
|
+
const response = await globalThis.fetch(new Request(template.clone(), { signal: controller.signal }));
|
|
69
|
+
clearTimeout(timeoutId);
|
|
70
|
+
callerSignal?.removeEventListener("abort", onCallerAbort);
|
|
71
|
+
if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < maxRetries) {
|
|
72
|
+
lastError = new ConnectionError(`Request failed with status ${response.status}`);
|
|
73
|
+
const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);
|
|
74
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
return response;
|
|
78
|
+
} catch (error) {
|
|
79
|
+
clearTimeout(timeoutId);
|
|
80
|
+
callerSignal?.removeEventListener("abort", onCallerAbort);
|
|
81
|
+
if (callerSignal?.aborted) {
|
|
82
|
+
throw callerSignal.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
83
|
+
}
|
|
84
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
85
|
+
lastError = new ConnectionError(`Request timed out after ${timeout}ms`);
|
|
86
|
+
if (attempt < maxRetries) {
|
|
87
|
+
const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);
|
|
88
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
throw lastError;
|
|
92
|
+
}
|
|
93
|
+
if (isRetryable(error) && attempt < maxRetries) {
|
|
94
|
+
lastError = error;
|
|
95
|
+
const delay = getRetryDelay(attempt, initialDelayMs, maxDelayMs);
|
|
96
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
throw lastError;
|
|
103
|
+
};
|
|
104
|
+
return Object.assign(resilientFetch, {
|
|
105
|
+
preconnect: globalThis.fetch.preconnect?.bind(globalThis.fetch)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function createRequestTemplate(input, init) {
|
|
109
|
+
const { signal: _signal, ...requestInit } = init ?? {};
|
|
110
|
+
if (input instanceof Request) {
|
|
111
|
+
return init ? new Request(input.clone(), requestInit) : input.clone();
|
|
112
|
+
}
|
|
113
|
+
return new Request(input, requestInit);
|
|
114
|
+
}
|
|
115
|
+
|
|
29
116
|
// src/core/client.ts
|
|
117
|
+
var DEFAULT_TIMEOUT_MS = 30000;
|
|
30
118
|
function createServarrClient(config) {
|
|
31
119
|
if (!config.apiKey) {
|
|
32
120
|
throw new ApiKeyError;
|
|
@@ -38,6 +126,11 @@ function createServarrClient(config) {
|
|
|
38
126
|
...config,
|
|
39
127
|
baseUrl: config.baseUrl.replace(/\/$/, "")
|
|
40
128
|
};
|
|
129
|
+
const timeoutMs = validatedConfig.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
130
|
+
const resilientFetch = createResilientFetch({
|
|
131
|
+
timeout: timeoutMs,
|
|
132
|
+
retry: validatedConfig.retry
|
|
133
|
+
});
|
|
41
134
|
return {
|
|
42
135
|
config: validatedConfig,
|
|
43
136
|
getHeaders: () => ({
|
|
@@ -45,10 +138,186 @@ function createServarrClient(config) {
|
|
|
45
138
|
"Content-Type": "application/json",
|
|
46
139
|
...validatedConfig.headers
|
|
47
140
|
}),
|
|
48
|
-
getBaseUrl: () => validatedConfig.baseUrl
|
|
141
|
+
getBaseUrl: () => validatedConfig.baseUrl,
|
|
142
|
+
getTimeout: () => timeoutMs,
|
|
143
|
+
getFetch: () => resilientFetch
|
|
49
144
|
};
|
|
50
145
|
}
|
|
51
146
|
|
|
147
|
+
// src/clients/base.ts
|
|
148
|
+
class ServarrBaseClient {
|
|
149
|
+
clientConfig;
|
|
150
|
+
rawClient;
|
|
151
|
+
constructor(config, rawClient) {
|
|
152
|
+
this.rawClient = rawClient;
|
|
153
|
+
this.clientConfig = createServarrClient(config);
|
|
154
|
+
this.configureRawClient();
|
|
155
|
+
}
|
|
156
|
+
configureRawClient() {
|
|
157
|
+
this.rawClient.setConfig(this.getClientConfig());
|
|
158
|
+
}
|
|
159
|
+
getClientConfig() {
|
|
160
|
+
return {
|
|
161
|
+
baseUrl: this.clientConfig.getBaseUrl(),
|
|
162
|
+
headers: this.clientConfig.getHeaders(),
|
|
163
|
+
fetch: this.clientConfig.getFetch()
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async getSystemStatus() {
|
|
167
|
+
return this.ops.getSystemStatus();
|
|
168
|
+
}
|
|
169
|
+
async getHealth() {
|
|
170
|
+
return this.ops.getHealth();
|
|
171
|
+
}
|
|
172
|
+
async getTags() {
|
|
173
|
+
return this.ops.getTags();
|
|
174
|
+
}
|
|
175
|
+
async addTag(tag) {
|
|
176
|
+
return this.ops.createTag({ body: tag });
|
|
177
|
+
}
|
|
178
|
+
async getTag(id) {
|
|
179
|
+
return this.ops.getTagById({ path: { id } });
|
|
180
|
+
}
|
|
181
|
+
async updateTag(id, tag) {
|
|
182
|
+
return this.ops.updateTagById({ path: { id: String(id) }, body: tag });
|
|
183
|
+
}
|
|
184
|
+
async deleteTag(id) {
|
|
185
|
+
return this.ops.deleteTagById({ path: { id } });
|
|
186
|
+
}
|
|
187
|
+
async getTagDetails() {
|
|
188
|
+
return this.ops.getTagDetails();
|
|
189
|
+
}
|
|
190
|
+
async getTagDetailById(id) {
|
|
191
|
+
return this.ops.getTagDetailById({ path: { id } });
|
|
192
|
+
}
|
|
193
|
+
async getNotifications() {
|
|
194
|
+
return this.ops.getNotifications();
|
|
195
|
+
}
|
|
196
|
+
async getNotification(id) {
|
|
197
|
+
return this.ops.getNotificationById({ path: { id } });
|
|
198
|
+
}
|
|
199
|
+
async addNotification(notification) {
|
|
200
|
+
return this.ops.createNotification({ body: notification });
|
|
201
|
+
}
|
|
202
|
+
async updateNotification(id, notification) {
|
|
203
|
+
return this.ops.updateNotificationById({ path: { id: String(id) }, body: notification });
|
|
204
|
+
}
|
|
205
|
+
async deleteNotification(id) {
|
|
206
|
+
return this.ops.deleteNotificationById({ path: { id } });
|
|
207
|
+
}
|
|
208
|
+
async getNotificationSchema() {
|
|
209
|
+
return this.ops.getNotificationSchema();
|
|
210
|
+
}
|
|
211
|
+
async testNotification(notification) {
|
|
212
|
+
return this.ops.testNotification({ body: notification });
|
|
213
|
+
}
|
|
214
|
+
async testAllNotifications() {
|
|
215
|
+
return this.ops.testAllNotifications();
|
|
216
|
+
}
|
|
217
|
+
async getDownloadClients() {
|
|
218
|
+
return this.ops.getDownloadClients();
|
|
219
|
+
}
|
|
220
|
+
async getDownloadClient(id) {
|
|
221
|
+
return this.ops.getDownloadClientById({ path: { id } });
|
|
222
|
+
}
|
|
223
|
+
async addDownloadClient(client) {
|
|
224
|
+
return this.ops.createDownloadClient({ body: client });
|
|
225
|
+
}
|
|
226
|
+
async updateDownloadClient(id, client) {
|
|
227
|
+
return this.ops.updateDownloadClientById({ path: { id: String(id) }, body: client });
|
|
228
|
+
}
|
|
229
|
+
async deleteDownloadClient(id) {
|
|
230
|
+
return this.ops.deleteDownloadClientById({ path: { id } });
|
|
231
|
+
}
|
|
232
|
+
async getDownloadClientSchema() {
|
|
233
|
+
return this.ops.getDownloadClientSchema();
|
|
234
|
+
}
|
|
235
|
+
async testDownloadClient(client) {
|
|
236
|
+
return this.ops.testDownloadClient({ body: client });
|
|
237
|
+
}
|
|
238
|
+
async testAllDownloadClients() {
|
|
239
|
+
return this.ops.testAllDownloadClients();
|
|
240
|
+
}
|
|
241
|
+
async getIndexers() {
|
|
242
|
+
return this.ops.getIndexers();
|
|
243
|
+
}
|
|
244
|
+
async getIndexer(id) {
|
|
245
|
+
return this.ops.getIndexerById({ path: { id } });
|
|
246
|
+
}
|
|
247
|
+
async addIndexer(indexer) {
|
|
248
|
+
return this.ops.createIndexer({ body: indexer });
|
|
249
|
+
}
|
|
250
|
+
async updateIndexer(id, indexer) {
|
|
251
|
+
return this.ops.updateIndexerById({ path: { id: String(id) }, body: indexer });
|
|
252
|
+
}
|
|
253
|
+
async deleteIndexer(id) {
|
|
254
|
+
return this.ops.deleteIndexerById({ path: { id } });
|
|
255
|
+
}
|
|
256
|
+
async getIndexerSchema() {
|
|
257
|
+
return this.ops.getIndexerSchema();
|
|
258
|
+
}
|
|
259
|
+
async testIndexer(indexer) {
|
|
260
|
+
return this.ops.testIndexer({ body: indexer });
|
|
261
|
+
}
|
|
262
|
+
async testAllIndexers() {
|
|
263
|
+
return this.ops.testAllIndexers();
|
|
264
|
+
}
|
|
265
|
+
async restartSystem() {
|
|
266
|
+
return this.ops.restartSystem();
|
|
267
|
+
}
|
|
268
|
+
async shutdownSystem() {
|
|
269
|
+
return this.ops.shutdownSystem();
|
|
270
|
+
}
|
|
271
|
+
async getSystemBackups() {
|
|
272
|
+
return this.ops.getBackups();
|
|
273
|
+
}
|
|
274
|
+
async deleteSystemBackup(id) {
|
|
275
|
+
return this.ops.deleteBackup({ path: { id } });
|
|
276
|
+
}
|
|
277
|
+
async restoreSystemBackup(id) {
|
|
278
|
+
return this.ops.restoreBackup({ path: { id } });
|
|
279
|
+
}
|
|
280
|
+
async uploadSystemBackup() {
|
|
281
|
+
return this.ops.uploadBackup();
|
|
282
|
+
}
|
|
283
|
+
async getLogFiles() {
|
|
284
|
+
return this.ops.getLogFiles();
|
|
285
|
+
}
|
|
286
|
+
async getLogFileByName(filename) {
|
|
287
|
+
return this.ops.getLogFileByName({ path: { filename } });
|
|
288
|
+
}
|
|
289
|
+
async runCommand(command) {
|
|
290
|
+
return this.ops.runCommand({ body: command });
|
|
291
|
+
}
|
|
292
|
+
async getCommands() {
|
|
293
|
+
return this.ops.getCommands();
|
|
294
|
+
}
|
|
295
|
+
async getHostConfig() {
|
|
296
|
+
return this.ops.getHostConfig();
|
|
297
|
+
}
|
|
298
|
+
async getHostConfigById(id) {
|
|
299
|
+
return this.ops.getHostConfigById({ path: { id } });
|
|
300
|
+
}
|
|
301
|
+
async updateHostConfig(id, config) {
|
|
302
|
+
return this.ops.updateHostConfig({ path: { id: String(id) }, body: config });
|
|
303
|
+
}
|
|
304
|
+
async getUiConfig() {
|
|
305
|
+
return this.ops.getUiConfig();
|
|
306
|
+
}
|
|
307
|
+
async getUiConfigById(id) {
|
|
308
|
+
return this.ops.getUiConfigById({ path: { id } });
|
|
309
|
+
}
|
|
310
|
+
async updateUiConfig(id, config) {
|
|
311
|
+
return this.ops.updateUiConfig({ path: { id: String(id) }, body: config });
|
|
312
|
+
}
|
|
313
|
+
updateConfig(newConfig) {
|
|
314
|
+
const updatedConfig = { ...this.clientConfig.config, ...newConfig };
|
|
315
|
+
this.clientConfig = createServarrClient(updatedConfig);
|
|
316
|
+
this.configureRawClient();
|
|
317
|
+
return this.clientConfig.config;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
52
321
|
// src/generated/lidarr/core/bodySerializer.gen.ts
|
|
53
322
|
var jsonBodySerializer = {
|
|
54
323
|
bodySerializer: (body) => JSON.stringify(body, (_key, value) => typeof value === "bigint" ? value.toString() : value)
|
|
@@ -1231,32 +1500,6 @@ var postApiV1Downloadclient = (options) => (options?.client ?? client).post({
|
|
|
1231
1500
|
...options?.headers
|
|
1232
1501
|
}
|
|
1233
1502
|
});
|
|
1234
|
-
var deleteApiV1DownloadclientBulk = (options) => (options?.client ?? client).delete({
|
|
1235
|
-
security: [{ name: "X-Api-Key", type: "apiKey" }, {
|
|
1236
|
-
in: "query",
|
|
1237
|
-
name: "apikey",
|
|
1238
|
-
type: "apiKey"
|
|
1239
|
-
}],
|
|
1240
|
-
url: "/api/v1/downloadclient/bulk",
|
|
1241
|
-
...options,
|
|
1242
|
-
headers: {
|
|
1243
|
-
"Content-Type": "application/json",
|
|
1244
|
-
...options?.headers
|
|
1245
|
-
}
|
|
1246
|
-
});
|
|
1247
|
-
var putApiV1DownloadclientBulk = (options) => (options?.client ?? client).put({
|
|
1248
|
-
security: [{ name: "X-Api-Key", type: "apiKey" }, {
|
|
1249
|
-
in: "query",
|
|
1250
|
-
name: "apikey",
|
|
1251
|
-
type: "apiKey"
|
|
1252
|
-
}],
|
|
1253
|
-
url: "/api/v1/downloadclient/bulk",
|
|
1254
|
-
...options,
|
|
1255
|
-
headers: {
|
|
1256
|
-
"Content-Type": "application/json",
|
|
1257
|
-
...options?.headers
|
|
1258
|
-
}
|
|
1259
|
-
});
|
|
1260
1503
|
var getApiV1DownloadclientSchema = (options) => (options?.client ?? client).get({
|
|
1261
1504
|
security: [{ name: "X-Api-Key", type: "apiKey" }, {
|
|
1262
1505
|
in: "query",
|
|
@@ -2114,20 +2357,60 @@ var getApiV1ConfigUi = (options) => (options?.client ?? client).get({
|
|
|
2114
2357
|
...options
|
|
2115
2358
|
});
|
|
2116
2359
|
// src/clients/lidarr.ts
|
|
2117
|
-
class LidarrClient {
|
|
2118
|
-
|
|
2360
|
+
class LidarrClient extends ServarrBaseClient {
|
|
2361
|
+
ops = {
|
|
2362
|
+
getSystemStatus: getApiV1SystemStatus,
|
|
2363
|
+
getHealth: getApiV1Health,
|
|
2364
|
+
getTags: getApiV1Tag,
|
|
2365
|
+
createTag: postApiV1Tag,
|
|
2366
|
+
getTagById: getApiV1TagById,
|
|
2367
|
+
updateTagById: putApiV1TagById,
|
|
2368
|
+
deleteTagById: deleteApiV1TagById,
|
|
2369
|
+
getTagDetails: getApiV1TagDetail,
|
|
2370
|
+
getTagDetailById: getApiV1TagDetailById,
|
|
2371
|
+
getNotifications: getApiV1Notification,
|
|
2372
|
+
createNotification: postApiV1Notification,
|
|
2373
|
+
getNotificationById: getApiV1NotificationById,
|
|
2374
|
+
updateNotificationById: putApiV1NotificationById,
|
|
2375
|
+
deleteNotificationById: deleteApiV1NotificationById,
|
|
2376
|
+
getNotificationSchema: getApiV1NotificationSchema,
|
|
2377
|
+
testNotification: postApiV1NotificationTest,
|
|
2378
|
+
testAllNotifications: postApiV1NotificationTestall,
|
|
2379
|
+
getDownloadClients: getApiV1Downloadclient,
|
|
2380
|
+
createDownloadClient: postApiV1Downloadclient,
|
|
2381
|
+
getDownloadClientById: getApiV1DownloadclientById,
|
|
2382
|
+
updateDownloadClientById: putApiV1DownloadclientById,
|
|
2383
|
+
deleteDownloadClientById: deleteApiV1DownloadclientById,
|
|
2384
|
+
getDownloadClientSchema: getApiV1DownloadclientSchema,
|
|
2385
|
+
testDownloadClient: postApiV1DownloadclientTest,
|
|
2386
|
+
testAllDownloadClients: postApiV1DownloadclientTestall,
|
|
2387
|
+
getIndexers: getApiV1Indexer,
|
|
2388
|
+
createIndexer: postApiV1Indexer,
|
|
2389
|
+
getIndexerById: getApiV1IndexerById,
|
|
2390
|
+
updateIndexerById: putApiV1IndexerById,
|
|
2391
|
+
deleteIndexerById: deleteApiV1IndexerById,
|
|
2392
|
+
getIndexerSchema: getApiV1IndexerSchema,
|
|
2393
|
+
testIndexer: postApiV1IndexerTest,
|
|
2394
|
+
testAllIndexers: postApiV1IndexerTestall,
|
|
2395
|
+
restartSystem: postApiV1SystemRestart,
|
|
2396
|
+
shutdownSystem: postApiV1SystemShutdown,
|
|
2397
|
+
getBackups: getApiV1SystemBackup,
|
|
2398
|
+
deleteBackup: deleteApiV1SystemBackupById,
|
|
2399
|
+
restoreBackup: postApiV1SystemBackupRestoreById,
|
|
2400
|
+
uploadBackup: postApiV1SystemBackupRestoreUpload,
|
|
2401
|
+
getLogFiles: getApiV1LogFile,
|
|
2402
|
+
getLogFileByName: getApiV1LogFileByFilename,
|
|
2403
|
+
runCommand: postApiV1Command,
|
|
2404
|
+
getCommands: getApiV1Command,
|
|
2405
|
+
getHostConfig: getApiV1ConfigHost,
|
|
2406
|
+
getHostConfigById: getApiV1ConfigHostById,
|
|
2407
|
+
updateHostConfig: putApiV1ConfigHostById,
|
|
2408
|
+
getUiConfig: getApiV1ConfigUi,
|
|
2409
|
+
getUiConfigById: getApiV1ConfigUiById,
|
|
2410
|
+
updateUiConfig: putApiV1ConfigUiById
|
|
2411
|
+
};
|
|
2119
2412
|
constructor(config) {
|
|
2120
|
-
|
|
2121
|
-
client.setConfig({
|
|
2122
|
-
baseUrl: this.clientConfig.getBaseUrl(),
|
|
2123
|
-
headers: this.clientConfig.getHeaders()
|
|
2124
|
-
});
|
|
2125
|
-
}
|
|
2126
|
-
async getSystemStatus() {
|
|
2127
|
-
return getApiV1SystemStatus();
|
|
2128
|
-
}
|
|
2129
|
-
async getHealth() {
|
|
2130
|
-
return getApiV1Health();
|
|
2413
|
+
super(config, client);
|
|
2131
2414
|
}
|
|
2132
2415
|
async getArtists() {
|
|
2133
2416
|
return getApiV1Artist();
|
|
@@ -2153,12 +2436,6 @@ class LidarrClient {
|
|
|
2153
2436
|
async searchArtists(term) {
|
|
2154
2437
|
return getApiV1ArtistLookup({ query: { term } });
|
|
2155
2438
|
}
|
|
2156
|
-
async runCommand(command) {
|
|
2157
|
-
return postApiV1Command({ body: command });
|
|
2158
|
-
}
|
|
2159
|
-
async getCommands() {
|
|
2160
|
-
return getApiV1Command();
|
|
2161
|
-
}
|
|
2162
2439
|
async getRootFolders() {
|
|
2163
2440
|
return getApiV1Rootfolder();
|
|
2164
2441
|
}
|
|
@@ -2272,15 +2549,6 @@ class LidarrClient {
|
|
|
2272
2549
|
async getCustomFormatSchema() {
|
|
2273
2550
|
return getApiV1CustomformatSchema();
|
|
2274
2551
|
}
|
|
2275
|
-
async getHostConfig() {
|
|
2276
|
-
return getApiV1ConfigHost();
|
|
2277
|
-
}
|
|
2278
|
-
async getHostConfigById(id) {
|
|
2279
|
-
return getApiV1ConfigHostById({ path: { id } });
|
|
2280
|
-
}
|
|
2281
|
-
async updateHostConfig(id, config) {
|
|
2282
|
-
return putApiV1ConfigHostById({ path: { id: String(id) }, body: config });
|
|
2283
|
-
}
|
|
2284
2552
|
async getNamingConfig() {
|
|
2285
2553
|
return getApiV1ConfigNaming();
|
|
2286
2554
|
}
|
|
@@ -2302,15 +2570,6 @@ class LidarrClient {
|
|
|
2302
2570
|
async updateMediaManagementConfig(id, config) {
|
|
2303
2571
|
return putApiV1ConfigMediamanagementById({ path: { id: String(id) }, body: config });
|
|
2304
2572
|
}
|
|
2305
|
-
async getUiConfig() {
|
|
2306
|
-
return getApiV1ConfigUi();
|
|
2307
|
-
}
|
|
2308
|
-
async getUiConfigById(id) {
|
|
2309
|
-
return getApiV1ConfigUiById({ path: { id } });
|
|
2310
|
-
}
|
|
2311
|
-
async updateUiConfig(id, config) {
|
|
2312
|
-
return putApiV1ConfigUiById({ path: { id: String(id) }, body: config });
|
|
2313
|
-
}
|
|
2314
2573
|
async getMetadataProviderConfig() {
|
|
2315
2574
|
return getApiV1ConfigMetadataprovider();
|
|
2316
2575
|
}
|
|
@@ -2320,111 +2579,12 @@ class LidarrClient {
|
|
|
2320
2579
|
async updateMetadataProviderConfig(id, config) {
|
|
2321
2580
|
return putApiV1ConfigMetadataproviderById({ path: { id: String(id) }, body: config });
|
|
2322
2581
|
}
|
|
2323
|
-
async restartSystem() {
|
|
2324
|
-
return postApiV1SystemRestart();
|
|
2325
|
-
}
|
|
2326
|
-
async shutdownSystem() {
|
|
2327
|
-
return postApiV1SystemShutdown();
|
|
2328
|
-
}
|
|
2329
|
-
async getSystemBackups() {
|
|
2330
|
-
return getApiV1SystemBackup();
|
|
2331
|
-
}
|
|
2332
|
-
async deleteSystemBackup(id) {
|
|
2333
|
-
return deleteApiV1SystemBackupById({ path: { id } });
|
|
2334
|
-
}
|
|
2335
|
-
async restoreSystemBackup(id) {
|
|
2336
|
-
return postApiV1SystemBackupRestoreById({ path: { id } });
|
|
2337
|
-
}
|
|
2338
|
-
async uploadSystemBackup() {
|
|
2339
|
-
return postApiV1SystemBackupRestoreUpload();
|
|
2340
|
-
}
|
|
2341
2582
|
async getSystemLogs() {
|
|
2342
2583
|
return getApiV1Log();
|
|
2343
2584
|
}
|
|
2344
|
-
async getLogFiles() {
|
|
2345
|
-
return getApiV1LogFile();
|
|
2346
|
-
}
|
|
2347
|
-
async getLogFileByName(filename) {
|
|
2348
|
-
return getApiV1LogFileByFilename({ path: { filename } });
|
|
2349
|
-
}
|
|
2350
2585
|
async getDiskSpace() {
|
|
2351
2586
|
return getApiV1Diskspace();
|
|
2352
2587
|
}
|
|
2353
|
-
async getTags() {
|
|
2354
|
-
return getApiV1Tag();
|
|
2355
|
-
}
|
|
2356
|
-
async addTag(tag) {
|
|
2357
|
-
return postApiV1Tag({ body: tag });
|
|
2358
|
-
}
|
|
2359
|
-
async getTag(id) {
|
|
2360
|
-
return getApiV1TagById({ path: { id } });
|
|
2361
|
-
}
|
|
2362
|
-
async updateTag(id, tag) {
|
|
2363
|
-
return putApiV1TagById({ path: { id: String(id) }, body: tag });
|
|
2364
|
-
}
|
|
2365
|
-
async deleteTag(id) {
|
|
2366
|
-
return deleteApiV1TagById({ path: { id } });
|
|
2367
|
-
}
|
|
2368
|
-
async getTagDetails() {
|
|
2369
|
-
return getApiV1TagDetail();
|
|
2370
|
-
}
|
|
2371
|
-
async getTagDetailById(id) {
|
|
2372
|
-
return getApiV1TagDetailById({ path: { id } });
|
|
2373
|
-
}
|
|
2374
|
-
async getDownloadClients() {
|
|
2375
|
-
return getApiV1Downloadclient();
|
|
2376
|
-
}
|
|
2377
|
-
async getDownloadClient(id) {
|
|
2378
|
-
return getApiV1DownloadclientById({ path: { id } });
|
|
2379
|
-
}
|
|
2380
|
-
async addDownloadClient(client2) {
|
|
2381
|
-
return postApiV1Downloadclient({ body: client2 });
|
|
2382
|
-
}
|
|
2383
|
-
async updateDownloadClient(id, client2) {
|
|
2384
|
-
return putApiV1DownloadclientById({ path: { id }, body: client2 });
|
|
2385
|
-
}
|
|
2386
|
-
async deleteDownloadClient(id) {
|
|
2387
|
-
return deleteApiV1DownloadclientById({ path: { id } });
|
|
2388
|
-
}
|
|
2389
|
-
async updateDownloadClientsBulk(clients) {
|
|
2390
|
-
return putApiV1DownloadclientBulk({ body: clients });
|
|
2391
|
-
}
|
|
2392
|
-
async deleteDownloadClientsBulk(ids) {
|
|
2393
|
-
return deleteApiV1DownloadclientBulk({ body: { ids } });
|
|
2394
|
-
}
|
|
2395
|
-
async getDownloadClientSchema() {
|
|
2396
|
-
return getApiV1DownloadclientSchema();
|
|
2397
|
-
}
|
|
2398
|
-
async testDownloadClient(client2) {
|
|
2399
|
-
return postApiV1DownloadclientTest({ body: client2 });
|
|
2400
|
-
}
|
|
2401
|
-
async testAllDownloadClients() {
|
|
2402
|
-
return postApiV1DownloadclientTestall();
|
|
2403
|
-
}
|
|
2404
|
-
async getIndexers() {
|
|
2405
|
-
return getApiV1Indexer();
|
|
2406
|
-
}
|
|
2407
|
-
async getIndexer(id) {
|
|
2408
|
-
return getApiV1IndexerById({ path: { id } });
|
|
2409
|
-
}
|
|
2410
|
-
async addIndexer(indexer) {
|
|
2411
|
-
return postApiV1Indexer({ body: indexer });
|
|
2412
|
-
}
|
|
2413
|
-
async updateIndexer(id, indexer) {
|
|
2414
|
-
return putApiV1IndexerById({ path: { id }, body: indexer });
|
|
2415
|
-
}
|
|
2416
|
-
async deleteIndexer(id) {
|
|
2417
|
-
return deleteApiV1IndexerById({ path: { id } });
|
|
2418
|
-
}
|
|
2419
|
-
async getIndexerSchema() {
|
|
2420
|
-
return getApiV1IndexerSchema();
|
|
2421
|
-
}
|
|
2422
|
-
async testIndexer(indexer) {
|
|
2423
|
-
return postApiV1IndexerTest({ body: indexer });
|
|
2424
|
-
}
|
|
2425
|
-
async testAllIndexers() {
|
|
2426
|
-
return postApiV1IndexerTestall();
|
|
2427
|
-
}
|
|
2428
2588
|
async getImportLists() {
|
|
2429
2589
|
return getApiV1Importlist();
|
|
2430
2590
|
}
|
|
@@ -2449,30 +2609,6 @@ class LidarrClient {
|
|
|
2449
2609
|
async testAllImportLists() {
|
|
2450
2610
|
return postApiV1ImportlistTestall();
|
|
2451
2611
|
}
|
|
2452
|
-
async getNotifications() {
|
|
2453
|
-
return getApiV1Notification();
|
|
2454
|
-
}
|
|
2455
|
-
async getNotification(id) {
|
|
2456
|
-
return getApiV1NotificationById({ path: { id } });
|
|
2457
|
-
}
|
|
2458
|
-
async addNotification(notification) {
|
|
2459
|
-
return postApiV1Notification({ body: notification });
|
|
2460
|
-
}
|
|
2461
|
-
async updateNotification(id, notification) {
|
|
2462
|
-
return putApiV1NotificationById({ path: { id }, body: notification });
|
|
2463
|
-
}
|
|
2464
|
-
async deleteNotification(id) {
|
|
2465
|
-
return deleteApiV1NotificationById({ path: { id } });
|
|
2466
|
-
}
|
|
2467
|
-
async getNotificationSchema() {
|
|
2468
|
-
return getApiV1NotificationSchema();
|
|
2469
|
-
}
|
|
2470
|
-
async testNotification(notification) {
|
|
2471
|
-
return postApiV1NotificationTest({ body: notification });
|
|
2472
|
-
}
|
|
2473
|
-
async testAllNotifications() {
|
|
2474
|
-
return postApiV1NotificationTestall();
|
|
2475
|
-
}
|
|
2476
2612
|
async getHistory(page, pageSize, sortKey, sortDirection, artistId, downloadId) {
|
|
2477
2613
|
const query = {};
|
|
2478
2614
|
if (page !== undefined)
|
|
@@ -2603,15 +2739,6 @@ class LidarrClient {
|
|
|
2603
2739
|
query.monitored = monitored;
|
|
2604
2740
|
return getApiV1WantedCutoff(Object.keys(query).length > 0 ? { query } : {});
|
|
2605
2741
|
}
|
|
2606
|
-
updateConfig(newConfig) {
|
|
2607
|
-
const updatedConfig = { ...this.clientConfig.config, ...newConfig };
|
|
2608
|
-
this.clientConfig = createServarrClient(updatedConfig);
|
|
2609
|
-
client.setConfig({
|
|
2610
|
-
baseUrl: this.clientConfig.getBaseUrl(),
|
|
2611
|
-
headers: this.clientConfig.getHeaders()
|
|
2612
|
-
});
|
|
2613
|
-
return this.clientConfig.config;
|
|
2614
|
-
}
|
|
2615
2742
|
}
|
|
2616
2743
|
export {
|
|
2617
2744
|
LidarrClient
|