tsarr 2.0.0 → 2.1.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 CHANGED
@@ -93,6 +93,8 @@ tsarr completions fish > ~/.config/fish/completions/tsarr.fish
93
93
  | `prowlarr` | indexer, search, app, tag, system |
94
94
  | `bazarr` | series, movie, episode, provider, language, system |
95
95
 
96
+ See the [CLI Guide](./docs/cli.md) for full documentation including all commands, scripting examples, and shell completions.
97
+
96
98
  ## SDK
97
99
 
98
100
  ### Quick Start
@@ -148,8 +150,9 @@ bun run format
148
150
 
149
151
  ## 📖 Documentation
150
152
 
153
+ - [CLI Guide](./docs/cli.md) - Complete CLI documentation with all commands and scripting examples
154
+ - [SDK Usage Guide](./docs/usage.md) - SDK usage documentation with examples
151
155
  - [API Documentation](https://robbeverhelst.github.io/Tsarr/) - Auto-generated TypeScript API docs
152
- - [Usage Guide](./docs/usage.md) - Complete usage documentation with examples
153
156
  - [Examples](./docs/examples.md) - Real-world automation examples
154
157
  - [Examples Directory](./examples/) - Runnable example scripts
155
158
 
@@ -1,2 +1,16 @@
1
- export declare const doctor: import("citty").CommandDef<import("citty").ArgsDef>;
1
+ export declare const doctor: import("citty").CommandDef<{
2
+ readonly json: {
3
+ readonly type: "boolean";
4
+ readonly description: "Output as JSON";
5
+ };
6
+ readonly table: {
7
+ readonly type: "boolean";
8
+ readonly description: "Output as table";
9
+ };
10
+ readonly quiet: {
11
+ readonly type: "boolean";
12
+ readonly alias: "q";
13
+ readonly description: "Output service names only";
14
+ };
15
+ }>;
2
16
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,MAAM,qDAyCjB,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;EA2EjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,GAAG,EACnD,SAAS,EAAE,WAAW,EAAE,uDAwHzB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,GAAG,EACnD,SAAS,EAAE,WAAW,EAAE,uDAgIzB"}
@@ -2,6 +2,7 @@ import type { ServarrClientConfig } from '../core/types.js';
2
2
  export interface ServiceConfig {
3
3
  baseUrl: string;
4
4
  apiKey: string;
5
+ apiKeyFile?: string;
5
6
  timeout?: number;
6
7
  }
7
8
  export interface TsarrCliConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;KACrC,CAAC;CACH;AAED,QAAA,MAAM,QAAQ,0EAA2E,CAAC;AAE1F,QAAA,MAAM,kBAAkB,QAAyC,CAAC;AAClE,QAAA,MAAM,iBAAiB,gBAAgB,CAAC;AAwCxC,wBAAgB,UAAU,IAAI,cAAc,CAsB3C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAShF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAI5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI,CAoB9E;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAMnF;AAED,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;KACrC,CAAC;CACH;AAED,QAAA,MAAM,QAAQ,0EAA2E,CAAC;AAE1F,QAAA,MAAM,kBAAkB,QAAyC,CAAC;AAClE,QAAA,MAAM,iBAAiB,gBAAgB,CAAC;AAsExC,wBAAgB,UAAU,IAAI,cAAc,CA+B3C;AA0CD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAsBhF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAI5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI,CAoB9E;AAcD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAMnF;AAED,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/cli/index.js CHANGED
@@ -4543,12 +4543,33 @@ ${indent}`);
4543
4543
  // src/cli/config.ts
4544
4544
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
4545
4545
  import { homedir } from "os";
4546
- import { join, resolve } from "path";
4546
+ import { dirname, isAbsolute, join, resolve } from "path";
4547
+ function normalizeServiceConfig(service) {
4548
+ if (!service)
4549
+ return;
4550
+ const normalized = {
4551
+ baseUrl: service.baseUrl ?? "",
4552
+ apiKey: service.apiKey ?? "",
4553
+ ...service.apiKeyFile ? { apiKeyFile: service.apiKeyFile } : {}
4554
+ };
4555
+ const timeout = typeof service.timeout === "string" ? Number(service.timeout) : service.timeout;
4556
+ if (typeof timeout === "number" && Number.isFinite(timeout)) {
4557
+ normalized.timeout = timeout;
4558
+ }
4559
+ return normalized;
4560
+ }
4561
+ function normalizeConfig(config) {
4562
+ const services = Object.fromEntries(Object.entries(config.services ?? {}).map(([name, service]) => [name, normalizeServiceConfig(service)]).filter(([, service]) => service != null));
4563
+ return {
4564
+ ...config,
4565
+ ...Object.keys(services).length > 0 ? { services } : {}
4566
+ };
4567
+ }
4547
4568
  function readJsonFile(path) {
4548
4569
  if (!existsSync(path))
4549
4570
  return {};
4550
4571
  try {
4551
- return JSON.parse(readFileSync(path, "utf-8"));
4572
+ return normalizeConfig(JSON.parse(readFileSync(path, "utf-8")));
4552
4573
  } catch {
4553
4574
  return {};
4554
4575
  }
@@ -4583,18 +4604,25 @@ function findLocalConfigPath() {
4583
4604
  }
4584
4605
  }
4585
4606
  function loadConfig() {
4586
- const base = { services: {} };
4587
4607
  const global = readJsonFile(GLOBAL_CONFIG_PATH);
4588
4608
  const localPath = findLocalConfigPath();
4589
4609
  const local = localPath ? readJsonFile(localPath) : {};
4590
4610
  const env2 = getEnvConfig();
4611
+ const allServiceNames = new Set([
4612
+ ...Object.keys(global.services ?? {}),
4613
+ ...Object.keys(local.services ?? {}),
4614
+ ...Object.keys(env2.services ?? {})
4615
+ ]);
4616
+ const services = {};
4617
+ for (const name of allServiceNames) {
4618
+ services[name] = {
4619
+ ...global.services?.[name],
4620
+ ...local.services?.[name],
4621
+ ...env2.services?.[name]
4622
+ };
4623
+ }
4591
4624
  const merged = {
4592
- services: {
4593
- ...base.services,
4594
- ...global.services,
4595
- ...local.services,
4596
- ...env2.services
4597
- },
4625
+ services,
4598
4626
  defaults: {
4599
4627
  ...global.defaults,
4600
4628
  ...local.defaults
@@ -4602,14 +4630,51 @@ function loadConfig() {
4602
4630
  };
4603
4631
  return merged;
4604
4632
  }
4633
+ function resolveConfigRelativePath(filePath, configPath) {
4634
+ if (isAbsolute(filePath) || !configPath) {
4635
+ return filePath;
4636
+ }
4637
+ return resolve(dirname(configPath), filePath);
4638
+ }
4639
+ function getResolvedApiKeyFilePath(serviceName, service, localPath, local, global) {
4640
+ if (!service.apiKeyFile)
4641
+ return;
4642
+ if (local.services?.[serviceName]?.apiKeyFile) {
4643
+ return resolveConfigRelativePath(service.apiKeyFile, localPath);
4644
+ }
4645
+ if (global.services?.[serviceName]?.apiKeyFile) {
4646
+ return resolveConfigRelativePath(service.apiKeyFile, GLOBAL_CONFIG_PATH);
4647
+ }
4648
+ return service.apiKeyFile;
4649
+ }
4650
+ function readApiKeyFile(filePath) {
4651
+ if (!existsSync(filePath)) {
4652
+ throw new Error(`API key file not found: ${filePath}`);
4653
+ }
4654
+ try {
4655
+ return readFileSync(filePath, "utf-8").trimEnd();
4656
+ } catch (err) {
4657
+ throw new Error(`Failed to read API key file: ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
4658
+ }
4659
+ }
4605
4660
  function getServiceConfig(serviceName) {
4661
+ const global = readJsonFile(GLOBAL_CONFIG_PATH);
4662
+ const localPath = findLocalConfigPath();
4663
+ const local = localPath ? readJsonFile(localPath) : {};
4606
4664
  const config = loadConfig();
4607
4665
  const service = config.services[serviceName];
4608
- if (!service?.baseUrl || !service?.apiKey)
4666
+ if (!service?.baseUrl)
4667
+ return null;
4668
+ let apiKey = service.apiKey;
4669
+ const apiKeyFilePath = getResolvedApiKeyFilePath(serviceName, service, localPath, local, global);
4670
+ if (!apiKey && apiKeyFilePath) {
4671
+ apiKey = readApiKeyFile(apiKeyFilePath);
4672
+ }
4673
+ if (!apiKey)
4609
4674
  return null;
4610
4675
  return {
4611
4676
  baseUrl: service.baseUrl,
4612
- apiKey: service.apiKey,
4677
+ apiKey,
4613
4678
  ...service.timeout ? { timeout: service.timeout } : {}
4614
4679
  };
4615
4680
  }
