All files / nodejs/src/vat make-supervisor.ts

100% Statements 4/4
100% Branches 1/1
100% Functions 1/1
100% Lines 4/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                          1x 1x         1x                 1x    
import { makeStreamTransport, Logger } from '@metamask/logger';
import type { VatId } from '@metamask/ocap-kernel';
import { VatSupervisor } from '@metamask/ocap-kernel';
import { makePlatform } from '@ocap/kernel-platforms/nodejs';
 
import { fetchBlob } from './fetch-blob.ts';
import { makeStreams } from './streams.ts';
 
/**
 * Create a VatSupervisor for a vat running in a Node.js worker.
 *
 * @param vatId - The ID of the vat to create a supervisor for.
 * @param logTag - The tag to use for the logger.
 * @param platformOptions - Options to pass to the makePlatform function.
 * @returns A pair of the kernel-connected logger and the supervisor.
 */
export async function makeNodeJsVatSupervisor(
  vatId: VatId,
  logTag: string,
  platformOptions: Record<string, unknown> = {},
): Promise<{ logger: Logger; supervisor: VatSupervisor }> {
  const { kernelStream, loggerStream } = await makeStreams();
  const logger = new Logger({
    tags: [logTag, vatId],
    transports: [makeStreamTransport(loggerStream)],
  });
 
  const supervisor = new VatSupervisor({
    id: vatId,
    kernelStream,
    logger,
    makePlatform,
    platformOptions,
    fetchBlob,
    vatPowers: { logger },
  });
  return { logger, supervisor };
}