@discord-player/plugin-host 8.0.0-dev.0 → 8.0.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +199 -29
  2. package/dist/compat/base-extractor.d.ts +6 -0
  3. package/dist/compat/base-extractor.js.map +1 -1
  4. package/dist/compat/extractor-execution-context.js.map +1 -1
  5. package/dist/compat/extractor-plugin.js +109 -68
  6. package/dist/compat/extractor-plugin.js.map +1 -1
  7. package/dist/compat/utils.js.map +1 -1
  8. package/dist/errors.d.ts +0 -2
  9. package/dist/errors.js +0 -2
  10. package/dist/errors.js.map +1 -1
  11. package/dist/host.d.ts +24 -3
  12. package/dist/host.js +198 -50
  13. package/dist/host.js.map +1 -1
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/legacy-player.d.ts +1 -1
  18. package/dist/lyrics.d.ts +56 -0
  19. package/dist/lyrics.js +110 -0
  20. package/dist/lyrics.js.map +1 -0
  21. package/dist/media.d.ts +15 -0
  22. package/dist/media.js +193 -0
  23. package/dist/media.js.map +1 -0
  24. package/dist/plugins/execution-options.d.ts +2 -0
  25. package/dist/plugins/operation-dispatch.js +30 -11
  26. package/dist/plugins/operation-dispatch.js.map +1 -1
  27. package/dist/plugins/plugin-error.js.map +1 -1
  28. package/dist/plugins/registry-internals.d.ts +2 -2
  29. package/dist/plugins/registry.d.ts +48 -6
  30. package/dist/plugins/registry.js +180 -18
  31. package/dist/plugins/registry.js.map +1 -1
  32. package/dist/plugins/stream-resolver.js +24 -4
  33. package/dist/plugins/stream-resolver.js.map +1 -1
  34. package/dist/plugins/types.d.ts +28 -23
  35. package/dist/plugins/types.js.map +1 -1
  36. package/dist/protocol.d.ts +43 -3
  37. package/dist/protocol.js +11 -1
  38. package/dist/protocol.js.map +1 -1
  39. package/dist/providers/lrclib.d.ts +120 -0
  40. package/dist/providers/lrclib.js +183 -0
  41. package/dist/providers/lrclib.js.map +1 -0
  42. package/dist/remote.d.ts +29 -0
  43. package/dist/remote.js +142 -0
  44. package/dist/remote.js.map +1 -0
  45. package/dist/runtime.d.ts +2 -8
  46. package/dist/runtime.js +42 -44
  47. package/dist/runtime.js.map +1 -1
  48. package/dist/structures/search-result.js.map +1 -1
  49. package/dist/structures/track-types.d.ts +7 -3
  50. package/dist/structures/track.d.ts +6 -11
  51. package/dist/structures/track.js +10 -10
  52. package/dist/structures/track.js.map +1 -1
  53. package/dist/types.d.ts +4 -4
  54. package/dist/utils/legacy-serialization-schemas.d.ts +12 -0
  55. package/dist/utils/serialization-schemas.d.ts +18 -0
  56. package/dist/utils/serialization-schemas.js +6 -1
  57. package/dist/utils/serialization-schemas.js.map +1 -1
  58. package/dist/utils/serialization.js.map +1 -1
  59. package/docs/remedia-contract.md +55 -0
  60. package/package.json +5 -4
@@ -1,25 +1,32 @@
1
+ import { registerRemote, discoverRemote } from '../remote.js';
1
2
  import { PluginError } from './plugin-error.js';
2
- import { dispatchOperation } from './operation-dispatch.js';
3
+ import { dispatchOperation, selectHandlers } from './operation-dispatch.js';
3
4
  import { resolveTrackStream } from './stream-resolver.js';
4
5
  export { PluginError } from './plugin-error.js';
