agentref 1.0.5 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -93,7 +93,7 @@ var SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
93
93
  var DEFAULT_BASE_URL = "https://www.agentref.dev/api/v1";
94
94
  var DEFAULT_TIMEOUT = 3e4;
95
95
  var DEFAULT_MAX_RETRIES = 2;
96
- var VERSION = true ? "1.0.5" : "0.0.0";
96
+ var VERSION = true ? "5.0.0" : "0.0.0";
97
97
  function hasUsableIdempotencyKey(idempotencyKey) {
98
98
  return typeof idempotencyKey === "string" && idempotencyKey.trim().length > 0;
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n StripeConnectSession,\n MerchantDomainStatus,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: string\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAKvC,YAAY,SAAiB,MAAc,QAAgB,WAAmB;AAC5E,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AACF;AAEO,IAAM,YAAN,cAAwB,cAAc;AAAA,EAC3C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,iBAAN,cAA6B,cAAc;AAAA,EAChD,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,kBAAN,cAA8B,cAAc;AAAA,EAGjD,YAAY,SAAiB,MAAc,WAAmB,SAAmB;AAC/E,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AACF;AAEO,IAAM,gBAAN,cAA4B,cAAc;AAAA,EAC/C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,cAAc;AAAA,EAC/C,YAAY,SAAiB,MAAc,WAAmB;AAC5D,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,iBAAN,cAA6B,cAAc;AAAA,EAGhD,YAAY,SAAiB,MAAc,WAAmB,YAAoB;AAChF,UAAM,SAAS,MAAM,KAAK,SAAS;AACnC,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACpB;AACF;AAEO,IAAM,cAAN,cAA0B,cAAc;AAAA,EAC7C,YAAY,SAAiB,MAAc,QAAgB,WAAmB;AAC5E,UAAM,SAAS,MAAM,QAAQ,SAAS;AACtC,SAAK,OAAO;AAAA,EACd;AACF;;;ACtDA,IAAM,eAAwC,oBAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAUrE,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAG5B,IAAM,UAAU,OAAsC,UAAkB;AAExE,SAAS,wBAAwB,gBAA6C;AAC5E,SAAO,OAAO,mBAAmB,YAAY,eAAe,KAAK,EAAE,SAAS;AAC9E;AAEO,IAAM,aAAN,MAAiB;AAAA,EAMtB,YAAY,SAAyB,CAAC,GAAG;AACvC,QAAI,OAAO,WAAW,eAAe,CAAC,OAAO,yBAAyB;AACpE,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS,OAAO,UAAU,QAAQ,IAAI,kBAAkB;AAC9D,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,SAAK,SAAS;AACd,SAAK,WAAW,OAAO,WAAW,kBAAkB,QAAQ,OAAO,EAAE;AACrE,SAAK,UAAU,OAAO,WAAW;AACjC,SAAK,aAAa,OAAO,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,QAAW,SAAqC;AACpD,UAAM,MAAM,KAAK,SAAS,QAAQ,MAAM,QAAQ,KAAK;AACrD,UAAM,SAAS,aAAa,IAAI,QAAQ,MAAM;AAC9C,UAAM,iBAAiB,QAAQ,WAAW,UAAU,wBAAwB,QAAQ,cAAc;AAClG,UAAM,WAAW,UAAU;AAC3B,UAAM,cAAc,WAAW,KAAK,aAAa,IAAI;AAErD,aAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACtD,UAAI;AAEJ,UAAI;AACF,cAAM,UAAkC;AAAA,UACtC,eAAe,UAAU,KAAK,MAAM;AAAA,UACpC,gBAAgB;AAAA,UAChB,cAAc,iBAAiB,OAAO;AAAA,QACxC;AAEA,YAAI,gBAAgB;AAClB,kBAAQ,iBAAiB,IAAI,QAAQ,eAAgB,KAAK;AAAA,QAC5D;AAEA,mBAAW,MAAM,MAAM,KAAK;AAAA,UAC1B,QAAQ,QAAQ;AAAA,UAChB;AAAA,UACA,MAAM,QAAQ,SAAS,SAAY,KAAK,UAAU,QAAQ,IAAI,IAAI;AAAA,UAClE,QAAQ,YAAY,QAAQ,KAAK,OAAO;AAAA,QAC1C,CAAC;AAAA,MACH,SAAS,OAAO;AACd,YAAI,YAAY,UAAU,cAAc,GAAG;AACzC,gBAAM,KAAK,KAAK,KAAK,QAAQ,OAAO,CAAC;AACrC;AAAA,QACF;AACA,cAAM;AAAA,MACR;AAEA,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,cAAc,MAAM,KAAK,WAAW,QAAQ;AAElD,YAAI,YAAY,KAAK,YAAY,SAAS,MAAM,KAAK,UAAU,cAAc,GAAG;AAC9E,gBAAM,QACJ,SAAS,WAAW,MAChB,KAAK,eAAe,SAAS,QAAQ,IAAI,aAAa,CAAC,IACvD,KAAK,QAAQ,OAAO;AAC1B,gBAAM,KAAK,KAAK,KAAK;AACrB;AAAA,QACF;AAEA,cAAM;AAAA,MACR;AAEA,aAAO,SAAS,KAAK;AAAA,IACvB;AAEA,UAAM,IAAI,YAAY,gCAAgC,2BAA2B,KAAK,EAAE;AAAA,EAC1F;AAAA,EAEQ,SAAS,MAAc,OAAuE;AACpG,UAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AAC7D,UAAM,MAAM,IAAI,IAAI,GAAG,KAAK,OAAO,GAAG,cAAc,EAAE;AAEtD,QAAI,OAAO;AACT,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,YAAI,UAAU,QAAW;AACvB,cAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI,SAAS;AAAA,EACtB;AAAA,EAEA,MAAc,WAAW,UAA4C;AACnE,UAAM,OAAQ,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AAKpD,UAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,UAAM,UAAU,KAAK,OAAO,WAAW,SAAS;AAChD,UAAM,YAAY,KAAK,MAAM,aAAa;AAC1C,UAAM,UAAU,KAAK,OAAO;AAE5B,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,gBAAgB,SAAS,MAAM,WAAW,OAAO;AACzF,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,UAAU,SAAS,MAAM,SAAS;AAC1E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,eAAe,SAAS,MAAM,SAAS;AAC/E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,cAAc,SAAS,MAAM,SAAS;AAC9E,QAAI,SAAS,WAAW,IAAK,QAAO,IAAI,cAAc,SAAS,MAAM,SAAS;AAC9E,QAAI,SAAS,WAAW,KAAK;AAC3B,aAAO,IAAI,eAAe,SAAS,MAAM,WAAW,KAAK,oBAAoB,SAAS,QAAQ,IAAI,aAAa,CAAC,CAAC;AAAA,IACnH;AAEA,WAAO,IAAI,YAAY,SAAS,MAAM,SAAS,QAAQ,SAAS;AAAA,EAClE;AAAA,EAEQ,YAAY,QAAyB;AAC3C,WAAO,WAAW,OAAO,UAAU;AAAA,EACrC;AAAA,EAEQ,oBAAoB,aAAoC;AAC9D,QAAI,CAAC,YAAa,QAAO;AAEzB,UAAM,iBAAiB,OAAO,WAAW;AACzC,QAAI,CAAC,OAAO,MAAM,cAAc,KAAK,kBAAkB,GAAG;AACxD,aAAO,KAAK,KAAK,cAAc;AAAA,IACjC;AAEA,UAAM,SAAS,KAAK,MAAM,WAAW;AACrC,QAAI,CAAC,OAAO,MAAM,MAAM,GAAG;AACzB,YAAM,UAAU,SAAS,KAAK,IAAI;AAClC,aAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,GAAI,CAAC;AAAA,IAC9C;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,eAAe,aAAoC;AACzD,WAAO,KAAK,oBAAoB,WAAW,IAAI;AAAA,EACjD;AAAA,EAEQ,KAAK,IAA2B;AACtC,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,iBAAW,SAAS,EAAE;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEQ,QAAQ,SAAyB;AACvC,WAAO,MAAM,KAAK,IAAI,GAAG,OAAO;AAAA,EAClC;AACF;;;AC1LO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAYqC;AACxC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,eAAe,OAAO,OAAO,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,IAAI,IAAY,SAAqD;AACzE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,OAAO,SAAS,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI;AAAA,IAC3D,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,SAA+C;AACvE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,MAAM,IAAY,MAA4B,SAA+C;AACjG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,SAA+C;AACvE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM,eAAe,EAAE;AAAA,MACvB,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACvDO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,MAAM,UAAkC;AACtC,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAgC;AACpC,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,MAAwD,SAAmD;AACzH,UAAM,WAAW,MAAM,KAAK,KAAK,QAAgD;AAAA,MAC/E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;AC5BO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAasC;AACzC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,gBAAgB,OAAO,OAAO,CAAC;AAAA,EACjF;AAAA,EAEA,MAAM,MAAM,QAAkG;AAC5G,UAAM,WAAW,MAAM,KAAK,KAAK,QAAkD;AAAA,MACjF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,QAAoD;AAC/D,UAAM,WAAW,MAAM,KAAK,KAAK,QAA+C;AAAA,MAC9E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACrCO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QASgC;AACnC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,UAAU,OAAO,OAAO,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,QAA4B;AAChC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA4C;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAAQ,IAAY,MAAyB,SAA0C;AAC3F,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuC;AAAA,MACtE,QAAQ;AAAA,MACR,MAAM,UAAU,EAAE;AAAA,MAClB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACxBO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,MAAM,MAAyB;AAC7B,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA+C;AAC1D,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,gBAA+C;AACnD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuD;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,eAA8C;AAClD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAuD;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,gBAAqC;AACzC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA6C;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,iBAAiB,MAAmD;AACxE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA6C;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,mBAAqD;AACzD,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,oBAAoB,MAA6E;AACrG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;AC9EO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAakC;AACrC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,YAAY,OAAO,OAAO,CAAC;AAAA,EAC7E;AAAA,EAEA,YAAY,QAOqC;AAC/C,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,oBAAoB,OAAO,OAAO,CAAC;AAAA,EACrF;AAAA,EAEA,MAAM,MAAM,QAA8F;AACxG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA8C;AAAA,MAC7E,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA0B,SAA6D;AAClG,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACpCO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAA6B,MAAkB;AAAlB;AAAA,EAAmB;AAAA,EAEhD,KAAK,QAOmC;AACtC,WAAO,KAAK,KAAK,QAAQ,EAAE,QAAQ,OAAO,MAAM,aAAa,OAAO,OAAO,CAAC;AAAA,EAC9E;AAAA,EAEA,OAAO,QAAQ,QAEa;AAC1B,QAAI,OAAO;AACX,UAAM,WAAW,QAAQ,YAAY;AAErC,WAAO,MAAM;AACX,YAAM,WAAW,MAAM,KAAK,KAAK,EAAE,MAAM,OAAO,SAAS,CAAC;AAC1D,aAAO,SAAS;AAEhB,UAAI,CAAC,SAAS,KAAK,SAAS;AAC1B;AAAA,MACF;AAEA,cAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,IAA8B;AACtC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA2B,SAA6C;AACnF,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,IAAY,MAA6C;AACpE,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,IAA8B;AACzC,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0C;AAAA,MACzE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,MAAM,IAAY,QAAqD;AAC3E,UAAM,WAAW,MAAM,KAAK,KAAK,QAA+C;AAAA,MAC9E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,eACE,IACA,QACuC;AACvC,WAAO,KAAK,KAAK,QAAQ;AAAA,MACvB,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,IAA+B;AAC/C,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aAAa,IAAY,MAA0B,SAA4C;AACnG,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aACJ,IACA,MACA,SACiB;AACjB,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,MACN,gBAAgB,SAAS;AAAA,IAC3B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,YAAY,IAA+B;AAC/C,UAAM,WAAW,MAAM,KAAK,KAAK,QAA2C;AAAA,MAC1E,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,IACvB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,aAAa,UAAmC;AACpD,UAAM,WAAW,MAAM,KAAK,KAAK,QAAyC;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM,YAAY,QAAQ;AAAA,IAC5B,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,kBAAkB,IAAY,MAAwE;AAC1G,UAAM,WAAW,MAAM,KAAK,KAAK,QAA0D;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM,aAAa,EAAE;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACrJO,IAAM,WAAN,MAAe;AAAA,EASpB,YAAY,QAAyB;AACnC,UAAM,OAAO,IAAI,WAAW,MAAM;AAElC,SAAK,WAAW,IAAI,iBAAiB,IAAI;AACzC,SAAK,aAAa,IAAI,mBAAmB,IAAI;AAC7C,SAAK,cAAc,IAAI,oBAAoB,IAAI;AAC/C,SAAK,UAAU,IAAI,gBAAgB,IAAI;AACvC,SAAK,QAAQ,IAAI,cAAc,IAAI;AACnC,SAAK,UAAU,IAAI,gBAAgB,IAAI;AACvC,SAAK,WAAW,IAAI,iBAAiB,IAAI;AAAA,EAC3C;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n ProgramMarketplaceStatus,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n StripeConnectSession,\n MerchantDomainStatus,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -22,13 +22,32 @@ interface MutationOptions {
22
22
  }
23
23
  interface Merchant {
24
24
  id: string;
25
- email: string;
26
- companyName: string | null;
27
- domain: string | null;
28
- domainVerified: boolean;
29
- trustLevel: string;
30
- stripeConnected: boolean;
25
+ userId: string;
26
+ companyName: string;
27
+ website: string | null;
28
+ logoUrl: string | null;
29
+ stripeAccountId: string | null;
30
+ stripeConnectedAt: string | null;
31
+ billingTier: string;
32
+ stripeCustomerId: string | null;
33
+ stripeSubscriptionId: string | null;
34
+ paymentStatus: string;
35
+ lastPaymentFailedAt: string | null;
36
+ defaultCookieDuration: number;
37
+ defaultPayoutThreshold: number;
38
+ timezone: string;
39
+ trackingRequiresConsent: boolean;
40
+ trackingParamAliases: string[];
41
+ trackingLegacyMetadataFallbackEnabled: boolean;
42
+ state: 'onboarding' | 'active' | 'verified';
43
+ verifiedDomain: string | null;
44
+ domainVerificationToken: string | null;
45
+ domainVerifiedAt: string | null;
46
+ notificationPreferences: UpdateNotificationPreferencesParams | null;
47
+ onboardingCompleted: boolean;
48
+ onboardingStep: number;
31
49
  createdAt: string;
50
+ updatedAt: string;
32
51
  }
33
52
  interface UpdateMerchantParams {
34
53
  companyName?: string;
@@ -37,32 +56,47 @@ interface UpdateMerchantParams {
37
56
  timezone?: string;
38
57
  defaultCookieDuration?: number;
39
58
  defaultPayoutThreshold?: number;
59
+ trackingRequiresConsent?: boolean;
60
+ trackingParamAliases?: string[];
61
+ trackingLegacyMetadataFallbackEnabled?: boolean;
40
62
  }
41
63
  interface MerchantDomainStatus {
64
+ status: 'none' | 'pending' | 'verified';
42
65
  domain: string | null;
43
- verified: boolean;
44
66
  txtRecord: string | null;
67
+ verifiedAt: string | null;
68
+ trackingMode: 'basic' | 'advanced';
69
+ advancedTrackingEnabled: boolean;
45
70
  }
46
71
  interface StripeConnectSession {
47
72
  url: string;
48
73
  }
49
74
  type CommissionType = 'one_time' | 'recurring' | 'recurring_limited';
50
75
  type ProgramStatus = 'active' | 'paused' | 'archived';
76
+ type ProgramMarketplaceStatus = 'private' | 'pending' | 'public';
51
77
  type ProgramMarketplaceVisibility = 'private' | 'public';
52
78
  interface Program {
53
79
  id: string;
80
+ merchantId: string;
54
81
  name: string;
55
82
  description: string | null;
83
+ slug: string;
56
84
  landingPageUrl: string | null;
85
+ portalSlug: string | null;
86
+ marketplaceStatus: ProgramMarketplaceStatus;
87
+ marketplaceCategory: string | null;
88
+ marketplaceDescription: string | null;
89
+ marketplaceLogoUrl: string | null;
57
90
  commissionType: CommissionType;
58
91
  commissionPercent: number;
59
92
  commissionLimitMonths: number | null;
93
+ commissionHoldDays: number;
60
94
  cookieDuration: number;
61
95
  payoutThreshold: number;
96
+ currency: string;
62
97
  autoApproveAffiliates: boolean;
98
+ termsUrl: string | null;
63
99
  status: ProgramStatus;
64
- isPublic: boolean;
65
- merchantId: string;
66
100
  createdAt: string;
67
101
  updatedAt: string;
68
102
  }
@@ -82,6 +116,8 @@ interface CreateProgramParams {
82
116
  description?: string;
83
117
  landingPageUrl?: string;
84
118
  commissionLimitMonths?: number;
119
+ portalSlug?: string;
120
+ currency?: string;
85
121
  }
86
122
  interface UpdateProgramParams {
87
123
  name?: string;
@@ -93,7 +129,9 @@ interface UpdateProgramParams {
93
129
  description?: string;
94
130
  landingPageUrl?: string;
95
131
  status?: ProgramStatus;
96
- isPublic?: boolean;
132
+ portalSlug?: string | null;
133
+ currency?: string;
134
+ commissionLimitMonths?: number | null;
97
135
  }
98
136
  interface CreateCouponParams {
99
137
  affiliateId: string;
@@ -101,11 +139,20 @@ interface CreateCouponParams {
101
139
  expiresAt?: string;
102
140
  }
103
141
  interface ProgramStats {
104
- clicks: number;
105
- conversions: number;
106
- revenue: number;
107
- commissions: number;
108
- period: string;
142
+ programId: string;
143
+ programName: string;
144
+ status: ProgramStatus;
145
+ totalRevenue: number;
146
+ totalConversions: number;
147
+ totalCommissions: number;
148
+ pendingCommissions: number;
149
+ activeAffiliates: number;
150
+ conversionsByStatus: {
151
+ pending: number;
152
+ approved: number;
153
+ rejected: number;
154
+ refunded: number;
155
+ };
109
156
  }
110
157
  type AffiliateStatus = 'pending' | 'approved' | 'blocked';
111
158
  interface Affiliate {
@@ -243,7 +290,9 @@ interface CreateInviteParams {
243
290
  interface PayoutInfo {
244
291
  payoutMethod: 'paypal' | 'bank_transfer' | null;
245
292
  paypalEmail: string | null;
293
+ bankAccountHolder: string | null;
246
294
  bankIban: string | null;
295
+ bankBic: string | null;
247
296
  firstName: string | null;
248
297
  lastName: string | null;
249
298
  addressLine1: string | null;
@@ -256,7 +305,9 @@ interface PayoutInfo {
256
305
  interface UpdatePayoutInfoParams {
257
306
  payoutMethod?: 'paypal' | 'bank_transfer';
258
307
  paypalEmail?: string;
308
+ bankAccountHolder?: string;
259
309
  bankIban?: string;
310
+ bankBic?: string;
260
311
  firstName?: string;
261
312
  lastName?: string;
262
313
  addressLine1?: string;
@@ -438,7 +489,7 @@ declare class ProgramsResource {
438
489
  page?: number;
439
490
  pageSize?: number;
440
491
  offset?: number;
441
- status?: string;
492
+ status?: ProgramStatus;
442
493
  }): Promise<PaginatedResponse<Program>>;
443
494
  listAll(params?: {
444
495
  pageSize?: number;
@@ -507,4 +558,4 @@ declare class ServerError extends AgentRefError {
507
558
  constructor(message: string, code: string, status: number, requestId: string);
508
559
  }
509
560
 
510
- export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
561
+ export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
package/dist/index.d.ts CHANGED
@@ -22,13 +22,32 @@ interface MutationOptions {
22
22
  }
23
23
  interface Merchant {
24
24
  id: string;
25
- email: string;
26
- companyName: string | null;
27
- domain: string | null;
28
- domainVerified: boolean;
29
- trustLevel: string;
30
- stripeConnected: boolean;
25
+ userId: string;
26
+ companyName: string;
27
+ website: string | null;
28
+ logoUrl: string | null;
29
+ stripeAccountId: string | null;
30
+ stripeConnectedAt: string | null;
31
+ billingTier: string;
32
+ stripeCustomerId: string | null;
33
+ stripeSubscriptionId: string | null;
34
+ paymentStatus: string;
35
+ lastPaymentFailedAt: string | null;
36
+ defaultCookieDuration: number;
37
+ defaultPayoutThreshold: number;
38
+ timezone: string;
39
+ trackingRequiresConsent: boolean;
40
+ trackingParamAliases: string[];
41
+ trackingLegacyMetadataFallbackEnabled: boolean;
42
+ state: 'onboarding' | 'active' | 'verified';
43
+ verifiedDomain: string | null;
44
+ domainVerificationToken: string | null;
45
+ domainVerifiedAt: string | null;
46
+ notificationPreferences: UpdateNotificationPreferencesParams | null;
47
+ onboardingCompleted: boolean;
48
+ onboardingStep: number;
31
49
  createdAt: string;
50
+ updatedAt: string;
32
51
  }
33
52
  interface UpdateMerchantParams {
34
53
  companyName?: string;
@@ -37,32 +56,47 @@ interface UpdateMerchantParams {
37
56
  timezone?: string;
38
57
  defaultCookieDuration?: number;
39
58
  defaultPayoutThreshold?: number;
59
+ trackingRequiresConsent?: boolean;
60
+ trackingParamAliases?: string[];
61
+ trackingLegacyMetadataFallbackEnabled?: boolean;
40
62
  }
41
63
  interface MerchantDomainStatus {
64
+ status: 'none' | 'pending' | 'verified';
42
65
  domain: string | null;
43
- verified: boolean;
44
66
  txtRecord: string | null;
67
+ verifiedAt: string | null;
68
+ trackingMode: 'basic' | 'advanced';
69
+ advancedTrackingEnabled: boolean;
45
70
  }
46
71
  interface StripeConnectSession {
47
72
  url: string;
48
73
  }
49
74
  type CommissionType = 'one_time' | 'recurring' | 'recurring_limited';
50
75
  type ProgramStatus = 'active' | 'paused' | 'archived';
76
+ type ProgramMarketplaceStatus = 'private' | 'pending' | 'public';
51
77
  type ProgramMarketplaceVisibility = 'private' | 'public';
52
78
  interface Program {
53
79
  id: string;
80
+ merchantId: string;
54
81
  name: string;
55
82
  description: string | null;
83
+ slug: string;
56
84
  landingPageUrl: string | null;
85
+ portalSlug: string | null;
86
+ marketplaceStatus: ProgramMarketplaceStatus;
87
+ marketplaceCategory: string | null;
88
+ marketplaceDescription: string | null;
89
+ marketplaceLogoUrl: string | null;
57
90
  commissionType: CommissionType;
58
91
  commissionPercent: number;
59
92
  commissionLimitMonths: number | null;
93
+ commissionHoldDays: number;
60
94
  cookieDuration: number;
61
95
  payoutThreshold: number;
96
+ currency: string;
62
97
  autoApproveAffiliates: boolean;
98
+ termsUrl: string | null;
63
99
  status: ProgramStatus;
64
- isPublic: boolean;
65
- merchantId: string;
66
100
  createdAt: string;
67
101
  updatedAt: string;
68
102
  }
@@ -82,6 +116,8 @@ interface CreateProgramParams {
82
116
  description?: string;
83
117
  landingPageUrl?: string;
84
118
  commissionLimitMonths?: number;
119
+ portalSlug?: string;
120
+ currency?: string;
85
121
  }
86
122
  interface UpdateProgramParams {
87
123
  name?: string;
@@ -93,7 +129,9 @@ interface UpdateProgramParams {
93
129
  description?: string;
94
130
  landingPageUrl?: string;
95
131
  status?: ProgramStatus;
96
- isPublic?: boolean;
132
+ portalSlug?: string | null;
133
+ currency?: string;
134
+ commissionLimitMonths?: number | null;
97
135
  }
98
136
  interface CreateCouponParams {
99
137
  affiliateId: string;
@@ -101,11 +139,20 @@ interface CreateCouponParams {
101
139
  expiresAt?: string;
102
140
  }
103
141
  interface ProgramStats {
104
- clicks: number;
105
- conversions: number;
106
- revenue: number;
107
- commissions: number;
108
- period: string;
142
+ programId: string;
143
+ programName: string;
144
+ status: ProgramStatus;
145
+ totalRevenue: number;
146
+ totalConversions: number;
147
+ totalCommissions: number;
148
+ pendingCommissions: number;
149
+ activeAffiliates: number;
150
+ conversionsByStatus: {
151
+ pending: number;
152
+ approved: number;
153
+ rejected: number;
154
+ refunded: number;
155
+ };
109
156
  }
110
157
  type AffiliateStatus = 'pending' | 'approved' | 'blocked';
111
158
  interface Affiliate {
@@ -243,7 +290,9 @@ interface CreateInviteParams {
243
290
  interface PayoutInfo {
244
291
  payoutMethod: 'paypal' | 'bank_transfer' | null;
245
292
  paypalEmail: string | null;
293
+ bankAccountHolder: string | null;
246
294
  bankIban: string | null;
295
+ bankBic: string | null;
247
296
  firstName: string | null;
248
297
  lastName: string | null;
249
298
  addressLine1: string | null;
@@ -256,7 +305,9 @@ interface PayoutInfo {
256
305
  interface UpdatePayoutInfoParams {
257
306
  payoutMethod?: 'paypal' | 'bank_transfer';
258
307
  paypalEmail?: string;
308
+ bankAccountHolder?: string;
259
309
  bankIban?: string;
310
+ bankBic?: string;
260
311
  firstName?: string;
261
312
  lastName?: string;
262
313
  addressLine1?: string;
@@ -438,7 +489,7 @@ declare class ProgramsResource {
438
489
  page?: number;
439
490
  pageSize?: number;
440
491
  offset?: number;
441
- status?: string;
492
+ status?: ProgramStatus;
442
493
  }): Promise<PaginatedResponse<Program>>;
443
494
  listAll(params?: {
444
495
  pageSize?: number;
@@ -507,4 +558,4 @@ declare class ServerError extends AgentRefError {
507
558
  constructor(message: string, code: string, status: number, requestId: string);
508
559
  }
509
560
 
510
- export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
561
+ export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
package/dist/index.mjs CHANGED
@@ -59,7 +59,7 @@ var SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
59
59
  var DEFAULT_BASE_URL = "https://www.agentref.dev/api/v1";
60
60
  var DEFAULT_TIMEOUT = 3e4;
61
61
  var DEFAULT_MAX_RETRIES = 2;
62
- var VERSION = true ? "1.0.5" : "0.0.0";
62
+ var VERSION = true ? "5.0.0" : "0.0.0";
63
63
  function hasUsableIdempotencyKey(idempotencyKey) {
64
64
  return typeof idempotencyKey === "string" && idempotencyKey.trim().length > 0;
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: string\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentref",
3
- "version": "1.0.5",
3
+ "version": "5.0.0",
4
4
  "description": "Official TypeScript/JavaScript SDK for the AgentRef Affiliate API",
5
5
  "author": "AgentRef <hi@agentref.dev>",
6
6
  "license": "MIT",