(input: {
payloadPath: string;
payload: Record<string, unknown>;
issues: string[];
})
| 1766 | } |
| 1767 | |
| 1768 | function buildFeishuBotAddedPayloadVerificationOutput(input: { |
| 1769 | payloadPath: string; |
| 1770 | payload: Record<string, unknown>; |
| 1771 | issues: string[]; |
| 1772 | }): FeishuBotAddedPayloadVerificationOutput { |
| 1773 | const descriptor = resolveFeishuChatDescriptor(input.payload); |
| 1774 | const eventSummary = summarizeFeishuInboundEventPayload(input.payload); |
| 1775 | const externalEventReference = readString(eventSummary.externalEventReference); |
| 1776 | const externalEventIdRedacted = eventSummary.externalEventIdRedacted === true; |
| 1777 | const payloadHash = readString(eventSummary.payloadHash) ?? sha256Json(input.payload); |
| 1778 | const chatName = descriptor?.externalChatName?.trim(); |
| 1779 | const appId = resolveFeishuBotAddedPayloadAppId(input.payload); |
| 1780 | const tenantKey = resolveFeishuBotAddedPayloadTenantKey(input.payload); |
| 1781 | const createTimeState = readFeishuBotAddedPayloadCreateTimeState(input.payload); |
| 1782 | return { |
| 1783 | generatedAt: new Date().toISOString(), |
| 1784 | payloadPath: sanitizeSmokeOutputText(input.payloadPath), |
| 1785 | valid: input.issues.length === 0, |
| 1786 | issues: [...input.issues], |
| 1787 | summary: { |
| 1788 | eventType: sanitizeSmokeOutputText(resolveFeishuEventType(input.payload)).slice(0, 160), |
| 1789 | botAddedEvent: isFeishuBotAddedToChatPayload(input.payload), |
| 1790 | appIdPresent: Boolean(appId), |
| 1791 | ...(appId ? { appIdHash: sha256Text(appId) } : {}), |
| 1792 | tenantKeyPresent: Boolean(tenantKey), |
| 1793 | ...(tenantKey ? { tenantKeyHash: sha256Text(tenantKey) } : {}), |
| 1794 | chatDescriptorPresent: Boolean(descriptor), |
| 1795 | ...(descriptor ? { chatIdSource: resolveFeishuChatIdSource(input.payload) } : {}), |
| 1796 | ...(descriptor ? { chatReference: buildSafeReference("chat", descriptor.externalChatId) } : {}), |
| 1797 | chatIdRedacted: Boolean(descriptor?.externalChatId), |
| 1798 | ...(descriptor?.externalChatType |
| 1799 | ? { chatType: sanitizeSmokeOutputText(descriptor.externalChatType).slice(0, 80) } |
| 1800 | : {}), |
| 1801 | chatNamePresent: Boolean(chatName), |
| 1802 | ...(chatName ? { chatNameHash: sha256Text(chatName) } : {}), |
| 1803 | ...(chatName ? { chatNameLength: Buffer.byteLength(chatName, "utf8") } : {}), |
| 1804 | ...(externalEventReference ? { externalEventReference } : {}), |
| 1805 | externalEventIdRedacted, |
| 1806 | eventCreateTimePresent: createTimeState.present, |
| 1807 | eventCreateTimeFresh: createTimeState.fresh, |
| 1808 | payloadHash, |
| 1809 | rawPayloadStored: false, |
| 1810 | }, |
| 1811 | }; |
| 1812 | } |
| 1813 | |
| 1814 | function readFeishuBotAddedPayloadCreateTimeState(payload: Record<string, unknown>): { |
| 1815 | present: boolean; |
no test coverage detected