From 73b50590b7aef7eaffe2c435286fb291bf9b22bf Mon Sep 17 00:00:00 2001 From: "Mark S. Miller" Date: Sat, 13 Jan 2024 14:53:48 -0800 Subject: [PATCH] fix(common): fix @endo/common integration breakage (#1963) --- packages/common/README.md | 4 +++- .../common/{src => }/apply-labeling-error.js | 0 .../common/{src => }/from-unique-entries.js | 0 packages/common/{src => }/ident-checker.js | 2 +- packages/common/index.js | 10 -------- packages/common/{src => }/list-difference.js | 0 .../common/{src => }/make-array-iterator.js | 0 packages/common/{src => }/make-iterator.js | 0 packages/common/{src => }/object-map.js | 0 .../common/{src => }/object-meta-assign.js | 0 packages/common/{src => }/object-meta-map.js | 0 packages/common/package.json | 24 ++++++++----------- .../common/test/test-apply-labeling-error.js | 2 +- .../common/test/test-from-unique-entries.js | 2 +- packages/common/test/test-ident-checker.js | 2 +- packages/common/test/test-list-difference.js | 2 +- .../common/test/test-make-array-iterator.js | 2 +- packages/common/test/test-object-map.js | 2 +- .../common/test/test-object-meta-assign.js | 2 +- packages/common/test/test-object-meta-map.js | 2 +- packages/common/test/test-throw-labeled.js | 2 +- packages/common/{src => }/throw-labeled.js | 0 packages/exo/src/exo-makers.js | 2 +- packages/exo/src/exo-tools.js | 3 ++- packages/patterns/index.js | 8 ++++--- packages/patterns/src/keys/checkKey.js | 2 +- .../src/keys/keycollection-operators.js | 3 ++- .../patterns/src/patterns/patternMatchers.js | 10 ++++---- 28 files changed, 38 insertions(+), 48 deletions(-) rename packages/common/{src => }/apply-labeling-error.js (100%) rename packages/common/{src => }/from-unique-entries.js (100%) rename packages/common/{src => }/ident-checker.js (97%) delete mode 100644 packages/common/index.js rename packages/common/{src => }/list-difference.js (100%) rename packages/common/{src => }/make-array-iterator.js (100%) rename packages/common/{src => }/make-iterator.js (100%) rename packages/common/{src => }/object-map.js (100%) rename packages/common/{src => }/object-meta-assign.js (100%) rename packages/common/{src => }/object-meta-map.js (100%) rename packages/common/{src => }/throw-labeled.js (100%) diff --git a/packages/common/README.md b/packages/common/README.md index d69d2c451a..762a16ebb5 100644 --- a/packages/common/README.md +++ b/packages/common/README.md @@ -8,7 +8,9 @@ Each of the utilities in this packages - sufficiently general that it would be awkward to import from a more specialized package. - can be explained and motivated without much external knowledge. -Each utility is in its own source file, named after the main export of that utility. (This is often that file's only export.) This enables importers to bypass this package's `index.js` and just do a deep import of what they need. +Each utility is in its own top-level source file, named after the main export of that utility. (This is often that file's only export.) The `package.json` also lists each as a distinct `"export":`. There is no `index.js` file that rolls them together. Thus, each importer must do a deep import of exactly the export it needs. Some implementations (bundlers, packagers) can thus do tree-shaking, omitted code that isn't reachable by imports. + +Currently there are no `src/something.js` files. The only source files that would go in `src/` are those that do not represent separately exported utilities. Generally each utility also has its own test file. (An exception is that `make-iterator.js` is indirectly but adequately tested by `test-make-array-iterator.js`). diff --git a/packages/common/src/apply-labeling-error.js b/packages/common/apply-labeling-error.js similarity index 100% rename from packages/common/src/apply-labeling-error.js rename to packages/common/apply-labeling-error.js diff --git a/packages/common/src/from-unique-entries.js b/packages/common/from-unique-entries.js similarity index 100% rename from packages/common/src/from-unique-entries.js rename to packages/common/from-unique-entries.js diff --git a/packages/common/src/ident-checker.js b/packages/common/ident-checker.js similarity index 97% rename from packages/common/src/ident-checker.js rename to packages/common/ident-checker.js index e7c34cd36a..4001fc08e4 100644 --- a/packages/common/src/ident-checker.js +++ b/packages/common/ident-checker.js @@ -1,6 +1,6 @@ // TODO Complete migration of Checker type from @endo/pass-style to @endo/common // by having @endo/pass-style, and everyone else who needs it, import it from -// @endo/common. +// `@endo/common/ident-checker.js`. /** * @callback Checker * Internal to a useful pattern for writing checking logic diff --git a/packages/common/index.js b/packages/common/index.js deleted file mode 100644 index abfd6c0fda..0000000000 --- a/packages/common/index.js +++ /dev/null @@ -1,10 +0,0 @@ -export * from './src/apply-labeling-error.js'; -export * from './src/from-unique-entries.js'; -export * from './src/ident-checker.js'; -export * from './src/list-difference.js'; -export * from './src/make-array-iterator.js'; -export * from './src/make-iterator.js'; -export * from './src/object-map.js'; -export * from './src/object-meta-assign.js'; -export * from './src/object-meta-map.js'; -export * from './src/throw-labeled.js'; diff --git a/packages/common/src/list-difference.js b/packages/common/list-difference.js similarity index 100% rename from packages/common/src/list-difference.js rename to packages/common/list-difference.js diff --git a/packages/common/src/make-array-iterator.js b/packages/common/make-array-iterator.js similarity index 100% rename from packages/common/src/make-array-iterator.js rename to packages/common/make-array-iterator.js diff --git a/packages/common/src/make-iterator.js b/packages/common/make-iterator.js similarity index 100% rename from packages/common/src/make-iterator.js rename to packages/common/make-iterator.js diff --git a/packages/common/src/object-map.js b/packages/common/object-map.js similarity index 100% rename from packages/common/src/object-map.js rename to packages/common/object-map.js diff --git a/packages/common/src/object-meta-assign.js b/packages/common/object-meta-assign.js similarity index 100% rename from packages/common/src/object-meta-assign.js rename to packages/common/object-meta-assign.js diff --git a/packages/common/src/object-meta-map.js b/packages/common/object-meta-map.js similarity index 100% rename from packages/common/src/object-meta-map.js rename to packages/common/object-meta-map.js diff --git a/packages/common/package.json b/packages/common/package.json index f406e2e1c5..441cf11742 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,7 +1,6 @@ { "name": "@endo/common", "version": "1.0.1", - "private": true, "description": "common low level utilities", "keywords": [], "author": "Endo contributors", @@ -15,20 +14,17 @@ "url": "https://github.com/endojs/endo/issues" }, "type": "module", - "main": "./index.js", - "module": "./index.js", "exports": { - ".": "./index.js", - "./apply-labeling-error": "./src/apply-labeling-error.js", - "./from-unique-entries": "./src/from-unique-entries.js", - "./ident-checker": "./src/ident-checker.js", - "./list-difference": "./src/list-difference.js", - "./make-array-iterator": "./src/make-array-iterator.js", - "./make-iterator": "./src/make-iterator.js", - "./object-map": "./src/object-map.js", - "./object-meta-assign": "./src/object-meta-assign.js", - "./object-meta-map": "./src/object-meta-map.js", - "./throw-labeled": "./src/throw-labeled.js", + "./apply-labeling-error.js": "./apply-labeling-error.js", + "./from-unique-entries.js": "./from-unique-entries.js", + "./ident-checker.js": "./ident-checker.js", + "./list-difference.js": "./list-difference.js", + "./make-array-iterator.js": "./make-array-iterator.js", + "./make-iterator.js": "./make-iterator.js", + "./object-map.js": "./object-map.js", + "./object-meta-assign.js": "./object-meta-assign.js", + "./object-meta-map.js": "./object-meta-map.js", + "./throw-labeled.js": "./throw-labeled.js", "./package.json": "./package.json" }, "scripts": { diff --git a/packages/common/test/test-apply-labeling-error.js b/packages/common/test/test-apply-labeling-error.js index f18616c524..e042e29831 100644 --- a/packages/common/test/test-apply-labeling-error.js +++ b/packages/common/test/test-apply-labeling-error.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { applyLabelingError } from '../src/apply-labeling-error.js'; +import { applyLabelingError } from '../apply-labeling-error.js'; const { Fail } = assert; diff --git a/packages/common/test/test-from-unique-entries.js b/packages/common/test/test-from-unique-entries.js index 78e19b16f0..575a84d64c 100644 --- a/packages/common/test/test-from-unique-entries.js +++ b/packages/common/test/test-from-unique-entries.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { fromUniqueEntries } from '../src/from-unique-entries.js'; +import { fromUniqueEntries } from '../from-unique-entries.js'; test('test fromUniqueEntries', async t => { t.deepEqual( diff --git a/packages/common/test/test-ident-checker.js b/packages/common/test/test-ident-checker.js index 5a20e269a6..ba07dc689e 100644 --- a/packages/common/test/test-ident-checker.js +++ b/packages/common/test/test-ident-checker.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { identChecker } from '../src/ident-checker.js'; +import { identChecker } from '../ident-checker.js'; test('test identChecker', async t => { t.is(identChecker(true, 'x'), true); diff --git a/packages/common/test/test-list-difference.js b/packages/common/test/test-list-difference.js index 6f5e1ff388..fd7f33d639 100644 --- a/packages/common/test/test-list-difference.js +++ b/packages/common/test/test-list-difference.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { listDifference } from '../src/list-difference.js'; +import { listDifference } from '../list-difference.js'; test('test listDifference', async t => { t.deepEqual(listDifference(['a', 'b', 'c'], ['b', 'c', 'd']), ['a']); diff --git a/packages/common/test/test-make-array-iterator.js b/packages/common/test/test-make-array-iterator.js index 856431c21c..0c5b3f56dd 100644 --- a/packages/common/test/test-make-array-iterator.js +++ b/packages/common/test/test-make-array-iterator.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { makeArrayIterator } from '../src/make-array-iterator.js'; +import { makeArrayIterator } from '../make-array-iterator.js'; // Also serves as an adequate test of make-iterator.js diff --git a/packages/common/test/test-object-map.js b/packages/common/test/test-object-map.js index 202b1c17bf..773780d8a8 100644 --- a/packages/common/test/test-object-map.js +++ b/packages/common/test/test-object-map.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { objectMap } from '../src/object-map.js'; +import { objectMap } from '../object-map.js'; test('test objectMap', async t => { t.deepEqual( diff --git a/packages/common/test/test-object-meta-assign.js b/packages/common/test/test-object-meta-assign.js index f3f0459a1c..43962b3960 100644 --- a/packages/common/test/test-object-meta-assign.js +++ b/packages/common/test/test-object-meta-assign.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { objectMetaAssign } from '../src/object-meta-assign.js'; +import { objectMetaAssign } from '../object-meta-assign.js'; test('test objectMetaAssign', async t => { t.deepEqual(objectMetaAssign({}, { a: 1 }, { a: 2, b: 3 }), { a: 2, b: 3 }); diff --git a/packages/common/test/test-object-meta-map.js b/packages/common/test/test-object-meta-map.js index 2729c158b7..b24bc810e4 100644 --- a/packages/common/test/test-object-meta-map.js +++ b/packages/common/test/test-object-meta-map.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { objectMetaMap } from '../src/object-meta-map.js'; +import { objectMetaMap } from '../object-meta-map.js'; const { getOwnPropertyDescriptors, getPrototypeOf } = Object; diff --git a/packages/common/test/test-throw-labeled.js b/packages/common/test/test-throw-labeled.js index 2780e16652..e625338950 100644 --- a/packages/common/test/test-throw-labeled.js +++ b/packages/common/test/test-throw-labeled.js @@ -1,5 +1,5 @@ import { test } from './prepare-test-env-ava.js'; -import { throwLabeled } from '../src/throw-labeled.js'; +import { throwLabeled } from '../throw-labeled.js'; test('test throwLabeled', async t => { t.throws(() => throwLabeled(Error('e'), 'foo'), { diff --git a/packages/common/src/throw-labeled.js b/packages/common/throw-labeled.js similarity index 100% rename from packages/common/src/throw-labeled.js rename to packages/common/throw-labeled.js diff --git a/packages/exo/src/exo-makers.js b/packages/exo/src/exo-makers.js index eb1dd4441f..6a3e0eff56 100644 --- a/packages/exo/src/exo-makers.js +++ b/packages/exo/src/exo-makers.js @@ -1,6 +1,6 @@ /// import { environmentOptionsListHas } from '@endo/env-options'; -import { objectMap } from '@endo/common'; +import { objectMap } from '@endo/common/object-map.js'; import { defendPrototype, defendPrototypeKit } from './exo-tools.js'; diff --git a/packages/exo/src/exo-tools.js b/packages/exo/src/exo-tools.js index 1dfc7fbb0f..abdcb0ec0e 100644 --- a/packages/exo/src/exo-tools.js +++ b/packages/exo/src/exo-tools.js @@ -11,7 +11,8 @@ import { getInterfaceGuardPayload, getCopyMapEntries, } from '@endo/patterns'; -import { listDifference, objectMap } from '@endo/common'; +import { listDifference } from '@endo/common/list-difference.js'; +import { objectMap } from '@endo/common/object-map.js'; import { GET_INTERFACE_GUARD } from './get-interface.js'; /** @typedef {import('@endo/patterns').Method} Method */ diff --git a/packages/patterns/index.js b/packages/patterns/index.js index cbc64805db..9dd42f741e 100644 --- a/packages/patterns/index.js +++ b/packages/patterns/index.js @@ -79,13 +79,15 @@ export * from './src/types.js'; export { /** * @deprecated - * Import directly from `@endo/common` instead. + * Import directly from `@endo/common/list-difference.js` instead. */ listDifference, +} from '@endo/common/list-difference.js'; +export { /** * @deprecated - * Import directly from `@endo/common` instead. + * Import directly from `@endo/common/object-map.js` instead. */ objectMap, -} from '@endo/common'; +} from '@endo/common/object-map.js'; diff --git a/packages/patterns/src/keys/checkKey.js b/packages/patterns/src/keys/checkKey.js index c1c7a01a7a..3fddf7022a 100644 --- a/packages/patterns/src/keys/checkKey.js +++ b/packages/patterns/src/keys/checkKey.js @@ -12,7 +12,7 @@ import { makeFullOrderComparatorKit, sortByRank, } from '@endo/marshal'; -import { identChecker } from '@endo/common'; +import { identChecker } from '@endo/common/ident-checker.js'; import { checkElements, makeSetOfElements } from './copySet.js'; import { checkBagEntries, makeBagOfEntries } from './copyBag.js'; diff --git a/packages/patterns/src/keys/keycollection-operators.js b/packages/patterns/src/keys/keycollection-operators.js index 0aec3b8364..e738188986 100644 --- a/packages/patterns/src/keys/keycollection-operators.js +++ b/packages/patterns/src/keys/keycollection-operators.js @@ -5,7 +5,8 @@ import { makeFullOrderComparatorKit, sortByRank, } from '@endo/marshal'; -import { makeIterator, makeArrayIterator } from '@endo/common'; +import { makeIterator } from '@endo/common/make-iterator.js'; +import { makeArrayIterator } from '@endo/common/make-array-iterator.js'; /** @typedef {import('@endo/marshal').RankCompare} RankCompare */ /** @typedef {import('../types').KeyComparison} KeyComparison */ diff --git a/packages/patterns/src/patterns/patternMatchers.js b/packages/patterns/src/patterns/patternMatchers.js index cbef8d9f21..55bb8de11b 100644 --- a/packages/patterns/src/patterns/patternMatchers.js +++ b/packages/patterns/src/patterns/patternMatchers.js @@ -13,12 +13,10 @@ import { recordNames, recordValues, } from '@endo/marshal'; -import { - identChecker, - applyLabelingError, - fromUniqueEntries, - listDifference, -} from '@endo/common'; +import { identChecker } from '@endo/common/ident-checker.js'; +import { applyLabelingError } from '@endo/common/apply-labeling-error.js'; +import { fromUniqueEntries } from '@endo/common/from-unique-entries.js'; +import { listDifference } from '@endo/common/list-difference.js'; import { keyEQ, keyGT, keyGTE, keyLT, keyLTE } from '../keys/compareKeys.js'; import {