@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
41 lines (40 loc) • 1.3 kB
JavaScript
import { historyToJSON } from "@temporalio/common/lib/proto-utils.js";
function isPayload(value) {
return (value != null &&
typeof value === "object" &&
"metadata" in value &&
"data" in value);
}
export async function decryptHistoryPayloads(node, decrypt) {
if (node == null || typeof node !== "object")
return 0;
if (isPayload(node)) {
const inner = await decrypt(node);
if (inner === null)
return 0;
node.metadata = inner.metadata ?? {};
node.data = inner.data ?? new Uint8Array(0);
return 1;
}
let count = 0;
if (Array.isArray(node)) {
for (const item of node)
count += await decryptHistoryPayloads(item, decrypt);
}
else {
for (const value of Object.values(node)) {
count += await decryptHistoryPayloads(value, decrypt);
}
}
return count;
}
export async function serializeHistoryToFixture(events, decrypter) {
let decryptedPayloads = 0;
if (decrypter) {
for (const event of events) {
decryptedPayloads += await decryptHistoryPayloads(event, decrypter);
}
}
const fixture = JSON.parse(historyToJSON({ events }));
return { fixture, eventCount: events.length, decryptedPayloads };
}