@droposs/plugin-sdk 0.2.0 → 0.4.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.
@@ -1,6 +1,6 @@
1
- import type { AntiCheatReport, ClientCapability, ClientPluginContext, ClientPluginStorage, ClientPluginWebSocket, GameMenuItem, HttpMethod, LaunchHook, PlayAction, PluginLogger, ScopedGameFs, ScopedGameScanner, SidebarItem, TopBarItem, UISlotName, UISlotRegistration } from "./types.js";
1
+ import type { AntiCheatReport, ClientCapability, ClientPluginContext, ClientPluginStorage, ClientPluginSystem, ClientPluginWebSocket, CloudSavePathResolver, CommandOptions, CommandResult, GameMenuItem, HttpMethod, LaunchHook, MetadataProvider, PlayAction, PluginLogger, ScopedGameFs, ScopedGameScanner, SidebarItem, StoreScanner, TopBarItem, UISlotName, UISlotRegistration } from "./types.js";
2
2
  export declare class MockClientPluginStorage implements ClientPluginStorage {
3
- private store;
3
+ private readonly store;
4
4
  get<T>(key: string): Promise<T | null>;
5
5
  set<T>(key: string, value: T): Promise<void>;
6
6
  delete(key: string): Promise<void>;
@@ -57,6 +57,19 @@ export declare class MockClientServerRequest {
57
57
  setResponse(method: HttpMethod, path: string, value: unknown): void;
58
58
  request<T = unknown>(method: HttpMethod, path?: string, body?: unknown): Promise<T>;
59
59
  }
60
+ export declare class MockSystemCommand implements ClientPluginSystem {
61
+ calls: Array<{
62
+ bin: string;
63
+ args: string[];
64
+ options?: CommandOptions;
65
+ }>;
66
+ responses: Map<string, CommandResult>;
67
+ /** Result returned when no canned response is registered. */
68
+ fallback: CommandResult;
69
+ private key;
70
+ setResponse(bin: string, args: string[], result: CommandResult): void;
71
+ run(bin: string, args?: string[], options?: CommandOptions): Promise<CommandResult>;
72
+ }
60
73
  export declare class MockClientPluginContext implements ClientPluginContext {
61
74
  id: string;
62
75
  logger: PluginLogger;
@@ -68,10 +81,15 @@ export declare class MockClientPluginContext implements ClientPluginContext {
68
81
  sidebarItems: SidebarItem[];
69
82
  topBarItems: TopBarItem[];
70
83
  launchHooks: LaunchHook[];
84
+ storeScanners: StoreScanner[];
85
+ metadataProviders: MetadataProvider[];
86
+ cloudSaveResolvers: CloudSavePathResolver[];
71
87
  gameFs: MockScopedGameFs;
72
88
  gameScanner: MockScopedGameScanner;
73
89
  serverWs: MockClientPluginWebSocket;
74
90
  serverRequestLog: MockClientServerRequest;
91
+ systemCommand: MockSystemCommand;
92
+ system: ClientPluginSystem;
75
93
  constructor(id: string, capabilities?: ClientCapability[]);
76
94
  registerSlot(slot: UISlotName, component: unknown, options?: {
77
95
  order?: number;
@@ -83,6 +101,9 @@ export declare class MockClientPluginContext implements ClientPluginContext {
83
101
  registerSidebarItem(item: SidebarItem): () => void;
84
102
  registerTopBarItem(item: TopBarItem): () => void;
85
103
  registerLaunchHook(hook: LaunchHook): () => void;
104
+ registerStoreScanner(scanner: StoreScanner): () => void;
105
+ registerMetadataProvider(provider: MetadataProvider): () => void;
106
+ registerCloudSaveResolver(resolver: CloudSavePathResolver): () => void;
86
107
  serverRequest<T = unknown>(method: HttpMethod, path?: string, body?: unknown): Promise<T>;
87
108
  resolvePlayActions(gameId: string): Promise<PlayAction[]>;
88
109
  private assertCapability;
@@ -1 +1 @@
1
- {"version":3,"file":"client-mock.d.ts","sourceRoot":"","sources":["../src/client-mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-mock.d.ts","sourceRoot":"","sources":["../src/client-mock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAE1C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGpC;AAED,qBAAa,gBAAiB,YAAW,YAAY;IAC5C,KAAK,2CAAiC;IACtC,OAAO;gBAA6B,MAAM;iBAAW,UAAU;OAAM;IAE5E,OAAO,CAAC,OAAO;IAIT,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASnE,SAAS,CACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAOV,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAItE;AAED,qBAAa,qBAAsB,YAAW,iBAAiB;IACtD,eAAe,EAAE,KAAK,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAM;IACD,aAAa,EAAE,eAAe,CAAuB;IAEtD,eAAe,CACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAInE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAGhE;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,YAAY,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAM;IAC7D,WAAW,yBAA8B,OAAO,KAAK,IAAI,GAAK;IAE/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAUzE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAQ5D;AAED,qBAAa,uBAAuB;IAC3B,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CACpE;IACE,SAAS,uBAA8B;IAC9C,4DAA4D;IACrD,QAAQ,EAAE,OAAO,CAAM;IAE9B,OAAO,CAAC,GAAG;IAKX,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI7D,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,UAAU,EAClB,IAAI,SAAK,EACT,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;CAOd;AAED,qBAAa,iBAAkB,YAAW,kBAAkB;IACnD,KAAK,EAAE,KAAK,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,EAAE,cAAc,CAAC;KAC1B,CAAC,CAAM;IACD,SAAS,6BAAoC;IACpD,6DAA6D;IACtD,QAAQ,EAAE,aAAa,CAAuC;IAErE,OAAO,CAAC,GAAG;IAIX,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAI/D,GAAG,CACP,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;CAK1B;AAED,qBAAa,uBAAwB,YAAW,mBAAmB;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEpC,eAAe,wCAA+C;IAC9D,mBAAmB,EAAE,KAAK,CAC/B,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,CACzD,CAAM;IACA,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAC3C,kBAAkB,EAAE,qBAAqB,EAAE,CAAM;IAEjD,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,aAAa,EAAE,iBAAiB,CAAC;IACjC,MAAM,EAAE,kBAAkB,CAAC;gBAGhC,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,gBAAgB,EAW7B;IAmBH,YAAY,CACV,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9D,IAAI;IAcP,kBAAkB,CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,GACjE,MAAM,IAAI;IASb,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,IAAI;IASpD,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI;IASlD,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI;IAShD,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI;IAShD,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAYvD,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAYhE,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAYhE,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,SAAK,EACT,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAIP,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS/D,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -2,12 +2,10 @@ import { MockPluginLogger } from "./mock.js";
2
2
  export class MockClientPluginStorage {
3
3
  store = new Map();
4
4
  async get(key) {
5
- return this.store.has(key)
6
- ? JSON.parse(JSON.stringify(this.store.get(key)))
7
- : null;
5
+ return this.store.has(key) ? structuredClone(this.store.get(key)) : null;
8
6
  }
9
7
  async set(key, value) {
10
- this.store.set(key, JSON.parse(JSON.stringify(value)));
8
+ this.store.set(key, structuredClone(value));
11
9
  }
12
10
  async delete(key) {
13
11
  this.store.delete(key);
@@ -20,7 +18,7 @@ export class MockScopedGameFs {
20
18
  files = new Map();
21
19
  backups = new Map();
22
20
  makeKey(gameId, path) {
23
- return `${gameId}:${path.replace(/\\/g, "/")}`;
21
+ return `${gameId}:${path.replaceAll("\\", "/")}`;
24
22
  }
25
23
  async readFile(gameId, relativePath) {
26
24
  const key = this.makeKey(gameId, relativePath);
@@ -42,7 +40,10 @@ export class MockScopedGameFs {
42
40
  throw new Error(`Cannot backup non-existent file: ${relativePath}`);
43
41
  }
44
42
  const mockHash = "mock-sha256-" + content.length;
45
- this.backups.set(key, { sha256: mockHash, content: new Uint8Array(content) });
43
+ this.backups.set(key, {
44
+ sha256: mockHash,
45
+ content: new Uint8Array(content),
46
+ });
46
47
  return mockHash;
47
48
  }
48
49
  async restoreFile(gameId, relativePath) {
@@ -117,6 +118,23 @@ export class MockClientServerRequest {
117
118
  return value;
118
119
  }
119
120
  }
121
+ export class MockSystemCommand {
122
+ calls = [];
123
+ responses = new Map();
124
+ /** Result returned when no canned response is registered. */
125
+ fallback = { code: 0, stdout: "", stderr: "" };
126
+ key(bin, args) {
127
+ return [bin, ...args].join(" ");
128
+ }
129
+ setResponse(bin, args, result) {
130
+ this.responses.set(this.key(bin, args), result);
131
+ }
132
+ async run(bin, args = [], options) {
133
+ this.calls.push({ bin, args, options });
134
+ const result = this.responses.get(this.key(bin, args)) ?? this.fallback;
135
+ return { ...result };
136
+ }
137
+ }
120
138
  export class MockClientPluginContext {
121
139
  id;
122
140
  logger;
@@ -128,10 +146,15 @@ export class MockClientPluginContext {
128
146
  sidebarItems = [];
129
147
  topBarItems = [];
130
148
  launchHooks = [];
149
+ storeScanners = [];
150
+ metadataProviders = [];
151
+ cloudSaveResolvers = [];
131
152
  gameFs;
132
153
  gameScanner;
133
154
  serverWs;
134
155
  serverRequestLog;
156
+ systemCommand;
157
+ system;
135
158
  constructor(id, capabilities = [
136
159
  "ui:slot",
137
160
  "ui:play-action",
@@ -152,6 +175,13 @@ export class MockClientPluginContext {
152
175
  this.gameScanner = new MockScopedGameScanner();
153
176
  this.serverWs = new MockClientPluginWebSocket();
154
177
  this.serverRequestLog = new MockClientServerRequest();
178
+ this.systemCommand = new MockSystemCommand();
179
+ this.system = {
180
+ run: async (bin, args, options) => {
181
+ this.assertCapability("system:command");
182
+ return await this.systemCommand.run(bin, args, options);
183
+ },
184
+ };
155
185
  }
156
186
  registerSlot(slot, component, options = {}) {
157
187
  this.assertCapability("ui:slot");
@@ -211,6 +241,42 @@ export class MockClientPluginContext {
211
241
  this.launchHooks.splice(idx, 1);
212
242
  };
213
243
  }
244
+ registerStoreScanner(scanner) {
245
+ if (!scanner || typeof scanner.id !== "string" || !scanner.id.trim()) {
246
+ throw new Error("Store scanner must have a valid non-empty id");
247
+ }
248
+ this.assertCapability("client:library-scan");
249
+ this.storeScanners.push(scanner);
250
+ return () => {
251
+ const idx = this.storeScanners.indexOf(scanner);
252
+ if (idx !== -1)
253
+ this.storeScanners.splice(idx, 1);
254
+ };
255
+ }
256
+ registerMetadataProvider(provider) {
257
+ if (!provider || typeof provider.id !== "string" || !provider.id.trim()) {
258
+ throw new Error("Metadata provider must have a valid non-empty id");
259
+ }
260
+ this.assertCapability("metadata:provider");
261
+ this.metadataProviders.push(provider);
262
+ return () => {
263
+ const idx = this.metadataProviders.indexOf(provider);
264
+ if (idx !== -1)
265
+ this.metadataProviders.splice(idx, 1);
266
+ };
267
+ }
268
+ registerCloudSaveResolver(resolver) {
269
+ if (!resolver || typeof resolver.id !== "string" || !resolver.id.trim()) {
270
+ throw new Error("Cloud save resolver must have a valid non-empty id");
271
+ }
272
+ this.assertCapability("cloudsave:provider");
273
+ this.cloudSaveResolvers.push(resolver);
274
+ return () => {
275
+ const idx = this.cloudSaveResolvers.indexOf(resolver);
276
+ if (idx !== -1)
277
+ this.cloudSaveResolvers.splice(idx, 1);
278
+ };
279
+ }
214
280
  async serverRequest(method, path = "", body) {
215
281
  return this.serverRequestLog.request(method, path, body);
216
282
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client-mock.js","sourceRoot":"","sources":["../src/client-mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-mock.js","sourceRoot":"","sources":["../src/client-mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AA0B7C,MAAM,OAAO,uBAAuB;IACjB,KAAK,GAAG,IAAI,GAAG,EAAe,CAAC;IAEhD,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IACpB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,OAAO,GAAG,IAAI,GAAG,EAAmD,CAAC;IAEpE,OAAO,CAAC,MAAc,EAAE,IAAY;QAC1C,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,YAAoB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAc,EACd,YAAoB,EACpB,IAAyB;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,YAAoB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,YAAoB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,YAAoB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,YAAoB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IACzB,eAAe,GAIjB,EAAE,CAAC;IACD,aAAa,GAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAE5D,KAAK,CAAC,eAAe,CACnB,OAAe;QAEf,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAC7B,YAAY,GAA8C,EAAE,CAAC;IAC7D,WAAW,GAAG,IAAI,GAAG,EAAwC,CAAC;IAErE,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAa;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,QAAiC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,OAAe,EAAE,IAAa;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IAC3B,KAAK,GACV,EAAE,CAAC;IACE,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC9C,4DAA4D;IACrD,QAAQ,GAAY,EAAE,CAAC;IAEtB,GAAG,CAAC,MAAkB,EAAE,IAAY;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACvD,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,MAAkB,EAAE,IAAY,EAAE,KAAc;QAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAkB,EAClB,IAAI,GAAG,EAAE,EACT,IAAc;QAEd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClB,OAAO,KAAU,CAAC;IACpB,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IACrB,KAAK,GAIP,EAAE,CAAC;IACD,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,6DAA6D;IACtD,QAAQ,GAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE7D,GAAG,CAAC,GAAW,EAAE,IAAc;QACrC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,IAAc,EAAE,MAAqB;QAC5D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,OAAiB,EAAE,EACnB,OAAwB;QAExB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACxE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IAC3B,EAAE,CAAS;IACX,MAAM,CAAe;IACrB,OAAO,CAAsB;IAC7B,YAAY,CAAwB;IAEpC,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,mBAAmB,GAEtB,EAAE,CAAC;IACA,aAAa,GAAmB,EAAE,CAAC;IACnC,YAAY,GAAkB,EAAE,CAAC;IACjC,WAAW,GAAiB,EAAE,CAAC;IAC/B,WAAW,GAAiB,EAAE,CAAC;IAC/B,aAAa,GAAmB,EAAE,CAAC;IACnC,iBAAiB,GAAuB,EAAE,CAAC;IAC3C,kBAAkB,GAA4B,EAAE,CAAC;IAEjD,MAAM,CAAmB;IACzB,WAAW,CAAwB;IACnC,QAAQ,CAA4B;IACpC,gBAAgB,CAA0B;IAC1C,aAAa,CAAoB;IACjC,MAAM,CAAqB;IAElC,YACE,EAAU,EACV,eAAmC;QACjC,SAAS;QACT,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,SAAS;QACT,WAAW;QACX,gBAAgB;QAChB,WAAW;KACZ;QAED,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;gBAChC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;gBACxC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;SACF,CAAC;IACJ,CAAC;IAED,YAAY,CACV,IAAgB,EAChB,SAAkB,EAClB,UAA6D,EAAE;QAE/D,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC;YACnC,IAAI;YACJ,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAChB,QAAkE;QAElE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,IAAkB;QACrC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,IAAiB;QACnC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,IAAgB;QACjC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,IAAgB;QACjC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,OAAqB;QACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,QAA0B;QACjD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC;IAED,yBAAyB,CAAC,QAA+B;QACvD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAAkB,EAClB,IAAI,GAAG,EAAE,EACT,IAAc;QAEd,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAC,GAAqB;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,EAAE,kCAAkC,GAAG,GAAG,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
package/dist/mock.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import type { HttpMethod, PluginCapability, PluginContext, PluginLogger, PluginStorage, RouteHandler, SubscriptionAuthorizer, WebSocketHandler } from "./types.js";
1
+ import type { CloudSavePathResolver, HttpMethod, MetadataProvider, PaymentGateway, PluginCapability, PluginContext, PluginLogger, PluginStorage, RouteHandler, SubscriptionAuthorizer, WebSocketHandler } from "./types.js";
2
2
  export declare class MockPluginStorage implements PluginStorage {
3
- private store;
3
+ private readonly store;
4
4
  private schemaVersion;
5
5
  get<T>(key: string): Promise<T | null>;
6
6
  set<T>(key: string, value: T): Promise<void>;
@@ -35,9 +35,20 @@ export declare class MockPluginContext implements PluginContext {
35
35
  registerRoute(method: HttpMethod, pattern: string, handler: RouteHandler): void;
36
36
  broadcast(channel: string, event: unknown): void;
37
37
  subscribe(channel: string, listener: (event: unknown) => void): () => void;
38
- registerWebSocket(channel: string, handler: WebSocketHandler): void;
38
+ readonly publicChannels: Set<string>;
39
+ registerWebSocket(channel: string, handler: WebSocketHandler, options?: {
40
+ public?: boolean;
41
+ }): void;
42
+ registerPublicWebSocketChannel(channel: string): void;
43
+ isPublicChannel(channel: string): boolean;
39
44
  registerSubscriptionAuthorizer(matches: (channel: string) => boolean, authorize: SubscriptionAuthorizer): void;
40
45
  fetch(input: string | URL, init?: RequestInit): Promise<Response>;
46
+ metadataProviders: Map<string, MetadataProvider>;
47
+ paymentGateways: Map<string, PaymentGateway>;
48
+ cloudSaveResolvers: Map<string, CloudSavePathResolver>;
49
+ registerMetadataProvider(provider: MetadataProvider): void;
50
+ registerPaymentGateway(gateway: PaymentGateway): void;
51
+ registerCloudSaveResolver(resolver: CloudSavePathResolver): void;
41
52
  private assertCapability;
42
53
  }
43
54
  //# sourceMappingURL=mock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,aAAa,CAAK;IAEpB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvD;AAED,qBAAa,gBAAiB,YAAW,YAAY;IACnD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAGvC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAGvC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAGxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAGzC;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEpC,MAAM;gBAA6B,UAAU;iBAAW,MAAM;iBAAW,YAAY;OAAM;IAC3F,UAAU,gCAAuC;IACjD,cAAc,0BAA+B,OAAO,KAAK,IAAI,GAAK;IAClE,WAAW,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC,CAAM;gBAEtF,EAAE,EAAE,MAAM,EAAE,YAAY,GAAE,gBAAgB,EAA4D;IAOlH,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAK/E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAUhD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAW1E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAKnE,8BAA8B,CAC5B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,EACrC,SAAS,EAAE,sBAAsB,GAChC,IAAI;IAKD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKvE,OAAO,CAAC,gBAAgB;CAKzB"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/mock.js CHANGED
@@ -2,10 +2,10 @@ export class MockPluginStorage {
2
2
  store = new Map();
3
3
  schemaVersion = 0;
4
4
  async get(key) {
5
- return this.store.has(key) ? JSON.parse(JSON.stringify(this.store.get(key))) : null;
5
+ return this.store.has(key) ? structuredClone(this.store.get(key)) : null;
6
6
  }
7
7
  async set(key, value) {
8
- this.store.set(key, JSON.parse(JSON.stringify(value)));
8
+ this.store.set(key, structuredClone(value));
9
9
  }
10
10
  async delete(key) {
11
11
  this.store.delete(key);
@@ -43,7 +43,13 @@ export class MockPluginContext {
43
43
  wsHandlers = new Map();
44
44
  eventListeners = new Map();
45
45
  authorizers = [];
46
- constructor(id, capabilities = ["routes", "storage", "websocket", "events", "network"]) {
46
+ constructor(id, capabilities = [
47
+ "routes",
48
+ "storage",
49
+ "websocket",
50
+ "events",
51
+ "network",
52
+ ]) {
47
53
  this.id = id;
48
54
  this.logger = new MockPluginLogger();
49
55
  this.storage = new MockPluginStorage();
@@ -72,9 +78,20 @@ export class MockPluginContext {
72
78
  this.eventListeners.get(channel)?.delete(listener);
73
79
  };
74
80
  }
75
- registerWebSocket(channel, handler) {
81
+ publicChannels = new Set();
82
+ registerWebSocket(channel, handler, options) {
76
83
  this.assertCapability("websocket");
77
84
  this.wsHandlers.set(channel, handler);
85
+ if (options?.public) {
86
+ this.publicChannels.add(channel);
87
+ }
88
+ }
89
+ registerPublicWebSocketChannel(channel) {
90
+ this.assertCapability("websocket");
91
+ this.publicChannels.add(channel);
92
+ }
93
+ isPublicChannel(channel) {
94
+ return this.publicChannels.has(channel);
78
95
  }
79
96
  registerSubscriptionAuthorizer(matches, authorize) {
80
97
  this.assertCapability("websocket");
@@ -84,6 +101,42 @@ export class MockPluginContext {
84
101
  this.assertCapability("network");
85
102
  return globalThis.fetch(input, init);
86
103
  }
104
+ metadataProviders = new Map();
105
+ paymentGateways = new Map();
106
+ cloudSaveResolvers = new Map();
107
+ registerMetadataProvider(provider) {
108
+ if (!provider || typeof provider.id !== "string" || !provider.id.trim()) {
109
+ throw new Error("Metadata provider must have a valid non-empty id");
110
+ }
111
+ this.assertCapability("metadata:provider");
112
+ const existing = this.metadataProviders.get(provider.id);
113
+ if (existing && existing !== provider) {
114
+ throw new Error(`Metadata provider '${provider.id}' is already registered`);
115
+ }
116
+ this.metadataProviders.set(provider.id, provider);
117
+ }
118
+ registerPaymentGateway(gateway) {
119
+ if (!gateway || typeof gateway.id !== "string" || !gateway.id.trim()) {
120
+ throw new Error("Payment gateway must have a valid non-empty id");
121
+ }
122
+ this.assertCapability("commerce:payment");
123
+ const existing = this.paymentGateways.get(gateway.id);
124
+ if (existing && existing !== gateway) {
125
+ throw new Error(`Payment gateway '${gateway.id}' is already registered`);
126
+ }
127
+ this.paymentGateways.set(gateway.id, gateway);
128
+ }
129
+ registerCloudSaveResolver(resolver) {
130
+ if (!resolver || typeof resolver.id !== "string" || !resolver.id.trim()) {
131
+ throw new Error("Cloud save resolver must have a valid non-empty id");
132
+ }
133
+ this.assertCapability("cloudsave:provider");
134
+ const existing = this.cloudSaveResolvers.get(resolver.id);
135
+ if (existing && existing !== resolver) {
136
+ throw new Error(`Cloud save resolver '${resolver.id}' is already registered`);
137
+ }
138
+ this.cloudSaveResolvers.set(resolver.id, resolver);
139
+ }
87
140
  assertCapability(cap) {
88
141
  if (!this.capabilities.has(cap)) {
89
142
  throw new Error(`Plugin '${this.id}' missing required capability '${cap}'`);
package/dist/mock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/rpc.d.ts CHANGED
@@ -10,7 +10,7 @@ export interface PluginRpcOptions {
10
10
  export declare class PluginRpcClient {
11
11
  readonly pluginId: string;
12
12
  readonly baseUrl: string;
13
- private ws?;
13
+ private readonly ws?;
14
14
  constructor(options: PluginRpcOptions);
15
15
  /**
16
16
  * Send an HTTP request to the server plugin's registered route.
package/dist/rpc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,qBAAqB,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,CAAwB;gBAEvB,OAAO,EAAE,gBAAgB;IAMrC;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,CAAC,CAAC;IAyBb;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASrE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAQ5E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAEhF"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,qBAAqB,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAwB;gBAEhC,OAAO,EAAE,gBAAgB;IAUrC;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyB5E;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASrE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAQ5E;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAEjB"}
package/dist/rpc.js CHANGED
@@ -7,7 +7,11 @@ export class PluginRpcClient {
7
7
  ws;
8
8
  constructor(options) {
9
9
  this.pluginId = options.pluginId;
10
- this.baseUrl = (options.baseUrl ?? "").replace(/\/+$/, "");
10
+ let baseUrl = options.baseUrl ?? "";
11
+ while (baseUrl.endsWith("/")) {
12
+ baseUrl = baseUrl.slice(0, -1);
13
+ }
14
+ this.baseUrl = baseUrl;
11
15
  this.ws = options.ws;
12
16
  }
13
17
  /**
@@ -20,7 +24,7 @@ export class PluginRpcClient {
20
24
  ...init,
21
25
  headers: {
22
26
  "Content-Type": "application/json",
23
- ...(init.headers || {}),
27
+ ...init.headers,
24
28
  },
25
29
  });
26
30
  if (!response.ok) {
@@ -28,7 +32,7 @@ export class PluginRpcClient {
28
32
  throw new Error(`Plugin '${this.pluginId}' request to ${cleanPath} failed with HTTP ${response.status}: ${errorText}`);
29
33
  }
30
34
  const contentType = response.headers.get("content-type");
31
- if (contentType && contentType.includes("application/json")) {
35
+ if (contentType?.includes("application/json")) {
32
36
  return (await response.json());
33
37
  }
34
38
  return (await response.text());
package/dist/rpc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,OAAO,eAAe;IACV,QAAQ,CAAS;IACjB,OAAO,CAAS;IACxB,EAAE,CAAyB;IAEnC,YAAY,OAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,OAAoB,EAAE;QAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,IAAI,CAAC,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;aACxB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,QAAQ,gBAAgB,SAAS,qBAAqB,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAc,OAAe,EAAE,IAAa;QACtD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,QAAQ,GAAG,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAM,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,QAAiC;QAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,QAAQ,GAAG,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAyB;IAC7D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,OAAO,eAAe;IACV,QAAQ,CAAS;IACjB,OAAO,CAAS;IACf,EAAE,CAAyB;IAE5C,YAAY,OAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAc,IAAY,EAAE,OAAoB,EAAE;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,IAAI,CAAC,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;aAChB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,QAAQ,gBAAgB,SAAS,qBAAqB,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAc,OAAe,EAAE,IAAa;QACtD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,QAAQ,GAAG,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAM,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,QAAiC;QAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gDAAgD,IAAI,CAAC,QAAQ,GAAG,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAyB;IAEzB,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -7,8 +7,8 @@ export declare const PLUGIN_API_VERSION = 2;
7
7
  export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "ALL";
8
8
  export type PluginTarget = "server" | "client";
9
9
  export type PluginCategory = "generic" | "metadata" | "storage" | "multiplayer";
10
- export type ServerCapability = "routes" | "storage" | "websocket" | "events" | "network";
11
- export type ClientCapability = "ui:slot" | "ui:play-action" | "ui:context-menu" | "ui:sidebar" | "ui:topbar" | "game:launch-hook" | "game:fs" | "game:scan" | "client:storage" | "client:ws" | "system:sidecar";
10
+ export type ServerCapability = "routes" | "storage" | "websocket" | "events" | "network" | "metadata:provider" | "commerce:payment" | "cloudsave:provider";
11
+ export type ClientCapability = "ui:slot" | "ui:play-action" | "ui:context-menu" | "ui:sidebar" | "ui:topbar" | "game:launch-hook" | "game:fs" | "game:scan" | "client:storage" | "client:ws" | "system:sidecar" | "system:command" | "metadata:provider" | "client:library-scan" | "cloudsave:provider";
12
12
  export type PluginCapability = ServerCapability | ClientCapability;
13
13
  /**
14
14
  * Trust tier. Only `"trusted"` is supported today: plugins run in-process with
@@ -66,6 +66,12 @@ export interface PluginManifest extends PluginMetadata {
66
66
  slot: UISlotName;
67
67
  component: string;
68
68
  }>;
69
+ /**
70
+ * Bare executable names the client plugin may run via `ctx.system.run`
71
+ * (requires the `system:command` capability). The desktop host rejects any
72
+ * binary not listed here.
73
+ */
74
+ commands?: string[];
69
75
  };
70
76
  }
71
77
  export type PluginManifestV2 = PluginManifest;
@@ -79,7 +85,7 @@ export interface RouteHandlerContext {
79
85
  userId?: string;
80
86
  userAcls?: string[];
81
87
  }
82
- export type RouteHandler = (event: any, context: RouteHandlerContext) => unknown | Promise<unknown>;
88
+ export type RouteHandler = (event: any, context: RouteHandlerContext) => unknown;
83
89
  export interface PluginStorage {
84
90
  get<T>(key: string): Promise<T | null>;
85
91
  set<T>(key: string, value: T): Promise<void>;
@@ -119,6 +125,14 @@ export interface PluginLogger {
119
125
  error(msg: string, ...args: any[]): void;
120
126
  debug(msg: string, ...args: any[]): void;
121
127
  }
128
+ export interface WebSocketOptions {
129
+ /**
130
+ * If true, clients can subscribe to and receive broadcasts on this channel
131
+ * without an authenticated user session (e.g. public game lobbies, server status).
132
+ * Defaults to false.
133
+ */
134
+ public?: boolean;
135
+ }
122
136
  export interface PluginContext {
123
137
  id: string;
124
138
  logger: PluginLogger;
@@ -130,7 +144,12 @@ export interface PluginContext {
130
144
  * Handle client messages on a WebSocket channel. Requires the `websocket`
131
145
  * capability. Channel names are global; a channel may only be claimed once.
132
146
  */
133
- registerWebSocket(channel: string, handler: WebSocketHandler): void;
147
+ registerWebSocket(channel: string, handler: WebSocketHandler, options?: WebSocketOptions): void;
148
+ /**
149
+ * Mark a channel as publicly readable without authentication.
150
+ * Requires the `websocket` capability.
151
+ */
152
+ registerPublicWebSocketChannel(channel: string): void;
134
153
  /**
135
154
  * Gate client subscriptions to channels matching `matches`. Requires the
136
155
  * `websocket` capability. Channels with no matching authorizer stay open to
@@ -139,6 +158,21 @@ export interface PluginContext {
139
158
  registerSubscriptionAuthorizer(matches: (channel: string) => boolean, authorize: SubscriptionAuthorizer): void;
140
159
  /** Network egress. Requires the `network` capability. */
141
160
  fetch(input: string | URL, init?: RequestInit): Promise<Response>;
161
+ /**
162
+ * Register a metadata provider SPI implementation.
163
+ * Requires the `metadata:provider` capability.
164
+ */
165
+ registerMetadataProvider(provider: MetadataProvider): void;
166
+ /**
167
+ * Register a payment gateway SPI implementation.
168
+ * Requires the `commerce:payment` capability.
169
+ */
170
+ registerPaymentGateway(gateway: PaymentGateway): void;
171
+ /**
172
+ * Register a cloud save path resolver SPI implementation.
173
+ * Requires the `cloudsave:provider` capability.
174
+ */
175
+ registerCloudSaveResolver(resolver: CloudSavePathResolver): void;
142
176
  }
143
177
  export interface ServerPlugin {
144
178
  metadata: PluginMetadata;
@@ -150,7 +184,7 @@ export interface ServerPlugin {
150
184
  */
151
185
  migrateStorage?(from: number, to: number, storage: PluginStorage): Promise<void>;
152
186
  }
153
- export type UISlotName = "game-detail:actions" | "game-detail:panels" | "game-detail:badges" | "settings:tabs" | "topbar:status" | "sidebar:nav";
187
+ export type UISlotName = "game-detail:actions" | "game-detail:panels" | "game-detail:badges" | "settings:tabs" | "topbar:status" | "sidebar:nav" | "overlay:panel" | "overlay:quick-access";
154
188
  export interface UISlotRegistration {
155
189
  slot: UISlotName;
156
190
  component: unknown;
@@ -234,7 +268,9 @@ export interface ScopedGameFs {
234
268
  export interface AntiCheatReport {
235
269
  detected: boolean;
236
270
  reason?: string;
271
+ provider?: string;
237
272
  binaries?: string[];
273
+ files?: string[];
238
274
  }
239
275
  export interface ScopedGameScanner {
240
276
  scanExecutables(gameId: string): Promise<Array<{
@@ -248,6 +284,29 @@ export interface ClientPluginWebSocket {
248
284
  send(channel: string, data: unknown): Promise<unknown>;
249
285
  subscribe(channel: string, listener: (data: unknown) => void): () => void;
250
286
  }
287
+ /** Result of a native command run through the client host. */
288
+ export interface CommandResult {
289
+ /** Process exit code. Non-zero indicates failure. */
290
+ code: number;
291
+ stdout: string;
292
+ stderr: string;
293
+ }
294
+ export interface CommandOptions {
295
+ /** Working directory for the process. */
296
+ cwd?: string;
297
+ /** Hard timeout in milliseconds; the host kills the process when exceeded. */
298
+ timeoutMs?: number;
299
+ }
300
+ /**
301
+ * Native command execution for client plugins.
302
+ *
303
+ * The host runs the binary directly (no shell) and enforces a per-plugin
304
+ * allowlist declared in the manifest (`client.commands`). Binaries that are
305
+ * not allowlisted are rejected; shell metacharacters are never interpreted.
306
+ */
307
+ export interface ClientPluginSystem {
308
+ run(bin: string, args?: string[], options?: CommandOptions): Promise<CommandResult>;
309
+ }
251
310
  export interface ClientPluginContext {
252
311
  id: string;
253
312
  logger: PluginLogger;
@@ -262,9 +321,26 @@ export interface ClientPluginContext {
262
321
  registerSidebarItem(item: SidebarItem): () => void;
263
322
  registerTopBarItem(item: TopBarItem): () => void;
264
323
  registerLaunchHook(hook: LaunchHook): () => void;
324
+ /**
325
+ * Register a store library scanner SPI implementation.
326
+ * Requires the `client:library-scan` capability.
327
+ */
328
+ registerStoreScanner(scanner: StoreScanner): () => void;
329
+ /**
330
+ * Register a client-side metadata provider SPI implementation.
331
+ * Requires the `metadata:provider` capability.
332
+ */
333
+ registerMetadataProvider?(provider: MetadataProvider): () => void;
334
+ /**
335
+ * Register a client-side cloud save path resolver SPI implementation.
336
+ * Requires the `cloudsave:provider` capability.
337
+ */
338
+ registerCloudSaveResolver?(resolver: CloudSavePathResolver): () => void;
265
339
  gameFs: ScopedGameFs;
266
340
  gameScanner: ScopedGameScanner;
267
341
  serverWs: ClientPluginWebSocket;
342
+ /** Native command execution. Requires the `system:command` capability. */
343
+ system: ClientPluginSystem;
268
344
  /**
269
345
  * Call this plugin's own server-side REST routes through the desktop host.
270
346
  *
@@ -294,4 +370,85 @@ export interface MultiplayerPlugin extends ClientPlugin {
294
370
  }
295
371
  export interface GenericPlugin extends ClientPlugin {
296
372
  }
373
+ export interface MetadataSearchResult {
374
+ id: string;
375
+ title: string;
376
+ releaseYear?: number;
377
+ coverUrl?: string;
378
+ bannerUrl?: string;
379
+ iconUrl?: string;
380
+ description?: string;
381
+ provider: string;
382
+ }
383
+ export interface MetadataDetails extends MetadataSearchResult {
384
+ genres?: string[];
385
+ developers?: string[];
386
+ publishers?: string[];
387
+ screenshots?: string[];
388
+ metadata?: Record<string, unknown>;
389
+ }
390
+ export interface MetadataProvider {
391
+ id: string;
392
+ name: string;
393
+ search(query: string): Promise<MetadataSearchResult[]>;
394
+ getDetails(id: string): Promise<MetadataDetails | null>;
395
+ }
396
+ export interface ScannedGame {
397
+ externalId: string;
398
+ store: "steam" | "gog" | "epic" | string;
399
+ title: string;
400
+ installPath: string;
401
+ executablePath?: string;
402
+ iconUrl?: string;
403
+ version?: string;
404
+ }
405
+ export interface StoreScanner {
406
+ id: string;
407
+ name: string;
408
+ store: string;
409
+ scan(): Promise<ScannedGame[]>;
410
+ launch?(externalId: string): Promise<void>;
411
+ }
412
+ export interface PaymentIntentRequest {
413
+ orderId: string;
414
+ amount: number;
415
+ currency: string;
416
+ customerEmail?: string;
417
+ metadata?: Record<string, unknown>;
418
+ }
419
+ export interface PaymentIntentResult {
420
+ intentId: string;
421
+ clientSecret?: string;
422
+ checkoutUrl?: string;
423
+ status: "pending" | "succeeded" | "failed";
424
+ }
425
+ export interface PaymentWebhookResult {
426
+ orderId: string;
427
+ status: "succeeded" | "failed" | "refunded";
428
+ transactionId: string;
429
+ payload?: Record<string, unknown>;
430
+ }
431
+ export interface PaymentGateway {
432
+ id: string;
433
+ name: string;
434
+ createPaymentIntent(req: PaymentIntentRequest): Promise<PaymentIntentResult>;
435
+ handleWebhook(payload: unknown, headers: Record<string, string>): Promise<PaymentWebhookResult>;
436
+ }
437
+ export interface CloudSavePattern {
438
+ pattern: string;
439
+ platform?: "windows" | "linux" | "macos";
440
+ winePrefix?: boolean;
441
+ }
442
+ export interface GameInstallContext {
443
+ gameId: string;
444
+ gameTitle: string;
445
+ installDir?: string;
446
+ winePrefix?: string;
447
+ executableName?: string;
448
+ }
449
+ export interface CloudSavePathResolver {
450
+ id: string;
451
+ name: string;
452
+ resolveSavePaths(gameContext: GameInstallContext): Promise<CloudSavePattern[]>;
453
+ }
297
454
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,WAAW,GACX,kBAAkB,GAClB,SAAS,GACT,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,gBAAgB,EAAE,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,gBAAgB,EAAE,CAAC;QACjC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvD;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC;AAEb,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,6DAA6D;IAC7D,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC/B;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,CACX,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,IAAI,CAAC;IACR,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC3E;;;OAGG;IACH,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,CAAC;IACR;;;OAGG;IACH,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD;;;;OAIG;IACH,8BAA8B,CAC5B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,EACrC,SAAS,EAAE,sBAAsB,GAChC,IAAI,CAAC;IACR,yDAAyD;IACzD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3D;;;OAGG;IACH,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACtD;;;OAGG;IACH,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,CACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAMD,MAAM,MAAM,UAAU,GAClB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,GACf,eAAe,GACf,aAAa,GACb,eAAe,GACf,sBAAsB,CAAC;AAE3B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,mBAAmB,GACnB,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,SAAS,CACP,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC1E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3E;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,CACD,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,YAAY,CACV,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,IAAI,CAAC;IACR,kBAAkB,CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,GACjE,MAAM,IAAI,CAAC;IACd,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC;IACrD,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CAAC;IACnD,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI,CAAC;IACjD,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI,CAAC;IACjD;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC;IACxD;;;OAGG;IACH,wBAAwB,CAAC,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAAC;IAClE;;;OAGG;IACH,yBAAyB,CAAC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAAC;IACxE,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,0EAA0E;IAC1E,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,UAAU,EAClB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAGD,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,eAAe,CAAC,CACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;CAAG;AAMtD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACzD;AAMD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7E,aAAa,CACX,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CACd,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droposs/plugin-sdk",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Drop Plugin SDK contract, types, and mock testing harness for Drop OSS",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -97,7 +97,12 @@
97
97
  "game:scan",
98
98
  "client:storage",
99
99
  "client:ws",
100
- "system:sidecar"
100
+ "system:sidecar",
101
+ "system:command",
102
+ "metadata:provider",
103
+ "cloudsave:provider",
104
+ "commerce:payment",
105
+ "client:library-scan"
101
106
  ]
102
107
  },
103
108
  "uniqueItems": true,
@@ -146,7 +151,15 @@
146
151
  "type": "array",
147
152
  "items": {
148
153
  "type": "string",
149
- "enum": ["routes", "storage", "websocket", "events", "network"]
154
+ "enum": [
155
+ "routes",
156
+ "storage",
157
+ "websocket",
158
+ "events",
159
+ "network",
160
+ "metadata:provider",
161
+ "commerce:payment"
162
+ ]
150
163
  }
151
164
  },
152
165
  "storageVersion": {
@@ -182,10 +195,21 @@
182
195
  "game:scan",
183
196
  "client:storage",
184
197
  "client:ws",
185
- "system:sidecar"
198
+ "system:sidecar",
199
+ "system:command",
200
+ "metadata:provider",
201
+ "client:library-scan"
186
202
  ]
187
203
  }
188
204
  },
205
+ "commands": {
206
+ "type": "array",
207
+ "items": {
208
+ "type": "string"
209
+ },
210
+ "uniqueItems": true,
211
+ "description": "Allowlisted binaries the client plugin may run via ctx.system.run (requires system:command)"
212
+ },
189
213
  "slots": {
190
214
  "type": "array",
191
215
  "items": {
@@ -200,7 +224,9 @@
200
224
  "game-detail:badges",
201
225
  "settings:tabs",
202
226
  "topbar:status",
203
- "sidebar:nav"
227
+ "sidebar:nav",
228
+ "overlay:panel",
229
+ "overlay:quick-access"
204
230
  ]
205
231
  },
206
232
  "component": {