shared/pollers.ts (23 lines of code) (raw):

import { STACK } from './constants'; export const POLLER_LAMBDA_ENV_VAR_KEYS = { INGESTION_LAMBDA_QUEUE_URL: 'INGESTION_LAMBDA_QUEUE_URL', OWN_QUEUE_URL: 'OWN_QUEUE_URL', SECRET_NAME: 'SECRET_NAME', } as const; export interface PollerLambdaProps { overrideLambdaMemoryMB?: number; overrideLambdaTimeoutSeconds?: number; } export const pollerIdToLambdaAppName = (pollerId: PollerId) => `${pollerId}_poller_lambda`; export const getPollerSecretName = (stage: string, pollerId: PollerId) => `/${stage}/${STACK}/newswires/${pollerIdToLambdaAppName(pollerId)}`; export type PollerConfig = PollerLambdaProps & { idealFrequencyInSeconds?: number; }; export type PollerId = keyof typeof POLLERS_CONFIG; export const REUTERS_POLLING_FREQUENCY_IN_SECONDS = 60; export const POLLERS_CONFIG = { // EXAMPLE_long_polling: {}, // EXAMPLE_fixed_frequency: { idealFrequencyInSeconds: 30 }, reuters: { idealFrequencyInSeconds: REUTERS_POLLING_FREQUENCY_IN_SECONDS }, apPoller: {}, } as const satisfies Record<string, PollerConfig>; // used to generate lambda etc. per agency, with config mapped