From e8a2132a946df4ef5c655212dbbfb7702ba2a589 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Fri, 31 Jul 2020 18:20:39 -0600 Subject: [PATCH] refactor: break the cycle between notifier and adaptor --- packages/notifier/package.json | 2 +- packages/notifier/src/asyncIterableAdaptor.js | 15 --------------- packages/notifier/src/index.js | 2 ++ packages/notifier/src/notifier.js | 19 +++++++++++++++++-- .../notifier/test/test-notifier-adaptor.js | 2 +- packages/notifier/test/test-notifier.js | 2 +- 6 files changed, 22 insertions(+), 20 deletions(-) create mode 100644 packages/notifier/src/index.js diff --git a/packages/notifier/package.json b/packages/notifier/package.json index e09d92ffef5..465e614995f 100644 --- a/packages/notifier/package.json +++ b/packages/notifier/package.json @@ -2,7 +2,7 @@ "name": "@agoric/notifier", "version": "0.1.3", "description": "Notifier allows services to update clients about state changes using a stream of promises", - "main": "src/notifier.js", + "main": "src/index.js", "engines": { "node": ">=11.0" }, diff --git a/packages/notifier/src/asyncIterableAdaptor.js b/packages/notifier/src/asyncIterableAdaptor.js index d6de2c84a97..aee90b6c13c 100644 --- a/packages/notifier/src/asyncIterableAdaptor.js +++ b/packages/notifier/src/asyncIterableAdaptor.js @@ -3,8 +3,6 @@ /// import { E } from '@agoric/eventual-send'; -// eslint-disable-next-line import/no-cycle -import { makeNotifierKit } from './notifier'; import './types'; @@ -129,19 +127,6 @@ export const updateFromIterable = (updater, asyncIterable) => { }); }; -/** - * Adaptor from async iterable to notifier. - * - * @template T - * @param {AsyncIterable} asyncIterable - * @returns {Notifier} - */ -export const makeNotifierFromAsyncIterable = asyncIterable => { - const { notifier, updater } = makeNotifierKit(); - updateFromIterable(updater, asyncIterable); - return notifier; -}; - /** * As updates come in from the possibly remote `notifierP`, update * the local `updater`. Since the updates come from a notifier, they diff --git a/packages/notifier/src/index.js b/packages/notifier/src/index.js new file mode 100644 index 00000000000..dac675a4849 --- /dev/null +++ b/packages/notifier/src/index.js @@ -0,0 +1,2 @@ +export * from './notifier'; +export * from './asyncIterableAdaptor'; diff --git a/packages/notifier/src/notifier.js b/packages/notifier/src/notifier.js index a9873f66cf3..d815aa2e549 100644 --- a/packages/notifier/src/notifier.js +++ b/packages/notifier/src/notifier.js @@ -4,8 +4,10 @@ import { producePromise } from '@agoric/produce-promise'; import { assert } from '@agoric/assert'; -// eslint-disable-next-line import/no-cycle -import { makeAsyncIterableFromNotifier } from './asyncIterableAdaptor'; +import { + makeAsyncIterableFromNotifier, + updateFromIterable, +} from './asyncIterableAdaptor'; import './types'; @@ -118,3 +120,16 @@ export const makeNotifierKit = (...args) => { // is tightly held return harden({ notifier, updater }); }; + +/** + * Adaptor from async iterable to notifier. + * + * @template T + * @param {AsyncIterable} asyncIterable + * @returns {Notifier} + */ +export const makeNotifierFromAsyncIterable = asyncIterable => { + const { notifier, updater } = makeNotifierKit(); + updateFromIterable(updater, asyncIterable); + return notifier; +}; diff --git a/packages/notifier/test/test-notifier-adaptor.js b/packages/notifier/test/test-notifier-adaptor.js index 1ce30954ed0..c6ccd517651 100644 --- a/packages/notifier/test/test-notifier-adaptor.js +++ b/packages/notifier/test/test-notifier-adaptor.js @@ -6,7 +6,7 @@ import { makeNotifierFromAsyncIterable, updateFromIterable, updateFromNotifier, -} from '../src/asyncIterableAdaptor'; +} from '../src/index'; const obj = harden({}); const unresP = new Promise(_ => {}); diff --git a/packages/notifier/test/test-notifier.js b/packages/notifier/test/test-notifier.js index d75e6dd182d..6e6461fb986 100644 --- a/packages/notifier/test/test-notifier.js +++ b/packages/notifier/test/test-notifier.js @@ -2,7 +2,7 @@ import '@agoric/install-ses'; import test from 'tape-promise/tape'; -import { makeNotifierKit } from '../src/notifier'; +import { makeNotifierKit } from '../src/index'; import '../src/types';