Where a manifest package is allowed to RUN — the third axis of a packages entry, alongside
which array it sits in (server/client/shared) and its role.
shared answers "which tiers is this package FOR", not "can this package run there". An actions
package is shared source — the server imports it and the app's own types reference it — but it
cannot be loaded in a browser: a first-party *-actions package depends on
@memberjunction/aiengine, directly or via @memberjunction/core-entities-server, and aiengine
depends on @memberjunction/storage — the one package that declares @google-cloud/storage,
which imports fs, child_process, stream and node:async_hooks. Before this axis existed,
shared put all of that in the Angular bundle and the host Explorer could not build (#4428).
CANONICAL. Two other sites deliberately keep their own copy of this rule rather than import it,
because neither may take a dependency on this package:
packages/DynamicPackages/src/discover.ts (ships to the browser; one dependency by design)
packages/MJCLI/src/lib/dev-workspace/build.ts
Change one, change all three. package-platform.test.ts holds the canonical case list; the two
copies' specs mirror its cases by hand, because neither package can import this one.
Where a manifest package is allowed to RUN — the third axis of a
packagesentry, alongside which array it sits in (server/client/shared) and itsrole.sharedanswers "which tiers is this package FOR", not "can this package run there". An actions package is shared source — the server imports it and the app's own types reference it — but it cannot be loaded in a browser: a first-party*-actionspackage depends on@memberjunction/aiengine, directly or via@memberjunction/core-entities-server, and aiengine depends on@memberjunction/storage— the one package that declares@google-cloud/storage, which importsfs,child_process,streamandnode:async_hooks. Before this axis existed,sharedput all of that in the Angular bundle and the host Explorer could not build (#4428).CANONICAL. Two other sites deliberately keep their own copy of this rule rather than import it, because neither may take a dependency on this package:
packages/DynamicPackages/src/discover.ts(ships to the browser; one dependency by design)packages/MJCLI/src/lib/dev-workspace/build.tsChange one, change all three.package-platform.test.tsholds the canonical case list; the two copies' specs mirror its cases by hand, because neither package can import this one.