MCPcopy Index your code
hub / github.com/QLHazyCoder/FlowPilot / extractVerificationCodeFromMessages

Function extractVerificationCodeFromMessages

microsoft-email.js:216–269  ·  view source on GitHub ↗
(messages, options = {})

Source from the content-addressed store, hash-verified

214 }
215
216 function extractVerificationCodeFromMessages(messages, options = {}) {
217 const filterAfterTimestamp = Number(options.filterAfterTimestamp || 0) || 0;
218 const senderFilters = (options.senderFilters || []).map(normalizeFilterValue).filter(Boolean);
219 const subjectFilters = (options.subjectFilters || []).map(normalizeFilterValue).filter(Boolean);
220 const excludedCodes = new Set((options.excludeCodes || []).map((value) => String(value || '').trim()).filter(Boolean));
221 const hasExplicitFilters = senderFilters.length > 0 || subjectFilters.length > 0;
222
223 const sortedMessages = (Array.isArray(messages) ? messages : [])
224 .map((raw) => normalizeMessage(raw, raw?.mailbox))
225 .sort((left, right) => getMessageTimestamp(right) - getMessageTimestamp(left));
226
227 for (const message of sortedMessages) {
228 const receivedAt = getMessageTimestamp(message);
229 if (receivedAt && receivedAt < filterAfterTimestamp) {
230 continue;
231 }
232
233 const sender = normalizeFilterValue(getMessageSender(message));
234 const subject = normalizeFilterValue(message?.subject);
235 const preview = normalizeFilterValue(message?.bodyPreview);
236 const searchText = normalizeFilterValue(getMessageSearchText(message));
237 const codeMatch = getMessageSearchText(message).match(CODE_PATTERN);
238 const code = codeMatch?.[1] || '';
239 if (!code || excludedCodes.has(code)) {
240 continue;
241 }
242
243 if (!hasExplicitFilters && !isOpenAiMessage(message)) {
244 continue;
245 }
246
247 const senderMatched = senderFilters.length === 0
248 ? true
249 : senderFilters.some((filter) => sender.includes(filter) || preview.includes(filter) || searchText.includes(filter));
250 const subjectMatched = subjectFilters.length === 0
251 ? true
252 : subjectFilters.some((filter) => subject.includes(filter) || preview.includes(filter) || searchText.includes(filter));
253 if (!senderMatched && !subjectMatched) {
254 continue;
255 }
256
257 return {
258 code,
259 emailTimestamp: receivedAt || Date.now(),
260 messageId: message?.id || null,
261 sender: getMessageSender(message),
262 subject: String(message?.subject || ''),
263 mailbox: message?.mailbox || 'INBOX',
264 message,
265 };
266 }
267
268 return null;
269 }
270
271 async function fetchMicrosoftMailboxMessages(options = {}) {
272 const {

Callers 2

Calls 6

normalizeMessageFunction · 0.85
getMessageTimestampFunction · 0.85
normalizeFilterValueFunction · 0.85
getMessageSenderFunction · 0.85
getMessageSearchTextFunction · 0.85
isOpenAiMessageFunction · 0.85

Tested by

no test coverage detected