jackwener/OpenCLI · error · ArgumentError

Unsupported --filter

Error message

Unsupported --filter 

What it means

ArgumentError (exit code 2, usage error) thrown when the --filter option is given a value other than 'rocket'. Currently only the 'rocket' filter is supported, and the message names the rejected value plus the supported one.

Source

Thrown at clis/coupang/search.js:424

    strategy: Strategy.COOKIE,
    browser: true,
    args: [
        { name: 'query', required: true, positional: true, help: 'Search keyword' },
        { name: 'page', type: 'int', default: 1, help: 'Search result page number' },
        { name: 'limit', type: 'int', default: 20, help: 'Max results (max 50)' },
        { name: 'filter', required: false, help: 'Optional search filter (currently supports: rocket)' },
    ],
    columns: ['rank', 'product_id', 'title', 'price', 'unit_price', 'rating', 'review_count', 'rocket', 'delivery_type', 'delivery_promise', 'url'],
    func: async (page, kwargs) => {
        const query = String(kwargs.query || '').trim();
        if (!query) {
            throw new ArgumentError('query cannot be empty');
        }
        const pageNumber = parsePageArg(kwargs.page, 1);
        const limit = parseLimitArg(kwargs.limit, 20, 50);
        const filter = String(kwargs.filter || '').trim().toLowerCase();
        if (filter && filter !== 'rocket') {
            throw new ArgumentError(`Unsupported --filter "${filter}" (supported: rocket)`);
        }
        const initialPage = filter ? 1 : pageNumber;
        const url = `https://www.coupang.com/np/search?q=${encodeURIComponent(query)}&channel=user&page=${initialPage}`;
        await page.goto(url).catch((error) => {
            throw new CommandExecutionError(`coupang search navigation failed: ${error?.message || error}`);
        });
        if (filter) {
            const filterResult = await page.evaluate(buildApplyFilterEvaluate(filter)).catch((error) => {
                throw new CommandExecutionError(`coupang search filter evaluation failed: ${error?.message || error}`);
            });
            if (!filterResult?.ok) {
                throw new EmptyResultError('coupang search', `Filter "${filter}" was not available on the current page; try without --filter or wait for Coupang to render the filter bar.`);
            }
            await page.wait(3).catch((error) => {
                throw new CommandExecutionError(`coupang search wait failed: ${error?.message || error}`);
            });
            if (pageNumber > 1) {
                const locationInfo = await page.evaluate(buildCurrentLocationEvaluate()).catch((error) => {

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Use --filter rocket or omit --filter entirely.
  2. Run the command's help to see supported filters (currently: rocket).
  3. Normalize your input: the check is on the trimmed lowercase value, so avoid extra words or hyphenated variants.
  4. If you need another filter, apply it manually in the browser or file a feature request.

Example fix

// before
opencli coupang search "ssd" --filter free-shipping
// after
opencli coupang search "ssd" --filter rocket
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED_FILTERS = ['rocket'];
function validateFilter(filter) {
  const f = String(filter ?? '').trim().toLowerCase();
  if (f && !SUPPORTED_FILTERS.includes(f)) throw new Error(`Unsupported --filter "${f}" (supported: rocket)`);
  return f;
}

Type guard

function isValidFilter(f) { return typeof f === 'string' && ['rocket'].includes(f.trim().toLowerCase()); }

Try / catch

try {
  return await run('coupang search', { query, filter });
} catch (err) {
  if (err?.code === 'ARGUMENT' && /Unsupported --filter/.test(err.message)) {
    console.error('Only --filter rocket is supported; omit --filter for unfiltered search.');
    process.exit(2);
  }
  throw err;
}

Prevention

When it happens

Trigger: `opencli coupang search <query> --filter <value>` where value (after trim/lowercase) is anything besides 'rocket', e.g. --filter deals, --filter rocket-delivery, --filter free-shipping.

Common situations: Guessing filter names not in the help text; case/spacing mistakes (helps are trimmed+lowercased so 'Rocket' is fine, but 'rocket shipping' is not); copying filters from Coupang's UI that the CLI hasn't implemented; older docs referencing removed filters.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/d67e5b8b40c7b097. Report an issue: GitHub.