From b4c97b6e4c2ca8798cdc373193180c26f07cabc0 Mon Sep 17 00:00:00 2001 From: "Mark S. Miller" Date: Sun, 14 Apr 2024 13:51:09 -0700 Subject: [PATCH 1/2] fix(base-zone,zone): import isPassable from @endo/pass-style --- packages/base-zone/src/heap.js | 3 +-- packages/base-zone/src/index.js | 1 - packages/base-zone/src/is-passable.js | 23 ----------------------- packages/zone/src/durable.js | 8 ++------ packages/zone/src/virtual.js | 8 ++------ 5 files changed, 5 insertions(+), 38 deletions(-) delete mode 100644 packages/base-zone/src/is-passable.js diff --git a/packages/base-zone/src/heap.js b/packages/base-zone/src/heap.js index 839cd2abaf1..3445255e8d5 100644 --- a/packages/base-zone/src/heap.js +++ b/packages/base-zone/src/heap.js @@ -1,7 +1,7 @@ // @ts-check // @jessie-check -import { Far } from '@endo/far'; +import { Far, isPassable } from '@endo/pass-style'; import { makeExo, defineExoClass, defineExoClassKit } from '@endo/exo'; import { makeScalarMapStore, @@ -12,7 +12,6 @@ import { import { makeOnceKit } from './make-once.js'; import { agoricVatDataKeys as keys } from './keys.js'; -import { isPassable } from './is-passable.js'; /** * @type {import('./types.js').Stores} diff --git a/packages/base-zone/src/index.js b/packages/base-zone/src/index.js index 5815984e058..3c3f036ff1f 100644 --- a/packages/base-zone/src/index.js +++ b/packages/base-zone/src/index.js @@ -6,4 +6,3 @@ export * from './exports.js'; // Utilities for creating zones. export * from './make-once.js'; export * from './keys.js'; -export * from './is-passable.js'; diff --git a/packages/base-zone/src/is-passable.js b/packages/base-zone/src/is-passable.js deleted file mode 100644 index 258c510c614..00000000000 --- a/packages/base-zone/src/is-passable.js +++ /dev/null @@ -1,23 +0,0 @@ -import { passStyleOf } from '@endo/pass-style'; - -/** - * Is `specimen` Passable? This returns true iff `passStyleOf(specimen)` - * returns a string. This returns `false` iff `passStyleOf(specimen)` throws. - * Under no normal circumstance should `isPassable(specimen)` throw. - * - * TODO implement an isPassable that does not rely on try/catch, and - * move it to @endo/pass-style. - * This implementation is just a standin until then - * - * @param {any} specimen - * @returns {specimen is Passable} - */ -export const isPassable = specimen => { - try { - // In fact, it never returns undefined. It either returns a - // string or throws. - return passStyleOf(specimen) !== undefined; - } catch (_) { - return false; - } -}; diff --git a/packages/zone/src/durable.js b/packages/zone/src/durable.js index 2d248531594..75f632e9e00 100644 --- a/packages/zone/src/durable.js +++ b/packages/zone/src/durable.js @@ -1,7 +1,7 @@ // @ts-check // @jessie-check -import { Far } from '@endo/far'; +import { Far, isPassable } from '@endo/pass-style'; import { canBeDurable, makeScalarMapStore, @@ -14,11 +14,7 @@ import { provideDurableWeakSetStore, } from '@agoric/vat-data'; -import { - agoricVatDataKeys as keys, - isPassable, - makeOnceKit, -} from '@agoric/base-zone'; +import { agoricVatDataKeys as keys, makeOnceKit } from '@agoric/base-zone'; const { Fail } = assert; diff --git a/packages/zone/src/virtual.js b/packages/zone/src/virtual.js index 95410799db0..89a0a78a37c 100644 --- a/packages/zone/src/virtual.js +++ b/packages/zone/src/virtual.js @@ -1,7 +1,7 @@ // @ts-check // @jessie-check -import { Far } from '@endo/far'; +import { Far, isPassable } from '@endo/pass-style'; import { defineVirtualExoClass, defineVirtualExoClassKit, @@ -11,11 +11,7 @@ import { makeScalarBigWeakSetStore, } from '@agoric/vat-data'; -import { - agoricVatDataKeys as keys, - isPassable, - makeOnceKit, -} from '@agoric/base-zone'; +import { agoricVatDataKeys as keys, makeOnceKit } from '@agoric/base-zone'; const emptyRecord = harden({}); const initEmpty = harden(() => emptyRecord); From 3ba8c718e25f5a7f84b1e936dcf404134ce7f1fc Mon Sep 17 00:00:00 2001 From: "Mark S. Miller" Date: Sun, 28 Apr 2024 13:02:43 -0700 Subject: [PATCH 2/2] fixup! review suggestions --- packages/base-zone/src/index.js | 1 + packages/base-zone/src/is-passable.js | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 packages/base-zone/src/is-passable.js diff --git a/packages/base-zone/src/index.js b/packages/base-zone/src/index.js index 3c3f036ff1f..5815984e058 100644 --- a/packages/base-zone/src/index.js +++ b/packages/base-zone/src/index.js @@ -6,3 +6,4 @@ export * from './exports.js'; // Utilities for creating zones. export * from './make-once.js'; export * from './keys.js'; +export * from './is-passable.js'; diff --git a/packages/base-zone/src/is-passable.js b/packages/base-zone/src/is-passable.js new file mode 100644 index 00000000000..6a3fe59fbbe --- /dev/null +++ b/packages/base-zone/src/is-passable.js @@ -0,0 +1,8 @@ +import { isPassable as realIsPassable } from '@endo/pass-style'; + +/** + * @deprecated Import `isPassable` directly from `@endo/pass-style` + * @param {any} specimen + * @returns {specimen is Passable} + */ +export const isPassable = specimen => realIsPassable(specimen);