All files / nodejs/src/kernel make-kernel.ts

100% Statements 5/5
100% Branches 3/3
100% Functions 1/1
100% Lines 5/5

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 40 41 42 43 44 45 46 47 48 49                                                            1x 1x           1x     1x           1x    
import { makeSQLKernelDatabase } from '@metamask/kernel-store/sqlite/nodejs';
import { Logger } from '@metamask/logger';
import { Kernel } from '@metamask/ocap-kernel';
 
import { NodejsPlatformServices } from './PlatformServices.ts';
 
/**
 * The main function for the kernel worker.
 *
 * @param options - The options for the kernel.
 * @param options.workerFilePath - The path to a file defining each vat worker's routine.
 * @param options.resetStorage - If true, clear kernel storage as part of setting up the kernel.
 * @param options.dbFilename - The filename of the SQLite database file.
 * @param options.logger - The logger to use for the kernel.
 * @param options.keySeed - Optional seed for libp2p key generation.
 * @returns The kernel, initialized.
 */
export async function makeKernel({
  workerFilePath,
  resetStorage = false,
  dbFilename,
  logger,
  keySeed,
}: {
  workerFilePath?: string;
  resetStorage?: boolean;
  dbFilename?: string;
  logger?: Logger;
  keySeed?: string | undefined;
}): Promise<Kernel> {
  const rootLogger = logger ?? new Logger('kernel-worker');
  const platformServicesClient = new NodejsPlatformServices({
    workerFilePath,
    logger: rootLogger.subLogger({ tags: ['platform-services-manager'] }),
  });
 
  // Initialize kernel store.
  const kernelDatabase = await makeSQLKernelDatabase({ dbFilename });
 
  // Create and start kernel.
  const kernel = await Kernel.make(platformServicesClient, kernelDatabase, {
    resetStorage,
    logger: rootLogger.subLogger({ tags: ['kernel'] }),
    keySeed,
  });
 
  return kernel;
}