{"version":3,"sources":["../../src/sdk/core/errors.ts","../../src/sdk/core/http/envelope.ts","../../src/sdk/core/logger.ts","../../src/sdk/core/http/client.ts","../../src/sdk/resources/magnets/types.ts","../../src/sdk/resources/magnets/index.ts","../../src/sdk/resources/hosts/types.ts","../../src/sdk/resources/users/types.ts","../../src/sdk/resources/users/index.ts","../../src/sdk/resources/hosts/index.ts","../../src/sdk/resources/links/types.ts","../../src/sdk/resources/links/index.ts","../../src/sdk/index.ts","../../src/cli/validation.ts","../../package.json","../../src/cli/index.ts"],"names":["z","envelope","pino","axios","DateTime","chalk","join","homedir","existsSync","readFileSync","yaml","program"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z, type ZodError } from \"zod\";\n\nexport const ApiErrorResponseSchema = z.object({\n  code: z.string(),\n  message: z.string(),\n});\nexport type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;\n\n// Result type for explicit error handling\nexport type ResultSuccess<T> = { ok: true; data: T };\nexport type ResultError<E> = { ok: false; error: E };\nexport type Result<T, E = SdkError> = ResultSuccess<T> | ResultError<E>;\n\n// Enhanced error classes that extend Error for proper exception throwing\nexport abstract class SdkError extends Error {\n  abstract readonly type: string;\n  abstract readonly retryable: boolean;\n  readonly requestId?: string;\n  readonly timestamp: Date;\n\n  constructor(message: string, requestId?: string) {\n    super(message);\n    this.name = this.constructor.name;\n    this.requestId = requestId;\n    this.timestamp = new Date();\n    Object.setPrototypeOf(this, new.target.prototype);\n  }\n}\n\nexport class NetworkError extends SdkError {\n  readonly type = \"network\" as const;\n  override readonly cause: Error;\n  readonly retryable: boolean;\n  readonly statusCode?: number;\n\n  constructor(cause: Error, statusCode?: number, requestId?: string) {\n    const message = statusCode\n      ? `Network error (${statusCode}): ${cause.message}`\n      : `Network error: ${cause.message}`;\n    super(message, requestId);\n    this.cause = cause;\n    this.statusCode = statusCode;\n    this.retryable = isRetryableHttpError(cause, statusCode);\n  }\n}\n\nexport class ApiError extends SdkError {\n  readonly type = \"api\" as const;\n  readonly subtype: \"auth\" | \"rateLimit\" | \"notFound\" | \"unknown\";\n  readonly code: string;\n  readonly originalMessage: string;\n  readonly retryable: boolean;\n  readonly demo?: boolean;\n\n  constructor(apiError: ApiErrorResponse, demo = false, requestId?: string) {\n    super(`API error (${apiError.code}): ${apiError.message}`, requestId);\n    this.code = apiError.code;\n    this.originalMessage = apiError.message;\n    this.subtype = determineApiErrorSubtype(apiError.code);\n    this.retryable = this.subtype === \"rateLimit\";\n    this.demo = demo;\n  }\n}\n\nexport class ValidationError extends SdkError {\n  readonly type = \"validation\" as const;\n  readonly retryable = false;\n  readonly issues: ZodError[\"issues\"];\n\n  constructor(zodError: ZodError, requestId?: string) {\n    const issueMessages = zodError.issues\n      .map((issue) => `${issue.path.join(\".\")}: ${issue.message}`)\n      .join(\", \");\n    super(`Validation error: ${issueMessages}`, requestId);\n    this.issues = zodError.issues;\n  }\n}\n\nexport class ConfigurationError extends SdkError {\n  readonly type = \"configuration\" as const;\n  readonly retryable = false;\n\n  constructor(message: string) {\n    super(`Configuration error: ${message}`);\n  }\n}\n\n// Error factory functions - now return error instances instead of plain objects\nexport function createNetworkError(\n  cause: Error,\n  statusCode?: number,\n  requestId?: string,\n): NetworkError {\n  return new NetworkError(cause, statusCode, requestId);\n}\n\nexport function createApiError(\n  apiError: ApiErrorResponse,\n  demo = false,\n  requestId?: string,\n): ApiError {\n  return new ApiError(apiError, demo, requestId);\n}\n\nexport function createValidationError(\n  zodError: ZodError,\n  requestId?: string,\n): ValidationError {\n  return new ValidationError(zodError, requestId);\n}\n\nexport function createConfigurationError(message: string): ConfigurationError {\n  return new ConfigurationError(message);\n}\n\n// Helper functions\nfunction isRetryableHttpError(error: Error, statusCode?: number): boolean {\n  if (statusCode !== undefined) return statusCode >= 500 || statusCode === 429;\n\n  const axiosLikeError = error as { code?: string };\n  return (\n    axiosLikeError.code === \"ECONNRESET\" ||\n    axiosLikeError.code === \"ETIMEDOUT\" ||\n    axiosLikeError.code === \"ENOTFOUND\"\n  );\n}\n\nfunction determineApiErrorSubtype(code: string): ApiError[\"subtype\"] {\n  const upperCode = code.toUpperCase();\n  if (upperCode.startsWith(\"AUTH\")) return \"auth\";\n  if (upperCode.includes(\"RATE\") || upperCode.includes(\"LIMIT\"))\n    return \"rateLimit\";\n  if (upperCode.includes(\"NOT_FOUND\") || upperCode.includes(\"UNKNOWN_TORRENT\"))\n    return \"notFound\";\n  return \"unknown\";\n}\n\n// Utility functions for working with Results\nexport function isOk<T, E>(\n  result: Result<T, E>,\n): result is { ok: true; data: T } {\n  return result.ok;\n}\n\nexport function isError<T, E>(\n  result: Result<T, E>,\n): result is { ok: false; error: E } {\n  return !result.ok;\n}\n\nexport function mapResult<T, U, E>(\n  result: Result<T, E>,\n  fn: (data: T) => U,\n): Result<U, E> {\n  if (result.ok) return { ok: true, data: fn(result.data) };\n  return result;\n}\n\nexport function mapError<T, E, F>(\n  result: Result<T, E>,\n  fn: (error: E) => F,\n): Result<T, F> {\n  if (result.ok) return result;\n  return { ok: false, error: fn(result.error) };\n}\n\n// For batch operations - collect successes and failures\nexport interface BatchResult<T> {\n  successes: T[];\n  failures: SdkError[];\n}\n\nexport function createBatchResult<T>(\n  results: Result<T, SdkError>[],\n): BatchResult<T> {\n  const successes: T[] = [];\n  const failures: SdkError[] = [];\n\n  results.forEach((result) => {\n    if (result.ok) successes.push(result.data);\n    else failures.push(result.error);\n  });\n\n  return { successes, failures };\n}\n","import { z } from \"zod\";\nimport { \n  type Result, \n  type SdkError, \n  createApiError, \n  createValidationError \n} from \"../errors\";\n\nconst DemoFlagSchema = z\n  .union([z.literal(\"true\"), z.boolean()])\n  .optional()\n  .transform((v) => (v === \"true\" ? true : !!v));\n\nconst AlldebridErrorSchema = z.object({\n  code: z.string(),\n  message: z.string(),\n});\n\n/** Error envelope according to docs. */\nexport const ApiErrorEnvelopeSchema = z.object({\n  status: z.literal(\"error\"),\n  error: AlldebridErrorSchema,\n  demo: DemoFlagSchema,\n});\n\n/** Success envelope (data shape is endpoint-specific). */\nexport function ApiSuccessEnvelopeSchema<T extends z.ZodType>(dataSchema: T) {\n  return z.object({\n    status: z.literal(\"success\"),\n    data: dataSchema,\n    demo: DemoFlagSchema,\n  });\n}\n\n/** Narrow TypeScript helper types. */\nexport type ApiErrorEnvelopeType = z.infer<typeof ApiErrorEnvelopeSchema>;\nexport type ApiSuccessEnvelopeType<T extends z.ZodType> = {\n  status: \"success\";\n  data: z.infer<T>;\n  demo?: boolean;\n};\n\nexport interface ParsedSuccessData<T> {\n  data: T;\n  demo: boolean;\n}\n\nexport function parseEnvelope<T extends z.ZodType>(\n  json: unknown,\n  dataSchema: T,\n  requestId?: string\n): Result<ParsedSuccessData<z.output<T>>, SdkError> {\n  const UnionSchema = z.discriminatedUnion(\"status\", [\n    ApiSuccessEnvelopeSchema(dataSchema),\n    ApiErrorEnvelopeSchema,\n  ]);\n  \n  const parseResult = UnionSchema.safeParse(json);\n  \n  if (!parseResult.success) {\n    return {\n      ok: false,\n      error: createValidationError(parseResult.error, requestId),\n    };\n  }\n  \n  if (parseResult.data.status === \"success\") {\n    const envelope = parseResult.data as ApiSuccessEnvelopeType<T>;\n    return {\n      ok: true,\n      data: {\n        data: envelope.data,\n        demo: envelope.demo ?? false,\n      },\n    };\n  }\n  \n  const envelope = parseResult.data as ApiErrorEnvelopeType;\n  return {\n    ok: false,\n    error: createApiError(\n      envelope.error,\n      envelope.demo ?? false,\n      requestId\n    ),\n  };\n}","import pino from \"pino\";\n\nexport const logger = pino({\n  transport: {\n    target: \"pino-pretty\",\n    options: {\n      colorize: true,\n    },\n  },\n});\n\n","import { z } from \"zod\";\nimport { type ParsedSuccessData, parseEnvelope } from \"./envelope\";\nimport { logger } from \"../logger\";\nimport {\n  SdkError,\n  createNetworkError,\n  createConfigurationError,\n} from \"../errors\";\nimport axios, {\n  type AxiosRequestConfig,\n  type RawAxiosRequestHeaders,\n} from \"axios\";\n\nexport const DEFAULT_BASE_URL = \"https://api.alldebrid.com\";\n\nconst ClientOptionsSchema = z.object({\n  apiKey: z.string().min(1, \"apiKey is required\"),\n  baseUrl: z.url().optional(),\n  logLevel: z\n    .enum([\"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\"])\n    .optional(),\n  timeout: z.number().positive().optional(),\n  retries: z.number().int().min(0).optional(),\n  // Security hardening: cap payload sizes to mitigate DoS via large bodies\n  maxContentLengthBytes: z.number().int().positive().optional(),\n  maxBodyLengthBytes: z.number().int().positive().optional(),\n  // Cap redirects to avoid loops or redirect storms\n  maxRedirects: z.number().int().min(0).optional(),\n});\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\nconst RequestHeadersSchema = z.record(\n  z.union([\n    z.literal(\"Accept\"),\n    z.literal(\"Content-Length\"),\n    z.literal(\"User-Agent\"),\n    z.literal(\"Content-Encoding\"),\n    z.literal(\"Authorization\"),\n    z.string(),\n  ]),\n  z.union([z.string(), z.number(), z.boolean(), z.null()]),\n);\ntype RequestGetOptions = {\n  method?: \"GET\";\n  headers?: Record<string, string | number | boolean>;\n  queryParams?: Record<string, string | number | boolean>;\n  publicEndpoint?: boolean;\n};\nconst RequestPostOptionsSchema = z.object({\n  requestType: z.literal(\"simplePost\"),\n  method: z.literal(\"POST\"),\n  headers: RequestHeadersSchema.optional(),\n  queryParams: z\n    .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n    .optional(),\n});\ntype RequestPostOptions = z.infer<typeof RequestPostOptionsSchema>;\nconst RequestPostJsonOptionsSchema = RequestPostOptionsSchema.extend({\n  requestType: z.literal(\"postJson\"),\n  json: z.record(z.string(), z.unknown()),\n});\ntype RequestPostJsonOptions = z.infer<typeof RequestPostJsonOptionsSchema>;\nconst RequestPostFormDataOptionsSchema = RequestPostOptionsSchema.extend({\n  requestType: z.literal(\"postFormData\"),\n  formData: z.union([\n    z.record(z.string(), z.unknown()),\n    z.instanceof(FormData),\n  ]),\n});\ntype RequestPostFormDataOptions = z.infer<\n  typeof RequestPostFormDataOptionsSchema\n>;\n\nexport class AlldebridHttpClient {\n  private baseUrl: string = DEFAULT_BASE_URL;\n  private apiKey?: string;\n  private timeout: number = 30000;\n  private retries: number = 3;\n  private maxContentLengthBytes: number = 5 * 1024 * 1024; // 5 MiB\n  private maxBodyLengthBytes: number = 5 * 1024 * 1024; // 5 MiB\n  private maxRedirects: number = 5;\n\n  private normalizePath(path: string): string {\n    return z\n      .string()\n      .min(1, \"path is required\")\n      .transform((v) => v.replace(/^\\//, \"\"))\n      .parse(path);\n  }\n\n  private baseRequestSetup(\n    path: string,\n    headers?: RawAxiosRequestHeaders,\n    publicEndpoint?: boolean,\n  ): {\n    url: string;\n    headers: RawAxiosRequestHeaders;\n  } {\n    if (!this.apiKey) {\n      throw createConfigurationError(\n        \"AlldebridHttpClient is not configured. Call configure({ apiKey }) first.\",\n      );\n    }\n\n    const normalizedPath = this.normalizePath(path);\n    const url = new URL(`${this.baseUrl}/${normalizedPath}`);\n\n    const defaultHeaders = {\n      ...{ Accept: \"application/json\" },\n      ...(publicEndpoint ? {} : { Authorization: `Bearer ${this.apiKey}` }),\n    };\n\n    return {\n      url: url.toString(),\n      headers: { ...defaultHeaders, ...headers },\n    };\n  }\n\n  private delay(ms: number): Promise<void> {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n  }\n\n  configure(opts: ClientOptions) {\n    const parsed = ClientOptionsSchema.parse(opts);\n    this.apiKey = parsed.apiKey;\n    this.baseUrl = (parsed.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, \"\");\n    this.timeout = parsed.timeout ?? 3000;\n    this.retries = parsed.retries ?? 3;\n    this.maxContentLengthBytes = parsed.maxContentLengthBytes ?? this.maxContentLengthBytes;\n    this.maxBodyLengthBytes = parsed.maxBodyLengthBytes ?? this.maxBodyLengthBytes;\n    this.maxRedirects = parsed.maxRedirects ?? this.maxRedirects;\n  }\n\n  private async executeRequest<T extends z.ZodType>(\n    config: AxiosRequestConfig,\n    dataSchema: T,\n    retryCount = 0,\n  ): Promise<ParsedSuccessData<z.output<T>>> {\n    try {\n      logger.debug({ ...config }, \"alldebrid http request\");\n      const { data: json } = await axios.request<unknown>({\n        ...config,\n        timeout: this.timeout,\n        // Security hardening against large payload DoS\n        maxContentLength: this.maxContentLengthBytes,\n        maxBodyLength: this.maxBodyLengthBytes,\n        maxRedirects: this.maxRedirects,\n        responseType: \"json\",\n        decompress: true,\n      });\n      logger.debug({ json }, \"alldebrid http raw response\");\n      const result = parseEnvelope(json, dataSchema);\n      if (result.ok) return result.data;\n      else throw result.error;\n    } catch (error: unknown) {\n      if (error instanceof SdkError) throw error;\n\n      const networkError = createNetworkError(\n        error as Error,\n        (error as { response?: { status?: number } })?.response?.status,\n      );\n\n      if (retryCount < this.retries && networkError.retryable) {\n        logger.debug(\n          { attempt: retryCount + 1, maxRetries: this.retries },\n          \"Retrying request\",\n        );\n        await this.delay(Math.pow(2, retryCount) * 1000);\n        return this.executeRequest(config, dataSchema, retryCount + 1);\n      }\n\n      throw networkError;\n    }\n  }\n\n  async getRequest<T extends z.ZodType>(\n    path: string,\n    dataSchema: T,\n    options?: RequestGetOptions,\n  ): Promise<ParsedSuccessData<z.output<T>>> {\n    const { url, headers } = this.baseRequestSetup(\n      path,\n      options?.headers,\n      options?.publicEndpoint ?? false,\n    );\n    const config: AxiosRequestConfig = {\n      url,\n      headers,\n      method: \"GET\" as const,\n      ...(options?.queryParams && { params: options.queryParams }),\n    };\n\n    return this.executeRequest(config, dataSchema);\n  }\n\n  async postRequest<T extends z.ZodType>(\n    path: string,\n    dataSchema: T,\n    options?:\n      | RequestPostOptions\n      | RequestPostFormDataOptions\n      | RequestPostJsonOptions,\n  ): Promise<ParsedSuccessData<z.output<T>>> {\n    const { url, headers } = this.baseRequestSetup(path, options?.headers);\n    let config: AxiosRequestConfig = {\n      url,\n      headers,\n      method: \"POST\" as const,\n      ...(options?.queryParams && { params: options.queryParams }),\n    };\n\n    if (!options) return this.executeRequest(config, dataSchema);\n\n    const parsedOptions = z\n      .discriminatedUnion(\"requestType\", [\n        RequestPostOptionsSchema,\n        RequestPostJsonOptionsSchema,\n        RequestPostFormDataOptionsSchema,\n      ])\n      .parse(options);\n\n    switch (parsedOptions.requestType) {\n      case \"postJson\":\n        config = {\n          ...config,\n          data: parsedOptions.json,\n          headers: {\n            ...config.headers,\n            \"Content-Type\": \"application/json\",\n          },\n        };\n        break;\n      case \"postFormData\":\n        config = {\n          ...config,\n          data: parsedOptions.formData,\n          headers: {\n            ...config.headers,\n            \"Content-Type\": \"multipart/form-data\",\n          },\n        };\n        break;\n      default:\n        break;\n    }\n\n    return this.executeRequest(config, dataSchema);\n  }\n}\n","import { z } from \"zod\";\nimport { DateTime } from \"luxon\";\n\n// BASE\nconst MagnetBaseSchema = z.object({\n  id: z.number(),\n  filename: z.string(),\n  hash: z.string(),\n  status: z.string(),\n  statusCode: z.int().gte(0).lte(11),\n  type: z.string().optional(),\n  notified: z.boolean().optional(),\n  version: z.int().gte(1).optional(),\n});\n\n// READY\nexport const MagnetFileSchema = z.object({\n  n: z.string(),\n  s: z.int().gt(0),\n  l: z.url(),\n});\nexport type MagnetFile = z.infer<typeof MagnetFileSchema>;\nexport const MagnetDirSchema = z.object({\n  n: z.string(),\n  get e() {\n    return z.array(z.union([MagnetFileSchema, MagnetDirSchema]));\n  },\n});\nexport type MagnetDir = z.infer<typeof MagnetDirSchema>;\n\nexport const MagnetListedReadySchema = MagnetBaseSchema.extend({\n  status: z.literal(\"Ready\"),\n  statusCode: z.literal(4),\n  size: z.int().gt(0),\n  uploadDate: z\n    .int()\n    .gt(0)\n    .transform((num) => DateTime.fromSeconds(num)),\n  completionDate: z\n    .int()\n    .gt(0)\n    .transform((num) => DateTime.fromSeconds(num)),\n  nbLinks: z.int().gt(0),\n});\nexport type MagnetListedReady = z.infer<typeof MagnetListedReadySchema>;\n\nexport const MagnetReadySchema = MagnetListedReadySchema.extend({\n  files: z.array(z.union([MagnetFileSchema, MagnetDirSchema])),\n});\nexport type MagnetReady = z.infer<typeof MagnetReadySchema>;\n\n// PROCESSING\nconst MagnetProcessingBaseSchema = MagnetBaseSchema.extend({\n  downloaded: z.int().gte(0),\n  size: z.int().gte(0),\n  uploaded: z.int().gte(0),\n  seeders: z.int().gte(0),\n  downloadSpeed: z.int().gte(0),\n  processingPerc: z.int().gte(0).optional(),\n  uploadSpeed: z.int().gte(0),\n});\n\nexport const MagnetListedProcessingQueuedSchema =\n  MagnetProcessingBaseSchema.extend({\n    status: z.literal(\"In Queue\"),\n    statusCode: z.literal(0),\n    uploadDate: z\n      .int()\n      .gt(0)\n      .transform((num) => DateTime.fromSeconds(num)),\n    completionDate: z.literal(0).transform(() => undefined),\n  });\nexport type MagnetListedProcessingQueued = z.infer<\n  typeof MagnetListedProcessingQueuedSchema\n>;\nexport const MagnetProcessingQueuedSchema = MagnetListedProcessingQueuedSchema;\nexport type MagnetProcessingQueued = z.infer<\n  typeof MagnetProcessingQueuedSchema\n>;\n\nexport const MagnetListedProcessingDownloadingSchema =\n  MagnetProcessingQueuedSchema.extend({\n    status: z.literal(\"Downloading\"),\n    statusCode: z.literal(1),\n  });\nexport type MagnetListedProcessingDownloading = z.infer<\n  typeof MagnetListedProcessingDownloadingSchema\n>;\nexport const MagnetProcessingDownloadingSchema =\n  MagnetListedProcessingDownloadingSchema;\nexport type MagnetProcessingDownloading = z.infer<\n  typeof MagnetProcessingDownloadingSchema\n>;\n\nexport const MagnetListedProcessingUploadingSchema =\n  MagnetProcessingQueuedSchema.extend({\n    status: z.literal(\"Uploading\"),\n    statusCode: z.literal(3),\n  });\nexport type MagnetListedProcessingUploading = z.infer<\n  typeof MagnetListedProcessingUploadingSchema\n>;\n\nexport const MagnetProcessingUploadingSchema =\n  MagnetListedProcessingUploadingSchema;\nexport type MagnetProcessingUploading = z.infer<\n  typeof MagnetProcessingUploadingSchema\n>;\n\nexport const MagnetListedProcessingSchema = z.discriminatedUnion(\"statusCode\", [\n  MagnetListedProcessingDownloadingSchema,\n  MagnetListedProcessingQueuedSchema,\n  MagnetListedProcessingUploadingSchema,\n]);\nexport type MagnetListedProcessing = z.infer<\n  typeof MagnetListedProcessingSchema\n>;\nexport const MagnetProcessingSchema = z.discriminatedUnion(\"statusCode\", [\n  MagnetProcessingDownloadingSchema,\n  MagnetProcessingQueuedSchema,\n  MagnetProcessingUploadingSchema,\n]);\nexport type MagnetProcessing = z.infer<typeof MagnetProcessingSchema>;\n\n// ERROR\nexport const MagnetListedErrorSchema = MagnetBaseSchema.extend({\n  status: z.string(),\n  statusCode: z.union([\n    z.literal(5),\n    z.literal(6),\n    z.literal(7),\n    z.literal(8),\n    z.literal(9),\n    z.literal(10),\n    z.literal(12),\n    z.literal(13),\n    z.literal(14),\n    z.literal(15),\n  ]),\n  size: z\n    .int()\n    .gte(0)\n    .optional()\n    .transform(() => undefined),\n  uploadDate: z\n    .int()\n    .transform((num) => (num === 0 ? undefined : DateTime.fromSeconds(num))),\n  completionDate: z\n    .int()\n    .optional()\n    .transform((num) => (!num ? undefined : DateTime.fromSeconds(num))),\n});\nexport type MagnetListedError = z.infer<typeof MagnetListedErrorSchema>;\nexport const MagnetErrorSchema = MagnetListedErrorSchema;\nexport type MagnetError = z.infer<typeof MagnetErrorSchema>;\n\n// EXPIRED\nexport const MagnetListedExpiredSchema = MagnetListedErrorSchema.extend({\n  statusCode: z.literal(11),\n  size: z.int().gt(0),\n});\nexport type MagnetListedExpired = z.infer<typeof MagnetListedExpiredSchema>;\nexport const MagnetExpiredSchema = MagnetListedExpiredSchema;\nexport type MagnetExpired = z.infer<typeof MagnetExpiredSchema>;\n\n// GENERAL\nexport const MagnetListedSchema = z.discriminatedUnion(\"statusCode\", [\n  MagnetListedReadySchema,\n  MagnetListedProcessingQueuedSchema,\n  MagnetListedProcessingDownloadingSchema,\n  MagnetListedProcessingUploadingSchema,\n  MagnetListedExpiredSchema,\n  MagnetListedErrorSchema,\n]);\nexport type MagnetListed = z.infer<typeof MagnetListedSchema>;\n\nexport const MagnetSchema = z.discriminatedUnion(\"statusCode\", [\n  MagnetReadySchema,\n  MagnetProcessingQueuedSchema,\n  MagnetProcessingDownloadingSchema,\n  MagnetProcessingUploadingSchema,\n  MagnetExpiredSchema,\n  MagnetErrorSchema,\n]);\nexport type Magnet = z.infer<typeof MagnetSchema>;\n\n// UPLOAD TORRENT MAGNETS AND FILES\nconst UploadTorrentSuccessBaseSchema = z.object({\n  name: z.string(),\n  id: z.int().gte(0),\n  hash: z.string(),\n  size: z.int().gte(0),\n  ready: z.boolean(),\n});\nexport const UploadedMagnetSuccessSchema =\n  UploadTorrentSuccessBaseSchema.extend({\n    magnet: z.string(),\n  });\nexport type UploadedMagnetSuccess = z.infer<typeof UploadedMagnetSuccessSchema>;\nexport const UploadedFileSuccessSchema = UploadTorrentSuccessBaseSchema.extend({\n  file: z.string(),\n});\nexport type UploadedFileSuccess = z.infer<typeof UploadedFileSuccessSchema>;\n\nexport const UploadedTorrentErroredBaseSchema = z.object({\n  error: z.object({\n    code: z.enum([\n      \"MAGNET_NO_URI\",\n      \"MAGNET_INVALID_URI\",\n      \"MAGNET_MUST_BE_PREMIUM\",\n      \"MAGNET_NO_SERVER\",\n      \"MAGNET_TOO_MANY_ACTIVE\",\n    ]),\n    message: z.string(),\n  }),\n});\nexport const UploadedMagnetErroredSchema =\n  UploadedTorrentErroredBaseSchema.extend({ magnet: z.string() });\nexport type UploadedMagnetErrored = z.infer<typeof UploadedMagnetErroredSchema>;\nexport const UploadedFileErroredSchema =\n  UploadedTorrentErroredBaseSchema.extend({ file: z.string() });\nexport type UploadedFileErrored = z.infer<typeof UploadedFileErroredSchema>;\n\nexport const UploadedMagnetSchema = z.union([\n  UploadedMagnetSuccessSchema,\n  UploadedMagnetErroredSchema,\n]);\nexport type UploadedMagnet = z.infer<typeof UploadedMagnetSchema>;\n\nexport const UploadedFileSchema = z.union([\n  UploadedFileSuccessSchema,\n  UploadedFileErroredSchema,\n]);\nexport type UploadedFile = z.infer<typeof UploadedFileSchema>;\n\n// DELETE\nexport const DeleteMagnetResponseSchema = z.object({\n  message: z.string(),\n});\nexport type DeleteMagnetResponse = z.infer<typeof DeleteMagnetResponseSchema>;\n\n// RESTART\nexport const RestartMagnetSuccessSchema = z.object({\n  magnet: z.string(),\n  message: z.string(),\n});\nexport type RestartMagnetSuccess = z.infer<typeof RestartMagnetSuccessSchema>;\n\nexport const RestartMagnetErroredSchema = z.object({\n  magnet: z.string(),\n  error: z.object({\n    code: z.enum([\"MAGNET_INVALID_ID\", \"MAGNET_PROCESSING\"]),\n    message: z.string(),\n  }),\n});\nexport type RestartMagnetErrored = z.infer<typeof RestartMagnetErroredSchema>;\n","import { AlldebridHttpClient } from \"../../core/http/client\";\nimport { z } from \"zod\";\nimport {\n  MagnetListedSchema,\n  UploadedMagnetSchema,\n  type UploadedMagnetSuccess,\n  type UploadedMagnetErrored,\n  UploadedFileSchema,\n  type UploadedFileErrored,\n  type UploadedFileSuccess,\n  DeleteMagnetResponseSchema,\n  type DeleteMagnetResponse,\n  MagnetSchema,\n  type Magnet,\n  type RestartMagnetSuccess,\n  type RestartMagnetErrored,\n  RestartMagnetSuccessSchema,\n  RestartMagnetErroredSchema,\n} from \"./types\";\nimport type {\n  MagnetListed,\n  MagnetListedError,\n  MagnetListedExpired,\n  MagnetListedReady,\n} from \"./types\";\nimport {\n  type BatchResult,\n  createBatchResult,\n  createConfigurationError,\n} from \"../../core/errors\";\n\nexport type MagnetListStatusFilters = \"active\" | \"ready\" | \"expired\" | \"error\";\ntype InputTorrentFile = { fileName: string; blob: Blob };\n\nexport class MagnetResource {\n  constructor(private readonly client: AlldebridHttpClient) {}\n\n  async list(status: \"active\"): Promise<MagnetListedReady[]>;\n  async list(status: \"ready\"): Promise<MagnetListedReady[]>;\n  async list(status: \"expired\"): Promise<MagnetListedExpired[]>;\n  async list(status: \"error\"): Promise<MagnetListedError[]>;\n  async list(): Promise<MagnetListed[]>;\n  async list(status?: MagnetListStatusFilters): Promise<MagnetListed[]> {\n    const MagnetsListedResponseDataSchema = z.object({\n      magnets: z.preprocess((entry) => {\n        if (Array.isArray(entry)) return entry;\n        return Object.values(entry as Record<string, unknown>);\n      }, z.array(MagnetListedSchema)),\n    });\n\n    const response = await this.client.postRequest(\n      \"v4.1/magnet/status\",\n      MagnetsListedResponseDataSchema,\n      status\n        ? {\n            requestType: \"postFormData\",\n            method: \"POST\",\n            formData: { status },\n          }\n        : { requestType: \"simplePost\", method: \"POST\" },\n    );\n\n    return response.data.magnets;\n  }\n\n  async get(id: number): Promise<Magnet> {\n    const MagnetResponseData = z.object({\n      magnets: z.preprocess(\n        (val) => (Array.isArray(val) ? val[0] : val),\n        MagnetSchema,\n      ),\n    });\n\n    const response = await this.client.postRequest(\n      \"v4.1/magnet/status\",\n      MagnetResponseData,\n      { requestType: \"simplePost\", method: \"POST\", queryParams: { id } },\n    );\n\n    return response.data.magnets;\n  }\n\n  async upload(\n    magnets: string,\n  ): Promise<UploadedMagnetSuccess | UploadedMagnetErrored>;\n  async upload(\n    magnets: string[],\n  ): Promise<BatchResult<UploadedMagnetSuccess | UploadedMagnetErrored>>;\n  async upload(\n    magnets: string | string[],\n  ): Promise<\n    | (UploadedMagnetSuccess | UploadedMagnetErrored)\n    | BatchResult<UploadedMagnetSuccess | UploadedMagnetErrored>\n  > {\n    const isArray = Array.isArray(magnets);\n    const UploadMagnetResponseDataSchema = z.object({\n      magnets: z.array(UploadedMagnetSchema),\n    });\n    const magnetArray = isArray ? magnets : [magnets];\n\n    const response = await this.client.postRequest(\n      \"v4/magnet/upload\",\n      UploadMagnetResponseDataSchema,\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { magnets: magnetArray },\n      },\n    );\n\n    if (!response.data.magnets[0])\n      throw createConfigurationError(\"No magnets returned from upload\");\n\n    if (isArray) {\n      const results = response.data.magnets.map(\n        (magnet: UploadedMagnetSuccess | UploadedMagnetErrored) => ({\n          ok: true as const,\n          data: magnet,\n        }),\n      );\n\n      return createBatchResult(results);\n    }\n\n    return response.data.magnets[0];\n  }\n\n  async uploadFile(\n    torrentFiles: InputTorrentFile,\n  ): Promise<UploadedFileSuccess | UploadedFileErrored>;\n  async uploadFile(\n    torrentFiles: InputTorrentFile[],\n  ): Promise<BatchResult<UploadedFileSuccess | UploadedFileErrored>>;\n  async uploadFile(\n    torrentFiles: InputTorrentFile | InputTorrentFile[],\n  ): Promise<\n    | (UploadedFileSuccess | UploadedFileErrored)\n    | BatchResult<UploadedFileSuccess | UploadedFileErrored>\n  > {\n    const isArray = Array.isArray(torrentFiles);\n    const UploadTorrentFileResponseData = z.object({\n      files: z.array(UploadedFileSchema),\n    });\n\n    const formData = new FormData();\n    const filesArray = isArray ? torrentFiles : [torrentFiles];\n    filesArray.forEach((file, i) =>\n      formData.append(`files[${i}]`, file.blob, file.fileName),\n    );\n\n    const response = await this.client.postRequest(\n      \"v4/magnet/upload/file\",\n      UploadTorrentFileResponseData,\n      { method: \"POST\", formData, requestType: \"postFormData\" },\n    );\n\n    if (!response.data.files[0])\n      throw createConfigurationError(\"No files returned from upload\");\n\n    if (isArray) {\n      const results = response.data.files.map(\n        (file: UploadedFileSuccess | UploadedFileErrored) => ({\n          ok: true as const,\n          data: file,\n        }),\n      );\n\n      return createBatchResult(results);\n    }\n\n    return response.data.files[0];\n  }\n\n  async delete(id: number): Promise<DeleteMagnetResponse> {\n    const response = await this.client.postRequest(\n      \"v4/magnet/delete\",\n      DeleteMagnetResponseSchema,\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { id: id.toString() },\n      },\n    );\n\n    return response.data;\n  }\n\n  async restart(\n    id: number,\n  ): Promise<RestartMagnetSuccess | RestartMagnetErrored>;\n  async restart(\n    ids: number[],\n  ): Promise<(RestartMagnetSuccess | RestartMagnetErrored)[]>;\n  async restart(\n    idOrIds: number | number[],\n  ): Promise<\n    | RestartMagnetSuccess\n    | RestartMagnetErrored\n    | (RestartMagnetSuccess | RestartMagnetErrored)[]\n  > {\n    const isArray = Array.isArray(idOrIds);\n\n    if (isArray) {\n      const response = await this.client.postRequest(\n        \"v4/magnet/restart\",\n        z.object({\n          magnets: z.array(\n            z.union([RestartMagnetSuccessSchema, RestartMagnetErroredSchema]),\n          ),\n        }),\n        {\n          requestType: \"postFormData\",\n          method: \"POST\",\n          formData: { ids: idOrIds.map((id) => id.toString()) },\n        },\n      );\n\n      return response.data.magnets;\n    } else {\n      const id = idOrIds;\n      const response = await this.client.postRequest(\n        \"v4/magnet/restart\",\n        z.object({ message: z.string() }),\n        {\n          requestType: \"postFormData\",\n          method: \"POST\",\n          formData: { id: id.toString() },\n        },\n      );\n\n      return { magnet: id.toString(), message: response.data.message };\n    }\n  }\n}\n","import { z } from \"zod\";\n\n// HOST INFO\nexport const HostSchema = z.object({\n  name: z.string(),\n  type: z.enum([\"premium\", \"free\"]),\n  domains: z.array(z.string()),\n  regexps: z.array(z.string()),\n  regexp: z.union([z.string(), z.array(z.string())]),\n  status: z.boolean().optional(),\n});\nexport type Host = z.infer<typeof HostSchema>;\n","import { z } from \"zod\";\nimport { DateTime } from \"luxon\";\nimport { HostSchema } from \"../hosts/types\";\n\n// USER INFO\nexport const UserSchema = z.object({\n  username: z.string(),\n  email: z.email(),\n  isPremium: z.boolean(),\n  isSubscribed: z.boolean(),\n  isTrial: z.boolean(),\n  premiumUntil: z\n    .int()\n    .transform((num) => (num === 0 ? null : DateTime.fromSeconds(num))),\n  lang: z.string(),\n  preferedDomain: z.string(),\n  fidelityPoints: z.int(),\n  limitedHostersQuotas: z.record(z.string(), z.int()),\n  remainingTrialQuota: z.int().optional(),\n  notifications: z.array(z.string()),\n});\nexport type User = z.infer<typeof UserSchema>;\n\n// USER HOSTS\nexport const UserHostSchema = HostSchema.extend({\n  quota: z.int().optional(),\n  quotaMax: z.int().optional(),\n  quotaType: z.string().optional(),\n  limitSimuDl: z.int().optional(),\n});\nexport type UserHost = z.infer<typeof UserHostSchema>;\n\n// USER VERIFICATION\nexport const VerificationEmailStatusSchema = z.object({\n  verif: z.enum([\"waiting\", \"allowed\", \"denied\"]),\n  resendable: z.boolean().optional(),\n  apikey: z.string().optional(),\n});\nexport type VarificationEmailStatus = z.infer<\n  typeof VerificationEmailStatusSchema\n>;\n\n// USER LINKS\nexport const SavedLinkSchema = z.object({\n  link: z.url(),\n  filename: z.string(),\n  date: z\n    .int()\n    .transform((num) => (num === 0 ? null : DateTime.fromSeconds(num))),\n  size: z.int(),\n  host: z.string(),\n});\nexport type SavedLink = z.infer<typeof SavedLinkSchema>;\n","import { AlldebridHttpClient } from \"../../core/http/client\";\nimport { z } from \"zod\";\nimport {\n  UserSchema,\n  type User,\n  VerificationEmailStatusSchema,\n  type VarificationEmailStatus,\n  type UserHost,\n  UserHostSchema,\n  type SavedLink,\n  SavedLinkSchema,\n} from \"./types\";\n\nexport class UserResource {\n  constructor(private readonly client: AlldebridHttpClient) {}\n\n  async get(): Promise<User> {\n    const response = await this.client.getRequest(\n      \"v4/user\",\n      z.object({ user: UserSchema }),\n    );\n    return response.data.user;\n  }\n\n  async getHosts(): Promise<Record<string, UserHost>> {\n    const response = await this.client.getRequest(\n      \"v4.1/user/hosts\",\n      z.object({ hosts: z.record(z.string(), UserHostSchema) }),\n    );\n    return response.data.hosts;\n  }\n\n  async checkVerificationToken(\n    token: string,\n  ): Promise<VarificationEmailStatus> {\n    const response = await this.client.postRequest(\n      \"v4/user/verif\",\n      VerificationEmailStatusSchema,\n      { requestType: \"postFormData\", method: \"POST\", formData: { token } },\n    );\n    return response.data;\n  }\n\n  async resendVerification(token: string): Promise<{ sent: boolean }> {\n    const response = await this.client.postRequest(\n      \"v4/user/verif/resend\",\n      z.object({ sent: z.boolean() }),\n      { requestType: \"postFormData\", method: \"POST\", formData: { token } },\n    );\n    return response.data;\n  }\n\n  async clearNotifications(\n    code: string,\n  ): Promise<{ code: string; cleared: boolean }> {\n    const response = await this.client.postRequest(\n      \"v4/user/notification/clear\",\n      z.object({ message: z.literal(\"Notification was cleared\") }),\n      { requestType: \"postFormData\", method: \"POST\", formData: { code } },\n    );\n    return {\n      code,\n      cleared: response.data.message === \"Notification was cleared\",\n    };\n  }\n\n  async listSavedLinks(): Promise<SavedLink[]> {\n    const response = await this.client.getRequest(\n      \"v4/user/links\",\n      z.object({ links: z.array(SavedLinkSchema) }),\n    );\n    return response.data.links;\n  }\n\n  async saveLinks(links: string[]): Promise<{ saved: boolean }> {\n    const response = await this.client.postRequest(\n      \"v4/user/links/save\",\n      z.object({ message: z.string() }),\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { links },\n      },\n    );\n    return { saved: /succ?essfully saved$/gi.test(response.data.message) };\n  }\n\n  async deleteLinks(links: string[]): Promise<{ deleted: boolean }> {\n    const response = await this.client.postRequest(\n      \"v4/user/links/delete\",\n      z.object({ message: z.string() }),\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { links },\n      },\n    );\n    return { deleted: /succ?essfully deleted$/gi.test(response.data.message) };\n  }\n\n  async listRecentLinks(): Promise<SavedLink[]> {\n    const response = await this.client.getRequest(\n      \"v4/user/history\",\n      z.object({ links: z.array(SavedLinkSchema) }),\n    );\n    return response.data.links;\n  }\n\n  async purgeRecentLinks(): Promise<{ deleted: boolean }> {\n    const response = await this.client.postRequest(\n      \"v4/user/history/delete\",\n      z.object({ message: z.string() }),\n      { requestType: \"simplePost\", method: \"POST\" },\n    );\n    return { deleted: /successfully purged$/gi.test(response.data.message) };\n  }\n}\n","import { z } from \"zod\";\nimport { AlldebridHttpClient } from \"../../core/http/client\";\nimport { HostSchema } from \"./types\";\n\nexport const ListHostResponseSchema = z.object({\n  hosts: z.record(z.string(), HostSchema),\n  streams: z.record(z.string(), HostSchema),\n  redirectors: z.record(z.string(), HostSchema),\n});\nexport type ListHostResponse = z.infer<typeof ListHostResponseSchema>;\n\nexport const ListDomainsResponseSchema = z.object({\n  hosts: z.array(z.string()),\n  streams: z.array(z.string()),\n  redirectors: z.array(z.string()),\n});\nexport type ListDomainsResponse = z.infer<typeof ListDomainsResponseSchema>;\n\nexport class HostResource {\n  constructor(private readonly client: AlldebridHttpClient) {}\n\n  async list(): Promise<ListHostResponse> {\n    const response = await this.client.getRequest(\n      \"v4/hosts\",\n      ListHostResponseSchema,\n      { publicEndpoint: true },\n    );\n    return response.data;\n  }\n\n  async listDomains(): Promise<ListDomainsResponse> {\n    const response = await this.client.getRequest(\n      \"v4/hosts/domains\",\n      ListDomainsResponseSchema,\n      { publicEndpoint: true },\n    );\n    return response.data;\n  }\n\n  async listHostPriorities(): Promise<Record<string, number>> {\n    const response = await this.client.getRequest(\n      \"v4/hosts/priority\",\n      z.object({ hosts: z.record(z.string(), z.int()) }),\n      { publicEndpoint: true },\n    );\n    return response.data.hosts;\n  }\n}\n","import { z } from \"zod\";\n\n// LINK INFO\nexport const LinkInfoSuccessSchema = z.object({\n  link: z.url(),\n  filename: z.string(),\n  size: z.int(),\n  host: z.string(),\n  hostDomain: z.string(),\n});\nexport type LinkInfoSuccess = z.infer<typeof LinkInfoSuccessSchema>;\nexport const LinkInfoErrorSchema = z.object({\n  link: z.url(),\n  error: z.object({\n    code: z.string(),\n    message: z.string(),\n  }),\n});\nexport type LinkInfoError = z.infer<typeof LinkInfoErrorSchema>;\nexport const LinkInfoSchema = z.union([\n  LinkInfoSuccessSchema,\n  LinkInfoErrorSchema,\n]);\nexport type LinkInfo = z.infer<typeof LinkInfoSchema>;\n\n// UNLOCK LINK\nexport const DebridLinkResponseSchema = z.object({\n  link: z.url(),\n  filename: z.string(),\n  host: z.string(),\n  streaming: z\n    .array(\n      z.object({\n        id: z.string(),\n        ext: z.string(),\n        quality: z.union([z.string(), z.int()]),\n        filesize: z.int(),\n        proto: z.string(),\n        name: z.string(),\n      }),\n    )\n    .optional(),\n  paws: z.boolean().optional(),\n  filesize: z.int(),\n  id: z.string(),\n  hostDomain: z.string(),\n  delayed: z.int().optional(),\n});\nexport type DebridLinkResponse = z.infer<typeof DebridLinkResponseSchema>;\n","import { z } from \"zod\";\nimport { AlldebridHttpClient } from \"../../core/http/client\";\nimport {\n  LinkInfoSchema,\n  type LinkInfo,\n  DebridLinkResponseSchema,\n  type DebridLinkResponse,\n} from \"./types\";\n\nexport class LinkResource {\n  constructor(private readonly client: AlldebridHttpClient) {}\n\n  async getInfo(link: string, password?: string): Promise<LinkInfo>;\n  async getInfo(links: string[], password?: string): Promise<LinkInfo[]>;\n  async getInfo(\n    linkOrLinks: string | string[],\n    password?: string,\n  ): Promise<LinkInfo | LinkInfo[]> {\n    const isArray = Array.isArray(linkOrLinks);\n    const linkArray = isArray ? linkOrLinks : [linkOrLinks];\n    const response = await this.client.postRequest(\n      \"v4/link/infos\",\n      z.object({ infos: z.array(LinkInfoSchema) }),\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { ...{ link: linkArray }, ...(password ? { password } : {}) },\n      },\n    );\n    if (!response.data.infos[0])\n      throw new Error(\"Api returned a successful but empty response\");\n    return isArray ? response.data.infos : response.data.infos[0];\n  }\n\n  async debrid(link: string, password?: string): Promise<DebridLinkResponse> {\n    const response = await this.client.postRequest(\n      \"v4/link/unlock\",\n      DebridLinkResponseSchema,\n      {\n        requestType: \"postFormData\",\n        method: \"POST\",\n        formData: { ...{ link }, ...(password ? { password } : {}) },\n      },\n    );\n    return response.data;\n  }\n}\n","import { AlldebridHttpClient } from \"./core/http/client\";\nimport type { ClientOptions } from \"./core/http/client\";\nimport { logger } from \"./core/logger\";\nimport { MagnetResource } from \"./resources/magnets\";\nimport { UserResource } from \"./resources/users\";\nimport { HostResource } from \"./resources/hosts\";\nimport { LinkResource } from \"./resources/links\";\n\nexport type { ClientOptions } from \"./core/http/client\";\n\n// Re-export error classes and batch result utilities\nexport {\n  SdkError,\n  NetworkError,\n  ApiError,\n  ValidationError,\n  ConfigurationError,\n  type BatchResult,\n  createBatchResult,\n} from \"./core/errors\";\n\n// Re-export magnet types\nexport type {\n  MagnetListed,\n  MagnetListedError,\n  MagnetListedExpired,\n  MagnetListedReady,\n  MagnetFile,\n  MagnetDir,\n  UploadedMagnetSuccess,\n  UploadedMagnetErrored,\n  UploadedFileSuccess,\n  UploadedFileErrored,\n  DeleteMagnetResponse,\n  RestartMagnetSuccess,\n  RestartMagnetErrored,\n} from \"./resources/magnets/types\";\n\n// Re-export user types\nexport type {\n  User,\n  UserHost,\n  VarificationEmailStatus,\n  SavedLink,\n} from \"./resources/users/types\";\n\n// Re-export host types\nexport type { Host } from \"./resources/hosts/types\";\n\n// Re-export link types\nexport type { LinkInfo, DebridLinkResponse } from \"./resources/links/types\";\n\nexport class Alldebrid {\n  private readonly httpClient: AlldebridHttpClient;\n  readonly magnet: MagnetResource;\n  readonly user: UserResource;\n  readonly host: HostResource;\n  readonly link: LinkResource;\n\n  constructor(opts: ClientOptions) {\n    logger.level = opts.logLevel ?? \"warn\";\n    this.httpClient = new AlldebridHttpClient();\n    this.httpClient.configure(opts);\n    this.magnet = new MagnetResource(this.httpClient);\n    this.user = new UserResource(this.httpClient);\n    this.host = new HostResource(this.httpClient);\n    this.link = new LinkResource(this.httpClient);\n  }\n}\n","import { z } from \"zod\";\nimport chalk from \"chalk\";\n\n// Configuration schema\nexport const CliConfigSchema = z.object({\n  ALLDEBRID_API_KEY: z.string().optional(),\n  BASE_URL: z.string().url().optional(),\n  LOG_LEVEL: z.enum([\"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\"]).optional(),\n  OUTPUT_FORMAT: z.enum([\"text\", \"json\", \"yaml\"]).optional(),\n}).strict();\n\nexport type CliConfig = z.infer<typeof CliConfigSchema>;\n\n// CLI option schemas\nexport const OutputFormatSchema = z.enum([\"text\", \"json\", \"yaml\"]);\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport const MagnetStatusSchema = z.enum([\"active\", \"ready\", \"expired\", \"error\"]);\n\n// Validation functions\nexport function validateOutputFormat(format: string): OutputFormat {\n  try {\n    return OutputFormatSchema.parse(format);\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      console.error(chalk.red.bold(\"❌ Invalid output format:\"), chalk.red(format));\n      console.error(chalk.yellow(\"Valid formats: text, json, yaml\"));\n      process.exit(1);\n    }\n    throw error;\n  }\n}\n\nexport function validateMagnetStatus(status: string) {\n  try {\n    return MagnetStatusSchema.parse(status);\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      console.error(chalk.red.bold(\"❌ Invalid status filter:\"), chalk.red(status));\n      console.error(chalk.yellow(\"Valid statuses: active, ready, expired, error\"));\n      process.exit(1);\n    }\n    throw error;\n  }\n}\n\nexport function validateConfig(rawConfig: unknown, configPath: string): CliConfig {\n  try {\n    return CliConfigSchema.parse(rawConfig);\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      console.error(chalk.red.bold(`❌ Invalid configuration in ${configPath}:`));\n      error.issues.forEach((issue: z.ZodIssue) => {\n        console.error(chalk.red(`  - ${issue.path.join('.')}: ${issue.message}`));\n      });\n      console.error(chalk.yellow(\"\\n💡 Check the configuration guide for valid options.\"));\n      process.exit(1);\n    }\n    throw error;\n  }\n}","{\n  \"name\": \"alldebrid\",\n  \"type\": \"module\",\n  \"version\": \"2.0.4\",\n  \"author\": \"Chris-Alexandre Pena\",\n  \"license\": \"GPL-3.0\",\n  \"description\": \"AllDebrid SDK + CLI in TypeScript\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"bin\": {\n    \"alldebrid\": \"dist/cli/index.cjs\"\n  },\n  \"scripts\": {\n    \"dev\": \"tsup --watch\",\n    \"build\": \"tsup\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"lint\": \"eslint .\",\n    \"format\": \"prettier --write .\",\n    \"format:check\": \"prettier --check .\",\n    \"test\": \"pnpm test:unit && pnpm test:e2e\",\n    \"test:unit\": \"vitest run test/unit\",\n    \"test:e2e\": \"vitest run test/e2e\",\n    \"prepublishOnly\": \"pnpm build && pnpm test && pnpm test:e2e\"\n  },\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\",\n      \"default\": \"./dist/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/chrisalexandrepena/alldebrid.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/chrisalexandrepena/alldebrid/issues\"\n  },\n  \"homepage\": \"https://github.com/chrisalexandrepena/alldebrid#readme\",\n  \"files\": [\n    \"dist\",\n    \"README.md\",\n    \"LICENCE\"\n  ],\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"volta\": {\n    \"node\": \"22.18.0\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^1.12.1\",\n    \"chalk\": \"^5.6.2\",\n    \"commander\": \"^14.0.1\",\n    \"js-yaml\": \"^4.1.0\",\n    \"luxon\": \"^3.7.2\",\n    \"pino\": \"^10.0.0\",\n    \"pino-pretty\": \"^13.1.1\",\n    \"zod\": \"^4.1.8\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.35.0\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/luxon\": \"^3.7.1\",\n    \"@types/node\": \"^25.0.1\",\n    \"eslint\": \"^9.35.0\",\n    \"eslint-config-prettier\": \"^10.1.8\",\n    \"globals\": \"^16.4.0\",\n    \"jiti\": \"^2.5.1\",\n    \"prettier\": \"^3.6.2\",\n    \"tsup\": \"^8.5.0\",\n    \"typescript\": \"^5.9.2\",\n    \"typescript-eslint\": \"^8.43.0\",\n    \"vitest\": \"^4.0.3\"\n  },\n  \"keywords\": [],\n  \"packageManager\": \"pnpm@10.15.0\",\n  \"pnpm\": {\n    \"overrides\": {\n      \"axios\": \"^1.12.0\"\n    }\n  }\n}\n","import { z } from \"zod\";\nimport { program } from \"commander\";\nimport { Alldebrid } from \"../sdk\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport * as yaml from \"js-yaml\";\nimport chalk from \"chalk\";\nimport { DEFAULT_BASE_URL } from \"../sdk/core/http/client\";\nimport {\n  type CliConfig,\n  type OutputFormat,\n  validateConfig,\n  validateOutputFormat,\n  validateMagnetStatus,\n} from \"./validation\";\nimport { version } from \"../../package.json\";\n\ninterface ObjectWithISOMethod {\n  toISO: () => string;\n}\nfunction hasToISOMethod(x: unknown): x is ObjectWithISOMethod {\n  const r = z\n    .object({\n      toISO: z.function(),\n    })\n    .safeParse(x);\n  return r.success;\n}\n\nfunction loadConfig(): CliConfig {\n  // Config file locations in order of preference\n  const XDG_CONFIG_HOME =\n    process.env.XDG_CONFIG_HOME ?? join(homedir(), \".config\");\n  const configPaths = [\n    // XDG config directory (Linux/Unix standard)\n    join(XDG_CONFIG_HOME, \"alldebrid\", \"config.yml\"),\n    join(XDG_CONFIG_HOME, \"alldebrid\", \"config.yaml\"),\n    join(homedir(), \".alldebrid.yml\"),\n    join(homedir(), \".alldebrid.yaml\"),\n    join(homedir(), \".alldebrid\", \"config.yml\"),\n    join(homedir(), \".alldebrid\", \"config.yaml\"),\n    // Application data directory (Windows)\n    process.env.APPDATA\n      ? join(process.env.APPDATA, \"alldebrid\", \"config.yml\")\n      : null,\n  ].filter(Boolean) as string[];\n\n  for (const configPath of configPaths) {\n    if (existsSync(configPath)) {\n      try {\n        const content = readFileSync(configPath, \"utf8\");\n        const rawConfig = yaml.load(content);\n        return validateConfig(rawConfig, configPath);\n      } catch {\n        // Ignore config file errors and try next location\n      }\n    }\n  }\n  return {};\n}\n\nfunction formatOutput(data: unknown, format: OutputFormat): string {\n  switch (format) {\n    case \"json\":\n      return JSON.stringify(data, null, 2);\n    case \"yaml\":\n      return yaml.dump(data, { indent: 2, lineWidth: -1 });\n    case \"text\":\n    default:\n      if (typeof data === \"object\" && data !== null) {\n        return formatAsText(data);\n      }\n      return String(data);\n  }\n}\n\nfunction formatAsText(data: unknown): string {\n  if (Array.isArray(data)) {\n    if (data.length === 0) return chalk.yellow(\"No items found.\");\n\n    // For arrays, create a cleaner table-like format with colors\n    return data\n      .map((item: unknown, index) => {\n        if (typeof item === \"object\" && item !== null) {\n          const formatted = formatAsText(item);\n          const separator = chalk.blue(\"=\".repeat(50));\n          const itemNumber = chalk.bold.cyan(`[${index + 1}]`);\n          return `\\n${separator}\\n${itemNumber}\\n${separator}\\n${formatted}`;\n        }\n        return `${chalk.cyan(`${index + 1}.`)} ${formatAsText(item)}`;\n      })\n      .join(\"\\n\\n\");\n  }\n\n  if (typeof data === \"object\" && data !== null) {\n    // Handle DateTime objects from Luxon\n    if (hasToISOMethod(data)) {\n      return data.toISO();\n    }\n\n    // Handle Date objects\n    if (data instanceof Date) {\n      return data.toISOString();\n    }\n\n    const entries = Object.entries(data as Record<string, unknown>);\n    return entries\n      .filter(([, value]) => value !== undefined && value !== null)\n      .map(([key, value]) => {\n        const formattedKey = key\n          .replace(/([A-Z])/g, \" $1\")\n          .replace(/^./, (str) => str.toUpperCase())\n          .trim();\n\n        if (typeof value === \"object\" && value !== null) {\n          // Handle DateTime/Date objects inline\n          if (hasToISOMethod(value)) {\n            return `${chalk.bold.green(formattedKey)}: ${chalk.magenta(value.toISO())}`;\n          }\n          if (value instanceof Date) {\n            return `${chalk.bold.green(formattedKey)}: ${chalk.magenta(value.toISOString())}`;\n          }\n          return `${chalk.bold.green(formattedKey)}:\\n${formatAsText(value)\n            .split(\"\\n\")\n            .map((line) => `  ${line}`)\n            .join(\"\\n\")}`;\n        }\n\n        // Add colors based on value type\n        let coloredValue;\n        if (typeof value === \"boolean\") {\n          coloredValue = value ? chalk.green(\"true\") : chalk.red(\"false\");\n        } else if (typeof value === \"number\") {\n          coloredValue = chalk.yellow(String(value));\n        } else if (typeof value === \"string\") {\n          // Color URLs differently\n          if (value.startsWith(\"http\")) {\n            coloredValue = chalk.blue.underline(value);\n          } else {\n            coloredValue = chalk.white(value);\n          }\n        } else {\n          coloredValue = chalk.gray(String(value));\n        }\n\n        return `${chalk.bold.green(formattedKey)}: ${coloredValue}`;\n      })\n      .join(\"\\n\");\n  }\n\n  return String(data);\n}\n\nfunction getOutputFormat(): OutputFormat {\n  const config = loadConfig();\n  const format = program.opts().format || config.OUTPUT_FORMAT || \"text\";\n  return validateOutputFormat(format);\n}\n\nfunction getApiKey(): string {\n  const config = loadConfig();\n  return (\n    program.opts().apiKey ||\n    process.env.ALLDEBRID_API_KEY ||\n    config.ALLDEBRID_API_KEY ||\n    \"\"\n  );\n}\n\nfunction createClient(): Alldebrid {\n  const config = loadConfig();\n  const apiKey = getApiKey();\n\n  if (!apiKey) {\n    console.error(chalk.red.bold(\"Error: API key required.\\n\"));\n    console.error(chalk.yellow(\"Options (in order of priority):\"));\n    console.error(chalk.cyan(\"1. Use --apikey flag: \"));\n    console.error(chalk.cyan(\"2. Set ALLDEBRID_API_KEY environment variable\"));\n    console.error(\n      chalk.cyan(\"3. Create a config file at one of these locations:\"),\n    );\n    console.error(\n      chalk.gray(\"   - ~/.config/alldebrid/config.yml (recommended)\"),\n    );\n    console.error(chalk.gray(\"   - %APPDATA%/alldebrid/config.yml (Windows)\"));\n    console.error(chalk.gray(\"   - ~/.alldebrid/config.yml\\n\"));\n    console.error(chalk.yellow(\"Config file format (YAML):\"));\n    console.error(\n      chalk.green(\"ALLDEBRID_API_KEY: \") + chalk.white(\"your-api-key-here\"),\n    );\n    console.error(\n      chalk.green(\"BASE_URL: \") +\n        chalk.gray(\"https://api.alldebrid.com/v4  # optional\"),\n    );\n    console.error(chalk.green(\"LOG_LEVEL: \") + chalk.gray(\"error  # optional\"));\n    console.error(\n      chalk.green(\"OUTPUT_FORMAT: \") +\n        chalk.gray(\"text  # optional (text|json|yaml)\"),\n    );\n    process.exit(1);\n  }\n\n  return new Alldebrid({\n    apiKey,\n    baseUrl: config.BASE_URL ?? DEFAULT_BASE_URL,\n    logLevel: config.LOG_LEVEL ?? \"error\",\n  });\n}\n\nasync function main() {\n  program\n    .name(\"alldebrid\")\n    .description(\"AllDebrid CLI - Command line interface for AllDebrid\")\n    .version(version)\n    .option(\"-f, --format <format>\", \"Output format (text|json|yaml)\")\n    .option(\"-k, --apikey <key>\", \"AllDebrid API key\");\n\n  // User commands\n  const userCmd = program.command(\"user\").description(\"User-related commands\");\n\n  userCmd\n    .command(\"info\")\n    .description(\"Show user information\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const user = await client.user.get();\n        const format = getOutputFormat();\n        console.log(formatOutput(user, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  userCmd\n    .command(\"hosts\")\n    .description(\"List user hosts\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const hosts = await client.user.getHosts();\n        const format = getOutputFormat();\n        console.log(formatOutput(hosts, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  userCmd\n    .command(\"saved-links-list\")\n    .description(\"List saved links\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const links = await client.user.listSavedLinks();\n        const format = getOutputFormat();\n        console.log(formatOutput(links, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  userCmd\n    .command(\"saved-links-save\")\n    .description(\"Save links\")\n    .argument(\"<links...>\", \"Links to save\")\n    .action(async (links: string[]) => {\n      try {\n        const client = createClient();\n        const result = await client.user.saveLinks(links);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  userCmd\n    .command(\"recent-links-list\")\n    .description(\"List recent links\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const links = await client.user.listRecentLinks();\n        const format = getOutputFormat();\n        console.log(formatOutput(links, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  // Hosts command\n  program\n    .command(\"hosts\")\n    .description(\"List all available hosts\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const hosts = await client.host.list();\n        const format = getOutputFormat();\n        console.log(formatOutput(hosts, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  // Magnet commands\n  const magnetCmd = program\n    .command(\"magnet\")\n    .description(\"Magnet-related commands\");\n\n  magnetCmd\n    .command(\"list\")\n    .description(\"List your magnets\")\n    .option(\n      \"-s, --status <status>\",\n      \"Filter by status (active|ready|expired|error)\",\n    )\n    .action(async (options) => {\n      try {\n        const client = createClient();\n\n        let magnets;\n        if (options.status) {\n          const validStatus = validateMagnetStatus(options.status);\n          // TypeScript needs explicit handling due to method overloads\n          switch (validStatus) {\n            case \"active\":\n              magnets = await client.magnet.list(\"active\");\n              break;\n            case \"ready\":\n              magnets = await client.magnet.list(\"ready\");\n              break;\n            case \"expired\":\n              magnets = await client.magnet.list(\"expired\");\n              break;\n            case \"error\":\n              magnets = await client.magnet.list(\"error\");\n              break;\n            default:\n              // This should never happen due to validation\n              throw new Error(`Invalid status: ${validStatus}`);\n          }\n        } else {\n          magnets = await client.magnet.list();\n        }\n\n        const format = getOutputFormat();\n        console.log(formatOutput(magnets, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  magnetCmd\n    .command(\"get\")\n    .description(\"Get specific magnet details\")\n    .argument(\"<id>\", \"Magnet ID to get details for\", parseInt)\n    .action(async (id: number) => {\n      try {\n        const client = createClient();\n        const magnet = await client.magnet.get(id);\n        const format = getOutputFormat();\n        console.log(formatOutput(magnet, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  magnetCmd\n    .command(\"upload\")\n    .description(\"Upload a magnet link\")\n    .argument(\"<magnet>\", \"Magnet link to upload\")\n    .action(async (magnet: string) => {\n      try {\n        const client = createClient();\n        const result = await client.magnet.upload([magnet]);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  magnetCmd\n    .command(\"delete\")\n    .description(\"Delete a magnet\")\n    .argument(\"<id>\", \"Magnet ID to delete\", parseInt)\n    .action(async (id: number) => {\n      try {\n        const client = createClient();\n        const result = await client.magnet.delete(id);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  magnetCmd\n    .command(\"restart\")\n    .description(\"Restart a magnet\")\n    .argument(\"<id>\", \"Magnet ID to restart\", parseInt)\n    .action(async (id: number) => {\n      try {\n        const client = createClient();\n        const result = await client.magnet.restart(id);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  // Link commands\n  const linkCmd = program.command(\"link\").description(\"Link-related commands\");\n\n  linkCmd\n    .command(\"info\")\n    .description(\"Get link information\")\n    .argument(\"<url>\", \"URL to get info for\")\n    .option(\"-p, --password <password>\", \"Password for protected links\")\n    .action(async (url: string, options) => {\n      try {\n        const client = createClient();\n        const result = await client.link.getInfo(url, options.password);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  linkCmd\n    .command(\"unlock\")\n    .description(\"Unlock a premium link\")\n    .argument(\"<url>\", \"URL to unlock\")\n    .action(async (url: string) => {\n      try {\n        const client = createClient();\n        const result = await client.link.debrid(url);\n        const format = getOutputFormat();\n        console.log(formatOutput(result, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  // Additional host commands\n  program\n    .command(\"host-domains\")\n    .description(\"List host domains\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const domains = await client.host.listDomains();\n        const format = getOutputFormat();\n        console.log(formatOutput(domains, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  program\n    .command(\"host-priorities\")\n    .description(\"List host priorities\")\n    .action(async () => {\n      try {\n        const client = createClient();\n        const priorities = await client.host.listHostPriorities();\n        const format = getOutputFormat();\n        console.log(formatOutput(priorities, format));\n      } catch (error) {\n        console.error(\n          chalk.red(\"Error:\"),\n          error instanceof Error ? error.message : error,\n        );\n        process.exit(1);\n      }\n    });\n\n  await program.parseAsync();\n}\n\nmain().catch((error) => {\n  console.error(\"Fatal error:\", error);\n  process.exit(1);\n});\n"]}