5
- /** Context-owned source execution registry. Removal aborts and drains calls before teardown. */
6
+ /** Context-owned capability registry. Removal aborts and drains calls before teardown. */
6
7
  export class PluginRegistry {
7
8
  player;
8
9
  blocked;
10
+ hostId;
11
+ advertisements = new WeakMap();
9
12
  entries = new Map();
10
13
  handlers = [];
11
14
  order = 0;
12
15
  resultOwners = new WeakMap();
13
16
  destroyed = false;
17
+ lifetime = new AbortController();
14
18
  /** Create an independent host.
15
19
  * @param player Structural source context.
16
20
  * @param blocked Default disabled source IDs supplied by the owning Player.
21
+ * @param hostId Owning deployment, absent in ordinary embedded execution.
17
22
  */
18
- constructor(player, blocked = () => []) {
23
+ constructor(player, blocked = () => [], hostId) {
19
24
  this.player = player;
20
25
  this.blocked = blocked;
26
+ this.hostId = hostId;
21
27
  }
22
28
  definitions = new Map([
29
+ ['lyrics.search', 'collect'],
23
30
  ['search.query.match', 'collect'],
24
31
  ['search.query.resolve', 'first'],
25
32
  ['track.stream', 'first'],
@@ -40,9 +47,10 @@ export class PluginRegistry {
40
47
  }
41
48
  /** Whether an ID is reserved or active.
42
49
  * @param id Plugin ID.
50
+ * @param hostId Optional deployment constraint.
43
51
  */
44
- has(id) {
45
- return this.entries.has(id);
52
+ has(id, hostId) {
53
+ return [...this.entries.values()].some((entry) => entry.id === id && (!hostId || entry.registration.definition.remoteHost?.hostId === hostId));
46
54
  }
47
55
  /** Registration lifetime for transport-owned ephemeral state.
48
56
  * @internal
@@ -52,18 +60,130 @@ export class PluginRegistry {
52
60
  registrationSignal(id) {
53
61
  return this.entries.get(id)?.controller.signal;
54
62
  }
63
+ /** List active provider/deployment references in priority and registration order.
64
+ * @param operation Capability to inspect.
65
+ * @returns Unique eligible provider/deployment references.
66
+ */
67
+ providers(operation) {
68
+ const seen = new Set();
69
+ return selectHandlers(operation, {}, {}, {
70
+ handlers: this.handlers,
71
+ definitions: this.definitions,
72
+ blocked: () => this.blocked(),
73
+ resultOwners: this.resultOwners,
74
+ }).flatMap((handler) => {
75
+ const pluginId = handler.entry.id;
76
+ const hostId = handler.entry.registration.definition.remoteHost?.hostId;
77
+ const key = `${hostId ?? ''}::${pluginId}`;
78
+ if (seen.has(key))
79
+ return [];
80
+ seen.add(key);
81
+ return [{ pluginId, ...(hostId ? { hostId } : {}), data: null }];
82
+ });
83
+ }
84
+ /** Check whether a deployment has an owned registration.
85
+ * @param hostId Deployment identity.
86
+ */
87
+ hasHost(hostId) {
88
+ return [...this.entries.values()].some((entry) => entry.registration.definition.remoteHost?.hostId === hostId);
89
+ }
90
+ /** Advertise only actual local operation handlers.
91
+ * @returns Serializable provider capability descriptions.
92
+ */
93
+ describe() {
94
+ return [...this.entries.values()]
95
+ .filter((entry) => entry.active)
96
+ .map((entry) => ({
97
+ id: entry.id,
98
+ operations: [
99
+ ...new Set(this.handlers.filter((handler) => handler.entry === entry).map((handler) => handler.operation)),
100
+ ],
101
+ protocols: [
102
+ ...new Set(this.handlers
103
+ .filter((handler) => handler.entry === entry && handler.operation.startsWith('search.query.'))
104
+ .flatMap((handler) => handler.protocols ?? [])),
105
+ ],
106
+ priorities: Object.fromEntries([
107
+ ...new Set(this.handlers.filter((handler) => handler.entry === entry).map((handler) => handler.operation)),
108
+ ].map((operation) => [
109
+ operation,
110
+ Math.max(...this.handlers
111
+ .filter((handler) => handler.entry === entry && handler.operation === operation)
112
+ .map((handler) => handler.priority ?? 0)),
113
+ ])),
114
+ }));
115
+ }
116
+ /** Register all advertised providers from an existing HTTP deployment.
117
+ * @param host Existing deployment and authentication.
118
+ * @param signal Caller lifetime.
119
+ */
120
+ async registerHost(host, signal = this.lifetime.signal) {
121
+ signal = AbortSignal.any([signal, this.lifetime.signal]);
122
+ signal.throwIfAborted();
123
+ const providers = await discoverRemote(host, signal);
124
+ const owned = [];
125
+ try {
126
+ for (const provider of providers) {
127
+ signal.throwIfAborted();
128
+ if (this.has(provider.id, host.hostId))
129
+ continue;
130
+ const registration = { definition: { id: provider.id, remoteHost: host }, options: {} };
131
+ this.advertisements.set(registration, providers);
132
+ await this.register(registration);
133
+ owned.push(provider.id);
134
+ }
135
+ await this.ready();
136
+ signal.throwIfAborted();
137
+ }
138
+ catch (error) {
139
+ const results = await Promise.allSettled(owned.map((id) => this.unregister(id, host.hostId)));
140
+ const cleanup = results.filter((result) => result.status === 'rejected').map((result) => result.reason);
141
+ if (cleanup.length)
142
+ throw new AggregateError([error, ...cleanup], 'Remote provider registration and cleanup failed', {
143
+ cause: error,
144
+ });
145
+ throw error;
146
+ }
147
+ }
55
148
  /** Whether an active matching handler explicitly accepts a protocol.
56
149
  * @param protocol Query prefix without punctuation.
57
150
  * @param options Source targeting and block list.
58
151
  */
59
152
  supportsProtocol(protocol, options = {}) {
60
- return this.handlers.some((handler) => handler.operation === 'search.query.match' &&
153
+ return this.handlers.some((handler) => (handler.operation === 'search.query.match' || handler.operation === 'search.query.resolve') &&
61
154
  handler.entry.active &&
62
155
  (!options.pluginId || handler.entry.id === options.pluginId) &&
156
+ (options.hostId === undefined ||
157
+ (handler.entry.registration.definition.remoteHost?.hostId ?? null) === options.hostId) &&
63
158
  !this.blocked().includes(handler.entry.id) &&
64
159
  !options.blocked?.includes(handler.entry.id) &&
65
160
  handler.protocols?.includes(protocol));
66
161
  }
162
+ /** Ordered owners of a custom query protocol.
163
+ * @param protocol Registered protocol prefix.
164
+ * @param options Targeting and block list.
165
+ * @returns Eligible provider identities, in dispatch order.
166
+ */
167
+ protocolMatches(protocol, options = {}) {
168
+ const handlers = ['search.query.match', 'search.query.resolve']
169
+ .flatMap((operation) => selectHandlers(operation, { protocol }, options, {
170
+ handlers: this.handlers,
171
+ definitions: this.definitions,
172
+ blocked: () => this.blocked(),
173
+ resultOwners: this.resultOwners,
174
+ }).filter((handler) => handler.protocols?.includes(protocol)))
175
+ .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0) || a.order - b.order);
176
+ const seen = new Set();
177
+ return handlers.flatMap((handler) => {
178
+ const pluginId = handler.entry.id;
179
+ const hostId = handler.entry.registration.definition.remoteHost?.hostId;
180
+ const key = `${hostId ?? ''}::${pluginId}`;
181
+ if (seen.has(key))
182
+ return [];
183
+ seen.add(key);
184
+ return [{ pluginId, hostId, score: 0 }];
185
+ });
186
+ }
67
187
  /** Register and initialize a source descriptor, reserving its ID synchronously.
68
188
  * @param registration Descriptor produced by definePlugin.
69
189
  */
@@ -72,10 +192,14 @@ export class PluginRegistry {
72
192
  if (this.destroyed) {
73
193
  throw new Error('Plugin host has been destroyed.');
74
194
  }
75
- if (!definition || definition.kind !== 'source' || !definition.id || typeof definition.setup !== 'function') {
76
- throw new TypeError('Expected a source plugin registration descriptor.');
195
+ if (!definition ||
196
+ 'kind' in definition ||
197
+ !definition.id ||
198
+ (typeof definition.setup !== 'function' && !definition.remoteHost)) {
199
+ throw new TypeError('Expected a plugin registration with setup() or remoteHost.');
77
200
  }
78
- if (this.entries.has(definition.id)) {
201
+ const key = definition.remoteHost ? `${definition.remoteHost.hostId}::${definition.id}` : definition.id;
202
+ if (this.entries.has(key)) {
79
203
  throw new Error(`Duplicate plugin ID: ${definition.id}`);
80
204
  }
81
205
  const controller = new AbortController();
@@ -102,7 +226,9 @@ export class PluginRegistry {
102
226
  entry,
103
227
  operation,
104
228
  fn,
229
+ priority: definition.priority,
105
230
  ...options,
231
+ ...(definition.remoteHost && definition.priority !== undefined ? { priority: definition.priority } : {}),
106
232
  order: this.order++,
107
233
  };
108
234
  this.handlers.push(handler);
@@ -115,10 +241,12 @@ export class PluginRegistry {
115
241
  entry.cleanups.push(callback);
116
242
  },
117
243
  };
118
- this.entries.set(entry.id, entry);
244
+ this.entries.set(key, entry);
119
245
  entry.ready = Promise.resolve().then(async () => {
120
246
  try {
121
- await definition.setup(entry.context);
247
+ if (definition.remoteHost)
248
+ await registerRemote(entry.context, definition.id, definition.remoteHost, this.advertisements.get(registration));
249
+ await definition.setup?.(entry.context);
122
250
  entry.active = !controller.signal.aborted;
123
251
  }
124
252
  catch (cause) {
@@ -151,19 +279,23 @@ export class PluginRegistry {
151
279
  errors.push(new PluginError(entry.id, 'cleanup', error));
152
280
  }
153
281
  }
154
- if (this.entries.get(entry.id) === entry) {
155
- this.entries.delete(entry.id);
156
- }
282
+ for (const [key, value] of this.entries)
283
+ if (value === entry)
284
+ this.entries.delete(key);
157
285
  if (errors.length) {
158
286
  throw new AggregateError(errors, `Plugin ${entry.id} cleanup failed`);
159
287
  }
160
288
  }
161
289
  /** Abort new and active work, drain handlers, and release resources. Handlers must cooperate with cancellation.
162
290
  * @param id Plugin ID.
291
+ * @param hostId Optional deployment identity when the provider exists on multiple hosts.
163
292
  * @returns Whether the registration existed.
164
293
  */
165
- async unregister(id) {
166
- const entry = this.entries.get(id);
294
+ async unregister(id, hostId) {
295
+ const candidates = [...this.entries.values()].filter((item) => item.id === id);
296
+ if (!hostId && !this.entries.has(id) && candidates.length > 1)
297
+ throw new Error(`Plugin ${id} has multiple deployments; supply hostId to unregister one`);
298
+ const entry = this.entries.get(hostId ? `${hostId}::${id}` : id) ?? (!hostId ? candidates[0] : undefined);
167
299
  if (!entry) {
168
300
  return false;
169
301
  }
@@ -192,6 +324,7 @@ export class PluginRegistry {
192
324
  /** Destroy all registrations, attempting every cleanup even when one fails. */
193
325
  async destroy() {
194
326
  this.destroyed = true;
327
+ this.lifetime.abort();
195
328
  const results = await Promise.allSettled([...this.entries.keys()].map((id) => this.unregister(id)));
196
329
  const errors = results.filter((result) => result.status === 'rejected').map((result) => result.reason);
197
330
  if (errors.length) {
@@ -208,22 +341,51 @@ export class PluginRegistry {
208
341
  return this.run(operation, input, options);
209
342
  }
210
343
  async run(operation, input, options, handled) {
344
+ const track = input && typeof input === 'object' && 'track' in input ? input.track : undefined;
345
+ if (track?.sourceReference?.hostId &&
346
+ track.sourceReference.hostId !== this.hostId &&
347
+ !this.handlers.some((handler) => handler.operation === operation &&
348
+ handler.entry.active &&
349
+ handler.entry.registration.definition.remoteHost?.hostId === track.sourceReference?.hostId)) {
350
+ throw new Error(`Source host ${track.sourceReference.hostId} is unavailable in this runtime; execute this Track on its owning source host`);
351
+ }
211
352
  options.signal?.throwIfAborted();
212
353
  await this.ready();
213
354
  options.signal?.throwIfAborted();
214
- return dispatchOperation(operation, input, options, {
355
+ const result = await dispatchOperation(operation, input, options, {
215
356
  handlers: this.handlers,
216
357
  definitions: this.definitions,
217
358
  blocked: () => this.blocked(),
218
359
  resultOwners: this.resultOwners,
219
360
  }, handled);
361
+ if (this.hostId && result && (operation === 'search.query.resolve' || operation === 'track.related')) {
362
+ for (const item of result.tracks) {
363
+ if (item.sourceReference)
364
+ item.sourceReference.hostId = this.hostId;
365
+ }
366
+ }
367
+ return result;
368
+ }
369
+ /** Inspect byte transformations using the same selection rules as execution.
370
+ * @internal
371
+ * @param pluginId Actual stream owner; absent means unrestricted dispatch.
372
+ * @param options Additional provider blocking.
373
+ * @returns Whether a byte transformation would be invoked.
374
+ */
375
+ hasStreamTransforms(pluginId, options = {}) {
376
+ return (selectHandlers('stream.transform', {}, { ...options, pluginId }, {
377
+ handlers: this.handlers,
378
+ definitions: this.definitions,
379
+ blocked: () => this.blocked(),
380
+ resultOwners: this.resultOwners,
381
+ }).length > 0);
220
382
  }
221
383
  /** Resolve and normalize a track for the already selected Remedia node.
222
384
  * @param track Data model with a portable provider reference.
223
385
  * @param options Target node mode and cancellation.
224
386
  */
225
387
  async resolveStream(track, options = {}) {
226
- return resolveTrackStream(track, options, (operation, input, execution, handled) => this.run(operation, input, execution, handled));
388
+ return resolveTrackStream(track, options, (operation, input, execution, handled) => this.run(operation, input, execution, handled), (owner) => this.hasStreamTransforms(owner, options));
227
389
  }
228
390
  }
229
391
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
+ import { SourceUnavailableError } from '../errors.js';
1
2
  import { Readable } from 'node:stream';
2
3
  import { PluginError } from './plugin-error.js';
4
+ /** Transport must defer this resolution until its media grant is redeemed. @internal */
5
+ export class DeferredSourceRequired extends Error {
6
+ }
3
7
  /** Resolve, transform and own playable media for a selected Remedia node.
4
8
  * @internal
5
9
  * @param track Track metadata and source reference.
6
10
  * @param options Selected node mode and playback lifetime.
7
11
  * @param run Shared operation runner.
12
+ * @param hasTransforms Inspect applicable transformations for the resolved owner.
8
13
  * @returns Normalized playable media source.
9
14
  */
10
- export async function resolveTrackStream(track, options, run) {
15
+ export async function resolveTrackStream(track, options, run, hasTransforms) {
11
16
  const pluginId = track.sourceReference?.pluginId;
12
17
  let owner = pluginId;
13
18
  let lifetime;
@@ -17,10 +22,12 @@ export async function resolveTrackStream(track, options, run) {
17
22
  };
18
23
  let result = await run('track.stream', { track }, { ...options, pluginId }, handled);
19
24
  if (result === undefined) {
25
+ if (options.directUrlOnly)
26
+ throw new DeferredSourceRequired();
20
27
  result = await run('track.bridge', { track, sourcePluginId: pluginId }, options, handled);
21
28
  }
22
29
  if (result === undefined) {
23
- throw new Error(`No source plugin handled track.stream for ${pluginId ?? track.id}`);
30
+ throw new SourceUnavailableError(pluginId ?? track.title ?? track.id);
24
31
  }
25
32
  let source = typeof result === 'string'
26
33
  ? /^https?:\/\//i.test(result)
@@ -28,7 +35,18 @@ export async function resolveTrackStream(track, options, run) {
28
35
  : { file: result }
29
36
  : result instanceof Readable
30
37
  ? { stream: result }
31
- : result;
38
+ : result instanceof Uint8Array
39
+ ? { buffer: result }
40
+ : result;
41
+ if (options.directUrlOnly) {
42
+ if (!('url' in source)) {
43
+ if ('stream' in source)
44
+ source.stream.destroy();
45
+ throw new Error('A directUrlProviders entry must return only URLs; remove it to use lazy media grants');
46
+ }
47
+ if (hasTransforms(owner))
48
+ throw new DeferredSourceRequired();
49
+ }
32
50
  const signal = options.signal && lifetime ? AbortSignal.any([options.signal, lifetime]) : (options.signal ?? lifetime);
33
51
  if (options.prepareSource) {
34
52
  try {
@@ -51,13 +69,15 @@ export async function resolveTrackStream(track, options, run) {
51
69
  };
52
70
  try {
53
71
  signal?.throwIfAborted();
72
+ if (options.directUrlOnly && hasTransforms(owner))
73
+ throw new DeferredSourceRequired();
54
74
  if (options.remote && ('stream' in source || 'buffer' in source)) {
55
75
  throw new PluginError(owner ?? 'unknown', 'track.stream', new Error('Remote Remedia requires a server-accessible URL or file; client Readables and buffers are unsupported.'));
56
76
  }
57
77
  if ('stream' in source) {
58
78
  const transformed = await run('stream.transform', { track, stream: source.stream }, { ...options, pluginId: owner });
59
79
  if (transformed) {
60
- source = { stream: transformed.stream };
80
+ source = { ...source, stream: transformed.stream };
61
81
  streams.add(transformed.stream);
62
82
  }
63
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream-resolver.js","sourceRoot":"","sources":["../../src/plugins/stream-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-resolver.js","sourceRoot":"","sources":["../../src/plugins/stream-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { RemotePluginHostOptions } from '../remote.js';
2
+ import type { LyricsRequest, LyricsResult } from '../lyrics.js';
1
3
  import type { Readable } from 'node:stream';
2
4
  import type { MediaSource } from '@remedia/client';
3
5
  import type { Track } from '../structures/track.js';
@@ -6,7 +8,9 @@ import type { SearchOptions } from '../types.js';
6
8
  import type { JSONValue } from '../utils/serialization.js';
7
9
  import type { LegacyPlayerContext } from '../legacy-player.js';
8
10
  /** Serializable provider identity; never put credentials or live objects in this payload. */
9
- export type SourceReference = {
11
+ export type ProviderReference = {
12
+ /** Deployment identity, separate from the provider ID. Omit for ordinary embedded sources. */
13
+ hostId?: string;
10
14
  /** Registered source plugin ID. */
11
15
  pluginId: string;
12
16
  /** Provider-specific portable data, usually a public URL or identifier. */
@@ -16,7 +20,7 @@ export type SourceReference = {
16
20
  export type SourceStream = (MediaSource & {
17
21
  /** Trustworthy absolute URL/source expiration supplied by the provider, in Unix milliseconds. Omit when unknown. */
18
22
  expiresAtMs?: number;
19
- }) | string | Readable;
23
+ }) | string | Uint8Array | Readable;
20
24
  /** Operation dispatch behavior. */
21
25
  export type DispatchPolicy = 'first' | 'collect' | 'pipe' | 'broadcast';
22
26
  /** Declaration merged operation contract. */
@@ -32,8 +36,10 @@ export interface Operation<Input, Output, Policy extends DispatchPolicy> {
32
36
  export interface SourceQuery {
33
37
  /** Search text or source location. */
34
38
  query: string;
39
+ /** Generic hint when searchEngine does not select a registered provider. */
40
+ providerHint?: string;
35
41
  /** Portable search hints and local cancellation. */
36
- options?: SearchOptions;
42
+ options?: Omit<SearchOptions, 'searchEngine' | 'hostId' | 'signal' | 'resolveCustomProtocols'>;
37
43
  /** Explicit protocol prefix when present. */
38
44
  protocol?: string;
39
45
  }
@@ -41,6 +47,8 @@ export interface SourceQuery {
41
47
  export interface SourceMatch {
42
48
  /** Provider ID; supplied automatically by the host. */
43
49
  pluginId?: string;
50
+ /** Deployment selected by matching; absent for embedded handlers. */
51
+ hostId?: string;
44
52
  /** Confidence score; higher wins within a priority tier. */
45
53
  score: number;
46
54
  }
@@ -65,7 +73,9 @@ export interface SourceStreamTransform extends SourceTrackRequest {
65
73
  stream: Readable;
66
74
  }
67
75
  /** Extensible source operation contracts. Augmented operations also need host definitions. */
68
- export interface SourceOperationMap {
76
+ export interface OperationMap {
77
+ /** Optional lyrics lookup, independent of all source operations. */
78
+ 'lyrics.search': Operation<LyricsRequest, LyricsResult[] | null, 'collect'>;
69
79
  /** Collect scored providers. */
70
80
  'search.query.match': Operation<SourceQuery, SourceMatch | null, 'collect'>;
71
81
  /** Resolve metadata with the selected provider. */
@@ -82,13 +92,13 @@ export interface SourceOperationMap {
82
92
  'track.stream.resolved': Operation<SourceTrackRequest, void, 'broadcast'>;
83
93
  }
84
94
  /** Names available to source plugins. */
85
- export type OperationName = keyof SourceOperationMap;
95
+ export type OperationName = keyof OperationMap;
86
96
  /** Typed input selected by operation name. */
87
- export type OperationInput<K extends OperationName> = SourceOperationMap[K]['input'];
97
+ export type OperationInput<K extends OperationName> = OperationMap[K]['input'];
88
98
  /** Typed handler result selected by operation name. */
89
- export type OperationOutput<K extends OperationName> = SourceOperationMap[K]['output'];
99
+ export type OperationOutput<K extends OperationName> = OperationMap[K]['output'];
90
100
  /** Dispatch result selected by the declared policy. */
91
- export type OperationResult<K extends OperationName> = SourceOperationMap[K]['policy'] extends 'collect' ? OperationOutput<K>[] : SourceOperationMap[K]['policy'] extends 'broadcast' ? void : OperationOutput<K> | undefined;
101
+ export type OperationResult<K extends OperationName> = OperationMap[K]['policy'] extends 'collect' ? OperationOutput<K>[] : OperationMap[K]['policy'] extends 'broadcast' ? void : OperationOutput<K> | undefined;
92
102
  /** Per-invocation cancellation supplied to all handlers. */
93
103
  export interface OperationContext {
94
104
  /** Caller cancellation combined with registration removal. */
@@ -108,7 +118,7 @@ export interface HandlerOptions {
108
118
  protocols?: readonly string[];
109
119
  }
110
120
  /** Source setup context shared by embedded and standalone execution. */
111
- export interface SourcePluginContext<Options> {
121
+ export interface PluginContext<Options> {
112
122
  /** Options belonging to this registration. */
113
123
  readonly options: Options;
114
124
  /** Registration lifetime signal. */
@@ -128,31 +138,26 @@ export interface SourcePluginContext<Options> {
128
138
  onCleanup(callback: () => void | Promise<void>): void;
129
139
  }
130
140
  /** Source declaration reusable across Player instances. */
131
- export interface SourcePluginDefinition<Options> {
141
+ export interface PluginDefinition<Options> {
132
142
  /** Unique registration identifier. */
133
143
  id: string;
134
- /** Only source execution is implemented. */
135
- kind: 'source';
144
+ /** Existing HTTP deployment providing this provider's metadata capabilities. */
145
+ remoteHost?: RemotePluginHostOptions;
146
+ /** Default operation priority. */
147
+ priority?: number;
136
148
  /** Initialize owned resources and handlers.
137
149
  * @param ctx Registration context.
138
150
  */
139
- setup(ctx: SourcePluginContext<Options>): void | Promise<void>;
151
+ setup?(ctx: PluginContext<Options>): void | Promise<void>;
140
152
  /** Optional teardown after calls have drained.
141
153
  * @param ctx Registration context.
142
154
  */
143
- destroy?(ctx: SourcePluginContext<Options>): void | Promise<void>;
144
- }
145
- /** Reserved runtime kind; no runtime capabilities are implemented. */
146
- export interface RuntimePluginDefinition {
147
- /** Unique registration identifier. */
148
- id: string;
149
- /** Reserved discriminant, rejected by the source host. */
150
- kind: 'runtime';
155
+ destroy?(ctx: PluginContext<Options>): void | Promise<void>;
151
156
  }
152
157
  /** Registration descriptor produced by a factory. */
153
158
  export interface PluginRegistration<Options = unknown> {
154
159
  /** Reusable source declaration. */
155
- definition: SourcePluginDefinition<Options>;
160
+ definition: PluginDefinition<Options>;
156
161
  /** Registration-local options. */
157
162
  options: Options;
158
163
  }
@@ -165,4 +170,4 @@ export type PluginFactory<Options> = {} extends Options ? (options?: Options) =>
165
170
  * @param definition Source lifecycle and identity.
166
171
  * @returns A typed registration factory. Each call supplies independent options.
167
172
  */
168
- export declare function definePlugin<Options = Record<string, never>>(definition: SourcePluginDefinition<Options>): PluginFactory<Options>;
173
+ export declare function definePlugin<Options = Record<string, never>>(definition: PluginDefinition<Options>): PluginFactory<Options>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AA6NA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,UAA2C;IAE3C,OAAO,CAAC,CAAC,OAAO,GAAY,EAAa,EAAE,EAAE,CAAC,CAAC;QAC7C,UAAU;QACV,OAAO;KACR,CAAC,CAA2B,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAsOA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAqC;IAErC,OAAO,CAAC,CAAC,OAAO,GAAY,EAAa,EAAE,EAAE,CAAC,CAAC;QAC7C,UAAU;QACV,OAAO;KACR,CAAC,CAA2B,CAAC;AAChC,CAAC"}
@@ -1,8 +1,9 @@
1
- import { type SerializedTrack } from './structures/track.js';
1
+ import type { SearchOptions } from './types.js';
2
+ import { Track, type SerializedTrack } from './structures/track.js';
2
3
  import { type SerializedPlaylist } from './structures/playlist.js';
3
4
  import { SearchResult } from './structures/search-result.js';
4
5
  /** Versioned metadata plus an optional, expiring host-owned process-state hint.
5
- * Keep this whole payload when requesting source.stream; the hint is never required for persistence.
6
+ * Use serializeSourceTrack() for operation requests; serialize() deliberately omits the hint.
6
7
  */
7
8
  export type PortableSourceTrack = SerializedTrack & {
8
9
  /** Opaque source-host state reference. Never identifies credentials or stream resources. */
@@ -16,8 +17,47 @@ export interface PortableSourceResult {
16
17
  playlist: SerializedPlaylist | null;
17
18
  }
18
19
  /** Reconstruct source-host metadata in a consumer process without restoring private extractor objects.
19
- * Keep the original portable tracks separately when requesting media, to retain ephemeral state hints.
20
+ * The normal Track retains the transient hint without requiring a second representation.
20
21
  * @param result HTTP result payload (after unwrapping Remedia's handled/result envelope).
21
22
  * @returns Shared model instances suitable for application metadata display and persistence.
22
23
  */
23
24
  export declare function deserializeSourceResult(result: PortableSourceResult): SearchResult;
25
+ /** Encode a queued Track for a host operation, retaining its transient state hint.
26
+ * @param track Normal model from search, queue, or history.
27
+ * @returns Portable metadata with an optional opaque state token. Persistence should use serialize().
28
+ */
29
+ export declare function serializeSourceTrack(track: Track): PortableSourceTrack;
30
+ /** Portable search input, normalized before crossing the metadata boundary. */
31
+ export interface PortableSourceQuery {
32
+ /** Prefix-stripped query when a registered custom protocol was selected. */
33
+ query: string;
34
+ /** Owned custom protocol. */
35
+ protocol?: string;
36
+ /** Generic provider hint, independent of provider/deployment selection. */
37
+ providerHint?: string;
38
+ /** Serializable public search hints; never includes request credentials or cancellation. */
39
+ options?: Omit<SearchOptions, 'signal' | 'requestOptions' | 'requestedBy' | 'searchEngine' | 'hostId' | 'resolveCustomProtocols'> & {
40
+ requestedBy?: string | null;
41
+ };
42
+ }
43
+ /** Lyrics metadata request; persistence intentionally excludes runtime source-state hints. */
44
+ export interface PortableLyricsRequest {
45
+ /** Raw query or versioned Track metadata. */
46
+ input: string | SerializedTrack;
47
+ }
48
+ /** Direct HTTP metadata request, also suitable for future generic forwarding. */
49
+ export type MetadataRequest = {
50
+ providerId: string;
51
+ operation: 'search.query.match' | 'search.query.resolve';
52
+ input: PortableSourceQuery;
53
+ } | {
54
+ providerId: string;
55
+ operation: 'lyrics.search';
56
+ input: PortableLyricsRequest;
57
+ } | {
58
+ providerId: string;
59
+ operation: 'track.related';
60
+ input: {
61
+ track: PortableSourceTrack;
62
+ };
63
+ };