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
- Create a new file in
src/helpers/
, e.g.myHelper.ts
. - Export your functions or classes.
- 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.