@@ -4646,13 +4711,23 @@ function setConfigValue(key, value, global = true) {
4646
4711
  }
4647
4712
  current = current[parts[i2]];
4648
4713
  }
4649
- current[parts[parts.length - 1]] = value;
4714
+ current[parts[parts.length - 1]] = parseConfigValue(key, value);
4650
4715
  if (global) {
4651
4716
  saveGlobalConfig(config);
4652
4717
  } else {
4653
4718
  saveLocalConfig(config);
4654
4719
  }
4655
4720
  }
4721
+ function parseConfigValue(key, value) {
4722
+ if (key.endsWith(".timeout")) {
4723
+ const timeout = Number(value);
4724
+ if (!Number.isFinite(timeout) || timeout < 0) {
4725
+ throw new Error(`Invalid timeout value "${value}". Expected a non-negative number.`);
4726
+ }
4727
+ return timeout;
4728
+ }
4729
+ return value;
4730
+ }
4656
4731
  function loadScopedConfig(scope) {
4657
4732
  if (scope === "global") {
4658
4733
  return readJsonFile(GLOBAL_CONFIG_PATH);
@@ -4851,6 +4926,9 @@ Run \`tsarr config init\` or set TSARR_${serviceName.toUpperCase()}_API_KEY`);
4851
4926
  process.exit(1);
4852
4927
  }
