From 4461c03f1452316404ff7b7716126338f16f44dc Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Wed, 5 Mar 2025 10:53:40 -0500 Subject: [PATCH] chore: Make a helper type for restricting object keys to strings --- packages/SwingSet/src/kernel/slogger.js | 4 ++-- packages/internal/src/types.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/SwingSet/src/kernel/slogger.js b/packages/SwingSet/src/kernel/slogger.js index f8037b7ac6a..2bc3aef373b 100644 --- a/packages/SwingSet/src/kernel/slogger.js +++ b/packages/SwingSet/src/kernel/slogger.js @@ -2,7 +2,7 @@ import { q } from '@endo/errors'; import { objectMap } from '@agoric/internal'; import { makeLimitedConsole } from '@agoric/internal/src/ses-utils.js'; -/** @import {Callable} from '@agoric/internal'; */ +/** @import {Callable, OnlyStringKeys} from '@agoric/internal'; */ /** @import {LimitedConsole} from '@agoric/internal/src/js-utils.js'; */ const IDLE = 'idle'; @@ -31,7 +31,7 @@ const noopFinisher = harden(() => {}); */ function addSlogCallbacks(slogCallbacks, unusedMsgPrefix, methods) { const unused = new Set(Object.keys(slogCallbacks)); - const wrappedMethods = /** @type {Methods} */ ( + const wrappedMethods = /** @type {OnlyStringKeys} */ ( objectMap(methods, (impl, methodKey) => { const methodName = /** @type {keyof typeof slogCallbacks} */ (methodKey); unused.delete(methodName); diff --git a/packages/internal/src/types.ts b/packages/internal/src/types.ts index ce036dd5992..a8db49d2df3 100644 --- a/packages/internal/src/types.ts +++ b/packages/internal/src/types.ts @@ -4,6 +4,10 @@ import type { Primitive } from '@endo/pass-style'; import type { Pattern } from '@endo/patterns'; import type { Callable } from './ses-utils.js'; +export type OnlyStringKeys = { + [K in keyof O]: K extends string ? O[K] : never; +}; + /** * A map corresponding with a total function such that `get(key)` is assumed to * always succeed.