osu-play 1.0.7 → 1.1.0

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.
Files changed (39) hide show
  1. package/README.md +71 -49
  2. package/dist/cli.cjs +671 -0
  3. package/dist/cli.cjs.map +22 -0
  4. package/dist/cli.d.cts +2 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +656 -0
  7. package/dist/cli.js.map +22 -0
  8. package/dist/core/cli/main.d.ts +20 -0
  9. package/dist/core/lazer/compat.d.ts +24 -0
  10. package/dist/core/lazer/mod.d.ts +10 -0
  11. package/dist/core/lazer/schema/beatmap.d.ts +35 -0
  12. package/dist/core/lazer/schema/beatmapMetadata.d.ts +16 -0
  13. package/dist/core/lazer/schema/beatmapSet.d.ts +18 -0
  14. package/{src/realm/schema/mod.ts → dist/core/lazer/schema/mod.d.ts} +0 -1
  15. package/dist/core/lazer/schema/realmFile.d.ts +6 -0
  16. package/dist/core/lazer/schema/realmNamedFileUsage.d.ts +9 -0
  17. package/dist/core/lazer/schema/realmUser.d.ts +9 -0
  18. package/dist/core/playlist/mod.d.ts +28 -0
  19. package/dist/core/utils/mod.d.ts +16 -0
  20. package/dist/index.cjs +529 -0
  21. package/dist/index.cjs.map +21 -0
  22. package/dist/index.d.cts +4 -0
  23. package/dist/index.d.ts +4 -0
  24. package/dist/index.js +512 -0
  25. package/dist/index.js.map +21 -0
  26. package/package.json +54 -24
  27. package/bin/osu-play.js +0 -7
  28. package/index.ts +0 -1
  29. package/src/cli/main.ts +0 -156
  30. package/src/mod.ts +0 -2
  31. package/src/realm/mod.ts +0 -54
  32. package/src/realm/schema/beatmap.ts +0 -85
  33. package/src/realm/schema/beatmapMetadata.ts +0 -33
  34. package/src/realm/schema/beatmapSet.ts +0 -36
  35. package/src/realm/schema/realmFile.ts +0 -15
  36. package/src/realm/schema/realmNamedFileUsage.ts +0 -19
  37. package/src/realm/schema/realmUser.ts +0 -21
  38. package/src/utils/mod.ts +0 -77
  39. package/tsconfig.json +0 -109
package/README.md CHANGED
@@ -1,69 +1,91 @@
1
- <h1 align="center">
2
- <br>
3
- osu!play
4
- <br>
1
+ # osu-play
5
2
 
6
- [![NPM version](https://img.shields.io/npm/v/osu-play.svg?style=flat)](https://npmjs.org/package/osu-play)
7
- [![Downloads](https://badgen.net/npm/dt/osu-play)](https://www.npmjs.com/package/osu-play)
8
- [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)
3
+ Play music from your osu!lazer beatmaps from the terminal.
9
4
 
10
- </h1>
5
+ ## Requirements
11
6
 
12
- > Listen to your favourite [osu!lazer](https://lazer.ppy.sh) beatmaps as a
13
- > spotify playlist from the terminal
7
+ - Node.js `20+`
8
+ - An osu!lazer install with beatmaps available locally
9
+
10
+ If you're developing locally, Realm's native bindings are still the one awkward part of this stack. Use the repo's `setup` script so Bun install and the Realm repair step happen in the right order.
14
11
 
15
12
  ## Installation
16
13
 
17
- ### Requirements
18
14
 
19
- - [Node.js](https://nodejs.org/en/) (v18 or higher)
20
- - [osu!lazer](https://lazer.ppy.sh/home/download) with some beatmaps to listen
21
- to 😉
22
- - That's it!
15
+ ```bash
16
+ npm install -g osu-play
17
+ ```
23
18
 
24
- ### Quick start
19
+ Or run it without a global install:
25
20
 
26
- - Try out the latest release without installing anything:
21
+ ```bash
22
+ npx osu-play
23
+ ```
27
24
 
28
- ```sh
29
- npx osu-play # using npm
30
- pnpm dlx osu-play # using pnpm
31
- ```
25
+ ## Usage
32
26
 
33
- - Install the latest release globally:
27
+ ### CLI
34
28
 
35
- ```sh
36
- npm i -g osu-play # using npm
37
- pnpm i -g osu-play # using pnpm
38
- ```
29
+ ```bash
30
+ # Play music interactively
31
+ osu-play
39
32
 
40
- ## Usage
33
+ # Export a playlist file
34
+ osu-play --exportPlaylist playlist.txt
41
35
 
42
- The `osu-play` command can be used with the following options:
43
-
44
- ```sh
45
- ➜ korigamik git:(main) ✗ osu-play --help
46
- Play music from your osu!lazer beatmaps from the terminal
47
- Usage: osu-play [options]
48
-
49
- Options:
50
- --help Show help [boolean]
51
- --version Show version number [boolean]
52
- -r, --reload Reload lazer database [boolean] [default: false]
53
- --exportPlaylist Export playlist to a file [string]
54
- -d, --osuDataDir Osu!lazer data directory
55
- [string] [default: "/home/origami/.local/share/osu"]
56
- -c, --configDir Config directory
57
- [string] [default: "/home/origami/.config/osu-play"]
58
- -l, --loop Loop the playlist on end [boolean] [default: false]
36
+ # Loop the playlist
37
+ osu-play --loop
59
38
  ```
60
39
 
61
- This package can be used as a library or as a cli application. To use the lazer
62
- database interaction in your applicatoins import the `osu-play` package and
63
- start using it!
40
+ ### API
64
41
 
65
42
  ```ts
66
- import { lazer } from "osu-play";
43
+ import { getLazerDB, getRealmDBPath } from "osu-play";
44
+
45
+ const realmPath = getRealmDBPath({ osuDataDir: "/path/to/osu" });
46
+ const db = await getLazerDB(realmPath);
47
+ ```
48
+
49
+ ## Options
50
+
51
+ - `--reload, -r`: Deprecated and ignored
52
+ - `--exportPlaylist`: Export the discovered track paths to a file
53
+ - `--osuDataDir, -d`: Override the osu!lazer data directory
54
+ - `--configDir, -c`: Deprecated and ignored
55
+ - `--loop, -l`: Restart from the beginning when the playlist ends
56
+ - `--help, -h`: Show help
57
+
58
+ ## Development
59
+
60
+ Bun `1.3+` is required only for development and contributing; it is not needed to run the published CLI via `npm install -g` or `npx osu-play`.
67
61
 
68
- const realm = getLazerDB();
62
+ ```bash
63
+ bun run setup
64
+ bun run dev -- --help
65
+ bun run check
69
66
  ```
67
+
68
+ Useful day-to-day commands:
69
+
70
+ ```bash
71
+ bun run dev -- --help
72
+ bun run test
73
+ bun run package
74
+ ```
75
+
76
+ If you hit a Realm native-binding error like `realm.node` missing or Node failing to load Realm:
77
+
78
+ ```bash
79
+ bun install
80
+ bun run repair:realm
81
+ ```
82
+
83
+ `bun run package` builds the distributable files and creates a local npm tarball with `bun pm pack`.
84
+
85
+ osu-play now reads osu!lazer's live `client.realm` directly in read-only mode instead of copying it into a separate app directory.
86
+
87
+ Standalone Bun executables are intentionally not part of the release flow right now. The current Realm dependency uses native bindings, and Bun's standalone executable support does not yet cover that path cleanly enough for this app.
88
+
89
+ ## License
90
+
91
+ MIT