users.ts•933 B
import { AppStoreConnectClient } from '../services/index.js';
import { 
  ListUsersResponse,
  UserFilters,
  UserSortOptions,
  UserIncludeOptions
} from '../types/index.js';
import { sanitizeLimit, buildFilterParams } from '../utils/index.js';
export class UserHandlers {
  constructor(private client: AppStoreConnectClient) {}
  async listUsers(args: {
    limit?: number;
    sort?: UserSortOptions;
    filter?: UserFilters;
    include?: UserIncludeOptions[];
  } = {}): Promise<ListUsersResponse> {
    const { limit = 100, sort, filter, include } = args;
    
    const params: Record<string, any> = {
      limit: sanitizeLimit(limit)
    };
    if (sort) {
      params.sort = sort;
    }
    Object.assign(params, buildFilterParams(filter));
    if (Array.isArray(include) && include.length > 0) {
      params.include = include.join(',');
    }
    return this.client.get<ListUsersResponse>('/users', params);
  }
}