fix(adventure): remove dead code flagged by knip

Delete unused dom.ts, remove unexported functions/types, inline
hasAllPrerequisites into its sole remaining caller.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
DrJKL
2026-03-29 00:45:06 -07:00
parent 9f7646309c
commit bef8133a53
9 changed files with 10 additions and 125 deletions

View File

@@ -192,5 +192,3 @@ export function buildNarrativeSummary(
return parts.join(' ')
}
export { bridges, sections, sentences }

View File

@@ -1,22 +1,4 @@
import type { RoomDefinition, SaveState } from '@/types'
import { canEnterRoom } from '@/state/tags'
type NavigationResult =
| { allowed: true }
| { allowed: false; unmetTags: string[] }
function checkNavigation(
room: RoomDefinition,
save: SaveState
): NavigationResult {
if (canEnterRoom(room, save)) {
return { allowed: true }
}
const unmetTags = room.prerequisites.filter(
(tag) => !save.currentRun.conceptTags.includes(tag)
)
return { allowed: false, unmetTags }
}
import type { SaveState } from '@/types'
function isRoomDiscovered(roomId: string, save: SaveState): boolean {
return save.currentRun.path.includes(roomId)
@@ -30,10 +12,4 @@ function countResolvedChallenges(save: SaveState): number {
return Object.keys(save.currentRun.resolvedChallenges).length
}
export type { NavigationResult }
export {
checkNavigation,
countResolvedChallenges,
isChallengeResolved,
isRoomDiscovered
}
export { countResolvedChallenges, isChallengeResolved, isRoomDiscovered }

View File

@@ -21,10 +21,6 @@ function initGameState(save: SaveState): void {
notify()
}
function getGameState(): GameState {
return currentState
}
function subscribe(handler: GameEventHandler): () => void {
listeners.push(handler)
return () => {
@@ -103,11 +99,9 @@ function resetForPrestige(newSave: SaveState): void {
export {
enterRoom,
getGameState,
initGameState,
resetForPrestige,
resolveChallenge,
showEnding,
subscribe,
transition
subscribe
}

View File

@@ -64,12 +64,4 @@ function isV1Save(): boolean {
}
}
export {
clearSave,
createDefaultSave,
createFreshRun,
isV1Save,
loadSave,
persistSave,
SAVE_VERSION
}
export { clearSave, createFreshRun, isV1Save, loadSave, persistSave }

View File

@@ -33,4 +33,4 @@ function prestige(save: SaveState, narrativeSummary: string): SaveState {
}
}
export { canPrestige, finalizeRun, prestige }
export { canPrestige, prestige }

View File

@@ -1,21 +1,9 @@
import type { RoomDefinition, SaveState } from '@/types'
function hasAllPrerequisites(
room: RoomDefinition,
earnedTags: string[]
): boolean {
return room.prerequisites.every((tag) => earnedTags.includes(tag))
}
function getUnmetPrerequisites(
room: RoomDefinition,
earnedTags: string[]
): string[] {
return room.prerequisites.filter((tag) => !earnedTags.includes(tag))
}
function canEnterRoom(room: RoomDefinition, save: SaveState): boolean {
return hasAllPrerequisites(room, save.currentRun.conceptTags)
return room.prerequisites.every((tag) =>
save.currentRun.conceptTags.includes(tag)
)
}
function grantTags(save: SaveState, tags: string[]): SaveState {
@@ -31,4 +19,4 @@ function grantTags(save: SaveState, tags: string[]): SaveState {
}
}
export { canEnterRoom, getUnmetPrerequisites, grantTags, hasAllPrerequisites }
export { canEnterRoom, grantTags }

View File

@@ -11,8 +11,6 @@ type GamePhase =
| 'ending'
| 'prestige'
type RoomState = 'locked' | 'discovered' | 'challenge-available' | 'solved'
// --- Room & Challenge Data ---
interface RoomConnection {
@@ -132,8 +130,6 @@ interface GameState {
}
export type {
Artifact,
ChallengeChoice,
ChallengeDefinition,
ChallengeRating,
ChallengeResult,
@@ -144,10 +140,7 @@ export type {
NarrativeBridge,
NarrativeSection,
NarrativeSentence,
PersistentState,
RoomConnection,
RoomDefinition,
RoomState,
RunRecord,
SaveState
}

View File

@@ -1,42 +0,0 @@
function el<K extends keyof HTMLElementTagNameMap>(
tag: K,
attrs?: Record<string, string>,
...children: (string | Node)[]
): HTMLElementTagNameMap[K] {
const element = document.createElement(tag)
if (attrs) {
for (const [key, value] of Object.entries(attrs)) {
element.setAttribute(key, value)
}
}
for (const child of children) {
if (typeof child === 'string') {
element.appendChild(document.createTextNode(child))
} else {
element.appendChild(child)
}
}
return element
}
function qs<T extends HTMLElement>(
selector: string,
parent: ParentNode = document
): T {
const found = parent.querySelector<T>(selector)
if (!found) throw new Error(`Element not found: ${selector}`)
return found
}
function qsa<T extends HTMLElement>(
selector: string,
parent: ParentNode = document
): T[] {
return Array.from(parent.querySelectorAll<T>(selector))
}
function setHtml(element: HTMLElement, html: string): void {
element.innerHTML = html
}
export { el, qs, qsa, setHtml }

View File

@@ -34,18 +34,4 @@ function renderSidebar(state: GameState): void {
}
}
function addLogEntry(text: string, type: string = 'info'): void {
const logEntries = document.getElementById('log-entries')
if (!logEntries) return
const entry = document.createElement('div')
entry.className = `log-entry log-${type}`
entry.textContent = text
logEntries.prepend(entry)
while (logEntries.children.length > 50) {
logEntries.lastChild?.remove()
}
}
export { addLogEntry, createSidebar, renderSidebar }
export { createSidebar, renderSidebar }