Context
import/no-cycle is enabled repo-wide. Sixteen known player modules still participate in interaction-registry hub cycles and are temporarily exempt in .oxlintrc.json via an explicit file list (not a package-wide carve-out).
Goal
Refactor packages/player interaction routing so registry, dispatch, shared helpers, and individual interaction renderers do not import each other cyclically.
Known exempt files
packages/player/src/content/content-renderer.ts
packages/player/src/interactions/choice-interaction.ts
packages/player/src/interactions/gap-match-interaction.ts
packages/player/src/interactions/graphic-associate-interaction.ts
packages/player/src/interactions/inline-choice-interaction.ts
packages/player/src/interactions/interaction-dispatch.ts
packages/player/src/interactions/interaction-registry.ts
packages/player/src/interactions/match-directed-pair-list.ts
packages/player/src/interactions/match-directed-pairs.ts
packages/player/src/interactions/match-interaction.ts
packages/player/src/interactions/pair-chip.ts
packages/player/src/interactions/pair-interaction.ts
packages/player/src/interactions/shared.ts
packages/player/src/player-message-catalog.ts
packages/player/src/player-message-resolver.ts
packages/player/src/reorder/order-interaction.ts
Done when
- The override block can be removed from
.oxlintrc.json
pnpm lint:raw passes with import/no-cycle enabled for all player sources
Context
import/no-cycleis enabled repo-wide. Sixteen known player modules still participate in interaction-registry hub cycles and are temporarily exempt in.oxlintrc.jsonvia an explicit file list (not a package-wide carve-out).Goal
Refactor
packages/playerinteraction routing so registry, dispatch, shared helpers, and individual interaction renderers do not import each other cyclically.Known exempt files
packages/player/src/content/content-renderer.tspackages/player/src/interactions/choice-interaction.tspackages/player/src/interactions/gap-match-interaction.tspackages/player/src/interactions/graphic-associate-interaction.tspackages/player/src/interactions/inline-choice-interaction.tspackages/player/src/interactions/interaction-dispatch.tspackages/player/src/interactions/interaction-registry.tspackages/player/src/interactions/match-directed-pair-list.tspackages/player/src/interactions/match-directed-pairs.tspackages/player/src/interactions/match-interaction.tspackages/player/src/interactions/pair-chip.tspackages/player/src/interactions/pair-interaction.tspackages/player/src/interactions/shared.tspackages/player/src/player-message-catalog.tspackages/player/src/player-message-resolver.tspackages/player/src/reorder/order-interaction.tsDone when
.oxlintrc.jsonpnpm lint:rawpasses withimport/no-cycleenabled for all player sources