Skip to main content

Helpers

A Helper in an Andera Worker is a utility class that provides reusable logic for your functions or services. Helpers are defined in the src/helpers/ directory and are imported manually where needed.

Structure of a Helper

A helper can be any TypeScript module exporting functions or classes. There is no required structure, just export what you need.

Example

// src/helpers/chromePool.ts
import { pages, pageStatus, pageBusySince } from '../services/chrome'
import { Page } from 'puppeteer'

export async function getFreePage(): Promise<{ page: Page; index: number } | null> {
for (let i = 0; i < pages.length; i++) {
if (pageStatus[i] === 'free') {
pageStatus[i] = 'busy'
pageBusySince[i] = Date.now()
return { page: pages[i], index: i }
}
}
return null
}

export async function releasePage(index: number) {
// ...reset logic
pageStatus[index] = 'free'
pageBusySince[index] = null
}

Logging in Helpers

You can use the logging utilities to trace helper usage or errors (see Logging):

import { log, error } from '@andera-top/worker-core/dist/utils/logger'

export async function getFreePage() {
log('[CHROMEPOOL]', 'Looking for a free page...')
// ...
}

export async function releasePage(index: number) {
try {
// ...
} catch (e) {
error('[CHROMEPOOL]', 'Failed to release page', e)
}
}

Creating and Using a Helper

  1. Create a new file in src/helpers/, e.g. myHelper.ts.
  2. Export your functions or classes.
  3. Import and use your helper in any function or service:
import { getFreePage, releasePage } from '../helpers/chromePool'

Helpers are not auto-discovered; you import them where you need them.

tip

Use helpers to keep your functions and services clean, DRY, and maintainable. See Logging for tracing helper usage.