{"version":3,"sources":["../../src/core/errors.ts","../../src/core/utils.ts","../../src/core/client.ts","../../src/lidarr/resources/artist.ts","../../src/lidarr/resources/album.ts","../../src/lidarr/resources/track.ts","../../src/lidarr/resources/calendar.ts","../../src/lidarr/resources/command.ts","../../src/lidarr/resources/queue.ts","../../src/lidarr/resources/history.ts","../../src/lidarr/resources/manualImport.ts","../../src/lidarr/resources/qualityProfile.ts","../../src/lidarr/resources/metadataProfile.ts","../../src/lidarr/resources/tag.ts","../../src/lidarr/resources/rootFolder.ts","../../src/lidarr/resources/wanted.ts","../../src/lidarr/resources/system.ts","../../src/lidarr/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 { Artist, ArtistEditor } from '../types.js'\n\nexport interface GetArtistOptions {\n  mbId?: string\n  [key: string]: unknown\n}\n\nexport interface DeleteArtistOptions {\n  deleteFiles?: boolean\n  addImportListExclusion?: boolean\n  [key: string]: unknown\n}\n\nexport class ArtistResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(options?: GetArtistOptions): Promise<Artist[]> {\n    return this.client.get('/api/v1/artist', options)\n  }\n\n  async getById(id: number): Promise<Artist> {\n    return this.client.get(`/api/v1/artist/${id}`)\n  }\n\n  async create(artist: Omit<Artist, 'id'>): Promise<Artist> {\n    return this.client.post('/api/v1/artist', artist)\n  }\n\n  async update(id: number, artist: Partial<Artist> & { id: number }, moveFiles?: boolean): Promise<Artist> {\n    return this.client.put(`/api/v1/artist/${id}`, artist, moveFiles !== undefined ? { moveFiles } : undefined)\n  }\n\n  async delete(id: number, options?: DeleteArtistOptions): Promise<void> {\n    return this.client.delete(`/api/v1/artist/${id}`, undefined, options)\n  }\n\n  async lookup(term: string): Promise<Artist[]> {\n    return this.client.get('/api/v1/artist/lookup', { term })\n  }\n\n  async bulkEdit(resource: ArtistEditor): Promise<Artist[]> {\n    return this.client.put('/api/v1/artist/editor', resource)\n  }\n\n  async bulkDelete(artistIds: number[], options?: DeleteArtistOptions): Promise<void> {\n    return this.client.delete('/api/v1/artist/editor', {\n      artistIds,\n      ...options\n    })\n  }\n\n  async refresh(artistId?: number): Promise<void> {\n    return this.client.post('/api/v1/command', {\n      name: 'RefreshArtist',\n      artistId\n    })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Album, AlbumsMonitored, AddAlbumOptions } from '../types.js'\n\nexport interface GetAlbumOptions {\n  artistId?: number\n  albumIds?: number[]\n  foreignAlbumId?: string\n  includeAllArtistAlbums?: boolean\n  [key: string]: unknown\n}\n\nexport interface DeleteAlbumOptions {\n  deleteFiles?: boolean\n  addImportListExclusion?: boolean\n  [key: string]: unknown\n}\n\nexport class AlbumResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(options?: GetAlbumOptions): Promise<Album[]> {\n    return this.client.get('/api/v1/album', options)\n  }\n\n  async getById(id: number): Promise<Album> {\n    return this.client.get(`/api/v1/album/${id}`)\n  }\n\n  async create(album: Omit<Album, 'id'> & { addOptions?: AddAlbumOptions }): Promise<Album> {\n    return this.client.post('/api/v1/album', album)\n  }\n\n  async update(id: number, album: Partial<Album> & { id: number }): Promise<Album> {\n    return this.client.put(`/api/v1/album/${id}`, album)\n  }\n\n  async delete(id: number, options?: DeleteAlbumOptions): Promise<void> {\n    return this.client.delete(`/api/v1/album/${id}`, undefined, options)\n  }\n\n  async lookup(term: string): Promise<Album[]> {\n    return this.client.get('/api/v1/album/lookup', { term })\n  }\n\n  async monitor(data: AlbumsMonitored): Promise<Album[]> {\n    return this.client.put('/api/v1/album/monitor', data)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Track, TrackFile, TrackFileList } from '../types.js'\n\nexport interface GetTrackOptions {\n  artistId?: number\n  albumId?: number\n  albumReleaseId?: number\n  trackIds?: number[]\n  [key: string]: unknown\n}\n\nexport class TrackResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(options?: GetTrackOptions): Promise<Track[]> {\n    return this.client.get('/api/v1/track', options)\n  }\n\n  async getById(id: number): Promise<Track> {\n    return this.client.get(`/api/v1/track/${id}`)\n  }\n}\n\nexport class TrackFileResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(options?: { artistId?: number; albumId?: number; trackFileIds?: number[] }): Promise<TrackFile[]> {\n    return this.client.get('/api/v1/trackfile', options)\n  }\n\n  async getById(id: number): Promise<TrackFile> {\n    return this.client.get(`/api/v1/trackfile/${id}`)\n  }\n\n  async update(id: number, trackFile: Partial<TrackFile> & { id: number }): Promise<TrackFile> {\n    return this.client.put(`/api/v1/trackfile/${id}`, trackFile)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/trackfile/${id}`)\n  }\n\n  async bulkDelete(trackFileIds: number[]): Promise<void> {\n    return this.client.delete('/api/v1/trackfile/bulk', { trackFileIds })\n  }\n\n  async updateList(trackFiles: TrackFileList): Promise<TrackFile[]> {\n    return this.client.put('/api/v1/trackfile/editor', trackFiles)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { Album } from '../types.js'\n\nexport interface CalendarOptions {\n  start?: string\n  end?: string\n  unmonitored?: boolean\n  includeArtist?: boolean\n  [key: string]: unknown\n}\n\nexport interface CalendarFeedOptions {\n  pastDays?: number\n  futureDays?: number\n  tags?: string\n  unmonitored?: boolean\n  [key: string]: unknown\n}\n\nexport class CalendarResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: CalendarOptions): Promise<Album[]> {\n    return this.client.get('/api/v1/calendar', options)\n  }\n\n  async getById(id: number): Promise<Album> {\n    return this.client.get(`/api/v1/calendar/${id}`)\n  }\n\n  buildFeedUrl(baseUrl: string, apiKey: string, options?: CalendarFeedOptions): string {\n    const params = new URLSearchParams()\n    params.set('apikey', apiKey)\n    if (options?.pastDays !== undefined) params.set('pastDays', String(options.pastDays))\n    if (options?.futureDays !== undefined) params.set('futureDays', String(options.futureDays))\n    if (options?.tags) params.set('tags', options.tags)\n    if (options?.unmonitored !== undefined) params.set('unmonitored', String(options.unmonitored))\n    return `${baseUrl}/feed/v1/calendar/lidarr.ics?${params}`\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { CommandResource, QualityModel } from '../types.js'\n\n/**\n * File entry for the ManualImport command\n */\nexport interface LidarrManualImportFile {\n  path: string\n  folderName?: string\n  downloadId?: string\n  quality?: QualityModel\n  releaseGroup?: string\n  indexerFlags?: number\n  artistId?: number\n  albumId?: number\n  albumReleaseId?: number\n  trackIds?: number[]\n  disableReleaseSwitching?: boolean\n  replaceExistingFiles?: boolean\n}\n\nexport type LidarrCommand =\n  | { name: 'RefreshArtist'; artistId?: number }\n  | { name: 'RefreshAlbum'; albumId?: number }\n  | { name: 'RescanArtist'; artistId?: number }\n  | { name: 'ArtistSearch'; artistId: number }\n  | { name: 'AlbumSearch'; albumIds: number[] }\n  | { name: 'MissingAlbumSearch'; artistId?: number }\n  | { name: 'CutoffUnmetAlbumSearch'; artistId?: number }\n  | { name: 'ApplicationUpdateCheck' }\n  | { name: 'Backup' }\n  | { name: 'RefreshMonitoredDownloads' }\n  | { name: 'ClearBlocklist' }\n  | { name: 'CleanUpRecycleBin' }\n  | { name: 'DeleteLogFiles' }\n  | { name: 'DeleteUpdateLogFiles' }\n  | { name: 'DownloadedAlbumsScan'; path?: string; downloadClientId?: string; importMode?: 'Auto' | 'Move' | 'Copy' }\n  | { name: 'RssSync' }\n  | { name: 'Housekeeping' }\n  | { name: 'ManualImport'; files: LidarrManualImportFile[]; importMode?: 'Auto' | 'Move' | 'Copy' }\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: LidarrCommand): 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 refreshArtist(artistId?: number): Promise<CommandResource> {\n    return this.execute({ name: 'RefreshArtist', artistId })\n  }\n\n  async refreshAlbum(albumId?: number): Promise<CommandResource> {\n    return this.execute({ name: 'RefreshAlbum', albumId })\n  }\n\n  async rescanArtist(artistId?: number): Promise<CommandResource> {\n    return this.execute({ name: 'RescanArtist', artistId })\n  }\n\n  async artistSearch(artistId: number): Promise<CommandResource> {\n    return this.execute({ name: 'ArtistSearch', artistId })\n  }\n\n  async albumSearch(albumIds: number[]): Promise<CommandResource> {\n    return this.execute({ name: 'AlbumSearch', albumIds })\n  }\n\n  async missingAlbumSearch(artistId?: number): Promise<CommandResource> {\n    return this.execute({ name: 'MissingAlbumSearch', artistId })\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 clearBlocklist(): Promise<CommandResource> {\n    return this.execute({ name: 'ClearBlocklist' })\n  }\n\n  async downloadedAlbumsScan(options?: { path?: string; downloadClientId?: string; importMode?: 'Auto' | 'Move' | 'Copy' }): Promise<CommandResource> {\n    return this.execute({ name: 'DownloadedAlbumsScan', ...options })\n  }\n\n  async manualImport(files: LidarrManualImportFile[], importMode?: 'Auto' | 'Move' | 'Copy'): Promise<CommandResource> {\n    return this.execute({ name: 'ManualImport', files, importMode })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { PaginationOptions } from '../../core/types.js'\nimport type { Queue, QueueBulk, QueueStatus, QueuePagingResource } from '../types.js'\n\nexport interface GetQueueOptions extends PaginationOptions {\n  includeUnknownArtistItems?: boolean\n  includeArtist?: boolean\n  includeAlbum?: boolean\n}\n\nexport interface GetQueueDetailsOptions {\n  artistId?: number\n  albumIds?: number[]\n  includeArtist?: boolean\n  includeAlbum?: boolean\n  [key: string]: unknown\n}\n\nexport interface DeleteQueueOptions {\n  removeFromClient?: boolean\n  blocklist?: boolean\n  skipRedownload?: boolean\n  changeCategory?: boolean\n  [key: string]: unknown\n}\n\nexport class QueueResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: GetQueueOptions): Promise<QueuePagingResource> {\n    return this.client.get('/api/v1/queue', options)\n  }\n\n  async getDetails(options?: GetQueueDetailsOptions): Promise<Queue[]> {\n    return this.client.get('/api/v1/queue/details', options)\n  }\n\n  async getStatus(): Promise<QueueStatus> {\n    return this.client.get('/api/v1/queue/status')\n  }\n\n  async delete(id: number, options?: DeleteQueueOptions): Promise<void> {\n    return this.client.delete(`/api/v1/queue/${id}`, undefined, options)\n  }\n\n  async bulkDelete(data: QueueBulk & DeleteQueueOptions): Promise<void> {\n    return this.client.delete('/api/v1/queue/bulk', data)\n  }\n\n  async grab(ids: number[]): Promise<void> {\n    return this.client.post('/api/v1/queue/grab/bulk', { ids })\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { PaginationOptions } from '../../core/types.js'\nimport type { History, HistoryPagingResource, EntityHistoryEventType } from '../types.js'\n\n// Numeric values pinned to upstream Lidarr enum\n// (src/NzbDrone.Core/History/EntityHistory.cs — EntityHistoryEventType).\n// The .NET model binder rejects the string form even though the OpenAPI\n// spec declares it; numeric values are stable across releases.\nconst ENTITY_HISTORY_EVENT_TYPE_VALUES = {\n  unknown: 0,\n  grabbed: 1,\n  artistFolderImported: 2,\n  trackFileImported: 3,\n  downloadFailed: 4,\n  trackFileDeleted: 5,\n  trackFileRenamed: 6,\n  albumImportIncomplete: 7,\n  downloadImported: 8,\n  trackFileRetagged: 9,\n  downloadIgnored: 10,\n} as const satisfies Record<EntityHistoryEventType, number>\n\nexport type EventTypeInput = EntityHistoryEventType | 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 : ENTITY_HISTORY_EVENT_TYPE_VALUES[v]))\n  }\n  return typeof value === 'number' ? value : ENTITY_HISTORY_EVENT_TYPE_VALUES[value]\n}\n\nexport interface GetHistoryOptions extends PaginationOptions {\n  includeArtist?: boolean\n  includeAlbum?: boolean\n  includeTrack?: boolean\n  eventType?: EventTypeFilter\n  downloadId?: string\n  artistId?: number\n  albumId?: number\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<HistoryPagingResource> {\n    return this.client.get('/api/v1/history', normalize(options))\n  }\n\n  async getSince(date: string, eventType?: EventTypeInput): Promise<History[]> {\n    return this.client.get('/api/v1/history/since', { date, eventType: encodeEventType(eventType) })\n  }\n\n  async getForArtist(artistId: number, albumId?: number, eventType?: EventTypeInput): Promise<History[]> {\n    return this.client.get('/api/v1/history/artist', { artistId, albumId, eventType: encodeEventType(eventType) })\n  }\n\n  async markAsFailed(id: number): Promise<void> {\n    return this.client.post(`/api/v1/history/failed/${id}`)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { ManualImport, ManualImportUpdate } from '../types.js'\n\nexport interface GetManualImportOptions {\n  folder?: string\n  downloadId?: string\n  artistId?: number\n  albumId?: number\n  filterExistingFiles?: boolean\n  replaceExistingFiles?: boolean\n  [key: string]: unknown\n}\n\nexport class ManualImportResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: GetManualImportOptions): Promise<ManualImport[]> {\n    return this.client.get('/api/v1/manualimport', options)\n  }\n\n  async process(imports: ManualImportUpdate[]): Promise<void> {\n    return this.client.post('/api/v1/manualimport', imports)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { QualityProfile, QualityDefinition } from '../types.js'\n\nexport class QualityProfileResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<QualityProfile[]> {\n    return this.client.get('/api/v1/qualityprofile')\n  }\n\n  async getById(id: number): Promise<QualityProfile> {\n    return this.client.get(`/api/v1/qualityprofile/${id}`)\n  }\n\n  async create(profile: Omit<QualityProfile, 'id'>): Promise<QualityProfile> {\n    return this.client.post('/api/v1/qualityprofile', profile)\n  }\n\n  async update(id: number, profile: Partial<QualityProfile> & { id: number }): Promise<QualityProfile> {\n    return this.client.put(`/api/v1/qualityprofile/${id}`, profile)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/qualityprofile/${id}`)\n  }\n}\n\nexport class QualityDefinitionResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<QualityDefinition[]> {\n    return this.client.get('/api/v1/qualitydefinition')\n  }\n\n  async getById(id: number): Promise<QualityDefinition> {\n    return this.client.get(`/api/v1/qualitydefinition/${id}`)\n  }\n\n  async update(id: number, definition: Partial<QualityDefinition> & { id: number }): Promise<QualityDefinition> {\n    return this.client.put(`/api/v1/qualitydefinition/${id}`, definition)\n  }\n\n  async updateAll(definitions: QualityDefinition[]): Promise<QualityDefinition[]> {\n    return this.client.put('/api/v1/qualitydefinition/update', definitions)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { MetadataProfile } from '../types.js'\n\nexport class MetadataProfileResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<MetadataProfile[]> {\n    return this.client.get('/api/v1/metadataprofile')\n  }\n\n  async getById(id: number): Promise<MetadataProfile> {\n    return this.client.get(`/api/v1/metadataprofile/${id}`)\n  }\n\n  async create(profile: Omit<MetadataProfile, 'id'>): Promise<MetadataProfile> {\n    return this.client.post('/api/v1/metadataprofile', profile)\n  }\n\n  async update(id: number, profile: Partial<MetadataProfile> & { id: number }): Promise<MetadataProfile> {\n    return this.client.put(`/api/v1/metadataprofile/${id}`, profile)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/metadataprofile/${id}`)\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 { RootFolder } from '../types.js'\n\nexport class RootFolderResource {\n  constructor(private client: ClientMethods) {}\n\n  async getAll(): Promise<RootFolder[]> {\n    return this.client.get('/api/v1/rootfolder')\n  }\n\n  async getById(id: number): Promise<RootFolder> {\n    return this.client.get(`/api/v1/rootfolder/${id}`)\n  }\n\n  async create(rootFolder: Omit<RootFolder, 'id'>): Promise<RootFolder> {\n    return this.client.post('/api/v1/rootfolder', rootFolder)\n  }\n\n  async delete(id: number): Promise<void> {\n    return this.client.delete(`/api/v1/rootfolder/${id}`)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { PaginationOptions } from '../../core/types.js'\nimport type { AlbumPagingResource } from '../types.js'\n\nexport interface GetWantedOptions extends PaginationOptions {\n  includeArtist?: boolean\n  monitored?: boolean\n}\n\nexport class WantedResource {\n  constructor(private client: ClientMethods) {}\n\n  async getMissing(options?: GetWantedOptions): Promise<AlbumPagingResource> {\n    return this.client.get('/api/v1/wanted/missing', options)\n  }\n\n  async getCutoffUnmet(options?: GetWantedOptions): Promise<AlbumPagingResource> {\n    return this.client.get('/api/v1/wanted/cutoff', options)\n  }\n}\n","import type { ClientMethods } from '../../core/resource.js'\nimport type { SystemResource, Health, DiskSpace, Task, Backup, LogFile, Update, LogPagingResource, SortDirection } from '../types.js'\n\nexport class SystemInfoResource {\n  constructor(private client: ClientMethods) {}\n\n  /**\n   * Get system status information.\n   * Alias for getStatus() for consistency with Sonarr/Radarr SDK.\n   */\n  async get(): Promise<SystemResource> {\n    return this.getStatus()\n  }\n\n  async getStatus(): Promise<SystemResource> {\n    return this.client.get('/api/v1/system/status')\n  }\n\n  async ping(): Promise<{ status: string }> {\n    return this.client.get('/ping')\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\nexport class HealthResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<Health[]> {\n    return this.client.get('/api/v1/health')\n  }\n}\n\nexport class DiskSpaceResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<DiskSpace[]> {\n    return this.client.get('/api/v1/diskspace')\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\nexport interface GetLogOptions {\n  page?: number\n  pageSize?: number\n  sortKey?: string\n  sortDirection?: SortDirection\n  level?: string\n  [key: string]: unknown\n}\n\nexport class LogResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(options?: GetLogOptions): Promise<LogPagingResource> {\n    return this.client.get('/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 getUpdateLogs(): Promise<LogFile[]> {\n    return this.client.get('/api/v1/log/file/update')\n  }\n}\n\nexport class UpdateResource {\n  constructor(private client: ClientMethods) {}\n\n  async get(): Promise<Update[]> {\n    return this.client.get('/api/v1/update')\n  }\n}\n","import { BaseClient, type ClientConfig } from '../core/index.js'\nimport { ArtistResource } from './resources/artist.js'\nimport { AlbumResource } from './resources/album.js'\nimport { TrackResource, TrackFileResource } from './resources/track.js'\nimport { CalendarResource } from './resources/calendar.js'\nimport { CommandResource_ } from './resources/command.js'\nimport { QueueResource } from './resources/queue.js'\nimport { HistoryResource } from './resources/history.js'\nimport { ManualImportResource } from './resources/manualImport.js'\nimport { QualityProfileResource, QualityDefinitionResource } from './resources/qualityProfile.js'\nimport { MetadataProfileResource } from './resources/metadataProfile.js'\nimport { TagResource, TagDetailsResource } from './resources/tag.js'\nimport { RootFolderResource } from './resources/rootFolder.js'\nimport { WantedResource } from './resources/wanted.js'\nimport { SystemInfoResource, HealthResource, DiskSpaceResource, TaskResource, BackupResource, LogResource, LogFileResource, UpdateResource } from './resources/system.js'\n\nexport class LidarrClient extends BaseClient {\n  public readonly artist: ArtistResource\n  public readonly album: AlbumResource\n  public readonly track: TrackResource\n  public readonly trackFile: TrackFileResource\n  public readonly calendar: CalendarResource\n  public readonly command: CommandResource_\n  public readonly queue: QueueResource\n  public readonly history: HistoryResource\n  public readonly manualImport: ManualImportResource\n  public readonly qualityProfile: QualityProfileResource\n  public readonly qualityDefinition: QualityDefinitionResource\n  public readonly metadataProfile: MetadataProfileResource\n  public readonly tag: TagResource\n  public readonly tagDetails: TagDetailsResource\n  public readonly rootFolder: RootFolderResource\n  public readonly wanted: WantedResource\n  public readonly system: SystemInfoResource\n  public readonly health: HealthResource\n  public readonly diskSpace: DiskSpaceResource\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\n  constructor(config: ClientConfig) {\n    super(config)\n\n    this.artist = new ArtistResource(this)\n    this.album = new AlbumResource(this)\n    this.track = new TrackResource(this)\n    this.trackFile = new TrackFileResource(this)\n    this.calendar = new CalendarResource(this)\n    this.command = new CommandResource_(this)\n    this.queue = new QueueResource(this)\n    this.history = new HistoryResource(this)\n    this.manualImport = new ManualImportResource(this)\n    this.qualityProfile = new QualityProfileResource(this)\n    this.qualityDefinition = new QualityDefinitionResource(this)\n    this.metadataProfile = new MetadataProfileResource(this)\n    this.tag = new TagResource(this)\n    this.tagDetails = new TagDetailsResource(this)\n    this.rootFolder = new RootFolderResource(this)\n    this.wanted = new WantedResource(this)\n    this.system = new SystemInfoResource(this)\n    this.health = new HealthResource(this)\n    this.diskSpace = new DiskSpaceResource(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  }\n}\n"]}