| 148 | let lastTriggeredIndex = 0; |
| 149 | |
| 150 | async function triggerEvents(generatedEvents: any[]) { |
| 151 | const EVENTS_PER_SECOND = Number.parseInt( |
| 152 | process.env.EVENTS_PER_SECOND || '100', |
| 153 | 10, |
| 154 | ); |
| 155 | const INTERVAL_MS = 1000 / EVENTS_PER_SECOND; |
| 156 | |
| 157 | if (lastTriggeredIndex >= generatedEvents.length) { |
| 158 | console.log('All events triggered.'); |
| 159 | return; |
| 160 | } |
| 161 | |
| 162 | const event = generatedEvents[lastTriggeredIndex]!; |
| 163 | try { |
| 164 | await trackit(event); |
| 165 | console.log(`Event ${lastTriggeredIndex + 1} sent successfully`); |
| 166 | console.log( |
| 167 | `sending ${event.track.payload?.properties?.__path} from user ${event.headers['user-agent']}`, |
| 168 | ); |
| 169 | } catch (error) { |
| 170 | console.error(`Failed to send event ${lastTriggeredIndex + 1}:`, error); |
| 171 | } |
| 172 | |
| 173 | lastTriggeredIndex++; |
| 174 | const remainingEvents = generatedEvents.length - lastTriggeredIndex; |
| 175 | |
| 176 | console.log( |
| 177 | `Triggered ${lastTriggeredIndex} events. Remaining: ${remainingEvents}`, |
| 178 | ); |
| 179 | |
| 180 | if (remainingEvents > 0) { |
| 181 | return new Promise((resolve) => { |
| 182 | setTimeout(() => { |
| 183 | triggerEvents(generatedEvents); |
| 184 | resolve(null); |
| 185 | }, INTERVAL_MS); |
| 186 | }); |
| 187 | } |
| 188 | |
| 189 | console.log('All events triggered.'); |
| 190 | console.log(`Total events to trigger: ${generatedEvents.length}`); |
| 191 | } |
| 192 | |
| 193 | async function createMock(file: string) { |
| 194 | for (const project of domains) { |