psn-mcp 0.2.2 → 0.3.1

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/README.md CHANGED
@@ -1,48 +1,44 @@
1
- # psn-mcp
1
+ <div align="center">
2
2
 
3
- An [MCP](https://modelcontextprotocol.io) (Model Context Protocol) server for
4
- interfacing with the PlayStation Network. Lets MCP clients like Claude look up
5
- PSN profiles, friends, online presence, trophies, and play history.
3
+ # 🎮 psn-mcp
6
4
 
7
- The PSN API layer is written from scratch in TypeScript on Node's built-in
8
- `fetch` — no PSN client dependencies. It authenticates the same way the official
9
- PlayStation mobile app does and talks directly to Sony's `m.np.playstation.com`
10
- API.
5
+ **A [Model Context Protocol](https://modelcontextprotocol.io) server for the PlayStation Network**
11
6
 
12
- ## Requirements
7
+ Let MCP clients like Claude look up PSN profiles, friends, online presence,
8
+ trophies, play history, and store deals — in plain language.
13
9
 
14
- - Node.js 24.18+
15
- - A PlayStation Network account
10
+ <br />
16
11
 
17
- ## Signing in
12
+ [![npm version](https://img.shields.io/npm/v/psn-mcp?color=0070d1&label=npm)](https://www.npmjs.com/package/psn-mcp)
13
+ [![npm downloads](https://img.shields.io/npm/dm/psn-mcp?color=0070d1)](https://www.npmjs.com/package/psn-mcp)
14
+ [![Node.js](https://img.shields.io/badge/node-%E2%89%A524.18-339933?logo=node.js&logoColor=white)](https://nodejs.org)
15
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
16
+ [![MCP](https://img.shields.io/badge/MCP-server-000000)](https://modelcontextprotocol.io)
18
17
 
19
- The MCP server can automate NPSSO capture through an isolated browser profile:
18
+ </div>
20
19
 
21
- 1. Start the MCP server without `PSN_NPSSO`.
22
- 2. Call the `psn_begin_login` tool.
23
- 3. Sign in to PlayStation in the browser window it opens.
24
- 4. Call the `psn_complete_login` tool.
20
+ ---
25
21
 
26
- `psn_complete_login` reads the PlayStation `npsso` browser cookie, verifies it,
27
- and stores it in `~/.config/psn-mcp/credentials.json` with owner-only file
28
- permissions. Future server starts use the stored token automatically. Set
29
- `PSN_NPSSO_FILE` to choose a different credential file.
22
+ The PSN API layer is written from scratch in TypeScript on Node's built-in
23
+ `fetch` — no PSN client dependencies. It authenticates the same way the official
24
+ PlayStation mobile app does and talks directly to Sony's `m.np.playstation.com`
25
+ API.
30
26
 
31
- If browser automation is unavailable, you can still configure an NPSSO manually:
27
+ ## ✨ Highlights
32
28
 
33
- 1. Sign in at [playstation.com](https://www.playstation.com).
34
- 2. In the same browser, open <https://ca.account.sony.com/api/v1/ssocookie>.
35
- 3. Copy the 64-character `npsso` value from the JSON response into `PSN_NPSSO`.
29
+ - 🧑‍🤝‍🧑 **Profiles & friends** — look up any player, resolve friends lists to full profiles
30
+ - 🟢 **Live presence** — see who's online, on which platform, and what they're playing
31
+ - 🏆 **Trophies** — levels, tiers, per-game progress, earned state, and global rarity
32
+ - ⏱️ **Play history** — PS4/PS5 games with play counts and total durations
33
+ - 🛒 **Store** — deals, prices, discounts, and review scores, **no PSN account required**
34
+ - 🔒 **Zero client deps** — pure TypeScript on Node `fetch`, credentials stored owner-only
36
35
 
37
- The server exchanges the NPSSO for an OAuth access token on first use and
38
- refreshes it automatically. NPSSO tokens expire after about two months; when
39
- tools start failing with an auth error, run the login flow again.
36
+ ## 📦 Requirements
40
37
 
41
- > **Note:** this uses your personal account session. What you can see (other
42
- > users' friends, presence, play history) is governed by normal PSN privacy
43
- > settings.
38
+ - Node.js 24.18+
39
+ - A PlayStation Network account (not needed for the store tools)
44
40
 
45
- ## Usage with an MCP client
41
+ ## 🚀 Usage with an MCP client
46
42
 
47
43
  No installation needed — run it with `npx`. Add to your client's MCP
48
44
  configuration (e.g. `claude_desktop_config.json`):
@@ -64,7 +60,40 @@ Or for Claude Code:
64
60
  claude mcp add psn -- npx -y psn-mcp
65
61
  ```
66
62
 
67
- ## Tools
63
+ ## 🔑 Signing in
64
+
65
+ The MCP server can automate NPSSO capture through an isolated browser profile:
66
+
67
+ 1. Start the MCP server without `PSN_NPSSO`.
68
+ 2. Call the `psn_begin_login` tool.
69
+ 3. Sign in to PlayStation in the browser window it opens.
70
+ 4. Call the `psn_complete_login` tool.
71
+
72
+ `psn_complete_login` reads the PlayStation `npsso` browser cookie, verifies it,
73
+ and stores it in `~/.config/psn-mcp/credentials.json` with owner-only file
74
+ permissions. Future server starts use the stored token automatically. Set
75
+ `PSN_NPSSO_FILE` to choose a different credential file.
76
+
77
+ <details>
78
+ <summary><strong>Manual NPSSO setup</strong> (if browser automation is unavailable)</summary>
79
+
80
+ <br />
81
+
82
+ 1. Sign in at [playstation.com](https://www.playstation.com).
83
+ 2. In the same browser, open <https://ca.account.sony.com/api/v1/ssocookie>.
84
+ 3. Copy the 64-character `npsso` value from the JSON response into `PSN_NPSSO`.
85
+
86
+ </details>
87
+
88
+ The server exchanges the NPSSO for an OAuth access token on first use and
89
+ refreshes it automatically. NPSSO tokens expire after about two months; when
90
+ tools start failing with an auth error, run the login flow again.
91
+
92
+ > [!NOTE]
93
+ > This uses your personal account session. What you can see (other users'
94
+ > friends, presence, play history) is governed by normal PSN privacy settings.
95
+
96
+ ## 🧰 Tools
68
97
 
69
98
  | Tool | Description |
70
99
  | ------------------------- | ------------------------------------------------------------------ |
@@ -95,12 +124,12 @@ The three `store` tools browse the public PlayStation Store and need **no PSN
95
124
  account**. Set `PSN_STORE_LOCALE` (e.g. `en-gb`, `de-de`, `ja-jp`) to change the
96
125
  store region and currency; the default is `en-us`.
97
126
 
98
- ## Examples
127
+ ## 💬 Examples
99
128
 
100
129
  Once the server is connected, just ask in natural language. Some prompts and the
101
130
  tools they exercise:
102
131
 
103
- **Presence and friends**
132
+ #### 🟢 Presence and friends
104
133
 
105
134
  > _"Is anyone on my friends list online right now? What are they playing?"_
106
135
 
@@ -112,7 +141,7 @@ who is online, on which platform, and in what game.
112
141
  Calls `psn_get_profile` with `user: "Hakoom"` — any tool that takes a `user`
113
142
  accepts `"me"`, an online id, or a numeric account id.
114
143
 
115
- **Trophies**
144
+ #### 🏆 Trophies
116
145
 
117
146
  > _"What's my trophy level, and what game did I most recently earn trophies
118
147
  > in?"_
@@ -127,13 +156,13 @@ Finds the game via `psn_get_trophy_titles` (getting its `npCommunicationId` and
127
156
  descriptions) with `psn_get_earned_trophies` (earned state and global rarity) to
128
157
  list the unearned ones, rarest first.
129
158
 
130
- **Play history**
159
+ #### ⏱️ Play history
131
160
 
132
161
  > _"How many hours have I put into my ten most-played PS5 games?"_
133
162
 
134
163
  Calls `psn_get_played_games` and ranks by total play duration.
135
164
 
136
- **Store (no PSN account needed)**
165
+ #### 🛒 Store (no PSN account needed)
137
166
 
138
167
  > _"Give me the top 10 games currently on sale based on review score."_
139
168
 
@@ -145,7 +174,7 @@ Calls `psn_get_store_deals` with `includeRatings: true` and ranks by
145
174
  Calls `psn_search_store` with `query: "Elden Ring"`, then
146
175
  `psn_get_store_product` for the price, discount, and star-rating breakdown.
147
176
 
148
- ## Architecture
177
+ ## 🏗️ Architecture
149
178
 
150
179
  ```
151
180
  src/
@@ -165,12 +194,23 @@ the Apollo state and star-rating payloads that the store server-renders into
165
194
  every page's `__NEXT_DATA__` blob. This needs no authentication but is
166
195
  inherently coupled to the store's page structure.
167
196
 
197
+ > **Need help outside this package?** I offer a €250 fixed-scope repair for one
198
+ > reproducible bug in a public TypeScript or React repository: an agreed
199
+ > acceptance test, a patch with relevant automated tests, a draft pull request,
200
+ > and one revision. [Submit a public request](https://github.com/tmrp/tmrp/issues/new?template=fixed-scope.yml&title=%5BRepair%20request%20via%20psn-mcp%5D%3A%20).
201
+ > Requests are reviewed before acceptance; no payment is due on submission.
202
+
168
203
  Authentication is lazy: the server starts and lists tools without credentials;
169
204
  the token exchange happens on the first tool call. Access tokens are refreshed
170
205
  ahead of expiry, falling back to a full NPSSO re-exchange if the refresh token
171
206
  has expired.
172
207
 
173
- ## Disclaimer
208
+ ## ⚠️ Disclaimer
174
209
 
175
210
  This project uses undocumented PSN endpoints and is not affiliated with or
176
211
  endorsed by Sony Interactive Entertainment. Use at your own risk.
212
+
213
+ <div align="center">
214
+ <br />
215
+ <sub>Licensed under <a href="./LICENSE">MIT</a></sub>
216
+ </div>
package/dist/index.js CHANGED
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
2
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
7
  import { TokenManager } from "./psn/auth.js";
@@ -7,6 +10,10 @@ import { PsnHttpClient } from "./psn/http.js";
7
10
  import { PsnApi } from "./psn/api.js";
8
11
  import { PsnStore } from "./psn/store.js";
9
12
  import { registerTools } from "./tools.js";
13
+ // Read the version at runtime rather than hardcoding it. package.json sits one
14
+ // level up from this file in both dev (src/) and the published package (dist/),
15
+ // and is included in the package's `files` list.
16
+ const { version } = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "package.json"), "utf8"));
10
17
  async function main() {
11
18
  const npsso = process.env.PSN_NPSSO || (await loadStoredNpsso()) || "";
12
19
  if (!npsso) {
@@ -21,7 +28,7 @@ async function main() {
21
28
  const psn = new PsnApi(new PsnHttpClient(tokens));
22
29
  // Store browsing is public web data; no PSN account needed.
23
30
  const store = new PsnStore(process.env.PSN_STORE_LOCALE ?? "en-us");
24
- const server = new McpServer({ name: "psn-mcp", version: "0.1.0" });
31
+ const server = new McpServer({ name: "psn-mcp", version });
25
32
  registerTools(server, psn, store, tokens);
26
33
  await server.connect(new StdioServerTransport());
27
34
  console.error("psn-mcp server running on stdio");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,qEAAqE;QACrE,OAAO,CAAC,KAAK,CACX,+FAA+F;YAC7F,mFAAmF;YACnF,+BAA+B,CAClC,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,+EAA+E;AAC/E,gFAAgF;AAChF,iDAAiD;AACjD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EACnE,MAAM,CACP,CACqB,CAAC;AAEzB,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,qEAAqE;QACrE,OAAO,CAAC,KAAK,CACX,+FAA+F;YAC7F,mFAAmF;YACnF,+BAA+B,CAClC,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-login.d.ts","sourceRoot":"","sources":["../../src/psn/browser-login.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAkD1E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAiBhF;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExD"}
1
+ {"version":3,"file":"browser-login.d.ts","sourceRoot":"","sources":["../../src/psn/browser-login.ts"],"names":[],"mappings":"AA2CA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAkD1E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAiBhF;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExD"}
@@ -140,7 +140,9 @@ async function readNpssoCookie(port) {
140
140
  }
141
141
  const socket = await openCdpSocket(page.webSocketDebuggerUrl);
142
142
  try {
143
- const response = await sendCdp(socket, "Network.getAllCookies");
143
+ // Storage.getCookies is the non-deprecated replacement for the older
144
+ // Network.getAllCookies; both return every cookie in the browser context.
145
+ const response = await sendCdp(socket, "Storage.getCookies");
144
146
  const cookie = response.cookies.find((candidate) => candidate.name.toLowerCase() === "npsso" && candidate.value);
145
147
  return cookie?.value ?? null;
146
148
  }
@@ -151,7 +153,7 @@ async function readNpssoCookie(port) {
151
153
  async function openCdpSocket(url) {
152
154
  const WebSocketCtor = globalThis.WebSocket;
153
155
  if (!WebSocketCtor) {
154
- throw new Error("This Node.js runtime does not expose WebSocket. Use Node.js 22+ for browser login.");
156
+ throw new Error("This Node.js runtime does not expose WebSocket. Use Node.js 24.18+ for browser login.");
155
157
  }
156
158
  const socket = new WebSocketCtor(url);
157
159
  await new Promise((resolve, reject) => {
@@ -162,23 +164,30 @@ async function openCdpSocket(url) {
162
164
  }
163
165
  async function sendCdp(socket, method) {
164
166
  const id = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
165
- const result = await new Promise((resolve, reject) => {
166
- const timeout = setTimeout(() => reject(new Error(`Timed out calling Chrome DevTools ${method}.`)), 5_000);
167
- socket.addEventListener("message", (event) => {
167
+ return new Promise((resolve, reject) => {
168
+ const onMessage = (event) => {
168
169
  const data = JSON.parse(String(event.data));
169
170
  if (data.id !== id)
170
171
  return;
171
- clearTimeout(timeout);
172
+ cleanup();
172
173
  if (data.error) {
173
174
  reject(new Error(data.error.message ?? `${method} failed.`));
174
175
  }
175
176
  else {
176
177
  resolve(data.result);
177
178
  }
178
- });
179
+ };
180
+ const cleanup = () => {
181
+ clearTimeout(timeout);
182
+ socket.removeEventListener("message", onMessage);
183
+ };
184
+ const timeout = setTimeout(() => {
185
+ cleanup();
186
+ reject(new Error(`Timed out calling Chrome DevTools ${method}.`));
187
+ }, 5_000);
188
+ socket.addEventListener("message", onMessage);
179
189
  socket.send(JSON.stringify({ id, method }));
180
190
  });
181
- return result;
182
191
  }
183
192
  async function fetchJson(url) {
184
193
  const res = await fetch(url);
@@ -1 +1 @@
1
- {"version":3,"file":"browser-login.js","sourceRoot":"","sources":["../../src/psn/browser-login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-login.js","sourceRoot":"","sources":["../../src/psn/browser-login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Maps over `items`, running at most `limit` calls at a time and preserving the
3
+ * input order in the returned array. Used to fan out per-item lookups (e.g.
4
+ * resolving a friends list to profiles) without firing hundreds of parallel
5
+ * requests at the PSN API, which invites throttling.
6
+ */
7
+ export declare function mapWithConcurrency<T, R>(items: readonly T[], limit: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
8
+ //# sourceMappingURL=concurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/psn/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,CAAC,EAAE,CAAC,CAgBd"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Maps over `items`, running at most `limit` calls at a time and preserving the
3
+ * input order in the returned array. Used to fan out per-item lookups (e.g.
4
+ * resolving a friends list to profiles) without firing hundreds of parallel
5
+ * requests at the PSN API, which invites throttling.
6
+ */
7
+ export async function mapWithConcurrency(items, limit, fn) {
8
+ if (limit < 1)
9
+ throw new Error("Concurrency limit must be at least 1.");
10
+ const results = new Array(items.length);
11
+ let next = 0;
12
+ const worker = async () => {
13
+ while (next < items.length) {
14
+ const index = next++;
15
+ results[index] = await fn(items[index], index);
16
+ }
17
+ };
18
+ const workerCount = Math.min(limit, items.length);
19
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
20
+ return results;
21
+ }
22
+ //# sourceMappingURL=concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/psn/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAmB,EACnB,KAAa,EACb,EAA0C;IAE1C,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -54,7 +54,12 @@ export declare class PsnStore {
54
54
  private readonly locale;
55
55
  constructor(locale?: string);
56
56
  private fetchNextData;
57
+ private toStorePrice;
57
58
  private toStoreItem;
59
+ private extractBatarangCaches;
60
+ private mergeProductEntities;
61
+ private findProductPrice;
62
+ private toStarRating;
58
63
  /** One page (24 items) of a store category grid, e.g. the "All deals" category. */
59
64
  getCategoryGrid(categoryId: string, page?: number): Promise<CategoryGridPage>;
60
65
  /** Product details including price and the community star rating. */
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/psn/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,kDAAkD;AAClD,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAI5E,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,CAAC,EAAE,MAAM;IAFjC,YACE,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EAIhC;CACF;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AASD,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,GAAE,MAAgB,EAAI;YAE3C,aAAa;IA4C3B,OAAO,CAAC,WAAW;IAwBnB,mFAAmF;IAC7E,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,IAAI,SAAI,GACP,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;IAED,qEAAqE;IAC/D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsBzD;IAED;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA0CzB,kEAAkE;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAY/C;IAED;;;OAGG;IACG,QAAQ,CACZ,IAAI,SAAI,EACR,cAAc,UAAQ,EACtB,UAAU,SAAwB,GACjC,OAAO,CACR,gBAAgB,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG;YAAE,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;KAAE,CAC7E,CAaA;CACF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/psn/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,kDAAkD;AAClD,eAAO,MAAM,qBAAqB,yCAAyC,CAAC;AAI5E,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,CAAC,EAAE,MAAM;IAFjC,YACE,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EAIhC;CACF;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAiBD,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,GAAE,MAAgB,EAAI;YAE3C,aAAa;IA4C3B,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,YAAY;IAiBpB,mFAAmF;IAC7E,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,IAAI,SAAI,GACP,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;IAED,qEAAqE;IAC/D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCzD;IAED;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA0BzB,kEAAkE;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAY/C;IAED;;;OAGG;IACG,QAAQ,CACZ,IAAI,SAAI,EACR,cAAc,UAAQ,EACtB,UAAU,SAAwB,GACjC,OAAO,CACR,gBAAgB,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG;YAAE,UAAU,CAAC,EAAE,UAAU,CAAA;SAAE,CAAC,CAAA;KAAE,CAC7E,CAaA;CACF"}
package/dist/psn/store.js CHANGED
@@ -8,6 +8,7 @@
8
8
  * __NEXT_DATA__ JSON blob. No authentication is required - this is the
9
9
  * public web store.
10
10
  */
11
+ import { mapWithConcurrency } from "./concurrency.js";
11
12
  const STORE_BASE = "https://store.playstation.com";
12
13
  /** The store's evergreen "All deals" category. */
13
14
  export const ALL_DEALS_CATEGORY_ID = "3f772501-f6f8-49b7-abac-874a88ca4897";
@@ -51,8 +52,32 @@ export class PsnStore {
51
52
  title,
52
53
  };
53
54
  }
54
- toStoreItem(entity) {
55
- const price = entity.price;
55
+ toStorePrice(value) {
56
+ if (!value || typeof value !== "object")
57
+ return undefined;
58
+ const price = value;
59
+ const discountText = [
60
+ price.discountText,
61
+ price.displayDiscountText,
62
+ price.savingTag,
63
+ ].find((field) => typeof field === "string" && field.length > 0);
64
+ const normalized = {
65
+ basePrice: typeof price.basePrice === "string" ? price.basePrice : undefined,
66
+ discountedPrice: typeof price.discountedPrice === "string"
67
+ ? price.discountedPrice
68
+ : undefined,
69
+ discountText,
70
+ isFree: typeof price.isFree === "boolean" ? price.isFree : undefined,
71
+ isTiedToSubscription: typeof price.isTiedToSubscription === "boolean"
72
+ ? price.isTiedToSubscription
73
+ : undefined,
74
+ };
75
+ return Object.values(normalized).some((field) => field !== undefined)
76
+ ? normalized
77
+ : undefined;
78
+ }
79
+ toStoreItem(entity, priceOverride) {
80
+ const price = priceOverride ?? this.toStorePrice(entity.price);
56
81
  const media = entity.media;
57
82
  const image = media?.find((m) => m.type === "IMAGE" && m.role === "MASTER") ??
58
83
  media?.find((m) => m.type === "IMAGE");
@@ -62,16 +87,92 @@ export class PsnStore {
62
87
  type: (entity.localizedStoreDisplayClassification ??
63
88
  entity.storeDisplayClassification),
64
89
  platforms: entity.platforms,
65
- price: price && {
66
- basePrice: price.basePrice,
67
- discountedPrice: price.discountedPrice,
68
- discountText: price.discountText,
69
- isFree: price.isFree,
70
- isTiedToSubscription: price.isTiedToSubscription,
71
- },
90
+ price,
72
91
  imageUrl: image?.url,
73
92
  };
74
93
  }
94
+ extractBatarangCaches(pageProps) {
95
+ const batarangs = pageProps.batarangs;
96
+ const caches = [];
97
+ for (const batarang of Object.values(batarangs ?? {})) {
98
+ const text = batarang.text;
99
+ if (!text)
100
+ continue;
101
+ const inner = text.match(/<script[^>]*>(.*)<\/script>/s)?.[1];
102
+ if (!inner)
103
+ continue;
104
+ try {
105
+ const payload = JSON.parse(inner);
106
+ if (payload.cache)
107
+ caches.push(payload.cache);
108
+ }
109
+ catch {
110
+ // A malformed optional micro-frontend must not hide the base product.
111
+ }
112
+ }
113
+ return caches;
114
+ }
115
+ mergeProductEntities(states, productId) {
116
+ const matches = [];
117
+ for (const state of states) {
118
+ for (const [key, value] of Object.entries(state)) {
119
+ const productKey = `Product:${productId}`;
120
+ if ((key === productKey ||
121
+ key.startsWith(`${productKey}:`) ||
122
+ (value.__typename === "Product" && value.id === productId)) &&
123
+ !matches.includes(value)) {
124
+ matches.push(value);
125
+ }
126
+ }
127
+ }
128
+ return matches.length > 0 ? Object.assign({}, ...matches) : undefined;
129
+ }
130
+ findProductPrice(product, states, productId) {
131
+ const direct = this.toStorePrice(product.price);
132
+ if (direct)
133
+ return direct;
134
+ const ctaRefs = product.webctas ?? [];
135
+ for (const ref of ctaRefs) {
136
+ if (!ref.__ref)
137
+ continue;
138
+ for (const state of states) {
139
+ const price = this.toStorePrice(state[ref.__ref]?.price);
140
+ if (price)
141
+ return price;
142
+ }
143
+ }
144
+ // Current product pages keep the price on a GameCTA entity in a
145
+ // micro-frontend cache. The primary product id is part of that entity key.
146
+ for (const state of states) {
147
+ for (const [key, value] of Object.entries(state)) {
148
+ const matchesProduct = key.split(":").some((segment) => {
149
+ if (segment === productId)
150
+ return true;
151
+ const skuSuffix = segment.slice(productId.length);
152
+ return (segment.startsWith(`${productId}-U`) && /^-U\d+$/.test(skuSuffix));
153
+ });
154
+ if (value.__typename !== "GameCTA" || !matchesProduct) {
155
+ continue;
156
+ }
157
+ const price = this.toStorePrice(value.price);
158
+ if (price)
159
+ return price;
160
+ }
161
+ }
162
+ return undefined;
163
+ }
164
+ toStarRating(value) {
165
+ if (!value || typeof value !== "object")
166
+ return undefined;
167
+ const rating = value;
168
+ if (rating.averageRating === undefined)
169
+ return undefined;
170
+ return {
171
+ averageRating: rating.averageRating,
172
+ totalRatingsCount: rating.totalRatingsCount ?? 0,
173
+ ratingsDistribution: rating.ratingsDistribution?.map(({ rating: score, percentage }) => ({ rating: score, percentage })),
174
+ };
175
+ }
75
176
  /** One page (24 items) of a store category grid, e.g. the "All deals" category. */
76
177
  async getCategoryGrid(categoryId, page = 1) {
77
178
  const { apollo, title } = await this.fetchNextData(`/category/${encodeURIComponent(categoryId)}/${page}`);
@@ -101,15 +202,24 @@ export class PsnStore {
101
202
  /** Product details including price and the community star rating. */
102
203
  async getProduct(productId) {
103
204
  const { apollo, pageProps } = await this.fetchNextData(`/product/${encodeURIComponent(productId)}`);
104
- const entity = apollo[`Product:${productId}`] ??
105
- Object.entries(apollo).find(([key, value]) => key.startsWith("Product:") && value.__typename === "Product")?.[1];
205
+ // Sony now normalizes product pages across several independently rendered
206
+ // micro-frontends. Merge every fragment for this exact product so the
207
+ // result contains the image/platform/type fields as well as the base name.
208
+ const states = [apollo, ...this.extractBatarangCaches(pageProps)];
209
+ const entity = this.mergeProductEntities(states, productId);
106
210
  if (!entity) {
107
211
  throw new PsnStoreError(`Product ${productId} not found on the PlayStation Store.`);
108
212
  }
213
+ const concept = entity.concept;
214
+ const conceptId = entity.conceptId == null
215
+ ? (concept?.id?.toString() ?? concept?.__ref?.replace(/^Concept:/, ""))
216
+ : String(entity.conceptId);
109
217
  return {
110
- ...this.toStoreItem(entity),
111
- starRating: this.extractStarRating(pageProps, productId),
112
- url: `${STORE_BASE}/${this.locale}/product/${productId}`,
218
+ ...this.toStoreItem(entity, this.findProductPrice(entity, states, productId)),
219
+ starRating: this.toStarRating(entity.starRating) ??
220
+ this.extractStarRating(pageProps, productId),
221
+ conceptId,
222
+ url: `${STORE_BASE}/${this.locale}/product/${encodeURIComponent(productId)}`,
113
223
  };
114
224
  }
115
225
  /**
@@ -127,18 +237,8 @@ export class PsnStore {
127
237
  try {
128
238
  const payload = JSON.parse(inner);
129
239
  const cached = payload.cache?.[`Product:${productId}`] ??
130
- Object.values(payload.cache ?? {}).find((v) => v.__typename === "Product" && v.starRating);
131
- const rating = cached?.starRating;
132
- if (rating?.averageRating === undefined)
133
- return undefined;
134
- return {
135
- averageRating: rating.averageRating,
136
- totalRatingsCount: rating.totalRatingsCount ?? 0,
137
- ratingsDistribution: rating.ratingsDistribution?.map(({ rating: r, percentage }) => ({
138
- rating: r,
139
- percentage,
140
- })),
141
- };
240
+ Object.values(payload.cache ?? {}).find((v) => v.__typename === "Product" && v.id === productId && v.starRating);
241
+ return this.toStarRating(cached?.starRating);
142
242
  }
143
243
  catch {
144
244
  return undefined;
@@ -173,16 +273,4 @@ export class PsnStore {
173
273
  return { ...grid, items };
174
274
  }
175
275
  }
176
- async function mapWithConcurrency(inputs, concurrency, fn) {
177
- const results = new Array(inputs.length);
178
- let next = 0;
179
- const workers = Array.from({ length: Math.min(concurrency, inputs.length) }, async () => {
180
- while (next < inputs.length) {
181
- const index = next++;
182
- results[index] = await fn(inputs[index]);
183
- }
184
- });
185
- await Promise.all(workers);
186
- return results;
187
- }
188
276
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/psn/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/psn/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AAE5E,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,qCAAqC;AAE3D,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB,MAAM;IAFxB,YACE,OAAe,EACC,MAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;sBAFC,MAAM;QAGtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAuDD,MAAM,OAAO,QAAQ;IACU,MAAM;IAAnC,YAA6B,MAAM,GAAW,OAAO;sBAAxB,MAAM;IAAqB,CAAC;IAEjD,KAAK,CAAC,aAAa,CAAC,IAAY;QAKtC,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,YAAY,EACV,6GAA6G;gBAC/G,iBAAiB,EAAE,gBAAgB;aACpC;YACD,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,aAAa,CACrB,gCAAgC,GAAG,qBAAqB,GAAG,CAAC,MAAM,EAAE,EACpE,GAAG,CAAC,MAAM,CACX,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,sEAAsE,CACvE,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CACrB,wCAAwC,GAAG,sCAAsC,CAClF,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAK/B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE;YACrC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;YACtC,KAAK;SACN,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,MAAM,YAAY,GAAG;YACnB,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,mBAAmB;YACzB,KAAK,CAAC,SAAS;SAChB,CAAC,IAAI,CACJ,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAC1E,CAAC;QACF,MAAM,UAAU,GAAe;YAC7B,SAAS,EACP,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACnE,eAAe,EACb,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ;gBACvC,CAAC,CAAC,KAAK,CAAC,eAAe;gBACvB,CAAC,CAAC,SAAS;YACf,YAAY;YACZ,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACpE,oBAAoB,EAClB,OAAO,KAAK,CAAC,oBAAoB,KAAK,SAAS;gBAC7C,CAAC,CAAC,KAAK,CAAC,oBAAoB;gBAC5B,CAAC,CAAC,SAAS;SAChB,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;YACnE,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,WAAW,CACjB,MAAoB,EACpB,aAA0B;QAE1B,MAAM,KAAK,GAAG,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAC2C,CAAC;QACjE,MAAM,KAAK,GACT,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC7D,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACzC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;YAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,MAAM,CAAC,mCAAmC;gBAC/C,MAAM,CAAC,0BAA0B,CAAuB;YAC1D,SAAS,EAAE,MAAM,CAAC,SAAiC;YACnD,KAAK;YACL,QAAQ,EAAE,KAAK,EAAE,GAAG;SACrB,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAC3B,SAAkC;QAElC,MAAM,SAAS,GAAG,SAAS,CAAC,SACmB,CAAC;QAChD,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAoB,CAAC;gBACrD,IAAI,OAAO,CAAC,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAC1B,MAAqB,EACrB,SAAiB;QAEjB,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,WAAW,SAAS,EAAE,CAAC;gBAC1C,IACE,CAAC,GAAG,KAAK,UAAU;oBACjB,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;oBAChC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;oBAC7D,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxB,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,CAAC;IAEO,gBAAgB,CACtB,OAAqB,EACrB,MAAqB,EACrB,SAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,OAAO,GAAI,OAAO,CAAC,OAAmC,IAAI,EAAE,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,SAAS;YACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACzD,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,2EAA2E;QAC3E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBACrD,IAAI,OAAO,KAAK,SAAS;wBAAE,OAAO,IAAI,CAAC;oBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAClD,OAAO,CACL,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAClE,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtD,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1D,MAAM,MAAM,GAAG,KAId,CAAC;QACF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACzD,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,CAAC;YAChD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAClD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CACnE;SACF,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,IAAI,GAAG,CAAC;QAER,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAChD,aAAa,kBAAkB,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CACtD,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACjD,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAChC,EAAE,CAAC,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,aAAa,CACrB,uCAAuC,UAAU,UAAU,IAAI,KAAK;gBAClE,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,GACP,IAAI,CAAC,QAAqD,IAAI,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI;aACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;YAC7C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACnB,CAAC,CAAC,GAAG,CACR;aACA,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAK,CAAkB,CAAC,EAAE,CAAC,CAAC;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA+C,CAAC;QACtE,OAAO;YACL,UAAU;YACV,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAC1C,IAAI;YACJ,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,QAAQ,EAAE,UAAU;YAChC,KAAK;SACN,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CACpD,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAC5C,CAAC;QAEF,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,aAAa,CACrB,WAAW,SAAS,sCAAsC,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAC+B,CAAC;QACvD,MAAM,SAAS,GACb,MAAM,CAAC,SAAS,IAAI,IAAI;YACtB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE/B,OAAO;YACL,GAAG,IAAI,CAAC,WAAW,CACjB,MAAM,EACN,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CACjD;YACD,UAAU,EACR,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;gBACpC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;YAC9C,SAAS;YACT,GAAG,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE;SAC7E,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,iBAAiB,CACvB,SAAkC,EAClC,SAAiB;QAEjB,MAAM,SAAS,GAAG,SAAS,CAAC,SACmB,CAAC;QAChD,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAoB,CAAC;YACrD,MAAM,MAAM,GACV,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,SAAS,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CACnE,CAAC;YACJ,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CACzC,WAAW,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACtC,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAC1B,MAAM,CACL,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAC1B,KAAK,CAAC,UAAU,KAAK,SAAS;YAC9B,KAAK,CAAC,IAAI,CACb;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,IAAI,GAAG,CAAC,EACR,cAAc,GAAG,KAAK,EACtB,UAAU,GAAG,qBAAqB;QAIlC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACnE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC,CAAC,2CAA2C;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
package/dist/tools.d.ts CHANGED
@@ -2,5 +2,17 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { PsnApi } from "./psn/api.js";
3
3
  import { type TokenManager } from "./psn/auth.js";
4
4
  import { type PsnStore } from "./psn/store.js";
5
+ interface ResolvedFriend {
6
+ accountId: string;
7
+ onlineId?: string;
8
+ isPlus?: boolean;
9
+ }
10
+ /**
11
+ * Resolves bare friend account ids to lightweight profiles, capping the number
12
+ * of in-flight requests. A profile that can't be fetched (e.g. the friend's
13
+ * privacy settings) falls back to just the account id.
14
+ */
15
+ export declare function resolveFriendProfiles(psn: Pick<PsnApi, "getProfile">, accountIds: readonly string[]): Promise<ResolvedFriend[]>;
5
16
  export declare function registerTools(server: McpServer, psn: PsnApi, store: PsnStore, tokens: TokenManager): void;
17
+ export {};
6
18
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAqCtE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,YAAY,GACnB,IAAI,CAsYN"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAUtE,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB3B;AAqCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,YAAY,GACnB,IAAI,CAyXN"}
package/dist/tools.js CHANGED
@@ -1,8 +1,36 @@
1
1
  import { z } from "zod";
2
2
  import { beginBrowserLogin, cancelBrowserLogin, completeBrowserLogin, hasActiveBrowserLogin, } from "./psn/browser-login.js";
3
3
  import { authenticateWithNpsso } from "./psn/auth.js";
4
+ import { mapWithConcurrency } from "./psn/concurrency.js";
4
5
  import { credentialsPath, saveStoredNpsso } from "./psn/credentials.js";
5
6
  import { ALL_DEALS_CATEGORY_ID } from "./psn/store.js";
7
+ /**
8
+ * How many friend profiles to resolve at once. The friends endpoint returns
9
+ * bare account ids, so each friend needs a profile lookup; bounding the
10
+ * parallelism keeps a large friends list from fanning out into hundreds of
11
+ * simultaneous PSN requests.
12
+ */
13
+ const FRIEND_RESOLUTION_CONCURRENCY = 8;
14
+ /**
15
+ * Resolves bare friend account ids to lightweight profiles, capping the number
16
+ * of in-flight requests. A profile that can't be fetched (e.g. the friend's
17
+ * privacy settings) falls back to just the account id.
18
+ */
19
+ export async function resolveFriendProfiles(psn, accountIds) {
20
+ return mapWithConcurrency(accountIds, FRIEND_RESOLUTION_CONCURRENCY, async (id) => {
21
+ try {
22
+ const profile = await psn.getProfile(id);
23
+ return {
24
+ accountId: id,
25
+ onlineId: profile.onlineId,
26
+ isPlus: profile.isPlus,
27
+ };
28
+ }
29
+ catch {
30
+ return { accountId: id };
31
+ }
32
+ });
33
+ }
6
34
  const userParam = z
7
35
  .string()
8
36
  .describe('PSN user: "me" for the authenticated account, a PSN online id (username), or a numeric account id.');
@@ -128,19 +156,7 @@ export function registerTools(server, psn, store, tokens) {
128
156
  const accountId = await psn.resolveAccountId(user);
129
157
  const friends = await psn.getFriends(accountId, limit, offset);
130
158
  // The friends endpoint returns bare account ids; resolve them to profiles.
131
- const profiles = await Promise.all(friends.friends.map(async (id) => {
132
- try {
133
- const profile = await psn.getProfile(id);
134
- return {
135
- accountId: id,
136
- onlineId: profile.onlineId,
137
- isPlus: profile.isPlus,
138
- };
139
- }
140
- catch {
141
- return { accountId: id };
142
- }
143
- }));
159
+ const profiles = await resolveFriendProfiles(psn, friends.friends);
144
160
  return {
145
161
  totalItemCount: friends.totalItemCount,
146
162
  nextOffset: friends.nextOffset,
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "psn-mcp",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "description": "MCP server for interfacing with the PlayStation Network",
5
5
  "type": "module",
6
6
  "license": "MIT",