Skip to content

Commit 3db2e7b

Browse files
committed
feat(extension): use @ocap/utils logger
1 parent 68fd6cf commit 3db2e7b

File tree

9 files changed

+47
-31
lines changed

9 files changed

+47
-31
lines changed

packages/extension/src/background.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import type { Json } from '@metamask/utils';
22
import { KernelCommandMethod, isKernelCommandReply } from '@ocap/kernel';
33
import type { KernelCommand } from '@ocap/kernel';
44
import { ChromeRuntimeDuplexStream } from '@ocap/streams/browser';
5-
import { delay } from '@ocap/utils';
5+
import { delay, Logger } from '@ocap/utils';
66

77
const OFFSCREEN_DOCUMENT_PATH = '/offscreen.html';
88

9-
main().catch(console.error);
9+
const logger = new Logger('background');
10+
11+
main().catch(logger.error);
1012

1113
/**
1214
* The main function for the background script.
@@ -56,22 +58,22 @@ async function main(): Promise<void> {
5658
sendClusterCommand({
5759
method: KernelCommandMethod.ping,
5860
params: [],
59-
}).catch(console.error);
61+
}).catch(logger.error);
6062
});
6163

6264
// Handle replies from the offscreen document
6365
for await (const message of offscreenStream) {
6466
if (!isKernelCommandReply(message)) {
65-
console.error('Background received unexpected message', message);
67+
logger.error('Background received unexpected message', message);
6668
continue;
6769
}
6870

6971
switch (message.method) {
7072
case KernelCommandMethod.ping:
71-
console.log(message.params);
73+
logger.info('Background received ping reply', message.params);
7274
break;
7375
default:
74-
console.error(
76+
logger.error(
7577
// @ts-expect-error Compile-time exhaustiveness check
7678
`Background received unexpected command method: "${message.method.valueOf()}"`,
7779
);

packages/extension/src/iframe.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import {
44
MessagePortDuplexStream,
55
receiveMessagePort,
66
} from '@ocap/streams/browser';
7+
import { Logger } from '@ocap/utils';
78

8-
main().catch(console.error);
9+
const logger = new Logger('iframe');
10+
11+
main().catch(logger.error);
912

1013
/**
1114
* The main function for the iframe.
@@ -30,5 +33,5 @@ async function main(): Promise<void> {
3033
commandStream,
3134
});
3235

33-
console.log('VatSupervisor initialized with vatId:', vatId);
36+
logger.info('VatSupervisor initialized with vatId:', vatId);
3437
}

packages/extension/src/kernel-integration/iframe-vat-worker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createWindow } from '@metamask/snaps-utils';
22
import type { VatId, VatConfig } from '@ocap/kernel';
33
import type { initializeMessageChannel } from '@ocap/streams/browser';
4+
import { Logger } from '@ocap/utils';
45

56
import type { VatWorker } from './VatWorkerServer.ts';
67

@@ -9,6 +10,7 @@ const IFRAME_URI = 'iframe.html';
910
export const makeIframeVatWorker = (
1011
id: VatId,
1112
getPort: typeof initializeMessageChannel,
13+
logger: Logger,
1214
): VatWorker => {
1315
const vatHtmlId = `ocap-iframe-${id}`;
1416
return {
@@ -27,7 +29,7 @@ export const makeIframeVatWorker = (
2729
terminate: async (): Promise<void> => {
2830
const iframe = document.getElementById(vatHtmlId);
2931
if (iframe === null) {
30-
console.error(
32+
logger.error(
3133
`iframe of vat with id "${id}" already removed from DOM (#${vatHtmlId})`,
3234
);
3335
return undefined;

packages/extension/src/kernel-integration/kernel-worker.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import {
1111
MessagePortDuplexStream,
1212
receiveMessagePort,
1313
} from '@ocap/streams/browser';
14-
import { fetchValidatedJson, makeLogger } from '@ocap/utils';
14+
import { fetchValidatedJson, Logger } from '@ocap/utils';
1515

16-
import { loggingMiddleware } from './middleware/logging.ts';
16+
import { makeLoggingMiddleware } from './middleware/logging.ts';
1717
import { createPanelMessageMiddleware } from './middleware/panel-message.ts';
1818
import { receiveUiConnections } from './ui-connections.ts';
1919
import { ExtensionVatWorkerClient } from './VatWorkerClient.ts';
2020

21-
const logger = makeLogger('[kernel worker]');
21+
const logger = new Logger('kernel-worker');
2222
const DB_FILENAME = 'store.db';
2323

2424
// XXX Warning: Setting this flag to true causes persistent storage to be
@@ -63,7 +63,7 @@ async function main(): Promise<void> {
6363
},
6464
);
6565
const kernelEngine = new JsonRpcEngine();
66-
kernelEngine.push(loggingMiddleware);
66+
kernelEngine.push(makeLoggingMiddleware(logger.subLogger('kernel-command')));
6767
kernelEngine.push(createPanelMessageMiddleware(kernel, kernelDatabase));
6868
receiveUiConnections(async (request) => kernelEngine.handle(request), logger);
6969
const launchDefaultSubcluster = firstTime || ALWAYS_RESET_STORAGE;
@@ -88,9 +88,9 @@ async function main(): Promise<void> {
8888
(async () => {
8989
if (launchDefaultSubcluster) {
9090
const result = await kernel.launchSubcluster(defaultSubcluster);
91-
console.log(`Subcluster launched: ${JSON.stringify(result)}`);
91+
logger.info(`Subcluster launched: ${JSON.stringify(result)}`);
9292
} else {
93-
console.log(`Resuming kernel execution`);
93+
logger.info(`Resuming kernel execution`);
9494
}
9595
})(),
9696
]);

packages/extension/src/kernel-integration/middleware/logging.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@ import {
33
JsonRpcEngine,
44
} from '@metamask/json-rpc-engine';
55
import type { JsonRpcRequest, JsonRpcSuccess } from '@metamask/utils';
6+
import { Logger } from '@ocap/utils';
67
import { describe, it, expect, vi, beforeEach } from 'vitest';
78

8-
import { loggingMiddleware, logger } from './logging.ts';
9+
import { makeLoggingMiddleware } from './logging.ts';
910

1011
describe('loggingMiddleware', () => {
1112
let engine: JsonRpcEngine;
13+
let logger: Logger;
1214

1315
beforeEach(() => {
1416
vi.clearAllMocks();
1517
engine = new JsonRpcEngine();
16-
engine.push(loggingMiddleware);
18+
logger = new Logger('test');
19+
engine.push(makeLoggingMiddleware(logger));
1720
});
1821

1922
it('should pass the request to the next middleware', async () => {

packages/extension/src/kernel-integration/middleware/logging.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { createAsyncMiddleware } from '@metamask/json-rpc-engine';
22
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
33
import type { Json, JsonRpcParams } from '@metamask/utils';
4-
import { makeLogger } from '@ocap/utils';
4+
import { Logger } from '@ocap/utils';
55

6-
export const logger = makeLogger('[kernel-commands]');
7-
8-
export const loggingMiddleware: JsonRpcMiddleware<JsonRpcParams, Json> =
6+
export const makeLoggingMiddleware = (
7+
logger: Logger,
8+
): JsonRpcMiddleware<JsonRpcParams, Json> =>
99
createAsyncMiddleware(async (_req, _res, next) => {
1010
const start = performance.now();
1111
// eslint-disable-next-line n/callback-return

packages/extension/src/kernel-integration/middleware/panel-message.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,16 @@ describe('createPanelMessageMiddleware', () => {
5656

5757
// Process the request
5858
const response = await engine.handle(request);
59-
console.log('response', response);
60-
61-
// Verify the middleware called execute with the right parameters
62-
expect(mockExecute).toHaveBeenCalledWith('testMethod1', { foo: 'bar' });
6359

6460
// Verify the response contains the expected result
6561
expect(response).toStrictEqual({
6662
id: 1,
6763
jsonrpc: '2.0',
6864
result: expectedResult,
6965
});
66+
67+
// Verify the middleware called execute with the right parameters
68+
expect(mockExecute).toHaveBeenCalledWith('testMethod1', { foo: 'bar' });
7069
});
7170

7271
it('should handle command execution with empty params', async () => {

packages/extension/src/kernel-integration/ui-connections.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils';
22
import type { PostMessageTarget } from '@ocap/streams/browser';
33
import { delay } from '@ocap/test-utils';
44
import { TestDuplexStream } from '@ocap/test-utils/streams';
5+
import type { Logger } from '@ocap/utils';
56
import { describe, it, expect, vi, beforeEach } from 'vitest';
67

78
import {
@@ -86,11 +87,10 @@ vi.stubGlobal('BroadcastChannel', MockBroadcastChannel);
8687

8788
const makeMockLogger = () =>
8889
({
89-
...console,
90-
label: 'test-logger',
9190
debug: vi.fn(),
9291
error: vi.fn(),
93-
}) as Console & { label: string };
92+
info: vi.fn(),
93+
}) as unknown as Logger;
9494

9595
describe('ui-connections', () => {
9696
beforeEach(() => {

packages/extension/src/offscreen.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import {
77
MessagePortDuplexStream,
88
} from '@ocap/streams/browser';
99
import type { PostMessageTarget } from '@ocap/streams/browser';
10-
import { delay, makeLogger } from '@ocap/utils';
10+
import { delay, Logger } from '@ocap/utils';
1111

1212
import { makeIframeVatWorker } from './kernel-integration/iframe-vat-worker.ts';
1313
import { ExtensionVatWorkerService } from './kernel-integration/VatWorkerServer.ts';
1414

15-
const logger = makeLogger('[offscreen]');
15+
const logger = new Logger('offscreen');
1616

1717
main().catch(logger.error);
1818

@@ -61,7 +61,14 @@ async function makeKernelWorker(): Promise<{
6161

6262
const vatWorkerService = ExtensionVatWorkerService.make(
6363
worker as PostMessageTarget,
64-
(vatId) => makeIframeVatWorker(vatId, initializeMessageChannel),
64+
(vatId) =>
65+
makeIframeVatWorker(
66+
vatId,
67+
initializeMessageChannel,
68+
logger.subLogger({
69+
tags: ['iframe-vat-worker', vatId],
70+
}),
71+
),
6572
);
6673

6774
return {

0 commit comments

Comments
 (0)