The platform a package runs on: what it declares, or the default implied by its role.
actions defaults to node because an MJ action is Node-side by construction — it is the one
role in the manifest's role enum (packageRoleSchema in manifest-schema.ts) that can never
be browser-safe. GENERATED_PACKAGE_TYPES_BY_TIER in @memberjunction/dynamic-packages's
discover.ts also uses the word 'actions', but it enumerates the HOST's own CodeGen-generated
codeGeneration.packages types, not manifest package roles, so this rule does not govern it.
Every other role defaults to both, which is how every manifest entry was routed before this
axis existed. A role: "actions" entry with no platform does change meaning: under shared it
no longer reaches the browser bundle (#4428), and under client the manifest schema now rejects
it as contradictory.
The platform a package runs on: what it declares, or the default implied by its role.
actionsdefaults tonodebecause an MJ action is Node-side by construction — it is the one role in the manifest'sroleenum (packageRoleSchemainmanifest-schema.ts) that can never be browser-safe.GENERATED_PACKAGE_TYPES_BY_TIERin@memberjunction/dynamic-packages'sdiscover.tsalso uses the word'actions', but it enumerates the HOST's own CodeGen-generatedcodeGeneration.packagestypes, not manifest package roles, so this rule does not govern it.Every other role defaults to
both, which is how every manifest entry was routed before this axis existed. Arole: "actions"entry with noplatformdoes change meaning: undersharedit no longer reaches the browser bundle (#4428), and underclientthe manifest schema now rejects it as contradictory.