{"version":3,"sources":["../../src/core/errors.ts","../../src/core/utils.ts","../../src/core/client.ts","../../src/prowlarr/resources/indexer.ts","../../src/prowlarr/resources/search.ts","../../src/prowlarr/resources/application.ts","../../src/prowlarr/resources/appProfile.ts","../../src/prowlarr/resources/indexerProxy.ts","../../src/prowlarr/resources/command.ts","../../src/prowlarr/resources/history.ts","../../src/prowlarr/resources/downloadClient.ts","../../src/prowlarr/resources/notification.ts","../../src/prowlarr/resources/tag.ts","../../src/prowlarr/resources/system.ts","../../src/prowlarr/resources/config.ts","../../src/prowlarr/resources/customFilter.ts","../../src/prowlarr/resources/filesystem.ts","../../src/prowlarr/resources/localization.ts","../../src/prowlarr/resources/newznab.ts","../../src/prowlarr/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export interface ValidationErrorDetail {\n  propertyName: string\n  errorMessage: string\n  attemptedValue?: unknown\n  severity?: string\n}\n\nexport class ArrError extends Error {\n  constructor(\n    message: string,\n    public readonly statusCode: number,\n    public readonly details?: unknown\n  ) {\n    super(message)\n    this.name = 'ArrError'\n    Object.setPrototypeOf(this, new.target.prototype)\n  }\n}\n\nexport class ValidationError extends ArrError {\n  constructor(\n    message: string,\n    public readonly validationErrors: ValidationErrorDetail[]\n  ) {\n    super(message, 400, validationErrors)\n    this.name = 'ValidationError'\n  }\n}\n\nexport class NotFoundError extends ArrError {\n  constructor(message: string = 'Resource not found') {\n    super(message, 404)\n    this.name = 'NotFoundError'\n  }\n}\n\nexport class UnauthorizedError extends ArrError {\n  constructor(message: string = 'Invalid API key') {\n    super(message, 401)\n    this.name = 'UnauthorizedError'\n  }\n}\n\nexport class ForbiddenError extends ArrError {\n  constructor(message: string = 'Access forbidden') {\n    super(message, 403)\n    this.name = 'ForbiddenError'\n  }\n}\n\nexport class ConflictError extends ArrError {\n  constructor(message: string = 'Resource conflict') {\n    super(message, 409)\n    this.name = 'ConflictError'\n  }\n}\n\nexport class ServerError extends ArrError {\n  constructor(message: string = 'Internal server error', statusCode: number = 500) {\n    super(message, statusCode)\n    this.name = 'ServerError'\n  }\n}\n\nexport class TimeoutError extends ArrError {\n  constructor(message: string = 'Request timeout') {\n    super(message, 408)\n    this.name = 'TimeoutError'\n  }\n}\n\nexport class NetworkError extends ArrError {\n  constructor(message: string = 'Network error', cause?: Error) {\n    super(message, 0, cause)\n    this.name = 'NetworkError'\n    if (cause) {\n      this.cause = cause\n    }\n  }\n}\n","export function buildQueryParams(\n  params: Record<string, unknown> | undefined\n): URLSearchParams {\n  const searchParams = new URLSearchParams()\n\n  if (!params) {\n    return searchParams\n  }\n\n  for (const [key, value] of Object.entries(params)) {\n    if (value === undefined || value === null) {\n      continue\n    }\n\n    if (Array.isArray(value)) {\n      for (const item of value) {\n        if (item !== undefined && item !== null) {\n          searchParams.append(key, String(item))\n        }\n      }\n    } else if (value instanceof Date) {\n      searchParams.set(key, value.toISOString())\n    } else if (typeof value === 'boolean') {\n      searchParams.set(key, value ? 'true' : 'false')\n    } else {\n      searchParams.set(key, String(value))\n    }\n  }\n\n  return searchParams\n}\n\nexport function joinPath(base: string, path: string): string {\n  const normalizedBase = base.endsWith('/') ? base.slice(0, -1) : base\n  const normalizedPath = path.startsWith('/') ? path : `/${path}`\n  return `${normalizedBase}${normalizedPath}`\n}\n\nexport function sleep(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Validates a filename to prevent path traversal attacks.\n * Throws an error if the filename contains path separators, parent directory references,\n * or absolute path indicators.\n */\nexport function validateFilename(filename: string): void {\n  if (!filename || typeof filename !== 'string') {\n    throw new Error('Invalid filename: filename must be a non-empty string')\n  }\n  if (filename.includes('/') || filename.includes('\\\\')) {\n    throw new Error('Invalid filename: path separators are not allowed')\n  }\n  if (filename.includes('..')) {\n    throw new Error('Invalid filename: parent directory references are not allowed')\n  }\n  if (/^[a-zA-Z]:/.test(filename)) {\n    throw new Error('Invalid filename: absolute paths are not allowed')\n  }\n}\n","import type { ClientConfig, RequestConfig, PaginatedResponse, PaginationOptions } from './types.js'\nimport type { ClientMethods } from './resource.js'\nimport {\n  ArrError,\n  ValidationError,\n  NotFoundError,\n  UnauthorizedError,\n  ForbiddenError,\n  ConflictError,\n  ServerError,\n  TimeoutError,\n  NetworkError,\n  type ValidationErrorDetail\n} from './errors.js'\nimport { buildQueryParams, joinPath } from './utils.js'\n\nconst DEFAULT_TIMEOUT = 30000\n\nexport abstract class BaseClient implements ClientMethods {\n  protected readonly config: Required<Pick<ClientConfig, 'baseUrl' | 'apiKey' | 'timeout'>> &\n    Omit<ClientConfig, 'baseUrl' | 'apiKey' | 'timeout'>\n\n  constructor(config: ClientConfig) {\n    if (!config.baseUrl) {\n      throw new Error('baseUrl is required')\n    }\n    if (!config.apiKey) {\n      throw new Error('apiKey is required')\n    }\n\n    this.config = {\n      timeout: DEFAULT_TIMEOUT,\n      ...config,\n      baseUrl: config.baseUrl.endsWith('/') ? config.baseUrl.slice(0, -1) : config.baseUrl\n    }\n  }\n\n  protected async request<T>(\n    method: string,\n    path: string,\n    options?: {\n      params?: Record<string, unknown>\n      body?: unknown\n    }\n  ): Promise<T> {\n    const url = new URL(joinPath(this.config.baseUrl, path))\n\n    if (options?.params) {\n      const queryParams = buildQueryParams(options.params)\n      queryParams.forEach((value, key) => {\n        url.searchParams.append(key, value)\n      })\n    }\n\n    const headers: Record<string, string> = {\n      'X-Api-Key': this.config.apiKey,\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      ...this.config.headers\n    }\n\n    const requestConfig: RequestConfig = {\n      url,\n      method,\n      headers,\n      body: options?.body ? JSON.stringify(options.body) : undefined\n    }\n\n    await this.config.onRequest?.(requestConfig)\n\n    let response: Response\n\n    try {\n      response = await fetch(url, {\n        method,\n        headers,\n        body: requestConfig.body,\n        signal: AbortSignal.timeout(this.config.timeout)\n      })\n    } catch (error) {\n      if (error instanceof Error) {\n        if (error.name === 'TimeoutError' || error.name === 'AbortError') {\n          const timeoutError = new TimeoutError(`Request timed out after ${this.config.timeout}ms`)\n          await this.config.onError?.(timeoutError)\n          throw timeoutError\n        }\n        const networkError = new NetworkError(error.message, error)\n        await this.config.onError?.(networkError)\n        throw networkError\n      }\n      throw error\n    }\n\n    await this.config.onResponse?.(response)\n\n    if (!response.ok) {\n      const error = await this.parseError(response)\n      await this.config.onError?.(error)\n      throw error\n    }\n\n    if (response.status === 204 || response.headers.get('content-length') === '0') {\n      return undefined as T\n    }\n\n    const contentType = response.headers.get('content-type')\n    if (contentType?.includes('application/json')) {\n      return response.json() as Promise<T>\n    }\n\n    return undefined as T\n  }\n\n  private async parseError(response: Response): Promise<ArrError> {\n    let body: unknown\n\n    try {\n      const text = await response.text()\n      if (text) {\n        body = JSON.parse(text)\n      }\n    } catch {\n      // Ignore JSON parse errors\n    }\n\n    const message = this.extractErrorMessage(body, response.statusText)\n\n    switch (response.status) {\n      case 400: {\n        const validationErrors = this.extractValidationErrors(body)\n        if (validationErrors.length > 0) {\n          return new ValidationError(message, validationErrors)\n        }\n        return new ArrError(message, 400, body)\n      }\n      case 401:\n        return new UnauthorizedError(message)\n      case 403:\n        return new ForbiddenError(message)\n      case 404:\n        return new NotFoundError(message)\n      case 409:\n        return new ConflictError(message)\n      default:\n        if (response.status >= 500) {\n          return new ServerError(message, response.status)\n        }\n        return new ArrError(message, response.status, body)\n    }\n  }\n\n  private extractErrorMessage(body: unknown, fallback: string): string {\n    if (body && typeof body === 'object') {\n      const obj = body as Record<string, unknown>\n      if (typeof obj.message === 'string') {\n        return obj.message\n      }\n      if (typeof obj.error === 'string') {\n        return obj.error\n      }\n      if (Array.isArray(obj) && obj.length > 0) {\n        const first = obj[0] as Record<string, unknown>\n        if (typeof first.errorMessage === 'string') {\n          return first.errorMessage\n        }\n      }\n    }\n    return fallback || 'Unknown error'\n  }\n\n  private extractValidationErrors(body: unknown): ValidationErrorDetail[] {\n    if (!body || !Array.isArray(body)) {\n      return []\n    }\n\n    return body\n      .filter((item): item is Record<string, unknown> => item && typeof item === 'object')\n      .map((item) => ({\n        propertyName: String(item.propertyName ?? ''),\n        errorMessage: String(item.errorMessage ?? ''),\n        attemptedValue: item.attemptedValue,\n        severity: item.severity ? String(item.severity) : undefined\n      }))\n  }\n\n  get<T>(path: string, params?: Record<string, unknown>): Promise<T> {\n    return this.request<T>('GET', path, { params })\n  }\n\n  post<T>(path: string, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n    return this.request<T>('POST', path, { body, params })\n  }\n\n  async postForm<T>(path: string, formData: FormData, params?: Record<string, unknown>): Promise<T> {\n    const url = new URL(joinPath(this.config.baseUrl, path))\n\n    if (params) {\n      const queryParams = buildQueryParams(params)\n      queryParams.forEach((value, key) => {\n        url.searchParams.append(key, value)\n      })\n    }\n\n    // Don't set Content-Type - let fetch set it with the multipart boundary\n    const headers: Record<string, string> = {\n      'X-Api-Key': this.config.apiKey,\n      Accept: 'application/json',\n      ...this.config.headers\n    }\n\n    const requestConfig: RequestConfig = {\n      url,\n      method: 'POST',\n      headers,\n      body: formData\n    }\n\n    await this.config.onRequest?.(requestConfig)\n\n    let response: Response\n\n    try {\n      response = await fetch(url, {\n        method: 'POST',\n        headers,\n        body: requestConfig.body,\n        signal: AbortSignal.timeout(this.config.timeout)\n      })\n    } catch (error) {\n      if (error instanceof Error) {\n        if (error.name === 'TimeoutError' || error.name === 'AbortError') {\n          const timeoutError = new TimeoutError(`Request timed out after ${this.config.timeout}ms`)\n          await this.config.onError?.(timeoutError)\n          throw timeoutError\n        }\n        const networkError = new NetworkError(error.message, error)\n        await this.config.onError?.(networkError)\n        throw networkError\n      }\n      throw error\n    }\n\n    await this.config.onResponse?.(response)\n\n    if (!response.ok) {\n      const error = await this.parseError(response)\n      await this.config.onError?.(error)\n      throw error\n    }\n\n    if (response.status === 204 || response.headers.get('content-length') === '0') {\n      return undefined as T\n    }\n\n    const contentType = response.headers.get('content-type')\n    if (contentType?.includes('application/json')) {\n      return response.json() as Promise<T>\n    }\n\n    return undefined as T\n  }\n\n  put<T>(path: string, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n    return this.request<T>('PUT', path, { body, params })\n  }\n\n  delete<T>(path: string, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n    return this.request<T>('DELETE', path, { body, params })\n  }\n\n  private async fetchRaw<T>(\n    path: string,\n    params: Record<string, unknown> | undefined,\n    parser: (response: Response) => Promise<T>\n  ): Promise<T> {\n    const url = new URL(joinPath(this.config.baseUrl, path))\n\n    if (params) {\n      const queryParams = buildQueryParams(params)\n      queryParams.forEach((value, key) => {\n        url.searchParams.append(key, value)\n      })\n    }\n\n    const headers: Record<string, string> = {\n      'X-Api-Key': this.config.apiKey,\n      ...this.config.headers\n    }\n\n    const requestConfig: RequestConfig = {\n      url,\n      method: 'GET',\n      headers,\n      body: undefined\n    }\n\n    await this.config.onRequest?.(requestConfig)\n\n    let response: Response\n\n    try {\n      response = await fetch(url, {\n        method: 'GET',\n        headers,\n        signal: AbortSignal.timeout(this.config.timeout)\n      })\n    } catch (error) {\n      if (error instanceof Error) {\n        if (error.name === 'TimeoutError' || error.name === 'AbortError') {\n          const timeoutError = new TimeoutError(`Request timed out after ${this.config.timeout}ms`)\n          await this.config.onError?.(timeoutError)\n          throw timeoutError\n        }\n        const networkError = new NetworkError(error.message, error)\n        await this.config.onError?.(networkError)\n        throw networkError\n      }\n      throw error\n    }\n\n    await this.config.onResponse?.(response)\n\n    if (!response.ok) {\n      const error = await this.parseError(response)\n      await this.config.onError?.(error)\n      throw error\n    }\n\n    return parser(response)\n  }\n\n  async getBuffer(path: string, params?: Record<string, unknown>): Promise<ArrayBuffer> {\n    return this.fetchRaw(path, params, (res) => res.arrayBuffer())\n  }\n\n  async getText(path: string, params?: Record<string, unknown>): Promise<string> {\n    return this.fetchRaw(path, params, (res) => res.text())\n  }\n\n  async *paginate<T>(\n    path: string,\n    options?: PaginationOptions & Record<string, unknown>\n  ): AsyncGenerator<T, void, undefined> {\n    const pageSize = options?.pageSize ?? 50\n    let page = options?.page ?? 1\n    let hasMore = true\n\n    while (hasMore) {\n      const response = await this.get<PaginatedResponse<T>>(path, {\n        ...options,\n        page,\n        pageSize\n      })\n\n      for (const record of response.records) {\n        yield record\n      }\n\n      hasMore = page * pageSize < response.totalRecords\n      page++\n    }\n  }\n\n  async paginateAll<T>(\n    path: string,\n    options?: PaginationOptions & Record<string, unknown>\n  ): Promise<T[]> {\n    const results: T[] = []\n    for await (const record of this.paginate<T>(path, options)) {\n      results.push(record)\n    }\n    return results\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Indexer, IndexerBulk, IndexerStats, IndexerStatus } from '../types.js'\n\nexport class IndexerResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Indexer[]> {\n    return this.client.get('/api/v1/indexer')\n  }\n\n  async getById(id: number): Promise<Indexer> {\n    return this.client.get(`/api/v1/indexer/${id}`)\n  }\n\n  async create(indexer: Omit<Indexer, 'id'>): Promise<Indexer> {\n    return this.client.post('/api/v1/indexer', indexer)\n  }\n\n  async update(id: number, indexer: Partial<Indexer> & { id: number }, forceSave?: boolean): Promise<Indexer> {\n    return this.client.put(`/api/v1/indexer/${id}`, indexer, forceSave !== undefined ? { forceSave } : undefined)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/indexer/${id}`)\n  }\n\n  async bulkUpdate(indexers: IndexerBulk): Promise<Indexer[]> {\n    return this.client.put('/api/v1/indexer/bulk', indexers)\n  }\n\n  async bulkDelete(ids: number[]): Promise<void> {\n    return this.client.delete('/api/v1/indexer/bulk', { ids })\n  }\n\n  async getSchema(): Promise<Indexer[]> {\n    return this.client.get('/api/v1/indexer/schema')\n  }\n\n  async test(indexer: Partial<Indexer>): Promise<void> {\n    return this.client.post('/api/v1/indexer/test', indexer)\n  }\n\n  async testAll(): Promise<void> {\n    return this.client.post('/api/v1/indexer/testall')\n  }\n}\n\nexport interface GetIndexerStatsOptions {\n  startDate?: Date | string\n  endDate?: Date | string\n  indexers?: number[]\n  protocols?: number[]\n  tags?: number[]\n  [key: string]: unknown\n}\n\nexport class IndexerStatsResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: GetIndexerStatsOptions): Promise<IndexerStats> {\n    if (!options) {\n      return this.client.get('/api/v1/indexerstats')\n    }\n\n    const params: Record<string, unknown> = { ...options }\n    if (options.startDate instanceof Date) {\n      params.startDate = options.startDate.toISOString()\n    }\n    if (options.endDate instanceof Date) {\n      params.endDate = options.endDate.toISOString()\n    }\n\n    return this.client.get('/api/v1/indexerstats', params)\n  }\n}\n\nexport class IndexerStatusResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<IndexerStatus[]> {\n    return this.client.get('/api/v1/indexerstatus')\n  }\n\n  async getById(id: number): Promise<IndexerStatus> {\n    return this.client.get(`/api/v1/indexerstatus/${id}`)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Release } from '../types.js'\n\nexport interface SearchOptions {\n  query?: string\n  type?: 'search' | 'tvsearch' | 'movie' | 'music' | 'book'\n  indexerIds?: number[]\n  categories?: number[]\n  limit?: number\n  offset?: number\n  [key: string]: unknown\n}\n\nexport class SearchResource {\n  constructor(private client: ClientMethods) {}\n\n  async query(options: SearchOptions): Promise<Release[]> {\n    return this.client.get('/api/v1/search', options)\n  }\n\n  async getById(guid: string): Promise<Release> {\n    return this.client.get(`/api/v1/search/${guid}`)\n  }\n\n  async grab(release: { guid: string; indexerId: number }): Promise<Release> {\n    return this.client.post('/api/v1/search', release)\n  }\n\n  async bulkGrab(releases: { guid: string; indexerId: number }[]): Promise<Release[]> {\n    return this.client.post('/api/v1/search/bulk', releases)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Application, ApplicationBulk } from '../types.js'\n\nexport class ApplicationResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Application[]> {\n    return this.client.get('/api/v1/applications')\n  }\n\n  async getById(id: number): Promise<Application> {\n    return this.client.get(`/api/v1/applications/${id}`)\n  }\n\n  async create(application: Omit<Application, 'id'>): Promise<Application> {\n    return this.client.post('/api/v1/applications', application)\n  }\n\n  async update(id: number, application: Partial<Application> & { id: number }, forceSave?: boolean): Promise<Application> {\n    return this.client.put(`/api/v1/applications/${id}`, application, forceSave !== undefined ? { forceSave } : undefined)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/applications/${id}`)\n  }\n\n  async bulkUpdate(applications: ApplicationBulk): Promise<Application[]> {\n    return this.client.put('/api/v1/applications/bulk', applications)\n  }\n\n  async bulkDelete(ids: number[]): Promise<void> {\n    return this.client.delete('/api/v1/applications/bulk', { ids })\n  }\n\n  async getSchema(): Promise<Application[]> {\n    return this.client.get('/api/v1/applications/schema')\n  }\n\n  async test(application: Partial<Application>): Promise<void> {\n    return this.client.post('/api/v1/applications/test', application)\n  }\n\n  async testAll(): Promise<void> {\n    return this.client.post('/api/v1/applications/testall')\n  }\n\n  async sync(): Promise<void> {\n    return this.client.post('/api/v1/applications/action/sync')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { AppProfile } from '../types.js'\n\nexport class AppProfileResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<AppProfile[]> {\n    return this.client.get('/api/v1/appprofile')\n  }\n\n  async getById(id: number): Promise<AppProfile> {\n    return this.client.get(`/api/v1/appprofile/${id}`)\n  }\n\n  async create(profile: Omit<AppProfile, 'id'>): Promise<AppProfile> {\n    return this.client.post('/api/v1/appprofile', profile)\n  }\n\n  async update(id: number, profile: Partial<AppProfile> & { id: number }): Promise<AppProfile> {\n    return this.client.put(`/api/v1/appprofile/${id}`, profile)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/appprofile/${id}`)\n  }\n\n  async getSchema(): Promise<AppProfile> {\n    return this.client.get('/api/v1/appprofile/schema')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { IndexerProxy } from '../types.js'\n\nexport class IndexerProxyResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<IndexerProxy[]> {\n    return this.client.get('/api/v1/indexerproxy')\n  }\n\n  async getById(id: number): Promise<IndexerProxy> {\n    return this.client.get(`/api/v1/indexerproxy/${id}`)\n  }\n\n  async create(proxy: Omit<IndexerProxy, 'id'>): Promise<IndexerProxy> {\n    return this.client.post('/api/v1/indexerproxy', proxy)\n  }\n\n  async update(id: number, proxy: Partial<IndexerProxy> & { id: number }, forceSave?: boolean): Promise<IndexerProxy> {\n    return this.client.put(`/api/v1/indexerproxy/${id}`, proxy, forceSave !== undefined ? { forceSave } : undefined)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/indexerproxy/${id}`)\n  }\n\n  async getSchema(): Promise<IndexerProxy[]> {\n    return this.client.get('/api/v1/indexerproxy/schema')\n  }\n\n  async test(proxy: Partial<IndexerProxy>): Promise<void> {\n    return this.client.post('/api/v1/indexerproxy/test', proxy)\n  }\n\n  async testAll(): Promise<void> {\n    return this.client.post('/api/v1/indexerproxy/testall')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { CommandResource } from '../types.js'\n\nexport type ProwlarrCommand =\n  | { name: 'ApplicationCheckUpdate' }\n  | { name: 'ApplicationIndexerSync'; forceSync?: boolean }\n  | { name: 'Backup' }\n  | { name: 'ClearLog' }\n  | { name: 'IndexerStatus' }\n  | { name: 'RssSync' }\n  | { name: 'RefreshIndexers' }\n\nexport class CommandResource_ {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<CommandResource[]> {\n    return this.client.get('/api/v1/command')\n  }\n\n  async getById(id: number): Promise<CommandResource> {\n    return this.client.get(`/api/v1/command/${id}`)\n  }\n\n  async execute(command: ProwlarrCommand): Promise<CommandResource> {\n    return this.client.post('/api/v1/command', command)\n  }\n\n  async cancel(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/command/${id}`)\n  }\n\n  // Convenience methods\n  async refreshIndexers(): Promise<CommandResource> {\n    return this.execute({ name: 'RefreshIndexers' })\n  }\n\n  async rssSync(): Promise<CommandResource> {\n    return this.execute({ name: 'RssSync' })\n  }\n\n  async backup(): Promise<CommandResource> {\n    return this.execute({ name: 'Backup' })\n  }\n\n  async applicationIndexerSync(forceSync?: boolean): Promise<CommandResource> {\n    return this.execute({ name: 'ApplicationIndexerSync', forceSync })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { PaginationOptions, PaginatedResponse } from '../../core/types.js'\nimport type { History, HistoryEventType } from '../types.js'\n\n// Numeric values pinned to upstream Prowlarr enum\n// (src/NzbDrone.Core/History/History.cs — HistoryEventType).\n// The .NET model binder rejects the string form even though the OpenAPI\n// spec declares it; numeric values are stable across releases.\nconst HISTORY_EVENT_TYPE_VALUES = {\n  unknown: 0,\n  releaseGrabbed: 1,\n  indexerQuery: 2,\n  indexerRss: 3,\n  indexerAuth: 4,\n  indexerInfo: 5,\n} as const satisfies Record<HistoryEventType, number>\n\nexport type EventTypeInput = HistoryEventType | number\nexport type EventTypeFilter = EventTypeInput | EventTypeInput[]\n\nfunction encodeEventType(value: EventTypeInput): number\nfunction encodeEventType(value: EventTypeFilter): number | number[]\nfunction encodeEventType(value: EventTypeFilter | undefined): number | number[] | undefined\nfunction encodeEventType(value: EventTypeFilter | undefined): number | number[] | undefined {\n  if (value === undefined) return undefined\n  if (Array.isArray(value)) {\n    return value.map((v) => (typeof v === 'number' ? v : HISTORY_EVENT_TYPE_VALUES[v]))\n  }\n  return typeof value === 'number' ? value : HISTORY_EVENT_TYPE_VALUES[value]\n}\n\nexport interface GetHistoryOptions extends PaginationOptions {\n  eventType?: EventTypeFilter\n  indexerId?: number\n  indexerIds?: number[]\n  downloadId?: string\n  successful?: boolean\n}\n\nfunction normalize(options: GetHistoryOptions | undefined) {\n  if (!options) return options\n  const { eventType, ...rest } = options\n  return eventType === undefined ? rest : { ...rest, eventType: encodeEventType(eventType) }\n}\n\nexport class HistoryResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: GetHistoryOptions): Promise<PaginatedResponse<History>> {\n    return this.client.get('/api/v1/history', normalize(options))\n  }\n\n  async *getAll(options?: Omit<GetHistoryOptions, 'page'>): AsyncGenerator<History, void, undefined> {\n    yield* this.client.paginate<History>('/api/v1/history', normalize(options))\n  }\n\n  async getAllArray(options?: Omit<GetHistoryOptions, 'page'>): Promise<History[]> {\n    return this.client.paginateAll<History>('/api/v1/history', normalize(options))\n  }\n\n  async getByIndexer(indexerId: number, options?: { limit?: number }): Promise<History[]> {\n    return this.client.get('/api/v1/history/indexer', { indexerId, ...options })\n  }\n\n  async getSince(date: Date | string, options?: { eventType?: EventTypeInput }): Promise<History[]> {\n    const dateStr = date instanceof Date ? date.toISOString() : date\n    const { eventType, ...rest } = options ?? {}\n    return this.client.get('/api/v1/history/since', {\n      date: dateStr,\n      ...rest,\n      ...(eventType !== undefined && { eventType: encodeEventType(eventType) }),\n    })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { DownloadClient, DownloadClientBulk, DownloadClientConfig } from '../types.js'\n\nexport class DownloadClientResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<DownloadClient[]> {\n    return this.client.get('/api/v1/downloadclient')\n  }\n\n  async getById(id: number): Promise<DownloadClient> {\n    return this.client.get(`/api/v1/downloadclient/${id}`)\n  }\n\n  async create(client: Omit<DownloadClient, 'id'>): Promise<DownloadClient> {\n    return this.client.post('/api/v1/downloadclient', client)\n  }\n\n  async update(id: number, client: Partial<DownloadClient> & { id: number }, forceSave?: boolean): Promise<DownloadClient> {\n    return this.client.put(`/api/v1/downloadclient/${id}`, client, forceSave !== undefined ? { forceSave } : undefined)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/downloadclient/${id}`)\n  }\n\n  async bulkUpdate(clients: DownloadClientBulk): Promise<DownloadClient[]> {\n    return this.client.put('/api/v1/downloadclient/bulk', clients)\n  }\n\n  async bulkDelete(ids: number[]): Promise<void> {\n    return this.client.delete('/api/v1/downloadclient/bulk', { ids })\n  }\n\n  async getSchema(): Promise<DownloadClient[]> {\n    return this.client.get('/api/v1/downloadclient/schema')\n  }\n\n  async test(client: Partial<DownloadClient>): Promise<void> {\n    return this.client.post('/api/v1/downloadclient/test', client)\n  }\n\n  async testAll(): Promise<void> {\n    return this.client.post('/api/v1/downloadclient/testall')\n  }\n}\n\nexport class DownloadClientConfigResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<DownloadClientConfig> {\n    return this.client.get('/api/v1/config/downloadclient')\n  }\n\n  async update(config: Partial<DownloadClientConfig> & { id: number }): Promise<DownloadClientConfig> {\n    return this.client.put(`/api/v1/config/downloadclient/${config.id}`, config)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Notification } from '../types.js'\n\nexport class NotificationResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Notification[]> {\n    return this.client.get('/api/v1/notification')\n  }\n\n  async getById(id: number): Promise<Notification> {\n    return this.client.get(`/api/v1/notification/${id}`)\n  }\n\n  async create(notification: Omit<Notification, 'id'>): Promise<Notification> {\n    return this.client.post('/api/v1/notification', notification)\n  }\n\n  async update(id: number, notification: Partial<Notification> & { id: number }, forceSave?: boolean): Promise<Notification> {\n    return this.client.put(`/api/v1/notification/${id}`, notification, forceSave !== undefined ? { forceSave } : undefined)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/notification/${id}`)\n  }\n\n  async getSchema(): Promise<Notification[]> {\n    return this.client.get('/api/v1/notification/schema')\n  }\n\n  async test(notification: Partial<Notification>): Promise<void> {\n    return this.client.post('/api/v1/notification/test', notification)\n  }\n\n  async testAll(): Promise<void> {\n    return this.client.post('/api/v1/notification/testall')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Tag, TagDetails } from '../types.js'\n\nexport class TagResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Tag[]> {\n    return this.client.get('/api/v1/tag')\n  }\n\n  async getById(id: number): Promise<Tag> {\n    return this.client.get(`/api/v1/tag/${id}`)\n  }\n\n  async create(tag: Omit<Tag, 'id'>): Promise<Tag> {\n    return this.client.post('/api/v1/tag', tag)\n  }\n\n  async update(id: number, tag: Partial<Tag> & { id: number }): Promise<Tag> {\n    return this.client.put(`/api/v1/tag/${id}`, tag)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/tag/${id}`)\n  }\n}\n\nexport class TagDetailsResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<TagDetails[]> {\n    return this.client.get('/api/v1/tag/detail')\n  }\n\n  async getById(id: number): Promise<TagDetails> {\n    return this.client.get(`/api/v1/tag/detail/${id}`)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { SystemResource, Health, Task, Backup, Log, LogFile, Update } from '../types.js'\nimport type { PaginationOptions, PaginatedResponse } from '../../core/types.js'\nimport { validateFilename } from '../../core/utils.js'\n\nexport class SystemInfoResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<SystemResource> {\n    return this.client.get('/api/v1/system/status')\n  }\n\n  async getRoutes(): Promise<unknown[]> {\n    return this.client.get('/api/v1/system/routes')\n  }\n\n  async getDuplicateRoutes(): Promise<unknown[]> {\n    return this.client.get('/api/v1/system/routes/duplicate')\n  }\n\n  async restart(): Promise<void> {\n    return this.client.post('/api/v1/system/restart')\n  }\n\n  async shutdown(): Promise<void> {\n    return this.client.post('/api/v1/system/shutdown')\n  }\n\n  /**\n   * Simple health check - returns \"Pong\"\n   */\n  async ping(): Promise<string> {\n    return this.client.get('/ping')\n  }\n}\n\nexport class HealthResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Health[]> {\n    return this.client.get('/api/v1/health')\n  }\n}\n\nexport class TaskResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Task[]> {\n    return this.client.get('/api/v1/system/task')\n  }\n\n  async getById(id: number): Promise<Task> {\n    return this.client.get(`/api/v1/system/task/${id}`)\n  }\n}\n\nexport class BackupResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Backup[]> {\n    return this.client.get('/api/v1/system/backup')\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/system/backup/${id}`)\n  }\n\n  async restore(id: number): Promise<void> {\n    return this.client.post(`/api/v1/system/backup/restore/${id}`)\n  }\n\n  async restoreUpload(formData: FormData): Promise<void> {\n    return this.client.postForm('/api/v1/system/backup/restore/upload', formData)\n  }\n}\n\nexport class LogResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: PaginationOptions): Promise<PaginatedResponse<Log>> {\n    return this.client.get('/api/v1/log', options)\n  }\n\n  async *getAll(options?: Omit<PaginationOptions, 'page'>): AsyncGenerator<Log, void, undefined> {\n    yield* this.client.paginate<Log>('/api/v1/log', options)\n  }\n\n  async getAllArray(options?: Omit<PaginationOptions, 'page'>): Promise<Log[]> {\n    return this.client.paginateAll<Log>('/api/v1/log', options)\n  }\n}\n\nexport class LogFileResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<LogFile[]> {\n    return this.client.get('/api/v1/log/file')\n  }\n\n  async getUpdate(): Promise<LogFile[]> {\n    return this.client.get('/api/v1/log/file/update')\n  }\n\n  /**\n   * Download a specific log file's contents\n   */\n  async download(filename: string): Promise<string> {\n    validateFilename(filename)\n    const sanitized = encodeURIComponent(filename)\n    return this.client.getText(`/api/v1/log/file/${sanitized}`)\n  }\n\n  /**\n   * Download a specific update log file's contents\n   */\n  async downloadUpdate(filename: string): Promise<string> {\n    validateFilename(filename)\n    const sanitized = encodeURIComponent(filename)\n    return this.client.getText(`/api/v1/log/file/update/${sanitized}`)\n  }\n}\n\nexport class UpdateResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<Update[]> {\n    return this.client.get('/api/v1/update')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { HostConfig, UiConfig, DevelopmentConfig } from '../types.js'\n\nexport class HostConfigResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<HostConfig> {\n    return this.client.get('/api/v1/config/host')\n  }\n\n  async update(config: Partial<HostConfig> & { id: number }): Promise<HostConfig> {\n    return this.client.put(`/api/v1/config/host/${config.id}`, config)\n  }\n}\n\nexport class UiConfigResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<UiConfig> {\n    return this.client.get('/api/v1/config/ui')\n  }\n\n  async update(config: Partial<UiConfig> & { id: number }): Promise<UiConfig> {\n    return this.client.put(`/api/v1/config/ui/${config.id}`, config)\n  }\n}\n\nexport class DevelopmentConfigResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<DevelopmentConfig> {\n    return this.client.get('/api/v1/config/development')\n  }\n\n  async update(config: Partial<DevelopmentConfig> & { id: number }): Promise<DevelopmentConfig> {\n    return this.client.put(`/api/v1/config/development/${config.id}`, config)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { CustomFilter } from '../types.js'\n\nexport class CustomFilterResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<CustomFilter[]> {\n    return this.client.get('/api/v1/customfilter')\n  }\n\n  async getById(id: number): Promise<CustomFilter> {\n    return this.client.get(`/api/v1/customfilter/${id}`)\n  }\n\n  async create(filter: Omit<CustomFilter, 'id'>): Promise<CustomFilter> {\n    return this.client.post('/api/v1/customfilter', filter)\n  }\n\n  async update(id: number, filter: Partial<CustomFilter> & { id: number }): Promise<CustomFilter> {\n    return this.client.put(`/api/v1/customfilter/${id}`, filter)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/customfilter/${id}`)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\n\nexport interface FileSystemEntry {\n  type: 'file' | 'folder' | 'drive'\n  name: string\n  path: string\n  size?: number\n  lastModified?: string\n}\n\nexport interface GetFileSystemOptions {\n  path: string\n  includeFiles?: boolean\n  allowFoldersWithoutTrailingSlashes?: boolean\n  [key: string]: unknown\n}\n\nexport class FileSystemResource {\n  constructor(private client: ClientMethods) {}\n\n  /**\n   * Browse the filesystem at the given path\n   */\n  async get(options: GetFileSystemOptions): Promise<FileSystemEntry[]> {\n    return this.client.get('/api/v1/filesystem', options)\n  }\n\n  /**\n   * Get the type of a path (file, folder, etc.)\n   */\n  async getType(path: string): Promise<{ type: string }> {\n    return this.client.get('/api/v1/filesystem/type', { path })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { LocalizationOption } from '../types.js'\n\nexport class LocalizationResource {\n  constructor(private client: ClientMethods) {}\n\n  /**\n   * Get localization dictionary\n   */\n  async get(): Promise<Record<string, string>> {\n    return this.client.get('/api/v1/localization')\n  }\n\n  /**\n   * Get available localization language options\n   */\n  async getOptions(): Promise<LocalizationOption[]> {\n    return this.client.get('/api/v1/localization/options')\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\n\n/**\n * Search options for Newznab/Torznab queries\n */\nexport interface NewznabSearchOptions {\n  /** Search query string */\n  q?: string\n  /** Categories to search (comma-separated or array) */\n  cat?: string | number[]\n  /** Extended attributes flag */\n  extended?: 0 | 1\n  /** Maximum results to return */\n  limit?: number\n  /** Offset for pagination */\n  offset?: number\n  /** API key (optional, uses configured key if not provided) */\n  apikey?: string\n  [key: string]: unknown\n}\n\n/**\n * TV search specific options\n */\nexport interface NewznabTvSearchOptions extends NewznabSearchOptions {\n  /** TVDB ID */\n  tvdbid?: number\n  /** TVRage ID */\n  rid?: number\n  /** TVMAZE ID */\n  tvmazeid?: number\n  /** IMDB ID (for TV shows) */\n  imdbid?: string\n  /** TMDb ID */\n  tmdbid?: number\n  /** Season number */\n  season?: number | string\n  /** Episode number */\n  ep?: number | string\n}\n\n/**\n * Movie search specific options\n */\nexport interface NewznabMovieSearchOptions extends NewznabSearchOptions {\n  /** IMDB ID (e.g., \"tt1234567\" or just \"1234567\") */\n  imdbid?: string\n  /** TMDb ID */\n  tmdbid?: number\n}\n\n/**\n * Music search specific options\n */\nexport interface NewznabMusicSearchOptions extends NewznabSearchOptions {\n  /** Album name */\n  album?: string\n  /** Artist name */\n  artist?: string\n  /** Music label */\n  label?: string\n  /** Release year */\n  year?: number\n}\n\n/**\n * Book search specific options\n */\nexport interface NewznabBookSearchOptions extends NewznabSearchOptions {\n  /** Book title */\n  title?: string\n  /** Author name */\n  author?: string\n}\n\n/**\n * Resource for accessing Newznab/Torznab API endpoints\n *\n * These endpoints provide standardized indexer access using the Newznab protocol,\n * which returns XML responses. Torznab is the torrent-specific extension of Newznab.\n *\n * @example\n * ```typescript\n * const prowlarr = new ProwlarrClient({ baseUrl: 'http://localhost:9696', apiKey: 'your-api-key' })\n *\n * // Get indexer capabilities\n * const caps = await prowlarr.newznab.getCaps(1)\n *\n * // Search for releases\n * const results = await prowlarr.newznab.search(1, { q: 'ubuntu' })\n *\n * // TV search with TVDB ID\n * const tvResults = await prowlarr.newznab.tvSearch(1, { tvdbid: 12345, season: 1, ep: 1 })\n *\n * // Download a release\n * const nzb = await prowlarr.newznab.download(1, 'release-guid')\n * ```\n */\nexport class NewznabResource {\n  constructor(private client: ClientMethods) {}\n\n  /**\n   * Get indexer capabilities (Newznab caps function)\n   * Returns XML describing what the indexer supports including categories,\n   * search capabilities, and server info.\n   *\n   * @param indexerId The indexer ID\n   * @returns XML string containing indexer capabilities\n   */\n  async getCaps(indexerId: number): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, { t: 'caps' })\n  }\n\n  /**\n   * Perform a general search using Newznab protocol\n   *\n   * @param indexerId The indexer ID\n   * @param options Search options\n   * @returns XML string containing search results\n   */\n  async search(indexerId: number, options?: NewznabSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'search',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Perform a TV search using Newznab protocol\n   * Supports searching by TVDB ID, TVRage ID, IMDB ID, or query string\n   *\n   * @param indexerId The indexer ID\n   * @param options TV search options including IDs and season/episode\n   * @returns XML string containing search results\n   */\n  async tvSearch(indexerId: number, options?: NewznabTvSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'tvsearch',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Perform a movie search using Newznab protocol\n   * Supports searching by IMDB ID, TMDb ID, or query string\n   *\n   * @param indexerId The indexer ID\n   * @param options Movie search options\n   * @returns XML string containing search results\n   */\n  async movieSearch(indexerId: number, options?: NewznabMovieSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'movie',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Perform a music search using Newznab protocol\n   *\n   * @param indexerId The indexer ID\n   * @param options Music search options\n   * @returns XML string containing search results\n   */\n  async musicSearch(indexerId: number, options?: NewznabMusicSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'music',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Perform a book search using Newznab protocol\n   *\n   * @param indexerId The indexer ID\n   * @param options Book search options\n   * @returns XML string containing search results\n   */\n  async bookSearch(indexerId: number, options?: NewznabBookSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'book',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Download a release (NZB file for Usenet, torrent file for Torznab)\n   *\n   * @param indexerId The indexer ID\n   * @param guid The release GUID or link identifier\n   * @returns ArrayBuffer containing the downloaded file\n   */\n  async download(indexerId: number, guid: string): Promise<ArrayBuffer> {\n    return this.client.getBuffer(`/${indexerId}/download`, { link: guid })\n  }\n\n  /**\n   * Get raw RSS/Atom feed for an indexer\n   *\n   * @param indexerId The indexer ID\n   * @param options Optional feed options (limit, cat, etc.)\n   * @returns XML string containing the feed\n   */\n  async getFeed(indexerId: number, options?: NewznabSearchOptions): Promise<string> {\n    return this.client.getText(`/${indexerId}/api`, {\n      t: 'search',\n      ...this.formatOptions(options)\n    })\n  }\n\n  /**\n   * Format options for API call, converting arrays to comma-separated strings\n   */\n  private formatOptions(options?: Record<string, unknown>): Record<string, unknown> {\n    if (!options) return {}\n\n    const formatted: Record<string, unknown> = {}\n    for (const [key, value] of Object.entries(options)) {\n      if (Array.isArray(value)) {\n        formatted[key] = value.join(',')\n      } else if (value !== undefined) {\n        formatted[key] = value\n      }\n    }\n    return formatted\n  }\n}\n","import { BaseClient, type ClientConfig } from '../core/index.js'\nimport { IndexerResource, IndexerStatsResource, IndexerStatusResource } from './resources/indexer.js'\nimport { SearchResource } from './resources/search.js'\nimport { ApplicationResource } from './resources/application.js'\nimport { AppProfileResource } from './resources/appProfile.js'\nimport { IndexerProxyResource } from './resources/indexerProxy.js'\nimport { CommandResource_ } from './resources/command.js'\nimport { HistoryResource } from './resources/history.js'\nimport { DownloadClientResource, DownloadClientConfigResource } from './resources/downloadClient.js'\nimport { NotificationResource } from './resources/notification.js'\nimport { TagResource, TagDetailsResource } from './resources/tag.js'\nimport { SystemInfoResource, HealthResource, TaskResource, BackupResource, LogResource, LogFileResource, UpdateResource } from './resources/system.js'\nimport { HostConfigResource, UiConfigResource, DevelopmentConfigResource } from './resources/config.js'\nimport { CustomFilterResource } from './resources/customFilter.js'\nimport { FileSystemResource } from './resources/filesystem.js'\nimport { LocalizationResource } from './resources/localization.js'\nimport { NewznabResource } from './resources/newznab.js'\n\nexport class ProwlarrClient extends BaseClient {\n  public readonly indexer: IndexerResource\n  public readonly indexerStats: IndexerStatsResource\n  public readonly indexerStatus: IndexerStatusResource\n  public readonly search: SearchResource\n  public readonly application: ApplicationResource\n  public readonly appProfile: AppProfileResource\n  public readonly indexerProxy: IndexerProxyResource\n  public readonly command: CommandResource_\n  public readonly history: HistoryResource\n  public readonly downloadClient: DownloadClientResource\n  public readonly downloadClientConfig: DownloadClientConfigResource\n  public readonly notification: NotificationResource\n  public readonly tag: TagResource\n  public readonly tagDetails: TagDetailsResource\n  public readonly system: SystemInfoResource\n  public readonly health: HealthResource\n  public readonly task: TaskResource\n  public readonly backup: BackupResource\n  public readonly log: LogResource\n  public readonly logFile: LogFileResource\n  public readonly update: UpdateResource\n  public readonly hostConfig: HostConfigResource\n  public readonly uiConfig: UiConfigResource\n  public readonly developmentConfig: DevelopmentConfigResource\n  public readonly customFilter: CustomFilterResource\n  public readonly filesystem: FileSystemResource\n  public readonly localization: LocalizationResource\n  public readonly newznab: NewznabResource\n\n  constructor(config: ClientConfig) {\n    super(config)\n\n    this.indexer = new IndexerResource(this)\n    this.indexerStats = new IndexerStatsResource(this)\n    this.indexerStatus = new IndexerStatusResource(this)\n    this.search = new SearchResource(this)\n    this.application = new ApplicationResource(this)\n    this.appProfile = new AppProfileResource(this)\n    this.indexerProxy = new IndexerProxyResource(this)\n    this.command = new CommandResource_(this)\n    this.history = new HistoryResource(this)\n    this.downloadClient = new DownloadClientResource(this)\n    this.downloadClientConfig = new DownloadClientConfigResource(this)\n    this.notification = new NotificationResource(this)\n    this.tag = new TagResource(this)\n    this.tagDetails = new TagDetailsResource(this)\n    this.system = new SystemInfoResource(this)\n    this.health = new HealthResource(this)\n    this.task = new TaskResource(this)\n    this.backup = new BackupResource(this)\n    this.log = new LogResource(this)\n    this.logFile = new LogFileResource(this)\n    this.update = new UpdateResource(this)\n    this.hostConfig = new HostConfigResource(this)\n    this.uiConfig = new UiConfigResource(this)\n    this.developmentConfig = new DevelopmentConfigResource(this)\n    this.customFilter = new CustomFilterResource(this)\n    this.filesystem = new FileSystemResource(this)\n    this.localization = new LocalizationResource(this)\n    this.newznab = new NewznabResource(this)\n  }\n}\n"]}