osu-play 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +2 -2
- package/dist/cli.cjs.map +3 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +3 -3
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -1581,7 +1581,7 @@ class PlaylistPlayerScreen {
|
|
|
1581
1581
|
return;
|
|
1582
1582
|
}
|
|
1583
1583
|
const printable = decodePrintableText(data);
|
|
1584
|
-
if (!printable
|
|
1584
|
+
if (!printable) {
|
|
1585
1585
|
return;
|
|
1586
1586
|
}
|
|
1587
1587
|
this.session.appendSearchQuery(printable);
|
|
@@ -1752,4 +1752,4 @@ main().then(() => {
|
|
|
1752
1752
|
process.exit(1);
|
|
1753
1753
|
});
|
|
1754
1754
|
|
|
1755
|
-
//# debugId=
|
|
1755
|
+
//# debugId=A88389A773C17D8064756E2164756E21
|
package/dist/cli.cjs.map
CHANGED
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"import { hashedFilePath } from \"../utils/mod.js\";\n\nexport type PlaylistBeatmapMetadata = {\n AudioFile?: string | null;\n Title?: string | null;\n Artist?: string | null;\n TitleUnicode?: string | null;\n ArtistUnicode?: string | null;\n};\n\nexport type PlaylistBeatmap = {\n Metadata: PlaylistBeatmapMetadata;\n};\n\nexport type PlaylistFile = {\n Filename?: string | null;\n File?: {\n Hash?: string | null;\n } | null;\n};\n\nexport type PlaylistBeatmapSet = {\n DeletePending?: boolean;\n Beatmaps: Iterable<PlaylistBeatmap>;\n Files: Iterable<PlaylistFile>;\n Hash?: string | null;\n ID?: unknown;\n};\n\nexport type PlaylistTrack = {\n beatmapSetHash: string | null;\n beatmapSetId: unknown;\n beatmapSetKey: string;\n hash: string;\n path: string;\n title: string;\n};\n\nfunction uniqueParts(parts: Array<string | null | undefined>) {\n return [...new Set(parts.map((part) => part?.trim()).filter(Boolean))];\n}\n\nexport function formatTrackTitle(metadata: PlaylistBeatmapMetadata) {\n const title = uniqueParts([metadata.Title, metadata.TitleUnicode]).join(\" / \");\n const artist = uniqueParts([metadata.Artist, metadata.ArtistUnicode]).join(\" / \");\n\n return `${title || \"Unknown Title\"} - ${artist || \"Unknown Artist\"}`;\n}\n\nexport function getNamedFileHash(fileName: string, beatmapSet: PlaylistBeatmapSet) {\n for (const file of beatmapSet.Files) {\n if (file.Filename === fileName && file.File?.Hash) {\n return file.File.Hash;\n }\n }\n\n return undefined;\n}\n\nexport function buildPlaylist(\n beatmapSets: Iterable<PlaylistBeatmapSet>,\n osuDataDir: string,\n) {\n const seenHashes = new Set<string>();\n const playlist: PlaylistTrack[] = [];\n\n for (const beatmapSet of beatmapSets) {\n if (beatmapSet.DeletePending) {\n continue;\n }\n\n for (const beatmap of beatmapSet.Beatmaps) {\n const hash = getNamedFileHash(beatmap.Metadata.AudioFile ?? \"\", beatmapSet);\n if (!hash || seenHashes.has(hash)) {\n continue;\n }\n\n seenHashes.add(hash);\n playlist.push({\n beatmapSetHash: beatmapSet.Hash ?? null,\n beatmapSetId: beatmapSet.ID,\n beatmapSetKey: String(beatmapSet.ID ?? hash),\n hash,\n path: hashedFilePath(hash, osuDataDir),\n title: formatTrackTitle(beatmap.Metadata),\n });\n }\n }\n\n return playlist;\n}\n",
|
|
17
17
|
"import { spawn, type ChildProcess } from \"node:child_process\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport net from \"node:net\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { setTimeout as delay } from \"node:timers/promises\";\n\nimport type {\n PlayerBackend,\n PlayerBackendEvent,\n PlayerBackendListener,\n PlayerBackendSnapshot,\n} from \"./types.js\";\n\ntype PendingCommand = {\n reject: (error: Error) => void;\n resolve: (value: unknown) => void;\n};\n\ntype MpvResponse = {\n data?: unknown;\n error?: string;\n event?: string;\n name?: string;\n reason?: string;\n request_id?: number;\n};\n\nfunction getErrorCode(error: unknown) {\n if (error && typeof error === \"object\" && \"code\" in error) {\n const { code } = error as NodeJS.ErrnoException;\n return typeof code === \"string\" ? code : null;\n }\n\n return null;\n}\n\nfunction isRetryableSocketError(error: unknown) {\n const code = getErrorCode(error);\n if (code) {\n return (\n code === \"ENOENT\"\n || code === \"ECONNREFUSED\"\n || code === \"EPERM\"\n || code === \"EACCES\"\n );\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes(\"ENOENT\")\n || message.includes(\"ECONNREFUSED\")\n || message.includes(\"EPERM\")\n || message.includes(\"EACCES\")\n );\n}\n\nfunction createSocketPath() {\n const id = `osu-play-mpv-${process.pid}-${Date.now()}`;\n if (process.platform === \"win32\") {\n return `\\\\\\\\.\\\\pipe\\\\${id}`;\n }\n\n return path.join(os.tmpdir(), `${id}.sock`);\n}\n\nfunction isControlText(value: string) {\n return [...value].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n}\n\nexport class MpvPlayerBackend implements PlayerBackend {\n readonly name = \"mpv\";\n\n private connectPromise: Promise<void> | null = null;\n\n private disposePromise: Promise<void> | null = null;\n\n private disposing = false;\n\n private readonly listeners = new Set<PlayerBackendListener>();\n\n private readonly pendingCommands = new Map<number, PendingCommand>();\n\n private idleActive = true;\n\n private process: ChildProcess | null = null;\n\n private requestId = 0;\n\n private responseBuffer = \"\";\n\n private snapshot: PlayerBackendSnapshot = {\n backendName: \"mpv\",\n currentPath: null,\n durationSeconds: null,\n errorMessage: null,\n status: \"stopped\",\n timePositionSeconds: null,\n };\n\n private socket: net.Socket | null = null;\n\n private readonly socketPath = createSocketPath();\n\n private stderrBuffer = \"\";\n\n getSnapshot() {\n return this.snapshot;\n }\n\n subscribe(listener: PlayerBackendListener) {\n this.listeners.add(listener);\n listener({\n snapshot: this.snapshot,\n type: \"state\",\n });\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n async start() {\n if (this.socket && !this.socket.destroyed) {\n return;\n }\n\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = this.startInternal();\n\n try {\n await this.connectPromise;\n } finally {\n this.connectPromise = null;\n }\n }\n\n async play(filePath: string) {\n await this.start();\n\n const previousSnapshot = this.snapshot;\n\n try {\n await this.sendCommand([\"loadfile\", filePath, \"replace\"]);\n await this.sendCommand([\"set_property\", \"pause\", false]);\n } catch (error) {\n this.snapshot = previousSnapshot;\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n throw error;\n }\n\n this.idleActive = false;\n this.snapshot = {\n ...this.snapshot,\n currentPath: filePath,\n errorMessage: null,\n status: \"playing\",\n timePositionSeconds: this.snapshot.timePositionSeconds ?? 0,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n async togglePause() {\n await this.start();\n await this.sendCommand([\"cycle\", \"pause\"]);\n }\n\n async seekBy(seconds: number) {\n await this.start();\n await this.sendCommand([\"seek\", seconds, \"relative\"]);\n }\n\n async stop() {\n if (!this.socket || this.socket.destroyed) {\n return;\n }\n\n await this.sendCommand([\"stop\"]);\n this.idleActive = true;\n this.snapshot = {\n ...this.snapshot,\n status: \"stopped\",\n timePositionSeconds: null,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n async dispose() {\n if (this.disposePromise) {\n return this.disposePromise;\n }\n\n this.disposePromise = this.disposeInternal();\n\n try {\n await this.disposePromise;\n } finally {\n this.disposePromise = null;\n }\n }\n\n private emit(event: PlayerBackendEvent) {\n for (const listener of this.listeners) {\n listener(event);\n }\n }\n\n private async startInternal() {\n this.cleanupSocketPath();\n this.disposing = false;\n this.stderrBuffer = \"\";\n\n const processHandle = spawn(\n \"mpv\",\n [\n \"--no-config\",\n \"--no-terminal\",\n \"--idle=yes\",\n \"--force-window=no\",\n \"--audio-display=no\",\n \"--really-quiet\",\n `--input-ipc-server=${this.socketPath}`,\n ],\n {\n stdio: [\"ignore\", \"ignore\", \"pipe\"],\n },\n );\n\n this.process = processHandle;\n\n processHandle.stderr.setEncoding(\"utf8\");\n processHandle.stderr.on(\"data\", (chunk: string) => {\n this.stderrBuffer = `${this.stderrBuffer}${chunk}`.slice(-4000);\n });\n\n processHandle.once(\"error\", (error) => {\n this.handleError(error);\n });\n\n processHandle.once(\"exit\", (code, signal) => {\n if (this.disposing) {\n return;\n }\n\n const detail = this.stderrBuffer.trim();\n const suffix = detail ? `\\n${detail}` : \"\";\n this.handleError(\n new Error(\n `mpv exited unexpectedly with ${signal ? `signal ${signal}` : `code ${code}`}.${suffix}`,\n ),\n );\n });\n\n await this.connectSocket();\n await Promise.all([\n this.sendCommand([\"observe_property\", 1, \"pause\"]),\n this.sendCommand([\"observe_property\", 2, \"time-pos\"]),\n this.sendCommand([\"observe_property\", 3, \"duration\"]),\n this.sendCommand([\"observe_property\", 4, \"idle-active\"]),\n ]);\n }\n\n private async connectSocket() {\n const start = Date.now();\n const timeoutMs = 5000;\n\n while (Date.now() - start < timeoutMs) {\n if (!this.process || this.process.exitCode !== null) {\n throw new Error(this.formatStartupError(\"mpv exited before opening its IPC socket.\"));\n }\n\n try {\n await this.attachSocket();\n return;\n } catch (error) {\n if (!isRetryableSocketError(error)) {\n throw error;\n }\n }\n\n await delay(50);\n }\n\n throw new Error(this.formatStartupError(\"Timed out waiting for mpv IPC to become ready.\"));\n }\n\n private async attachSocket() {\n await new Promise<void>((resolve, reject) => {\n const socket = net.createConnection(this.socketPath);\n\n const onError = (error: Error) => {\n socket.destroy();\n reject(error);\n };\n\n socket.once(\"error\", onError);\n socket.once(\"connect\", () => {\n socket.removeListener(\"error\", onError);\n socket.setEncoding(\"utf8\");\n socket.on(\"data\", (chunk: string) => {\n this.handleSocketData(chunk);\n });\n socket.on(\"error\", (error) => {\n if (!this.disposing) {\n this.handleError(error);\n }\n });\n socket.on(\"close\", () => {\n if (!this.disposing) {\n this.handleError(new Error(\"mpv IPC socket closed unexpectedly.\"));\n }\n });\n this.socket = socket;\n resolve();\n });\n });\n }\n\n private async sendCommand(command: unknown[]) {\n const socket = this.socket;\n if (!socket || socket.destroyed) {\n throw new Error(\"mpv IPC socket is not connected.\");\n }\n\n const requestId = ++this.requestId;\n\n return new Promise<unknown>((resolve, reject) => {\n this.pendingCommands.set(requestId, { reject, resolve });\n\n socket.write(\n `${JSON.stringify({ command, request_id: requestId })}\\n`,\n (error) => {\n if (!error) {\n return;\n }\n\n this.pendingCommands.delete(requestId);\n reject(error);\n },\n );\n });\n }\n\n private handleSocketData(chunk: string) {\n this.responseBuffer += chunk;\n\n while (true) {\n const newlineIndex = this.responseBuffer.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n return;\n }\n\n const line = this.responseBuffer.slice(0, newlineIndex).trim();\n this.responseBuffer = this.responseBuffer.slice(newlineIndex + 1);\n\n if (!line) {\n continue;\n }\n\n try {\n const response = JSON.parse(line) as MpvResponse;\n this.handleResponse(response);\n } catch (error) {\n this.handleError(\n new Error(\n `Failed to parse mpv IPC message: ${\n error instanceof Error ? error.message : String(error)\n }`,\n ),\n );\n }\n }\n }\n\n private handleResponse(response: MpvResponse) {\n if (typeof response.request_id === \"number\") {\n const pending = this.pendingCommands.get(response.request_id);\n if (pending) {\n this.pendingCommands.delete(response.request_id);\n if (response.error && response.error !== \"success\") {\n pending.reject(new Error(`mpv command failed: ${response.error}`));\n } else {\n pending.resolve(response.data);\n }\n }\n return;\n }\n\n if (response.event === \"property-change\") {\n this.applyPropertyChange(response.name, response.data);\n return;\n }\n\n if (response.event === \"end-file\") {\n const reason = response.reason ?? \"unknown\";\n if (reason !== \"stop\" && reason !== \"redirect\") {\n this.snapshot = {\n ...this.snapshot,\n status: \"stopped\",\n timePositionSeconds:\n reason === \"eof\" ? this.snapshot.durationSeconds : this.snapshot.timePositionSeconds,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n this.emit({\n reason,\n type: \"ended\",\n });\n }\n }\n\n private applyPropertyChange(name: string | undefined, data: unknown) {\n switch (name) {\n case \"pause\":\n this.snapshot = {\n ...this.snapshot,\n status: data === true ? \"paused\" : this.idleActive ? \"stopped\" : \"playing\",\n };\n break;\n case \"time-pos\":\n this.snapshot = {\n ...this.snapshot,\n timePositionSeconds: typeof data === \"number\" ? data : null,\n };\n break;\n case \"duration\":\n this.snapshot = {\n ...this.snapshot,\n durationSeconds: typeof data === \"number\" ? data : null,\n };\n break;\n case \"idle-active\":\n this.idleActive = data === true;\n this.snapshot = {\n ...this.snapshot,\n status:\n data === true\n ? \"stopped\"\n : this.snapshot.status === \"paused\"\n ? \"paused\"\n : \"playing\",\n timePositionSeconds:\n data === true ? this.snapshot.durationSeconds : this.snapshot.timePositionSeconds,\n };\n break;\n default:\n return;\n }\n\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n private handleError(error: unknown) {\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n\n this.snapshot = {\n ...this.snapshot,\n errorMessage: normalizedError.message,\n status: \"stopped\",\n };\n\n this.emit({\n error: normalizedError,\n type: \"error\",\n });\n\n for (const [requestId, pending] of this.pendingCommands) {\n this.pendingCommands.delete(requestId);\n pending.reject(normalizedError);\n }\n }\n\n private async disposeInternal() {\n this.disposing = true;\n\n if (this.socket && !this.socket.destroyed) {\n try {\n await this.sendCommand([\"quit\"]);\n } catch {\n // Ignore quit errors during shutdown.\n }\n }\n\n this.socket?.destroy();\n this.socket = null;\n\n const processHandle = this.process;\n this.process = null;\n if (processHandle && processHandle.exitCode === null) {\n processHandle.kill(\"SIGTERM\");\n await Promise.race([\n new Promise<void>((resolve) => {\n processHandle.once(\"exit\", () => resolve());\n }),\n delay(1000),\n ]);\n\n if (processHandle.exitCode === null) {\n processHandle.kill(\"SIGKILL\");\n }\n }\n\n this.cleanupSocketPath();\n }\n\n private cleanupSocketPath() {\n if (process.platform === \"win32\") {\n return;\n }\n\n if (existsSync(this.socketPath)) {\n rmSync(this.socketPath, { force: true });\n }\n }\n\n private formatStartupError(message: string) {\n const stderr = this.stderrBuffer.trim();\n const cleanStderr = stderr && !isControlText(stderr) ? `\\n${stderr}` : \"\";\n\n return [\n message,\n \"osu-play now expects `mpv` to be installed and available on PATH for TUI playback.\",\n cleanStderr,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n }\n}\n",
|
|
18
18
|
"import type { PlaylistTrack } from \"../playlist/mod.js\";\nimport type {\n PlayerBackend,\n PlayerBackendEvent,\n PlaylistPlayerListener,\n PlaylistPlayerSnapshot,\n} from \"./types.js\";\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return Math.max(0, Math.min(index, length - 1));\n}\n\nfunction wrapIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction normalizeSearchText(text: string) {\n return text.trim().toLowerCase();\n}\n\nexport function findTrackIndexByQuery(\n playlist: PlaylistTrack[],\n query: string,\n) {\n const normalizedQuery = normalizeSearchText(query);\n if (!normalizedQuery) {\n return -1;\n }\n\n return playlist.findIndex((track) =>\n normalizeSearchText(track.title).includes(normalizedQuery),\n );\n}\n\ntype PlaylistPlayerSessionOptions = {\n deleteTrack?: (track: PlaylistTrack) => Promise<void>;\n loop?: boolean;\n reloadPlaylist?: () => Promise<PlaylistTrack[]>;\n};\n\nexport class PlaylistPlayerSession {\n private readonly listeners = new Set<PlaylistPlayerListener>();\n\n private currentIndex: number | null = null;\n\n private errorMessage: string | null = null;\n\n private loop: boolean;\n\n private deleteTrack?: (track: PlaylistTrack) => Promise<void>;\n\n private playlist: PlaylistTrack[];\n\n private readonly reloadPlaylist?: () => Promise<PlaylistTrack[]>;\n\n private searchQuery = \"\";\n\n private selectedIndex = 0;\n\n private operationQueue: Promise<void> = Promise.resolve();\n\n private readonly unsubscribeBackend: () => void;\n\n constructor(\n playlist: PlaylistTrack[],\n private readonly backend: PlayerBackend,\n options: PlaylistPlayerSessionOptions = {},\n ) {\n this.playlist = playlist;\n this.deleteTrack = options.deleteTrack;\n this.loop = options.loop ?? false;\n this.reloadPlaylist = options.reloadPlaylist;\n this.unsubscribeBackend = backend.subscribe((event) => {\n void this.handleBackendEvent(event);\n });\n }\n\n getSnapshot(): PlaylistPlayerSnapshot {\n const backendSnapshot = this.backend.getSnapshot();\n const currentTrack =\n this.currentIndex !== null ? this.playlist[this.currentIndex] ?? null : null;\n\n return {\n backendName: backendSnapshot.backendName,\n currentIndex: this.currentIndex,\n currentTrack,\n durationSeconds: backendSnapshot.durationSeconds,\n errorMessage: this.errorMessage ?? backendSnapshot.errorMessage,\n loop: this.loop,\n playlist: this.playlist,\n searchQuery: this.searchQuery,\n selectedIndex: this.selectedIndex,\n status: backendSnapshot.status,\n timePositionSeconds: backendSnapshot.timePositionSeconds,\n };\n }\n\n subscribe(listener: PlaylistPlayerListener) {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n async start() {\n await this.backend.start();\n this.emit();\n }\n\n async dispose() {\n this.unsubscribeBackend();\n await this.backend.dispose();\n }\n\n moveSelection(delta: number) {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = wrapIndex(\n this.selectedIndex + delta,\n this.playlist.length,\n );\n this.emit();\n }\n\n moveSelectionPage(delta: number, pageSize: number) {\n this.moveSelection(delta * Math.max(1, pageSize));\n }\n\n selectHome() {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = 0;\n this.emit();\n }\n\n selectEnd() {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = this.playlist.length - 1;\n this.emit();\n }\n\n setSelectionIndex(index: number) {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = clampIndex(index, this.playlist.length);\n this.emit();\n }\n\n toggleLoop() {\n this.loop = !this.loop;\n this.emit();\n }\n\n appendSearchQuery(text: string) {\n if (!text) {\n return;\n }\n\n this.searchQuery += text;\n this.syncSelectionToSearch();\n }\n\n deleteSearchCharacter() {\n if (!this.searchQuery) {\n return;\n }\n\n this.searchQuery = this.searchQuery.slice(0, -1);\n this.syncSelectionToSearch();\n }\n\n clearSearch() {\n if (!this.searchQuery) {\n return;\n }\n\n this.searchQuery = \"\";\n this.emit();\n }\n\n async playSelected() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n await this.playIndex(selectedIndex);\n });\n }\n\n async playNext() {\n await this.enqueueOperation(async () => {\n const nextIndex = this.getAdjacentIndex(1, true);\n if (nextIndex === null) {\n return;\n }\n\n await this.playIndex(nextIndex);\n });\n }\n\n async playPrevious() {\n await this.enqueueOperation(async () => {\n const previousIndex = this.getAdjacentIndex(-1, true);\n if (previousIndex === null) {\n return;\n }\n\n await this.playIndex(previousIndex);\n });\n }\n\n async togglePause() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n if (this.playlist.length === 0) {\n return;\n }\n\n const { status } = this.backend.getSnapshot();\n if (status === \"stopped\") {\n const restartIndex = this.currentIndex ?? selectedIndex;\n await this.playIndex(restartIndex);\n return;\n }\n\n try {\n this.clearError();\n await this.backend.togglePause();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async seekBy(seconds: number) {\n await this.enqueueOperation(async () => {\n if (seconds === 0) {\n return;\n }\n\n const { status } = this.backend.getSnapshot();\n if (status === \"stopped\") {\n return;\n }\n\n try {\n this.clearError();\n await this.backend.seekBy(seconds);\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async stop() {\n await this.enqueueOperation(async () => {\n try {\n this.clearError();\n await this.backend.stop();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async deleteSelectedTrack() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n const track = this.playlist[selectedIndex];\n if (!track) {\n return;\n }\n\n if (!this.deleteTrack || !this.reloadPlaylist) {\n this.reportError(new Error(\"Beatmap deletion is unavailable in this session.\"));\n return;\n }\n\n const currentTrack =\n this.currentIndex !== null ? this.playlist[this.currentIndex] ?? null : null;\n const deletingCurrentTrack =\n currentTrack !== null && currentTrack.beatmapSetKey === track.beatmapSetKey;\n\n try {\n this.clearError();\n\n if (deletingCurrentTrack) {\n await this.backend.stop();\n this.currentIndex = null;\n }\n\n await this.deleteTrack(track);\n this.playlist = await this.reloadPlaylist();\n this.selectedIndex = clampIndex(selectedIndex, this.playlist.length);\n\n if (this.searchQuery) {\n const matchedIndex = findTrackIndexByQuery(this.playlist, this.searchQuery);\n if (matchedIndex !== -1) {\n this.selectedIndex = matchedIndex;\n }\n }\n\n if (!deletingCurrentTrack && currentTrack) {\n const nextCurrentIndex = this.playlist.findIndex(\n (playlistTrack) => playlistTrack.hash === currentTrack.hash,\n );\n this.currentIndex = nextCurrentIndex === -1 ? null : nextCurrentIndex;\n }\n\n this.emit();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n reportError(error: unknown) {\n this.errorMessage =\n error instanceof Error ? error.message : String(error);\n this.emit();\n }\n\n private clearError() {\n if (this.errorMessage === null) {\n return;\n }\n\n this.errorMessage = null;\n }\n\n private emit() {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) {\n listener(snapshot);\n }\n }\n\n private async playIndex(index: number) {\n const track = this.playlist[index];\n if (!track) {\n return;\n }\n\n const previousIndex = this.currentIndex;\n this.currentIndex = index;\n\n try {\n this.clearError();\n await this.backend.play(track.path);\n } catch (error) {\n this.currentIndex = previousIndex;\n this.reportError(error);\n return;\n }\n\n // Keep the cursor on the track that is now playing so n/p (and\n // auto-advance) move the selection along with playback.\n this.selectedIndex = index;\n this.emit();\n }\n\n private getAdjacentIndex(delta: number, wrap = false) {\n if (this.playlist.length === 0) {\n return null;\n }\n\n const baseIndex = this.currentIndex ?? this.selectedIndex;\n const nextIndex = baseIndex + delta;\n const shouldWrap = wrap || this.loop;\n\n if (nextIndex < 0) {\n return shouldWrap ? this.playlist.length - 1 : null;\n }\n\n if (nextIndex >= this.playlist.length) {\n return shouldWrap ? 0 : null;\n }\n\n return nextIndex;\n }\n\n private handleBackendEvent(event: PlayerBackendEvent) {\n switch (event.type) {\n case \"state\":\n this.emit();\n return;\n case \"error\":\n this.reportError(event.error);\n return;\n case \"ended\":\n void this.enqueueOperation(async () => {\n if (event.reason === \"eof\") {\n const nextIndex = this.getAdjacentIndex(1);\n if (nextIndex !== null) {\n await this.playIndex(nextIndex);\n return;\n }\n }\n\n this.emit();\n });\n }\n }\n\n private enqueueOperation(operation: () => Promise<void>) {\n const queuedOperation = this.operationQueue.then(operation, operation);\n this.operationQueue = queuedOperation.catch(() => {});\n return queuedOperation;\n }\n\n private syncSelectionToSearch() {\n const matchedIndex = findTrackIndexByQuery(this.playlist, this.searchQuery);\n if (matchedIndex !== -1) {\n this.selectedIndex = matchedIndex;\n }\n\n this.emit();\n }\n}\n",
|
|
19
|
-
"import {\n type Component,\n decodeKittyPrintable,\n Key,\n matchesKey,\n truncateToWidth,\n} from \"@earendil-works/pi-tui\";\n\nimport type { PlaylistPlayerSession } from \"../player/mod.js\";\nimport type { PlaylistPlayerSnapshot } from \"../player/types.js\";\n\nconst RESET = \"\\x1b[0m\";\nconst DIM = \"\\x1b[2m\";\nconst RED = \"\\x1b[31m\";\nconst CYAN = \"\\x1b[36m\";\nconst BOLD = \"\\x1b[1m\";\nconst INVERSE = \"\\x1b[7m\";\n\nconst MIN_LIST_ROWS = 4;\nconst RESERVED_ROWS = 5;\nconst PAGE_SIZE = 10;\nconst PENDING_G_TIMEOUT_MS = 400;\nconst SEEK_SECONDS = 5;\n\nconst STATUS_GLYPH: Record<string, string> = {\n paused: \"⏸\",\n playing: \"▶\",\n stopped: \"■\",\n};\n\nfunction style(text: string, code: string) {\n return `${code}${text}${RESET}`;\n}\n\nfunction progressBar(\n position: number | null,\n duration: number | null,\n width: number,\n) {\n const span = Math.max(4, width);\n const ratio =\n duration && duration > 0 && position !== null\n ? Math.max(0, Math.min(position / duration, 1))\n : 0;\n const filled = Math.round(ratio * span);\n\n return (\n style(\"━\".repeat(filled), CYAN) + style(\"─\".repeat(span - filled), DIM)\n );\n}\n\nfunction padIndex(index: number, total: number) {\n const width = String(Math.max(total, 1)).length;\n return String(index + 1).padStart(width, \" \");\n}\n\nfunction formatSeconds(seconds: number | null) {\n if (seconds === null || Number.isNaN(seconds)) {\n return \"--:--\";\n }\n\n const rounded = Math.max(0, Math.floor(seconds));\n const minutes = Math.floor(rounded / 60);\n const remainingSeconds = rounded % 60;\n\n return `${String(minutes).padStart(2, \"0\")}:${String(remainingSeconds).padStart(2, \"0\")}`;\n}\n\nfunction decodePrintableText(data: string) {\n const kittyPrintable = decodeKittyPrintable(data);\n if (kittyPrintable !== undefined) {\n return kittyPrintable;\n }\n\n const hasControlChars = [...data].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n\n return hasControlChars ? undefined : data;\n}\n\nexport function getVisibleTrackRange(\n selectedIndex: number,\n totalTracks: number,\n maxVisible: number,\n) {\n if (totalTracks <= 0 || maxVisible <= 0) {\n return { end: 0, start: 0 };\n }\n\n const clampedSelectedIndex = Math.max(\n 0,\n Math.min(selectedIndex, totalTracks - 1),\n );\n const start = Math.max(\n 0,\n Math.min(\n clampedSelectedIndex - Math.floor(maxVisible / 2),\n totalTracks - maxVisible,\n ),\n );\n\n return {\n end: Math.min(totalTracks, start + maxVisible),\n start,\n };\n}\n\nexport class PlaylistPlayerScreen implements Component {\n private deleteConfirmationTrackKey: string | null = null;\n\n private pendingGoToTop = false;\n\n private pendingGoToTopTimer: ReturnType<typeof setTimeout> | null = null;\n\n private searchMode = false;\n\n private snapshot: PlaylistPlayerSnapshot;\n\n onQuit?: () => void;\n\n constructor(\n private readonly session: PlaylistPlayerSession,\n private readonly getViewportHeight: () => number,\n ) {\n this.snapshot = session.getSnapshot();\n }\n\n setSnapshot(snapshot: PlaylistPlayerSnapshot) {\n this.snapshot = snapshot;\n }\n\n invalidate() {\n // This screen renders from live snapshot state only.\n }\n\n handleInput(data: string) {\n if (this.deleteConfirmationTrackKey !== null) {\n this.handleDeleteConfirmationInput(data);\n return;\n }\n\n if (this.searchMode) {\n this.handleSearchInput(data);\n return;\n }\n\n if (matchesKey(data, Key.slash)) {\n this.searchMode = true;\n return;\n }\n\n if (matchesKey(data, \"g\")) {\n if (this.pendingGoToTop) {\n this.clearPendingGoToTop();\n this.session.selectHome();\n } else {\n this.armPendingGoToTop();\n }\n return;\n }\n\n this.clearPendingGoToTop();\n\n if (matchesKey(data, Key.ctrl(\"c\")) || matchesKey(data, \"q\")) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.up) || matchesKey(data, \"k\")) {\n this.session.moveSelection(-1);\n return;\n }\n\n if (matchesKey(data, Key.down) || matchesKey(data, \"j\")) {\n this.session.moveSelection(1);\n return;\n }\n\n if (matchesKey(data, Key.left) || matchesKey(data, \"h\")) {\n void this.session.seekBy(-SEEK_SECONDS);\n return;\n }\n\n if (matchesKey(data, Key.right) || matchesKey(data, \"l\")) {\n void this.session.seekBy(SEEK_SECONDS);\n return;\n }\n\n if (\n matchesKey(data, Key.pageUp)\n || matchesKey(data, Key.ctrl(\"u\"))\n || matchesKey(data, Key.ctrl(\"b\"))\n ) {\n this.session.moveSelectionPage(-1, PAGE_SIZE);\n return;\n }\n\n if (\n matchesKey(data, Key.pageDown)\n || matchesKey(data, Key.ctrl(\"d\"))\n || matchesKey(data, Key.ctrl(\"f\"))\n ) {\n this.session.moveSelectionPage(1, PAGE_SIZE);\n return;\n }\n\n if (matchesKey(data, Key.home) || matchesKey(data, \"0\")) {\n this.session.selectHome();\n return;\n }\n\n if (matchesKey(data, Key.end) || matchesKey(data, Key.shift(\"g\"))) {\n this.session.selectEnd();\n return;\n }\n\n if (matchesKey(data, Key.shift(\"h\"))) {\n this.moveSelectionToVisibleAnchor(\"top\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"m\"))) {\n this.moveSelectionToVisibleAnchor(\"middle\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"l\"))) {\n this.moveSelectionToVisibleAnchor(\"bottom\");\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n void this.session.playSelected();\n return;\n }\n\n if (matchesKey(data, \"d\")) {\n this.armDeleteConfirmation();\n return;\n }\n\n if (matchesKey(data, Key.space)) {\n void this.session.togglePause();\n return;\n }\n\n if (matchesKey(data, \"n\")) {\n void this.session.playNext();\n return;\n }\n\n if (matchesKey(data, \"p\")) {\n void this.session.playPrevious();\n return;\n }\n\n if (matchesKey(data, \"s\")) {\n void this.session.stop();\n return;\n }\n\n if (matchesKey(data, \"r\")) {\n this.session.toggleLoop();\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.session.clearSearch();\n return;\n }\n }\n\n render(width: number) {\n const { playlist } = this.snapshot;\n const viewportHeight = Math.max(this.getViewportHeight(), RESERVED_ROWS);\n const listHeight = this.getListHeight(viewportHeight);\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n playlist.length,\n listHeight,\n );\n\n const position = formatSeconds(this.snapshot.timePositionSeconds);\n const duration = formatSeconds(this.snapshot.durationSeconds);\n const glyph = STATUS_GLYPH[this.snapshot.status] ?? \"·\";\n const isIdle = this.snapshot.currentTrack === null;\n const nowPlaying = `${glyph} ${\n this.snapshot.currentTrack?.title ?? \"nothing playing\"\n }`;\n const barWidth = Math.max(\n 4,\n width - position.length - duration.length - 2,\n );\n\n const lines: string[] = [\n truncateToWidth(\n isIdle ? style(nowPlaying, DIM) : style(nowPlaying, BOLD + CYAN),\n width,\n ),\n truncateToWidth(\n `${style(position, DIM)} ${progressBar(\n this.snapshot.timePositionSeconds,\n this.snapshot.durationSeconds,\n barWidth,\n )} ${style(duration, DIM)}`,\n width,\n ),\n ];\n\n if (this.snapshot.errorMessage) {\n lines.push(\n truncateToWidth(style(`✗ ${this.snapshot.errorMessage}`, RED), width),\n );\n } else if (this.deleteConfirmationTrackKey !== null) {\n lines.push(\n truncateToWidth(\n style(\"delete this beatmap set? enter/d/y confirm · any key cancel\", RED),\n width,\n ),\n );\n } else if (this.searchMode || this.snapshot.searchQuery) {\n lines.push(\n truncateToWidth(\n style(\n `/ ${this.snapshot.searchQuery}${this.searchMode ? \"▏\" : \"\"}`,\n CYAN,\n ),\n width,\n ),\n );\n } else {\n lines.push(\n truncateToWidth(\n style(\n `${this.snapshot.selectedIndex + 1}/${Math.max(\n playlist.length,\n 1,\n )} · loop ${this.snapshot.loop ? \"on\" : \"off\"} · ${\n this.snapshot.backendName\n }`,\n DIM,\n ),\n width,\n ),\n );\n }\n\n if (playlist.length === 0) {\n lines.push(\n truncateToWidth(\"No tracks were found in your osu!lazer library.\", width),\n );\n } else {\n for (let index = start; index < end; index += 1) {\n const track = playlist[index];\n if (!track) {\n continue;\n }\n\n const isCurrent = index === this.snapshot.currentIndex;\n const isSelected = index === this.snapshot.selectedIndex;\n const marker = isCurrent ? \"▶\" : \" \";\n const line = ` ${marker} ${padIndex(index, playlist.length)} ${track.title}`;\n lines.push(\n truncateToWidth(\n isSelected\n ? style(line, INVERSE)\n : isCurrent\n ? style(line, CYAN)\n : line,\n width,\n ),\n );\n }\n }\n\n while (lines.length < viewportHeight - 1) {\n lines.push(\"\");\n }\n\n lines.push(\n truncateToWidth(\n style(\n this.searchMode\n ? \"type to jump · backspace edit · enter keep · esc leave\"\n : \"j/k move · ⏎ play · space pause · n/p track · h/l seek · r loop · d delete · / search · q quit\",\n DIM,\n ),\n width,\n ),\n );\n\n return lines;\n }\n\n private armPendingGoToTop() {\n this.pendingGoToTop = true;\n this.pendingGoToTopTimer = setTimeout(() => {\n this.pendingGoToTop = false;\n this.pendingGoToTopTimer = null;\n }, PENDING_G_TIMEOUT_MS);\n }\n\n private clearPendingGoToTop() {\n if (this.pendingGoToTopTimer) {\n clearTimeout(this.pendingGoToTopTimer);\n this.pendingGoToTopTimer = null;\n }\n\n this.pendingGoToTop = false;\n }\n\n private armDeleteConfirmation() {\n const selectedTrack = this.snapshot.playlist[this.snapshot.selectedIndex];\n if (!selectedTrack) {\n return;\n }\n\n this.deleteConfirmationTrackKey = selectedTrack.beatmapSetKey;\n }\n\n private clearDeleteConfirmation() {\n this.deleteConfirmationTrackKey = null;\n }\n\n private handleDeleteConfirmationInput(data: string) {\n if (\n matchesKey(data, Key.enter)\n || matchesKey(data, \"d\")\n || matchesKey(data, \"y\")\n ) {\n this.clearDeleteConfirmation();\n void this.session.deleteSelectedTrack();\n return;\n }\n\n this.clearDeleteConfirmation();\n }\n\n private handleSearchInput(data: string) {\n if (matchesKey(data, Key.ctrl(\"c\"))) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.ctrl(\"u\"))) {\n this.session.clearSearch();\n return;\n }\n\n const printable = decodePrintableText(data);\n if (!printable || printable === \" \") {\n return;\n }\n\n this.session.appendSearchQuery(printable);\n }\n\n private getListHeight(viewportHeight: number) {\n return Math.max(MIN_LIST_ROWS, viewportHeight - RESERVED_ROWS);\n }\n\n private moveSelectionToVisibleAnchor(\n anchor: \"bottom\" | \"middle\" | \"top\",\n ) {\n if (this.snapshot.playlist.length === 0) {\n return;\n }\n\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n this.snapshot.playlist.length,\n this.getListHeight(Math.max(this.getViewportHeight(), RESERVED_ROWS)),\n );\n const lastVisibleIndex = Math.max(start, end - 1);\n\n switch (anchor) {\n case \"top\":\n this.session.setSelectionIndex(start);\n return;\n case \"middle\":\n this.session.setSelectionIndex(\n start + Math.floor((lastVisibleIndex - start) / 2),\n );\n return;\n case \"bottom\":\n this.session.setSelectionIndex(lastVisibleIndex);\n }\n }\n}\n",
|
|
19
|
+
"import {\n type Component,\n decodeKittyPrintable,\n Key,\n matchesKey,\n truncateToWidth,\n} from \"@earendil-works/pi-tui\";\n\nimport type { PlaylistPlayerSession } from \"../player/mod.js\";\nimport type { PlaylistPlayerSnapshot } from \"../player/types.js\";\n\nconst RESET = \"\\x1b[0m\";\nconst DIM = \"\\x1b[2m\";\nconst RED = \"\\x1b[31m\";\nconst CYAN = \"\\x1b[36m\";\nconst BOLD = \"\\x1b[1m\";\nconst INVERSE = \"\\x1b[7m\";\n\nconst MIN_LIST_ROWS = 4;\nconst RESERVED_ROWS = 5;\nconst PAGE_SIZE = 10;\nconst PENDING_G_TIMEOUT_MS = 400;\nconst SEEK_SECONDS = 5;\n\nconst STATUS_GLYPH: Record<string, string> = {\n paused: \"⏸\",\n playing: \"▶\",\n stopped: \"■\",\n};\n\nfunction style(text: string, code: string) {\n return `${code}${text}${RESET}`;\n}\n\nfunction progressBar(\n position: number | null,\n duration: number | null,\n width: number,\n) {\n const span = Math.max(4, width);\n const ratio =\n duration && duration > 0 && position !== null\n ? Math.max(0, Math.min(position / duration, 1))\n : 0;\n const filled = Math.round(ratio * span);\n\n return (\n style(\"━\".repeat(filled), CYAN) + style(\"─\".repeat(span - filled), DIM)\n );\n}\n\nfunction padIndex(index: number, total: number) {\n const width = String(Math.max(total, 1)).length;\n return String(index + 1).padStart(width, \" \");\n}\n\nfunction formatSeconds(seconds: number | null) {\n if (seconds === null || Number.isNaN(seconds)) {\n return \"--:--\";\n }\n\n const rounded = Math.max(0, Math.floor(seconds));\n const minutes = Math.floor(rounded / 60);\n const remainingSeconds = rounded % 60;\n\n return `${String(minutes).padStart(2, \"0\")}:${String(remainingSeconds).padStart(2, \"0\")}`;\n}\n\nfunction decodePrintableText(data: string) {\n const kittyPrintable = decodeKittyPrintable(data);\n if (kittyPrintable !== undefined) {\n return kittyPrintable;\n }\n\n const hasControlChars = [...data].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n\n return hasControlChars ? undefined : data;\n}\n\nexport function getVisibleTrackRange(\n selectedIndex: number,\n totalTracks: number,\n maxVisible: number,\n) {\n if (totalTracks <= 0 || maxVisible <= 0) {\n return { end: 0, start: 0 };\n }\n\n const clampedSelectedIndex = Math.max(\n 0,\n Math.min(selectedIndex, totalTracks - 1),\n );\n const start = Math.max(\n 0,\n Math.min(\n clampedSelectedIndex - Math.floor(maxVisible / 2),\n totalTracks - maxVisible,\n ),\n );\n\n return {\n end: Math.min(totalTracks, start + maxVisible),\n start,\n };\n}\n\nexport class PlaylistPlayerScreen implements Component {\n private deleteConfirmationTrackKey: string | null = null;\n\n private pendingGoToTop = false;\n\n private pendingGoToTopTimer: ReturnType<typeof setTimeout> | null = null;\n\n private searchMode = false;\n\n private snapshot: PlaylistPlayerSnapshot;\n\n onQuit?: () => void;\n\n constructor(\n private readonly session: PlaylistPlayerSession,\n private readonly getViewportHeight: () => number,\n ) {\n this.snapshot = session.getSnapshot();\n }\n\n setSnapshot(snapshot: PlaylistPlayerSnapshot) {\n this.snapshot = snapshot;\n }\n\n invalidate() {\n // This screen renders from live snapshot state only.\n }\n\n handleInput(data: string) {\n if (this.deleteConfirmationTrackKey !== null) {\n this.handleDeleteConfirmationInput(data);\n return;\n }\n\n if (this.searchMode) {\n this.handleSearchInput(data);\n return;\n }\n\n if (matchesKey(data, Key.slash)) {\n this.searchMode = true;\n return;\n }\n\n if (matchesKey(data, \"g\")) {\n if (this.pendingGoToTop) {\n this.clearPendingGoToTop();\n this.session.selectHome();\n } else {\n this.armPendingGoToTop();\n }\n return;\n }\n\n this.clearPendingGoToTop();\n\n if (matchesKey(data, Key.ctrl(\"c\")) || matchesKey(data, \"q\")) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.up) || matchesKey(data, \"k\")) {\n this.session.moveSelection(-1);\n return;\n }\n\n if (matchesKey(data, Key.down) || matchesKey(data, \"j\")) {\n this.session.moveSelection(1);\n return;\n }\n\n if (matchesKey(data, Key.left) || matchesKey(data, \"h\")) {\n void this.session.seekBy(-SEEK_SECONDS);\n return;\n }\n\n if (matchesKey(data, Key.right) || matchesKey(data, \"l\")) {\n void this.session.seekBy(SEEK_SECONDS);\n return;\n }\n\n if (\n matchesKey(data, Key.pageUp)\n || matchesKey(data, Key.ctrl(\"u\"))\n || matchesKey(data, Key.ctrl(\"b\"))\n ) {\n this.session.moveSelectionPage(-1, PAGE_SIZE);\n return;\n }\n\n if (\n matchesKey(data, Key.pageDown)\n || matchesKey(data, Key.ctrl(\"d\"))\n || matchesKey(data, Key.ctrl(\"f\"))\n ) {\n this.session.moveSelectionPage(1, PAGE_SIZE);\n return;\n }\n\n if (matchesKey(data, Key.home) || matchesKey(data, \"0\")) {\n this.session.selectHome();\n return;\n }\n\n if (matchesKey(data, Key.end) || matchesKey(data, Key.shift(\"g\"))) {\n this.session.selectEnd();\n return;\n }\n\n if (matchesKey(data, Key.shift(\"h\"))) {\n this.moveSelectionToVisibleAnchor(\"top\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"m\"))) {\n this.moveSelectionToVisibleAnchor(\"middle\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"l\"))) {\n this.moveSelectionToVisibleAnchor(\"bottom\");\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n void this.session.playSelected();\n return;\n }\n\n if (matchesKey(data, \"d\")) {\n this.armDeleteConfirmation();\n return;\n }\n\n if (matchesKey(data, Key.space)) {\n void this.session.togglePause();\n return;\n }\n\n if (matchesKey(data, \"n\")) {\n void this.session.playNext();\n return;\n }\n\n if (matchesKey(data, \"p\")) {\n void this.session.playPrevious();\n return;\n }\n\n if (matchesKey(data, \"s\")) {\n void this.session.stop();\n return;\n }\n\n if (matchesKey(data, \"r\")) {\n this.session.toggleLoop();\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.session.clearSearch();\n return;\n }\n }\n\n render(width: number) {\n const { playlist } = this.snapshot;\n const viewportHeight = Math.max(this.getViewportHeight(), RESERVED_ROWS);\n const listHeight = this.getListHeight(viewportHeight);\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n playlist.length,\n listHeight,\n );\n\n const position = formatSeconds(this.snapshot.timePositionSeconds);\n const duration = formatSeconds(this.snapshot.durationSeconds);\n const glyph = STATUS_GLYPH[this.snapshot.status] ?? \"·\";\n const isIdle = this.snapshot.currentTrack === null;\n const nowPlaying = `${glyph} ${\n this.snapshot.currentTrack?.title ?? \"nothing playing\"\n }`;\n const barWidth = Math.max(\n 4,\n width - position.length - duration.length - 2,\n );\n\n const lines: string[] = [\n truncateToWidth(\n isIdle ? style(nowPlaying, DIM) : style(nowPlaying, BOLD + CYAN),\n width,\n ),\n truncateToWidth(\n `${style(position, DIM)} ${progressBar(\n this.snapshot.timePositionSeconds,\n this.snapshot.durationSeconds,\n barWidth,\n )} ${style(duration, DIM)}`,\n width,\n ),\n ];\n\n if (this.snapshot.errorMessage) {\n lines.push(\n truncateToWidth(style(`✗ ${this.snapshot.errorMessage}`, RED), width),\n );\n } else if (this.deleteConfirmationTrackKey !== null) {\n lines.push(\n truncateToWidth(\n style(\"delete this beatmap set? enter/d/y confirm · any key cancel\", RED),\n width,\n ),\n );\n } else if (this.searchMode || this.snapshot.searchQuery) {\n lines.push(\n truncateToWidth(\n style(\n `/ ${this.snapshot.searchQuery}${this.searchMode ? \"▏\" : \"\"}`,\n CYAN,\n ),\n width,\n ),\n );\n } else {\n lines.push(\n truncateToWidth(\n style(\n `${this.snapshot.selectedIndex + 1}/${Math.max(\n playlist.length,\n 1,\n )} · loop ${this.snapshot.loop ? \"on\" : \"off\"} · ${\n this.snapshot.backendName\n }`,\n DIM,\n ),\n width,\n ),\n );\n }\n\n if (playlist.length === 0) {\n lines.push(\n truncateToWidth(\"No tracks were found in your osu!lazer library.\", width),\n );\n } else {\n for (let index = start; index < end; index += 1) {\n const track = playlist[index];\n if (!track) {\n continue;\n }\n\n const isCurrent = index === this.snapshot.currentIndex;\n const isSelected = index === this.snapshot.selectedIndex;\n const marker = isCurrent ? \"▶\" : \" \";\n const line = ` ${marker} ${padIndex(index, playlist.length)} ${track.title}`;\n lines.push(\n truncateToWidth(\n isSelected\n ? style(line, INVERSE)\n : isCurrent\n ? style(line, CYAN)\n : line,\n width,\n ),\n );\n }\n }\n\n while (lines.length < viewportHeight - 1) {\n lines.push(\"\");\n }\n\n lines.push(\n truncateToWidth(\n style(\n this.searchMode\n ? \"type to jump · backspace edit · enter keep · esc leave\"\n : \"j/k move · ⏎ play · space pause · n/p track · h/l seek · r loop · d delete · / search · q quit\",\n DIM,\n ),\n width,\n ),\n );\n\n return lines;\n }\n\n private armPendingGoToTop() {\n this.pendingGoToTop = true;\n this.pendingGoToTopTimer = setTimeout(() => {\n this.pendingGoToTop = false;\n this.pendingGoToTopTimer = null;\n }, PENDING_G_TIMEOUT_MS);\n }\n\n private clearPendingGoToTop() {\n if (this.pendingGoToTopTimer) {\n clearTimeout(this.pendingGoToTopTimer);\n this.pendingGoToTopTimer = null;\n }\n\n this.pendingGoToTop = false;\n }\n\n private armDeleteConfirmation() {\n const selectedTrack = this.snapshot.playlist[this.snapshot.selectedIndex];\n if (!selectedTrack) {\n return;\n }\n\n this.deleteConfirmationTrackKey = selectedTrack.beatmapSetKey;\n }\n\n private clearDeleteConfirmation() {\n this.deleteConfirmationTrackKey = null;\n }\n\n private handleDeleteConfirmationInput(data: string) {\n if (\n matchesKey(data, Key.enter)\n || matchesKey(data, \"d\")\n || matchesKey(data, \"y\")\n ) {\n this.clearDeleteConfirmation();\n void this.session.deleteSelectedTrack();\n return;\n }\n\n this.clearDeleteConfirmation();\n }\n\n private handleSearchInput(data: string) {\n if (matchesKey(data, Key.ctrl(\"c\"))) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.ctrl(\"u\"))) {\n this.session.clearSearch();\n return;\n }\n\n const printable = decodePrintableText(data);\n if (!printable) {\n return;\n }\n\n this.session.appendSearchQuery(printable);\n }\n\n private getListHeight(viewportHeight: number) {\n return Math.max(MIN_LIST_ROWS, viewportHeight - RESERVED_ROWS);\n }\n\n private moveSelectionToVisibleAnchor(\n anchor: \"bottom\" | \"middle\" | \"top\",\n ) {\n if (this.snapshot.playlist.length === 0) {\n return;\n }\n\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n this.snapshot.playlist.length,\n this.getListHeight(Math.max(this.getViewportHeight(), RESERVED_ROWS)),\n );\n const lastVisibleIndex = Math.max(start, end - 1);\n\n switch (anchor) {\n case \"top\":\n this.session.setSelectionIndex(start);\n return;\n case \"middle\":\n this.session.setSelectionIndex(\n start + Math.floor((lastVisibleIndex - start) / 2),\n );\n return;\n case \"bottom\":\n this.session.setSelectionIndex(lastVisibleIndex);\n }\n }\n}\n",
|
|
20
20
|
"#!/usr/bin/env node\nimport { main } from \"./core/cli/main.js\";\n\nmain()\n .then(() => {\n process.exit(0);\n })\n .catch((error: unknown) => {\n console.error(\"Error:\", error);\n process.exit(1);\n });\n"
|
|
21
21
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
22
|
+
"mappings": "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",
|
|
23
|
+
"debugId": "A88389A773C17D8064756E2164756E21",
|
|
24
24
|
"names": []
|
|
25
25
|
}
|
package/dist/cli.js
CHANGED
|
@@ -1571,7 +1571,7 @@ class PlaylistPlayerScreen {
|
|
|
1571
1571
|
return;
|
|
1572
1572
|
}
|
|
1573
1573
|
const printable = decodePrintableText(data);
|
|
1574
|
-
if (!printable
|
|
1574
|
+
if (!printable) {
|
|
1575
1575
|
return;
|
|
1576
1576
|
}
|
|
1577
1577
|
this.session.appendSearchQuery(printable);
|
|
@@ -1742,4 +1742,4 @@ main().then(() => {
|
|
|
1742
1742
|
process.exit(1);
|
|
1743
1743
|
});
|
|
1744
1744
|
|
|
1745
|
-
//# debugId=
|
|
1745
|
+
//# debugId=434A8694113114A064756E2164756E21
|
package/dist/cli.js.map
CHANGED
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"import { hashedFilePath } from \"../utils/mod.js\";\n\nexport type PlaylistBeatmapMetadata = {\n AudioFile?: string | null;\n Title?: string | null;\n Artist?: string | null;\n TitleUnicode?: string | null;\n ArtistUnicode?: string | null;\n};\n\nexport type PlaylistBeatmap = {\n Metadata: PlaylistBeatmapMetadata;\n};\n\nexport type PlaylistFile = {\n Filename?: string | null;\n File?: {\n Hash?: string | null;\n } | null;\n};\n\nexport type PlaylistBeatmapSet = {\n DeletePending?: boolean;\n Beatmaps: Iterable<PlaylistBeatmap>;\n Files: Iterable<PlaylistFile>;\n Hash?: string | null;\n ID?: unknown;\n};\n\nexport type PlaylistTrack = {\n beatmapSetHash: string | null;\n beatmapSetId: unknown;\n beatmapSetKey: string;\n hash: string;\n path: string;\n title: string;\n};\n\nfunction uniqueParts(parts: Array<string | null | undefined>) {\n return [...new Set(parts.map((part) => part?.trim()).filter(Boolean))];\n}\n\nexport function formatTrackTitle(metadata: PlaylistBeatmapMetadata) {\n const title = uniqueParts([metadata.Title, metadata.TitleUnicode]).join(\" / \");\n const artist = uniqueParts([metadata.Artist, metadata.ArtistUnicode]).join(\" / \");\n\n return `${title || \"Unknown Title\"} - ${artist || \"Unknown Artist\"}`;\n}\n\nexport function getNamedFileHash(fileName: string, beatmapSet: PlaylistBeatmapSet) {\n for (const file of beatmapSet.Files) {\n if (file.Filename === fileName && file.File?.Hash) {\n return file.File.Hash;\n }\n }\n\n return undefined;\n}\n\nexport function buildPlaylist(\n beatmapSets: Iterable<PlaylistBeatmapSet>,\n osuDataDir: string,\n) {\n const seenHashes = new Set<string>();\n const playlist: PlaylistTrack[] = [];\n\n for (const beatmapSet of beatmapSets) {\n if (beatmapSet.DeletePending) {\n continue;\n }\n\n for (const beatmap of beatmapSet.Beatmaps) {\n const hash = getNamedFileHash(beatmap.Metadata.AudioFile ?? \"\", beatmapSet);\n if (!hash || seenHashes.has(hash)) {\n continue;\n }\n\n seenHashes.add(hash);\n playlist.push({\n beatmapSetHash: beatmapSet.Hash ?? null,\n beatmapSetId: beatmapSet.ID,\n beatmapSetKey: String(beatmapSet.ID ?? hash),\n hash,\n path: hashedFilePath(hash, osuDataDir),\n title: formatTrackTitle(beatmap.Metadata),\n });\n }\n }\n\n return playlist;\n}\n",
|
|
17
17
|
"import { spawn, type ChildProcess } from \"node:child_process\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport net from \"node:net\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { setTimeout as delay } from \"node:timers/promises\";\n\nimport type {\n PlayerBackend,\n PlayerBackendEvent,\n PlayerBackendListener,\n PlayerBackendSnapshot,\n} from \"./types.js\";\n\ntype PendingCommand = {\n reject: (error: Error) => void;\n resolve: (value: unknown) => void;\n};\n\ntype MpvResponse = {\n data?: unknown;\n error?: string;\n event?: string;\n name?: string;\n reason?: string;\n request_id?: number;\n};\n\nfunction getErrorCode(error: unknown) {\n if (error && typeof error === \"object\" && \"code\" in error) {\n const { code } = error as NodeJS.ErrnoException;\n return typeof code === \"string\" ? code : null;\n }\n\n return null;\n}\n\nfunction isRetryableSocketError(error: unknown) {\n const code = getErrorCode(error);\n if (code) {\n return (\n code === \"ENOENT\"\n || code === \"ECONNREFUSED\"\n || code === \"EPERM\"\n || code === \"EACCES\"\n );\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes(\"ENOENT\")\n || message.includes(\"ECONNREFUSED\")\n || message.includes(\"EPERM\")\n || message.includes(\"EACCES\")\n );\n}\n\nfunction createSocketPath() {\n const id = `osu-play-mpv-${process.pid}-${Date.now()}`;\n if (process.platform === \"win32\") {\n return `\\\\\\\\.\\\\pipe\\\\${id}`;\n }\n\n return path.join(os.tmpdir(), `${id}.sock`);\n}\n\nfunction isControlText(value: string) {\n return [...value].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n}\n\nexport class MpvPlayerBackend implements PlayerBackend {\n readonly name = \"mpv\";\n\n private connectPromise: Promise<void> | null = null;\n\n private disposePromise: Promise<void> | null = null;\n\n private disposing = false;\n\n private readonly listeners = new Set<PlayerBackendListener>();\n\n private readonly pendingCommands = new Map<number, PendingCommand>();\n\n private idleActive = true;\n\n private process: ChildProcess | null = null;\n\n private requestId = 0;\n\n private responseBuffer = \"\";\n\n private snapshot: PlayerBackendSnapshot = {\n backendName: \"mpv\",\n currentPath: null,\n durationSeconds: null,\n errorMessage: null,\n status: \"stopped\",\n timePositionSeconds: null,\n };\n\n private socket: net.Socket | null = null;\n\n private readonly socketPath = createSocketPath();\n\n private stderrBuffer = \"\";\n\n getSnapshot() {\n return this.snapshot;\n }\n\n subscribe(listener: PlayerBackendListener) {\n this.listeners.add(listener);\n listener({\n snapshot: this.snapshot,\n type: \"state\",\n });\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n async start() {\n if (this.socket && !this.socket.destroyed) {\n return;\n }\n\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = this.startInternal();\n\n try {\n await this.connectPromise;\n } finally {\n this.connectPromise = null;\n }\n }\n\n async play(filePath: string) {\n await this.start();\n\n const previousSnapshot = this.snapshot;\n\n try {\n await this.sendCommand([\"loadfile\", filePath, \"replace\"]);\n await this.sendCommand([\"set_property\", \"pause\", false]);\n } catch (error) {\n this.snapshot = previousSnapshot;\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n throw error;\n }\n\n this.idleActive = false;\n this.snapshot = {\n ...this.snapshot,\n currentPath: filePath,\n errorMessage: null,\n status: \"playing\",\n timePositionSeconds: this.snapshot.timePositionSeconds ?? 0,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n async togglePause() {\n await this.start();\n await this.sendCommand([\"cycle\", \"pause\"]);\n }\n\n async seekBy(seconds: number) {\n await this.start();\n await this.sendCommand([\"seek\", seconds, \"relative\"]);\n }\n\n async stop() {\n if (!this.socket || this.socket.destroyed) {\n return;\n }\n\n await this.sendCommand([\"stop\"]);\n this.idleActive = true;\n this.snapshot = {\n ...this.snapshot,\n status: \"stopped\",\n timePositionSeconds: null,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n async dispose() {\n if (this.disposePromise) {\n return this.disposePromise;\n }\n\n this.disposePromise = this.disposeInternal();\n\n try {\n await this.disposePromise;\n } finally {\n this.disposePromise = null;\n }\n }\n\n private emit(event: PlayerBackendEvent) {\n for (const listener of this.listeners) {\n listener(event);\n }\n }\n\n private async startInternal() {\n this.cleanupSocketPath();\n this.disposing = false;\n this.stderrBuffer = \"\";\n\n const processHandle = spawn(\n \"mpv\",\n [\n \"--no-config\",\n \"--no-terminal\",\n \"--idle=yes\",\n \"--force-window=no\",\n \"--audio-display=no\",\n \"--really-quiet\",\n `--input-ipc-server=${this.socketPath}`,\n ],\n {\n stdio: [\"ignore\", \"ignore\", \"pipe\"],\n },\n );\n\n this.process = processHandle;\n\n processHandle.stderr.setEncoding(\"utf8\");\n processHandle.stderr.on(\"data\", (chunk: string) => {\n this.stderrBuffer = `${this.stderrBuffer}${chunk}`.slice(-4000);\n });\n\n processHandle.once(\"error\", (error) => {\n this.handleError(error);\n });\n\n processHandle.once(\"exit\", (code, signal) => {\n if (this.disposing) {\n return;\n }\n\n const detail = this.stderrBuffer.trim();\n const suffix = detail ? `\\n${detail}` : \"\";\n this.handleError(\n new Error(\n `mpv exited unexpectedly with ${signal ? `signal ${signal}` : `code ${code}`}.${suffix}`,\n ),\n );\n });\n\n await this.connectSocket();\n await Promise.all([\n this.sendCommand([\"observe_property\", 1, \"pause\"]),\n this.sendCommand([\"observe_property\", 2, \"time-pos\"]),\n this.sendCommand([\"observe_property\", 3, \"duration\"]),\n this.sendCommand([\"observe_property\", 4, \"idle-active\"]),\n ]);\n }\n\n private async connectSocket() {\n const start = Date.now();\n const timeoutMs = 5000;\n\n while (Date.now() - start < timeoutMs) {\n if (!this.process || this.process.exitCode !== null) {\n throw new Error(this.formatStartupError(\"mpv exited before opening its IPC socket.\"));\n }\n\n try {\n await this.attachSocket();\n return;\n } catch (error) {\n if (!isRetryableSocketError(error)) {\n throw error;\n }\n }\n\n await delay(50);\n }\n\n throw new Error(this.formatStartupError(\"Timed out waiting for mpv IPC to become ready.\"));\n }\n\n private async attachSocket() {\n await new Promise<void>((resolve, reject) => {\n const socket = net.createConnection(this.socketPath);\n\n const onError = (error: Error) => {\n socket.destroy();\n reject(error);\n };\n\n socket.once(\"error\", onError);\n socket.once(\"connect\", () => {\n socket.removeListener(\"error\", onError);\n socket.setEncoding(\"utf8\");\n socket.on(\"data\", (chunk: string) => {\n this.handleSocketData(chunk);\n });\n socket.on(\"error\", (error) => {\n if (!this.disposing) {\n this.handleError(error);\n }\n });\n socket.on(\"close\", () => {\n if (!this.disposing) {\n this.handleError(new Error(\"mpv IPC socket closed unexpectedly.\"));\n }\n });\n this.socket = socket;\n resolve();\n });\n });\n }\n\n private async sendCommand(command: unknown[]) {\n const socket = this.socket;\n if (!socket || socket.destroyed) {\n throw new Error(\"mpv IPC socket is not connected.\");\n }\n\n const requestId = ++this.requestId;\n\n return new Promise<unknown>((resolve, reject) => {\n this.pendingCommands.set(requestId, { reject, resolve });\n\n socket.write(\n `${JSON.stringify({ command, request_id: requestId })}\\n`,\n (error) => {\n if (!error) {\n return;\n }\n\n this.pendingCommands.delete(requestId);\n reject(error);\n },\n );\n });\n }\n\n private handleSocketData(chunk: string) {\n this.responseBuffer += chunk;\n\n while (true) {\n const newlineIndex = this.responseBuffer.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n return;\n }\n\n const line = this.responseBuffer.slice(0, newlineIndex).trim();\n this.responseBuffer = this.responseBuffer.slice(newlineIndex + 1);\n\n if (!line) {\n continue;\n }\n\n try {\n const response = JSON.parse(line) as MpvResponse;\n this.handleResponse(response);\n } catch (error) {\n this.handleError(\n new Error(\n `Failed to parse mpv IPC message: ${\n error instanceof Error ? error.message : String(error)\n }`,\n ),\n );\n }\n }\n }\n\n private handleResponse(response: MpvResponse) {\n if (typeof response.request_id === \"number\") {\n const pending = this.pendingCommands.get(response.request_id);\n if (pending) {\n this.pendingCommands.delete(response.request_id);\n if (response.error && response.error !== \"success\") {\n pending.reject(new Error(`mpv command failed: ${response.error}`));\n } else {\n pending.resolve(response.data);\n }\n }\n return;\n }\n\n if (response.event === \"property-change\") {\n this.applyPropertyChange(response.name, response.data);\n return;\n }\n\n if (response.event === \"end-file\") {\n const reason = response.reason ?? \"unknown\";\n if (reason !== \"stop\" && reason !== \"redirect\") {\n this.snapshot = {\n ...this.snapshot,\n status: \"stopped\",\n timePositionSeconds:\n reason === \"eof\" ? this.snapshot.durationSeconds : this.snapshot.timePositionSeconds,\n };\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n this.emit({\n reason,\n type: \"ended\",\n });\n }\n }\n\n private applyPropertyChange(name: string | undefined, data: unknown) {\n switch (name) {\n case \"pause\":\n this.snapshot = {\n ...this.snapshot,\n status: data === true ? \"paused\" : this.idleActive ? \"stopped\" : \"playing\",\n };\n break;\n case \"time-pos\":\n this.snapshot = {\n ...this.snapshot,\n timePositionSeconds: typeof data === \"number\" ? data : null,\n };\n break;\n case \"duration\":\n this.snapshot = {\n ...this.snapshot,\n durationSeconds: typeof data === \"number\" ? data : null,\n };\n break;\n case \"idle-active\":\n this.idleActive = data === true;\n this.snapshot = {\n ...this.snapshot,\n status:\n data === true\n ? \"stopped\"\n : this.snapshot.status === \"paused\"\n ? \"paused\"\n : \"playing\",\n timePositionSeconds:\n data === true ? this.snapshot.durationSeconds : this.snapshot.timePositionSeconds,\n };\n break;\n default:\n return;\n }\n\n this.emit({\n snapshot: this.snapshot,\n type: \"state\",\n });\n }\n\n private handleError(error: unknown) {\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n\n this.snapshot = {\n ...this.snapshot,\n errorMessage: normalizedError.message,\n status: \"stopped\",\n };\n\n this.emit({\n error: normalizedError,\n type: \"error\",\n });\n\n for (const [requestId, pending] of this.pendingCommands) {\n this.pendingCommands.delete(requestId);\n pending.reject(normalizedError);\n }\n }\n\n private async disposeInternal() {\n this.disposing = true;\n\n if (this.socket && !this.socket.destroyed) {\n try {\n await this.sendCommand([\"quit\"]);\n } catch {\n // Ignore quit errors during shutdown.\n }\n }\n\n this.socket?.destroy();\n this.socket = null;\n\n const processHandle = this.process;\n this.process = null;\n if (processHandle && processHandle.exitCode === null) {\n processHandle.kill(\"SIGTERM\");\n await Promise.race([\n new Promise<void>((resolve) => {\n processHandle.once(\"exit\", () => resolve());\n }),\n delay(1000),\n ]);\n\n if (processHandle.exitCode === null) {\n processHandle.kill(\"SIGKILL\");\n }\n }\n\n this.cleanupSocketPath();\n }\n\n private cleanupSocketPath() {\n if (process.platform === \"win32\") {\n return;\n }\n\n if (existsSync(this.socketPath)) {\n rmSync(this.socketPath, { force: true });\n }\n }\n\n private formatStartupError(message: string) {\n const stderr = this.stderrBuffer.trim();\n const cleanStderr = stderr && !isControlText(stderr) ? `\\n${stderr}` : \"\";\n\n return [\n message,\n \"osu-play now expects `mpv` to be installed and available on PATH for TUI playback.\",\n cleanStderr,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n }\n}\n",
|
|
18
18
|
"import type { PlaylistTrack } from \"../playlist/mod.js\";\nimport type {\n PlayerBackend,\n PlayerBackendEvent,\n PlaylistPlayerListener,\n PlaylistPlayerSnapshot,\n} from \"./types.js\";\n\nfunction clampIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return Math.max(0, Math.min(index, length - 1));\n}\n\nfunction wrapIndex(index: number, length: number) {\n if (length <= 0) {\n return 0;\n }\n\n return ((index % length) + length) % length;\n}\n\nfunction normalizeSearchText(text: string) {\n return text.trim().toLowerCase();\n}\n\nexport function findTrackIndexByQuery(\n playlist: PlaylistTrack[],\n query: string,\n) {\n const normalizedQuery = normalizeSearchText(query);\n if (!normalizedQuery) {\n return -1;\n }\n\n return playlist.findIndex((track) =>\n normalizeSearchText(track.title).includes(normalizedQuery),\n );\n}\n\ntype PlaylistPlayerSessionOptions = {\n deleteTrack?: (track: PlaylistTrack) => Promise<void>;\n loop?: boolean;\n reloadPlaylist?: () => Promise<PlaylistTrack[]>;\n};\n\nexport class PlaylistPlayerSession {\n private readonly listeners = new Set<PlaylistPlayerListener>();\n\n private currentIndex: number | null = null;\n\n private errorMessage: string | null = null;\n\n private loop: boolean;\n\n private deleteTrack?: (track: PlaylistTrack) => Promise<void>;\n\n private playlist: PlaylistTrack[];\n\n private readonly reloadPlaylist?: () => Promise<PlaylistTrack[]>;\n\n private searchQuery = \"\";\n\n private selectedIndex = 0;\n\n private operationQueue: Promise<void> = Promise.resolve();\n\n private readonly unsubscribeBackend: () => void;\n\n constructor(\n playlist: PlaylistTrack[],\n private readonly backend: PlayerBackend,\n options: PlaylistPlayerSessionOptions = {},\n ) {\n this.playlist = playlist;\n this.deleteTrack = options.deleteTrack;\n this.loop = options.loop ?? false;\n this.reloadPlaylist = options.reloadPlaylist;\n this.unsubscribeBackend = backend.subscribe((event) => {\n void this.handleBackendEvent(event);\n });\n }\n\n getSnapshot(): PlaylistPlayerSnapshot {\n const backendSnapshot = this.backend.getSnapshot();\n const currentTrack =\n this.currentIndex !== null ? this.playlist[this.currentIndex] ?? null : null;\n\n return {\n backendName: backendSnapshot.backendName,\n currentIndex: this.currentIndex,\n currentTrack,\n durationSeconds: backendSnapshot.durationSeconds,\n errorMessage: this.errorMessage ?? backendSnapshot.errorMessage,\n loop: this.loop,\n playlist: this.playlist,\n searchQuery: this.searchQuery,\n selectedIndex: this.selectedIndex,\n status: backendSnapshot.status,\n timePositionSeconds: backendSnapshot.timePositionSeconds,\n };\n }\n\n subscribe(listener: PlaylistPlayerListener) {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n async start() {\n await this.backend.start();\n this.emit();\n }\n\n async dispose() {\n this.unsubscribeBackend();\n await this.backend.dispose();\n }\n\n moveSelection(delta: number) {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = wrapIndex(\n this.selectedIndex + delta,\n this.playlist.length,\n );\n this.emit();\n }\n\n moveSelectionPage(delta: number, pageSize: number) {\n this.moveSelection(delta * Math.max(1, pageSize));\n }\n\n selectHome() {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = 0;\n this.emit();\n }\n\n selectEnd() {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = this.playlist.length - 1;\n this.emit();\n }\n\n setSelectionIndex(index: number) {\n if (this.playlist.length === 0) {\n return;\n }\n\n this.selectedIndex = clampIndex(index, this.playlist.length);\n this.emit();\n }\n\n toggleLoop() {\n this.loop = !this.loop;\n this.emit();\n }\n\n appendSearchQuery(text: string) {\n if (!text) {\n return;\n }\n\n this.searchQuery += text;\n this.syncSelectionToSearch();\n }\n\n deleteSearchCharacter() {\n if (!this.searchQuery) {\n return;\n }\n\n this.searchQuery = this.searchQuery.slice(0, -1);\n this.syncSelectionToSearch();\n }\n\n clearSearch() {\n if (!this.searchQuery) {\n return;\n }\n\n this.searchQuery = \"\";\n this.emit();\n }\n\n async playSelected() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n await this.playIndex(selectedIndex);\n });\n }\n\n async playNext() {\n await this.enqueueOperation(async () => {\n const nextIndex = this.getAdjacentIndex(1, true);\n if (nextIndex === null) {\n return;\n }\n\n await this.playIndex(nextIndex);\n });\n }\n\n async playPrevious() {\n await this.enqueueOperation(async () => {\n const previousIndex = this.getAdjacentIndex(-1, true);\n if (previousIndex === null) {\n return;\n }\n\n await this.playIndex(previousIndex);\n });\n }\n\n async togglePause() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n if (this.playlist.length === 0) {\n return;\n }\n\n const { status } = this.backend.getSnapshot();\n if (status === \"stopped\") {\n const restartIndex = this.currentIndex ?? selectedIndex;\n await this.playIndex(restartIndex);\n return;\n }\n\n try {\n this.clearError();\n await this.backend.togglePause();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async seekBy(seconds: number) {\n await this.enqueueOperation(async () => {\n if (seconds === 0) {\n return;\n }\n\n const { status } = this.backend.getSnapshot();\n if (status === \"stopped\") {\n return;\n }\n\n try {\n this.clearError();\n await this.backend.seekBy(seconds);\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async stop() {\n await this.enqueueOperation(async () => {\n try {\n this.clearError();\n await this.backend.stop();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n async deleteSelectedTrack() {\n const selectedIndex = this.selectedIndex;\n await this.enqueueOperation(async () => {\n const track = this.playlist[selectedIndex];\n if (!track) {\n return;\n }\n\n if (!this.deleteTrack || !this.reloadPlaylist) {\n this.reportError(new Error(\"Beatmap deletion is unavailable in this session.\"));\n return;\n }\n\n const currentTrack =\n this.currentIndex !== null ? this.playlist[this.currentIndex] ?? null : null;\n const deletingCurrentTrack =\n currentTrack !== null && currentTrack.beatmapSetKey === track.beatmapSetKey;\n\n try {\n this.clearError();\n\n if (deletingCurrentTrack) {\n await this.backend.stop();\n this.currentIndex = null;\n }\n\n await this.deleteTrack(track);\n this.playlist = await this.reloadPlaylist();\n this.selectedIndex = clampIndex(selectedIndex, this.playlist.length);\n\n if (this.searchQuery) {\n const matchedIndex = findTrackIndexByQuery(this.playlist, this.searchQuery);\n if (matchedIndex !== -1) {\n this.selectedIndex = matchedIndex;\n }\n }\n\n if (!deletingCurrentTrack && currentTrack) {\n const nextCurrentIndex = this.playlist.findIndex(\n (playlistTrack) => playlistTrack.hash === currentTrack.hash,\n );\n this.currentIndex = nextCurrentIndex === -1 ? null : nextCurrentIndex;\n }\n\n this.emit();\n } catch (error) {\n this.reportError(error);\n }\n });\n }\n\n reportError(error: unknown) {\n this.errorMessage =\n error instanceof Error ? error.message : String(error);\n this.emit();\n }\n\n private clearError() {\n if (this.errorMessage === null) {\n return;\n }\n\n this.errorMessage = null;\n }\n\n private emit() {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) {\n listener(snapshot);\n }\n }\n\n private async playIndex(index: number) {\n const track = this.playlist[index];\n if (!track) {\n return;\n }\n\n const previousIndex = this.currentIndex;\n this.currentIndex = index;\n\n try {\n this.clearError();\n await this.backend.play(track.path);\n } catch (error) {\n this.currentIndex = previousIndex;\n this.reportError(error);\n return;\n }\n\n // Keep the cursor on the track that is now playing so n/p (and\n // auto-advance) move the selection along with playback.\n this.selectedIndex = index;\n this.emit();\n }\n\n private getAdjacentIndex(delta: number, wrap = false) {\n if (this.playlist.length === 0) {\n return null;\n }\n\n const baseIndex = this.currentIndex ?? this.selectedIndex;\n const nextIndex = baseIndex + delta;\n const shouldWrap = wrap || this.loop;\n\n if (nextIndex < 0) {\n return shouldWrap ? this.playlist.length - 1 : null;\n }\n\n if (nextIndex >= this.playlist.length) {\n return shouldWrap ? 0 : null;\n }\n\n return nextIndex;\n }\n\n private handleBackendEvent(event: PlayerBackendEvent) {\n switch (event.type) {\n case \"state\":\n this.emit();\n return;\n case \"error\":\n this.reportError(event.error);\n return;\n case \"ended\":\n void this.enqueueOperation(async () => {\n if (event.reason === \"eof\") {\n const nextIndex = this.getAdjacentIndex(1);\n if (nextIndex !== null) {\n await this.playIndex(nextIndex);\n return;\n }\n }\n\n this.emit();\n });\n }\n }\n\n private enqueueOperation(operation: () => Promise<void>) {\n const queuedOperation = this.operationQueue.then(operation, operation);\n this.operationQueue = queuedOperation.catch(() => {});\n return queuedOperation;\n }\n\n private syncSelectionToSearch() {\n const matchedIndex = findTrackIndexByQuery(this.playlist, this.searchQuery);\n if (matchedIndex !== -1) {\n this.selectedIndex = matchedIndex;\n }\n\n this.emit();\n }\n}\n",
|
|
19
|
-
"import {\n type Component,\n decodeKittyPrintable,\n Key,\n matchesKey,\n truncateToWidth,\n} from \"@earendil-works/pi-tui\";\n\nimport type { PlaylistPlayerSession } from \"../player/mod.js\";\nimport type { PlaylistPlayerSnapshot } from \"../player/types.js\";\n\nconst RESET = \"\\x1b[0m\";\nconst DIM = \"\\x1b[2m\";\nconst RED = \"\\x1b[31m\";\nconst CYAN = \"\\x1b[36m\";\nconst BOLD = \"\\x1b[1m\";\nconst INVERSE = \"\\x1b[7m\";\n\nconst MIN_LIST_ROWS = 4;\nconst RESERVED_ROWS = 5;\nconst PAGE_SIZE = 10;\nconst PENDING_G_TIMEOUT_MS = 400;\nconst SEEK_SECONDS = 5;\n\nconst STATUS_GLYPH: Record<string, string> = {\n paused: \"⏸\",\n playing: \"▶\",\n stopped: \"■\",\n};\n\nfunction style(text: string, code: string) {\n return `${code}${text}${RESET}`;\n}\n\nfunction progressBar(\n position: number | null,\n duration: number | null,\n width: number,\n) {\n const span = Math.max(4, width);\n const ratio =\n duration && duration > 0 && position !== null\n ? Math.max(0, Math.min(position / duration, 1))\n : 0;\n const filled = Math.round(ratio * span);\n\n return (\n style(\"━\".repeat(filled), CYAN) + style(\"─\".repeat(span - filled), DIM)\n );\n}\n\nfunction padIndex(index: number, total: number) {\n const width = String(Math.max(total, 1)).length;\n return String(index + 1).padStart(width, \" \");\n}\n\nfunction formatSeconds(seconds: number | null) {\n if (seconds === null || Number.isNaN(seconds)) {\n return \"--:--\";\n }\n\n const rounded = Math.max(0, Math.floor(seconds));\n const minutes = Math.floor(rounded / 60);\n const remainingSeconds = rounded % 60;\n\n return `${String(minutes).padStart(2, \"0\")}:${String(remainingSeconds).padStart(2, \"0\")}`;\n}\n\nfunction decodePrintableText(data: string) {\n const kittyPrintable = decodeKittyPrintable(data);\n if (kittyPrintable !== undefined) {\n return kittyPrintable;\n }\n\n const hasControlChars = [...data].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n\n return hasControlChars ? undefined : data;\n}\n\nexport function getVisibleTrackRange(\n selectedIndex: number,\n totalTracks: number,\n maxVisible: number,\n) {\n if (totalTracks <= 0 || maxVisible <= 0) {\n return { end: 0, start: 0 };\n }\n\n const clampedSelectedIndex = Math.max(\n 0,\n Math.min(selectedIndex, totalTracks - 1),\n );\n const start = Math.max(\n 0,\n Math.min(\n clampedSelectedIndex - Math.floor(maxVisible / 2),\n totalTracks - maxVisible,\n ),\n );\n\n return {\n end: Math.min(totalTracks, start + maxVisible),\n start,\n };\n}\n\nexport class PlaylistPlayerScreen implements Component {\n private deleteConfirmationTrackKey: string | null = null;\n\n private pendingGoToTop = false;\n\n private pendingGoToTopTimer: ReturnType<typeof setTimeout> | null = null;\n\n private searchMode = false;\n\n private snapshot: PlaylistPlayerSnapshot;\n\n onQuit?: () => void;\n\n constructor(\n private readonly session: PlaylistPlayerSession,\n private readonly getViewportHeight: () => number,\n ) {\n this.snapshot = session.getSnapshot();\n }\n\n setSnapshot(snapshot: PlaylistPlayerSnapshot) {\n this.snapshot = snapshot;\n }\n\n invalidate() {\n // This screen renders from live snapshot state only.\n }\n\n handleInput(data: string) {\n if (this.deleteConfirmationTrackKey !== null) {\n this.handleDeleteConfirmationInput(data);\n return;\n }\n\n if (this.searchMode) {\n this.handleSearchInput(data);\n return;\n }\n\n if (matchesKey(data, Key.slash)) {\n this.searchMode = true;\n return;\n }\n\n if (matchesKey(data, \"g\")) {\n if (this.pendingGoToTop) {\n this.clearPendingGoToTop();\n this.session.selectHome();\n } else {\n this.armPendingGoToTop();\n }\n return;\n }\n\n this.clearPendingGoToTop();\n\n if (matchesKey(data, Key.ctrl(\"c\")) || matchesKey(data, \"q\")) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.up) || matchesKey(data, \"k\")) {\n this.session.moveSelection(-1);\n return;\n }\n\n if (matchesKey(data, Key.down) || matchesKey(data, \"j\")) {\n this.session.moveSelection(1);\n return;\n }\n\n if (matchesKey(data, Key.left) || matchesKey(data, \"h\")) {\n void this.session.seekBy(-SEEK_SECONDS);\n return;\n }\n\n if (matchesKey(data, Key.right) || matchesKey(data, \"l\")) {\n void this.session.seekBy(SEEK_SECONDS);\n return;\n }\n\n if (\n matchesKey(data, Key.pageUp)\n || matchesKey(data, Key.ctrl(\"u\"))\n || matchesKey(data, Key.ctrl(\"b\"))\n ) {\n this.session.moveSelectionPage(-1, PAGE_SIZE);\n return;\n }\n\n if (\n matchesKey(data, Key.pageDown)\n || matchesKey(data, Key.ctrl(\"d\"))\n || matchesKey(data, Key.ctrl(\"f\"))\n ) {\n this.session.moveSelectionPage(1, PAGE_SIZE);\n return;\n }\n\n if (matchesKey(data, Key.home) || matchesKey(data, \"0\")) {\n this.session.selectHome();\n return;\n }\n\n if (matchesKey(data, Key.end) || matchesKey(data, Key.shift(\"g\"))) {\n this.session.selectEnd();\n return;\n }\n\n if (matchesKey(data, Key.shift(\"h\"))) {\n this.moveSelectionToVisibleAnchor(\"top\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"m\"))) {\n this.moveSelectionToVisibleAnchor(\"middle\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"l\"))) {\n this.moveSelectionToVisibleAnchor(\"bottom\");\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n void this.session.playSelected();\n return;\n }\n\n if (matchesKey(data, \"d\")) {\n this.armDeleteConfirmation();\n return;\n }\n\n if (matchesKey(data, Key.space)) {\n void this.session.togglePause();\n return;\n }\n\n if (matchesKey(data, \"n\")) {\n void this.session.playNext();\n return;\n }\n\n if (matchesKey(data, \"p\")) {\n void this.session.playPrevious();\n return;\n }\n\n if (matchesKey(data, \"s\")) {\n void this.session.stop();\n return;\n }\n\n if (matchesKey(data, \"r\")) {\n this.session.toggleLoop();\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.session.clearSearch();\n return;\n }\n }\n\n render(width: number) {\n const { playlist } = this.snapshot;\n const viewportHeight = Math.max(this.getViewportHeight(), RESERVED_ROWS);\n const listHeight = this.getListHeight(viewportHeight);\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n playlist.length,\n listHeight,\n );\n\n const position = formatSeconds(this.snapshot.timePositionSeconds);\n const duration = formatSeconds(this.snapshot.durationSeconds);\n const glyph = STATUS_GLYPH[this.snapshot.status] ?? \"·\";\n const isIdle = this.snapshot.currentTrack === null;\n const nowPlaying = `${glyph} ${\n this.snapshot.currentTrack?.title ?? \"nothing playing\"\n }`;\n const barWidth = Math.max(\n 4,\n width - position.length - duration.length - 2,\n );\n\n const lines: string[] = [\n truncateToWidth(\n isIdle ? style(nowPlaying, DIM) : style(nowPlaying, BOLD + CYAN),\n width,\n ),\n truncateToWidth(\n `${style(position, DIM)} ${progressBar(\n this.snapshot.timePositionSeconds,\n this.snapshot.durationSeconds,\n barWidth,\n )} ${style(duration, DIM)}`,\n width,\n ),\n ];\n\n if (this.snapshot.errorMessage) {\n lines.push(\n truncateToWidth(style(`✗ ${this.snapshot.errorMessage}`, RED), width),\n );\n } else if (this.deleteConfirmationTrackKey !== null) {\n lines.push(\n truncateToWidth(\n style(\"delete this beatmap set? enter/d/y confirm · any key cancel\", RED),\n width,\n ),\n );\n } else if (this.searchMode || this.snapshot.searchQuery) {\n lines.push(\n truncateToWidth(\n style(\n `/ ${this.snapshot.searchQuery}${this.searchMode ? \"▏\" : \"\"}`,\n CYAN,\n ),\n width,\n ),\n );\n } else {\n lines.push(\n truncateToWidth(\n style(\n `${this.snapshot.selectedIndex + 1}/${Math.max(\n playlist.length,\n 1,\n )} · loop ${this.snapshot.loop ? \"on\" : \"off\"} · ${\n this.snapshot.backendName\n }`,\n DIM,\n ),\n width,\n ),\n );\n }\n\n if (playlist.length === 0) {\n lines.push(\n truncateToWidth(\"No tracks were found in your osu!lazer library.\", width),\n );\n } else {\n for (let index = start; index < end; index += 1) {\n const track = playlist[index];\n if (!track) {\n continue;\n }\n\n const isCurrent = index === this.snapshot.currentIndex;\n const isSelected = index === this.snapshot.selectedIndex;\n const marker = isCurrent ? \"▶\" : \" \";\n const line = ` ${marker} ${padIndex(index, playlist.length)} ${track.title}`;\n lines.push(\n truncateToWidth(\n isSelected\n ? style(line, INVERSE)\n : isCurrent\n ? style(line, CYAN)\n : line,\n width,\n ),\n );\n }\n }\n\n while (lines.length < viewportHeight - 1) {\n lines.push(\"\");\n }\n\n lines.push(\n truncateToWidth(\n style(\n this.searchMode\n ? \"type to jump · backspace edit · enter keep · esc leave\"\n : \"j/k move · ⏎ play · space pause · n/p track · h/l seek · r loop · d delete · / search · q quit\",\n DIM,\n ),\n width,\n ),\n );\n\n return lines;\n }\n\n private armPendingGoToTop() {\n this.pendingGoToTop = true;\n this.pendingGoToTopTimer = setTimeout(() => {\n this.pendingGoToTop = false;\n this.pendingGoToTopTimer = null;\n }, PENDING_G_TIMEOUT_MS);\n }\n\n private clearPendingGoToTop() {\n if (this.pendingGoToTopTimer) {\n clearTimeout(this.pendingGoToTopTimer);\n this.pendingGoToTopTimer = null;\n }\n\n this.pendingGoToTop = false;\n }\n\n private armDeleteConfirmation() {\n const selectedTrack = this.snapshot.playlist[this.snapshot.selectedIndex];\n if (!selectedTrack) {\n return;\n }\n\n this.deleteConfirmationTrackKey = selectedTrack.beatmapSetKey;\n }\n\n private clearDeleteConfirmation() {\n this.deleteConfirmationTrackKey = null;\n }\n\n private handleDeleteConfirmationInput(data: string) {\n if (\n matchesKey(data, Key.enter)\n || matchesKey(data, \"d\")\n || matchesKey(data, \"y\")\n ) {\n this.clearDeleteConfirmation();\n void this.session.deleteSelectedTrack();\n return;\n }\n\n this.clearDeleteConfirmation();\n }\n\n private handleSearchInput(data: string) {\n if (matchesKey(data, Key.ctrl(\"c\"))) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.ctrl(\"u\"))) {\n this.session.clearSearch();\n return;\n }\n\n const printable = decodePrintableText(data);\n if (!printable || printable === \" \") {\n return;\n }\n\n this.session.appendSearchQuery(printable);\n }\n\n private getListHeight(viewportHeight: number) {\n return Math.max(MIN_LIST_ROWS, viewportHeight - RESERVED_ROWS);\n }\n\n private moveSelectionToVisibleAnchor(\n anchor: \"bottom\" | \"middle\" | \"top\",\n ) {\n if (this.snapshot.playlist.length === 0) {\n return;\n }\n\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n this.snapshot.playlist.length,\n this.getListHeight(Math.max(this.getViewportHeight(), RESERVED_ROWS)),\n );\n const lastVisibleIndex = Math.max(start, end - 1);\n\n switch (anchor) {\n case \"top\":\n this.session.setSelectionIndex(start);\n return;\n case \"middle\":\n this.session.setSelectionIndex(\n start + Math.floor((lastVisibleIndex - start) / 2),\n );\n return;\n case \"bottom\":\n this.session.setSelectionIndex(lastVisibleIndex);\n }\n }\n}\n",
|
|
19
|
+
"import {\n type Component,\n decodeKittyPrintable,\n Key,\n matchesKey,\n truncateToWidth,\n} from \"@earendil-works/pi-tui\";\n\nimport type { PlaylistPlayerSession } from \"../player/mod.js\";\nimport type { PlaylistPlayerSnapshot } from \"../player/types.js\";\n\nconst RESET = \"\\x1b[0m\";\nconst DIM = \"\\x1b[2m\";\nconst RED = \"\\x1b[31m\";\nconst CYAN = \"\\x1b[36m\";\nconst BOLD = \"\\x1b[1m\";\nconst INVERSE = \"\\x1b[7m\";\n\nconst MIN_LIST_ROWS = 4;\nconst RESERVED_ROWS = 5;\nconst PAGE_SIZE = 10;\nconst PENDING_G_TIMEOUT_MS = 400;\nconst SEEK_SECONDS = 5;\n\nconst STATUS_GLYPH: Record<string, string> = {\n paused: \"⏸\",\n playing: \"▶\",\n stopped: \"■\",\n};\n\nfunction style(text: string, code: string) {\n return `${code}${text}${RESET}`;\n}\n\nfunction progressBar(\n position: number | null,\n duration: number | null,\n width: number,\n) {\n const span = Math.max(4, width);\n const ratio =\n duration && duration > 0 && position !== null\n ? Math.max(0, Math.min(position / duration, 1))\n : 0;\n const filled = Math.round(ratio * span);\n\n return (\n style(\"━\".repeat(filled), CYAN) + style(\"─\".repeat(span - filled), DIM)\n );\n}\n\nfunction padIndex(index: number, total: number) {\n const width = String(Math.max(total, 1)).length;\n return String(index + 1).padStart(width, \" \");\n}\n\nfunction formatSeconds(seconds: number | null) {\n if (seconds === null || Number.isNaN(seconds)) {\n return \"--:--\";\n }\n\n const rounded = Math.max(0, Math.floor(seconds));\n const minutes = Math.floor(rounded / 60);\n const remainingSeconds = rounded % 60;\n\n return `${String(minutes).padStart(2, \"0\")}:${String(remainingSeconds).padStart(2, \"0\")}`;\n}\n\nfunction decodePrintableText(data: string) {\n const kittyPrintable = decodeKittyPrintable(data);\n if (kittyPrintable !== undefined) {\n return kittyPrintable;\n }\n\n const hasControlChars = [...data].some((character) => {\n const code = character.charCodeAt(0);\n return code < 32 || code === 0x7f || (code >= 0x80 && code <= 0x9f);\n });\n\n return hasControlChars ? undefined : data;\n}\n\nexport function getVisibleTrackRange(\n selectedIndex: number,\n totalTracks: number,\n maxVisible: number,\n) {\n if (totalTracks <= 0 || maxVisible <= 0) {\n return { end: 0, start: 0 };\n }\n\n const clampedSelectedIndex = Math.max(\n 0,\n Math.min(selectedIndex, totalTracks - 1),\n );\n const start = Math.max(\n 0,\n Math.min(\n clampedSelectedIndex - Math.floor(maxVisible / 2),\n totalTracks - maxVisible,\n ),\n );\n\n return {\n end: Math.min(totalTracks, start + maxVisible),\n start,\n };\n}\n\nexport class PlaylistPlayerScreen implements Component {\n private deleteConfirmationTrackKey: string | null = null;\n\n private pendingGoToTop = false;\n\n private pendingGoToTopTimer: ReturnType<typeof setTimeout> | null = null;\n\n private searchMode = false;\n\n private snapshot: PlaylistPlayerSnapshot;\n\n onQuit?: () => void;\n\n constructor(\n private readonly session: PlaylistPlayerSession,\n private readonly getViewportHeight: () => number,\n ) {\n this.snapshot = session.getSnapshot();\n }\n\n setSnapshot(snapshot: PlaylistPlayerSnapshot) {\n this.snapshot = snapshot;\n }\n\n invalidate() {\n // This screen renders from live snapshot state only.\n }\n\n handleInput(data: string) {\n if (this.deleteConfirmationTrackKey !== null) {\n this.handleDeleteConfirmationInput(data);\n return;\n }\n\n if (this.searchMode) {\n this.handleSearchInput(data);\n return;\n }\n\n if (matchesKey(data, Key.slash)) {\n this.searchMode = true;\n return;\n }\n\n if (matchesKey(data, \"g\")) {\n if (this.pendingGoToTop) {\n this.clearPendingGoToTop();\n this.session.selectHome();\n } else {\n this.armPendingGoToTop();\n }\n return;\n }\n\n this.clearPendingGoToTop();\n\n if (matchesKey(data, Key.ctrl(\"c\")) || matchesKey(data, \"q\")) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.up) || matchesKey(data, \"k\")) {\n this.session.moveSelection(-1);\n return;\n }\n\n if (matchesKey(data, Key.down) || matchesKey(data, \"j\")) {\n this.session.moveSelection(1);\n return;\n }\n\n if (matchesKey(data, Key.left) || matchesKey(data, \"h\")) {\n void this.session.seekBy(-SEEK_SECONDS);\n return;\n }\n\n if (matchesKey(data, Key.right) || matchesKey(data, \"l\")) {\n void this.session.seekBy(SEEK_SECONDS);\n return;\n }\n\n if (\n matchesKey(data, Key.pageUp)\n || matchesKey(data, Key.ctrl(\"u\"))\n || matchesKey(data, Key.ctrl(\"b\"))\n ) {\n this.session.moveSelectionPage(-1, PAGE_SIZE);\n return;\n }\n\n if (\n matchesKey(data, Key.pageDown)\n || matchesKey(data, Key.ctrl(\"d\"))\n || matchesKey(data, Key.ctrl(\"f\"))\n ) {\n this.session.moveSelectionPage(1, PAGE_SIZE);\n return;\n }\n\n if (matchesKey(data, Key.home) || matchesKey(data, \"0\")) {\n this.session.selectHome();\n return;\n }\n\n if (matchesKey(data, Key.end) || matchesKey(data, Key.shift(\"g\"))) {\n this.session.selectEnd();\n return;\n }\n\n if (matchesKey(data, Key.shift(\"h\"))) {\n this.moveSelectionToVisibleAnchor(\"top\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"m\"))) {\n this.moveSelectionToVisibleAnchor(\"middle\");\n return;\n }\n\n if (matchesKey(data, Key.shift(\"l\"))) {\n this.moveSelectionToVisibleAnchor(\"bottom\");\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n void this.session.playSelected();\n return;\n }\n\n if (matchesKey(data, \"d\")) {\n this.armDeleteConfirmation();\n return;\n }\n\n if (matchesKey(data, Key.space)) {\n void this.session.togglePause();\n return;\n }\n\n if (matchesKey(data, \"n\")) {\n void this.session.playNext();\n return;\n }\n\n if (matchesKey(data, \"p\")) {\n void this.session.playPrevious();\n return;\n }\n\n if (matchesKey(data, \"s\")) {\n void this.session.stop();\n return;\n }\n\n if (matchesKey(data, \"r\")) {\n this.session.toggleLoop();\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.session.clearSearch();\n return;\n }\n }\n\n render(width: number) {\n const { playlist } = this.snapshot;\n const viewportHeight = Math.max(this.getViewportHeight(), RESERVED_ROWS);\n const listHeight = this.getListHeight(viewportHeight);\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n playlist.length,\n listHeight,\n );\n\n const position = formatSeconds(this.snapshot.timePositionSeconds);\n const duration = formatSeconds(this.snapshot.durationSeconds);\n const glyph = STATUS_GLYPH[this.snapshot.status] ?? \"·\";\n const isIdle = this.snapshot.currentTrack === null;\n const nowPlaying = `${glyph} ${\n this.snapshot.currentTrack?.title ?? \"nothing playing\"\n }`;\n const barWidth = Math.max(\n 4,\n width - position.length - duration.length - 2,\n );\n\n const lines: string[] = [\n truncateToWidth(\n isIdle ? style(nowPlaying, DIM) : style(nowPlaying, BOLD + CYAN),\n width,\n ),\n truncateToWidth(\n `${style(position, DIM)} ${progressBar(\n this.snapshot.timePositionSeconds,\n this.snapshot.durationSeconds,\n barWidth,\n )} ${style(duration, DIM)}`,\n width,\n ),\n ];\n\n if (this.snapshot.errorMessage) {\n lines.push(\n truncateToWidth(style(`✗ ${this.snapshot.errorMessage}`, RED), width),\n );\n } else if (this.deleteConfirmationTrackKey !== null) {\n lines.push(\n truncateToWidth(\n style(\"delete this beatmap set? enter/d/y confirm · any key cancel\", RED),\n width,\n ),\n );\n } else if (this.searchMode || this.snapshot.searchQuery) {\n lines.push(\n truncateToWidth(\n style(\n `/ ${this.snapshot.searchQuery}${this.searchMode ? \"▏\" : \"\"}`,\n CYAN,\n ),\n width,\n ),\n );\n } else {\n lines.push(\n truncateToWidth(\n style(\n `${this.snapshot.selectedIndex + 1}/${Math.max(\n playlist.length,\n 1,\n )} · loop ${this.snapshot.loop ? \"on\" : \"off\"} · ${\n this.snapshot.backendName\n }`,\n DIM,\n ),\n width,\n ),\n );\n }\n\n if (playlist.length === 0) {\n lines.push(\n truncateToWidth(\"No tracks were found in your osu!lazer library.\", width),\n );\n } else {\n for (let index = start; index < end; index += 1) {\n const track = playlist[index];\n if (!track) {\n continue;\n }\n\n const isCurrent = index === this.snapshot.currentIndex;\n const isSelected = index === this.snapshot.selectedIndex;\n const marker = isCurrent ? \"▶\" : \" \";\n const line = ` ${marker} ${padIndex(index, playlist.length)} ${track.title}`;\n lines.push(\n truncateToWidth(\n isSelected\n ? style(line, INVERSE)\n : isCurrent\n ? style(line, CYAN)\n : line,\n width,\n ),\n );\n }\n }\n\n while (lines.length < viewportHeight - 1) {\n lines.push(\"\");\n }\n\n lines.push(\n truncateToWidth(\n style(\n this.searchMode\n ? \"type to jump · backspace edit · enter keep · esc leave\"\n : \"j/k move · ⏎ play · space pause · n/p track · h/l seek · r loop · d delete · / search · q quit\",\n DIM,\n ),\n width,\n ),\n );\n\n return lines;\n }\n\n private armPendingGoToTop() {\n this.pendingGoToTop = true;\n this.pendingGoToTopTimer = setTimeout(() => {\n this.pendingGoToTop = false;\n this.pendingGoToTopTimer = null;\n }, PENDING_G_TIMEOUT_MS);\n }\n\n private clearPendingGoToTop() {\n if (this.pendingGoToTopTimer) {\n clearTimeout(this.pendingGoToTopTimer);\n this.pendingGoToTopTimer = null;\n }\n\n this.pendingGoToTop = false;\n }\n\n private armDeleteConfirmation() {\n const selectedTrack = this.snapshot.playlist[this.snapshot.selectedIndex];\n if (!selectedTrack) {\n return;\n }\n\n this.deleteConfirmationTrackKey = selectedTrack.beatmapSetKey;\n }\n\n private clearDeleteConfirmation() {\n this.deleteConfirmationTrackKey = null;\n }\n\n private handleDeleteConfirmationInput(data: string) {\n if (\n matchesKey(data, Key.enter)\n || matchesKey(data, \"d\")\n || matchesKey(data, \"y\")\n ) {\n this.clearDeleteConfirmation();\n void this.session.deleteSelectedTrack();\n return;\n }\n\n this.clearDeleteConfirmation();\n }\n\n private handleSearchInput(data: string) {\n if (matchesKey(data, Key.ctrl(\"c\"))) {\n this.onQuit?.();\n return;\n }\n\n if (matchesKey(data, Key.enter)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.escape)) {\n this.searchMode = false;\n return;\n }\n\n if (matchesKey(data, Key.backspace)) {\n this.session.deleteSearchCharacter();\n return;\n }\n\n if (matchesKey(data, Key.ctrl(\"u\"))) {\n this.session.clearSearch();\n return;\n }\n\n const printable = decodePrintableText(data);\n if (!printable) {\n return;\n }\n\n this.session.appendSearchQuery(printable);\n }\n\n private getListHeight(viewportHeight: number) {\n return Math.max(MIN_LIST_ROWS, viewportHeight - RESERVED_ROWS);\n }\n\n private moveSelectionToVisibleAnchor(\n anchor: \"bottom\" | \"middle\" | \"top\",\n ) {\n if (this.snapshot.playlist.length === 0) {\n return;\n }\n\n const { start, end } = getVisibleTrackRange(\n this.snapshot.selectedIndex,\n this.snapshot.playlist.length,\n this.getListHeight(Math.max(this.getViewportHeight(), RESERVED_ROWS)),\n );\n const lastVisibleIndex = Math.max(start, end - 1);\n\n switch (anchor) {\n case \"top\":\n this.session.setSelectionIndex(start);\n return;\n case \"middle\":\n this.session.setSelectionIndex(\n start + Math.floor((lastVisibleIndex - start) / 2),\n );\n return;\n case \"bottom\":\n this.session.setSelectionIndex(lastVisibleIndex);\n }\n }\n}\n",
|
|
20
20
|
"#!/usr/bin/env node\nimport { main } from \"./core/cli/main.js\";\n\nmain()\n .then(() => {\n process.exit(0);\n })\n .catch((error: unknown) => {\n console.error(\"Error:\", error);\n process.exit(1);\n });\n"
|
|
21
21
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
22
|
+
"mappings": "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",
|
|
23
|
+
"debugId": "434A8694113114A064756E2164756E21",
|
|
24
24
|
"names": []
|
|
25
25
|
}
|