osu-play 1.0.6 → 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 (41) hide show
  1. package/README.md +70 -37
  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/{src → core}/cli/main.d.ts +4 -8
  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 -124
  24. package/dist/index.js +449 -266
  25. package/dist/index.js.map +21 -1
  26. package/package.json +57 -27
  27. package/bin/osu-play.js +0 -7
  28. package/dist/src/cli/main.js +0 -442
  29. package/dist/src/cli/main.js.map +0 -1
  30. package/index.ts +0 -1
  31. package/src/cli/main.ts +0 -163
  32. package/src/mod.ts +0 -2
  33. package/src/realm/mod.ts +0 -54
  34. package/src/realm/schema/beatmap.ts +0 -85
  35. package/src/realm/schema/beatmapMetadata.ts +0 -33
  36. package/src/realm/schema/beatmapSet.ts +0 -36
  37. package/src/realm/schema/realmFile.ts +0 -15
  38. package/src/realm/schema/realmNamedFileUsage.ts +0 -19
  39. package/src/realm/schema/realmUser.ts +0 -21
  40. package/src/utils/mod.ts +0 -77
  41. package/tsconfig.json +0 -109
package/README.md CHANGED
@@ -1,58 +1,91 @@
1
- # osu!play
1
+ # osu-play
2
2
 
3
- Listen to your favourite [osu!lazer](https://lazer.ppy.sh) beatmaps as a spotify playlist from the terminal
3
+ Play music from your osu!lazer beatmaps from the terminal.
4
4
 
5
- ## Installation
5
+ ## Requirements
6
6
 
7
- ### Requirements
7
+ - Node.js `20+`
8
+ - An osu!lazer install with beatmaps available locally
8
9
 
9
- - [Node.js](https://nodejs.org/en/) (v18 or higher)
10
- - [osu!lazer](https://lazer.ppy.sh/home/download) with some beatmaps to listen to 😉
11
- - That's it!
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.
12
11
 
13
- ### Quick start
12
+ ## Installation
14
13
 
15
- - Try out the latest release without installing anything:
16
14
 
17
- ```sh
18
- npx osu-play # using npm
19
- pnpm dlx osu-play # using pnpm
15
+ ```bash
16
+ npm install -g osu-play
20
17
  ```
21
18
 
22
- - Install the latest release globally:
19
+ Or run it without a global install:
23
20
 
24
- ```sh
25
- npm i -g osu-play # using npm
26
- pnpm i -g osu-play # using pnpm
21
+ ```bash
22
+ npx osu-play
27
23
  ```
28
24
 
29
25
  ## Usage
30
26
 
31
- The `osu-play` command can be used with the following options:
32
- ```sh
33
- ➜ korigamik git:(main) ✗ osu-play --help
34
- Play music from your osu!lazer beatmaps from the terminal
35
- Usage: osu-play [options]
36
-
37
- Options:
38
- --help Show help [boolean]
39
- --version Show version number [boolean]
40
- -r, --reload Reload lazer database [boolean] [default: false]
41
- --exportPlaylist Export playlist to a file [string]
42
- -d, --osuDataDir Osu!lazer data directory
43
- [string] [default: "/home/origami/.local/share/osu"]
44
- -c, --configDir Config directory
45
- [string] [default: "/home/origami/.config/osu-play"]
46
- -l, --loop Loop the playlist on end [boolean] [default: false]
27
+ ### CLI
28
+
29
+ ```bash
30
+ # Play music interactively
31
+ osu-play
32
+
33
+ # Export a playlist file
34
+ osu-play --exportPlaylist playlist.txt
35
+
36
+ # Loop the playlist
37
+ osu-play --loop
47
38
  ```
48
39
 
49
- This package can be used as a library or as a cli application. To use the lazer
50
- database interaction in your applicatoins import the `osu-play` package and
51
- start using it!
40
+ ### API
52
41
 
53
42
  ```ts
54
- 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`.
55
61
 
56
- const realm = getLazerDB();
62
+ ```bash
63
+ bun run setup
64
+ bun run dev -- --help
65
+ bun run check
57
66
  ```
58
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