4853
4928
  let result = raw?.data !== undefined ? raw.data : raw;
4929
+ if (result != null && typeof result === "object" && "data" in result && Object.keys(result).length === 1) {
4930
+ result = result.data;
4931
+ }
4854
4932
  if (result?.records !== undefined && Array.isArray(result.records)) {
4855
4933
  result = result.records;
4856
4934
  }
@@ -15198,13 +15276,17 @@ var exports_bazarr = {};
15198
15276
  __export(exports_bazarr, {
15199
15277
  BazarrClient: () => BazarrClient
15200
15278
  });
15279
+ function getBazarrApiBaseUrl(baseUrl) {
15280
+ const normalizedBaseUrl = baseUrl.replace(/\/$/, "");
15281
+ return normalizedBaseUrl.endsWith("/api") ? normalizedBaseUrl : `${normalizedBaseUrl}/api`;
15282
+ }
15201
15283
 
15202
15284
  class BazarrClient {
15203
15285
  clientConfig;
15204
15286
  constructor(config) {
15205
15287
  this.clientConfig = createServarrClient(config);
15206
15288
  client6.setConfig({
15207
- baseUrl: this.clientConfig.getBaseUrl(),
15289
+ baseUrl: getBazarrApiBaseUrl(this.clientConfig.getBaseUrl()),
15208
15290
  headers: this.clientConfig.getHeaders()
15209
15291
  });
15210
15292
  }
@@ -15543,6 +15625,10 @@ class BazarrClient {
15543
15625
  updateConfig(newConfig) {
15544
15626
  const updatedConfig = { ...this.clientConfig.config, ...newConfig };
15545
15627
  this.clientConfig = createServarrClient(updatedConfig);
15628
+ client6.setConfig({
15629
+ baseUrl: getBazarrApiBaseUrl(this.clientConfig.getBaseUrl()),
15630
+ headers: this.clientConfig.getHeaders()
15631
+ });
15546
15632
  return this.clientConfig.config;
15547
15633
  }
15548
15634
  }
@@ -15657,6 +15743,9 @@ var exports_doctor = {};
15657
15743
  __export(exports_doctor, {
15658
15744
  doctor: () => doctor
15659
15745
  });
15746
+ function getDoctorVersion(status) {
15747
+ return status?.data?.data?.version ?? status?.data?.data?.bazarr_version ?? status?.data?.version ?? status?.version ?? status?.data?.bazarr_version ?? status?.bazarr_version ?? undefined;
15748
+ }
15660
15749
  var clientFactories, doctor;
15661
15750
  var init_doctor = __esm(() => {
15662
15751
  init_dist();
@@ -15681,37 +15770,71 @@ var init_doctor = __esm(() => {
15681
15770
  name: "doctor",
15682
15771
  description: "Test all configured service connections"
15683
15772
  },
15684
- async run() {
15685
- consola.info(`Checking connections...
15686
- `);
15687
- const _config = loadConfig();
15773
+ args: {
15774
+ json: { type: "boolean", description: "Output as JSON" },
15775
+ table: { type: "boolean", description: "Output as table" },
15776
+ quiet: { type: "boolean", alias: "q", description: "Output service names only" }
15777
+ },
15778
+ async run({ args }) {
15779
+ const format = detectFormat(args);
15688
15780
  let hasAny = false;
15781
+ const results = [];
15782
+ if (format === "table") {
15783
+ consola.info(`Checking connections...
15784
+ `);
15785
+ }
15689
15786
  for (const service of SERVICES) {
15690
15787
  const svcConfig = getServiceConfig(service);
15691
15788
  if (!svcConfig) {
15692
- console.log(` ${service.padEnd(10)} (not configured)`);
15789
+ results.push({
15790
+ service,
15791
+ configured: false,
15792
+ status: "not configured"
15793
+ });
15693
15794
  continue;
15694
15795
  }
15695
15796
  hasAny = true;
15696
15797
  try {
15697
15798
  const factory = clientFactories[service];
15698
15799
  if (!factory) {
15699
- console.log(` ${service.padEnd(10)} ${svcConfig.baseUrl.padEnd(30)} \u2014 SKIP`);
15800
+ results.push({
15801
+ service,
15802
+ configured: true,
15803
+ status: "fail",
15804
+ baseUrl: svcConfig.baseUrl,
15805
+ error: "No client factory available"
15806
+ });
15700
15807
  continue;
15701
15808
  }
15702
15809
  const client7 = factory(svcConfig);
15703
15810
  const status = await client7.getSystemStatus();
15704
- const version = status?.data?.version ?? status?.version ?? "?";
15705
- console.log(` ${service.padEnd(10)} ${svcConfig.baseUrl.padEnd(30)} v${version} OK`);
15811
+ const version = getDoctorVersion(status) ?? "?";
15812
+ results.push({
15813
+ service,
15814
+ configured: true,
15815
+ status: "ok",
15816
+ version: String(version),
15817
+ baseUrl: svcConfig.baseUrl
15818
+ });
15706
15819
  } catch (error) {
15707
15820
  const msg = error instanceof Error ? error.message : "Unknown error";
15708
- console.log(` ${service.padEnd(10)} ${svcConfig.baseUrl.padEnd(30)} \u2014 FAIL ${msg}`);
15821
+ results.push({
15822
+ service,
15823
+ configured: true,
15824
+ status: "fail",
15825
+ baseUrl: svcConfig.baseUrl,
15826
+ error: msg
15827
+ });
15709
15828
  }
15710
15829
  }
15711
- if (!hasAny) {
15830
+ if (!hasAny && format === "table") {
15712
15831
  consola.warn("\nNo services configured. Run `tsarr config init` to set up.");
15713
15832
  }
15714
- console.log();
15833
+ formatOutput(results, {
15834
+ format,
15835
+ columns: ["service", "status", "version", "baseUrl", "error"],
15836
+ idField: "service"
15837
+ });
15715
15838
  }
15716
15839
  });
15717
15840
  });
@@ -16084,10 +16207,12 @@ var init_completions = __esm(() => {
16084
16207
 
16085
16208
  // src/cli/index.ts
16086
16209
  init_dist();
16210
+ import { readFileSync as readFileSync2 } from "fs";
16211
+ var { version } = JSON.parse(readFileSync2(new URL("../../package.json", import.meta.url), "utf-8"));
16087
16212
  var main = defineCommand({
16088
16213
  meta: {
16089
16214
  name: "tsarr",
16090
- version: "1.8.0",
16215
+ version,
16091
16216
  description: "CLI for Servarr APIs (Radarr, Sonarr, Lidarr, Readarr, Prowlarr, Bazarr)"
16092
16217
  },
16093
16218
  subCommands: {
@@ -1 +1 @@
1
- {"version":3,"file":"bazarr.d.ts","sourceRoot":"","sources":["../../src/clients/bazarr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bazarr.d.ts","sourceRoot":"","sources":["../../src/clients/bazarr.ts"],"names":[],"mappings":"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"}
@@ -1195,12 +1195,17 @@ var postWebHooksSonarr = (options) => (options.client ?? client).post({
1195
1195
  }
1196
1196
  });
1197
1197
  // src/clients/bazarr.ts
1198
+ function getBazarrApiBaseUrl(baseUrl) {
1199
+ const normalizedBaseUrl = baseUrl.replace(/\/$/, "");
1200
+ return normalizedBaseUrl.endsWith("/api") ? normalizedBaseUrl : `${normalizedBaseUrl}/api`;
1201
+ }
1202
+
1198
1203
  class BazarrClient {
1199
1204
  clientConfig;
1200
1205
  constructor(config) {
1201
1206
  this.clientConfig = createServarrClient(config);
1202
1207
  client.setConfig({
1203
- baseUrl: this.clientConfig.getBaseUrl(),
1208
+ baseUrl: getBazarrApiBaseUrl(this.clientConfig.getBaseUrl()),
1204
1209
  headers: this.clientConfig.getHeaders()
1205
1210
  });
1206
1211
  }
@@ -1539,6 +1544,10 @@ class BazarrClient {
1539
1544
  updateConfig(newConfig) {
1540
1545
  const updatedConfig = { ...this.clientConfig.config, ...newConfig };
1541
1546
  this.clientConfig = createServarrClient(updatedConfig);
1547
+ client.setConfig({
1548
+ baseUrl: getBazarrApiBaseUrl(this.clientConfig.getBaseUrl()),
1549
+ headers: this.clientConfig.getHeaders()
1550
+ });
1542
1551
  return this.clientConfig.config;
1543
1552
  }
1544
1553
  }