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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -391,3 +391,22 @@ Metadata currently travels over direct HTTP. Remedia dev.7 can forward generic p
391
391
  operations to server-configured hosts (`client.plugins.list` / `execute`), but Discord Player
392
392
  does not use that path yet. `remote.ts` isolates this boundary for a future supported
393
393
  transport without introducing a second search dispatcher.
394
+
395
+ ## Modern capabilities
396
+
397
+ `ctx.on()` supports shared `search.beforeQuery`, `search.afterResults`,
398
+ `media.beforeResolve`, `media.descriptor`, and encoded `media.transform` operations.
399
+ Transform handlers run sequentially in priority order. Pass the invocation's
400
+ `signal` to asynchronous work; registration removal aborts and drains it before
401
+ cleanup. `plugins.describe()` includes actual owned subscriptions and priorities.
402
+
403
+ Byte transformations use proxy delivery when direct URLs would bypass processing.
404
+ Descriptor interception runs before host media authorization. A standalone runtime
405
+ has no live queue or Gateway context; local Player/queue/playback/voice capability
406
+ registrations fail setup. Legacy extractors retain their existing post-stream
407
+ adapter and do not acquire modern lifecycle capabilities.
408
+
409
+ Use `await plugins.serialize(entity)` and `await plugins.restore(payload)` for
410
+ validated `serialization.afterSerialize` / `serialization.beforeRestore`
411
+ transformations. The existing synchronous model and global serialization APIs
412
+ retain their behavior.
package/dist/errors.d.ts CHANGED
@@ -8,6 +8,8 @@ export declare const DiscordPlayerErrorCode: {
8
8
  readonly SourceUnavailable: 'ERR_SOURCE_UNAVAILABLE';
9
9
  /** Data could not be serialized or reconstructed. */
10
10
  readonly Serialization: 'ERR_SERIALIZATION';
11
+ /** A guild-scoped hook was invoked without a valid context or explicit guild. */
12
+ readonly IllegalHookInvocation: 'ERR_ILLEGAL_HOOK_INVOCATION';
11
13
  };
12
14
  /** Error code union for Discord Player errors. */
13
15
  export type DiscordPlayerErrorCode = (typeof DiscordPlayerErrorCode)[keyof typeof DiscordPlayerErrorCode];
@@ -39,6 +41,19 @@ export declare class SourceUnavailableError extends DiscordPlayerError {
39
41
  /** Track title or identifier that could not be resolved. */
40
42
  track: string);
41
43
  }
44
+ /** Error thrown when a guild-scoped hook cannot resolve a Player or guild queue. */
45
+ export declare class IllegalHookInvocationError extends DiscordPlayerError {
46
+ /**
47
+ * Create a hook invocation error.
48
+ * @param target Hook name or subsystem that was invoked illegally.
49
+ * @param message Additional explanation of the required invocation.
50
+ */
51
+ constructor(
52
+ /** Hook name or subsystem that was invoked illegally. */
53
+ target: string,
54
+ /** Additional explanation of the required invocation. */
55
+ message?: string);
56
+ }
42
57
  /** Error thrown when a serialization input cannot be encoded or decoded. */
43
58
  export declare class SerializationError extends DiscordPlayerError {
44
59
  /**
package/dist/errors.js CHANGED
@@ -8,6 +8,8 @@ export const DiscordPlayerErrorCode = {
8
8
  SourceUnavailable: 'ERR_SOURCE_UNAVAILABLE',
9
9
  /** Data could not be serialized or reconstructed. */
10
10
  Serialization: 'ERR_SERIALIZATION',
11
+ /** A guild-scoped hook was invoked without a valid context or explicit guild. */
12
+ IllegalHookInvocation: 'ERR_ILLEGAL_HOOK_INVOCATION',
11
13
  };
12
14
  /** Base error carrying a stable Discord Player error code. */
13
15
  export class DiscordPlayerError extends Error {
@@ -43,6 +45,21 @@ export class SourceUnavailableError extends DiscordPlayerError {
43
45
  super(`No source plugin is available to resolve Track "${track}".`, DiscordPlayerErrorCode.SourceUnavailable);
44
46
  }
45
47
  }
48
+ /** Error thrown when a guild-scoped hook cannot resolve a Player or guild queue. */
49
+ export class IllegalHookInvocationError extends DiscordPlayerError {
50
+ /**
51
+ * Create a hook invocation error.
52
+ * @param target Hook name or subsystem that was invoked illegally.
53
+ * @param message Additional explanation of the required invocation.
54
+ */
55
+ constructor(
56
+ /** Hook name or subsystem that was invoked illegally. */
57
+ target,
58
+ /** Additional explanation of the required invocation. */
59
+ message) {
60
+ super(`Illegal invocation of ${target} hook.${message ? ` ${message}` : ''}`, DiscordPlayerErrorCode.IllegalHookInvocation);
61
+ }
62
+ }
46
63
  /** Error thrown when a serialization input cannot be encoded or decoded. */
47
64
  export class SerializationError extends DiscordPlayerError {
48
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,wDAAwD;IACxD,aAAa,EAAE,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,EAAE,eAAe;IACzB,gEAAgE;IAChE,iBAAiB,EAAE,wBAAwB;IAC3C,qDAAqD;IACrD,aAAa,EAAE,mBAAmB;CAC1B,CAAC;AAKX,8DAA8D;AAC9D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,0CAA0C;IAC1B,IAAI,CAAyB;IAE7C;;;;;OAKG;IACH;IACE,kCAAkC;IAClC,OAAe;IACf,oCAAoC;IACpC,IAA4B;IAC5B,uCAAuC;IACvC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,uFAAuF;AACvF,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH;IACE,4DAA4D;IAC5D,KAAa;QAEb,KAAK,CAAC,mDAAmD,KAAK,IAAI,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAChH,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD;;;;OAIG;IACH;IACE,4CAA4C;IAC5C,OAAO,GAAG,uDAAuD;IACjE,uCAAuC;IACvC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,wDAAwD;IACxD,aAAa,EAAE,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,EAAE,eAAe;IACzB,gEAAgE;IAChE,iBAAiB,EAAE,wBAAwB;IAC3C,qDAAqD;IACrD,aAAa,EAAE,mBAAmB;IAClC,iFAAiF;IACjF,qBAAqB,EAAE,6BAA6B;CAC5C,CAAC;AAKX,8DAA8D;AAC9D,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,0CAA0C;IAC1B,IAAI,CAAyB;IAE7C;;;;;OAKG;IACH;IACE,kCAAkC;IAClC,OAAe;IACf,oCAAoC;IACpC,IAA4B;IAC5B,uCAAuC;IACvC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,uFAAuF;AACvF,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH;IACE,4DAA4D;IAC5D,KAAa;QAEb,KAAK,CAAC,mDAAmD,KAAK,IAAI,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAChH,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,0BAA2B,SAAQ,kBAAkB;IAChE;;;;OAIG;IACH;IACE,yDAAyD;IACzD,MAAc;IACd,yDAAyD;IACzD,OAAgB;QAEhB,KAAK,CACH,yBAAyB,MAAM,SAAS,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACtE,sBAAsB,CAAC,qBAAqB,CAC7C,CAAC;IACJ,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD;;;;OAIG;IACH;IACE,4CAA4C;IAC5C,OAAO,GAAG,uDAAuD;IACjE,uCAAuC;IACvC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF"}
@@ -12,6 +12,8 @@ export interface ExecuteOptions {
12
12
  }
13
13
  /** Playback resolution configuration selected after the Remedia session is connected. */
14
14
  export interface StreamResolutionOptions {
15
+ /** Portable queue scope when resolution belongs to a live Player, otherwise null. */
16
+ guildId?: string | null;
15
17
  /** Materialize encoded media inside a transport adapter before post-stream processing.
16
18
  * @param source Resolved media descriptor.
17
19
  * @param signal Combined caller and provider lifetime.
@@ -9,9 +9,13 @@ import { PluginError } from './plugin-error.js';
9
9
  * @returns Ordered applicable subscriptions without invoking them.
10
10
  */
11
11
  export function selectHandlers(operation, input, options, state) {
12
- return state.handlers
13
- .filter((handler) => handler.operation === operation &&
14
- handler.entry.active &&
12
+ return (state.handlers.get(operation) ?? []).filter((handler) => handler.entry.active &&
13
+ (!handler.guildIds ||
14
+ (typeof input === 'object' &&
15
+ input !== null &&
16
+ 'guildId' in input &&
17
+ typeof input.guildId === 'string' &&
18
+ handler.guildIds.includes(input.guildId))) &&
15
19
  (!options.pluginId || handler.entry.id === options.pluginId) &&
16
20
  (options.hostId === undefined ||
17
21
  (handler.entry.registration.definition.remoteHost?.hostId ?? null) === options.hostId) &&
@@ -19,8 +23,7 @@ export function selectHandlers(operation, input, options, state) {
19
23
  !state.blocked().includes(handler.entry.id) &&
20
24
  (!input.protocol ||
21
25
  !handler.protocols?.length ||
22
- handler.protocols?.includes(input.protocol)))
23
- .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0) || a.order - b.order);
26
+ handler.protocols?.includes(input.protocol)));
24
27
  }
25
28
  /** Dispatch a typed operation against initialized host state.
26
29
  * @internal
@@ -66,6 +69,12 @@ export async function dispatchOperation(operation, input, options, state, handle
66
69
  }
67
70
  }
68
71
  catch (error) {
72
+ if ((operation === 'stream.transform' || operation === 'media.transform') &&
73
+ value &&
74
+ typeof value === 'object' &&
75
+ 'stream' in value &&
76
+ value.stream instanceof Readable)
77
+ value.stream.destroy();
69
78
  if (signal.aborted) {
70
79
  throw signal.reason;
71
80
  }
@@ -103,6 +112,26 @@ export async function dispatchOperation(operation, input, options, state, handle
103
112
  return result;
104
113
  }
105
114
  if (policy === 'pipe') {
115
+ if (operation === 'stream.transform' || operation === 'media.transform') {
116
+ const previous = value;
117
+ const next = result;
118
+ if (!next || next.track !== previous.track || !(next.stream instanceof Readable)) {
119
+ previous.stream.destroy();
120
+ if (next?.stream instanceof Readable)
121
+ next.stream.destroy();
122
+ throw new PluginError(handler.entry.id, operation, new TypeError('Encoded transforms must preserve Track identity and return a Readable.'));
123
+ }
124
+ const dispose = () => {
125
+ previous.stream.destroy();
126
+ next.stream.destroy();
127
+ };
128
+ signal.addEventListener('abort', dispose, { once: true });
129
+ next.stream.once('close', () => {
130
+ signal.removeEventListener('abort', dispose);
131
+ if (previous.stream !== next.stream)
132
+ previous.stream.destroy();
133
+ });
134
+ }
106
135
  value = result;
107
136
  }
108
137
  if (policy === 'collect') {
@@ -1 +1 @@
1
- {"version":3,"file":"operation-dispatch.js","sourceRoot":"","sources":["../../src/plugins/operation-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-dispatch.js","sourceRoot":"","sources":["../../src/plugins/operation-dispatch.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export type Entry = {
12
12
  controller: AbortController;
13
13
  /** Owned cleanup callbacks in registration order. */
14
14
  cleanups: Array<() => void | Promise<void>>;
15
+ /** Subscriptions owned by this registration, including dynamic additions. */
16
+ handlers: Set<Handler>;
15
17
  /** Handler promises that teardown must drain. */
16
18
  pending: Set<Promise<unknown>>;
17
19
  /** Setup completion, including failed-setup cleanup. */
@@ -48,7 +50,7 @@ export type OperationRunner = <K extends OperationName>(operation: K, input: Ope
48
50
  /** Host state read by operation dispatch. */
49
51
  export interface DispatchState {
50
52
  /** Subscriptions visible to the current dispatch. */
51
- handlers: Handler[];
53
+ handlers: ReadonlyMap<OperationName, readonly Handler[]>;
52
54
  /** Operation dispatch policies. */
53
55
  definitions: Map<OperationName, DispatchPolicy>;
54
56
  /** Owning Player's disabled provider IDs. */
@@ -1,8 +1,10 @@
1
+ import { type SerializedEntityUnion } from '../utils/serde.js';
2
+ import type { Playlist } from '../structures/playlist.js';
1
3
  import { type RemotePluginHostOptions } from '../remote.js';
2
4
  import type { MediaSource } from '@remedia/client';
3
5
  import type { Track } from '../structures/track.js';
4
6
  import type { ExecuteOptions, StreamResolutionOptions } from './execution-options.js';
5
- import type { OperationInput, OperationName, OperationResult, PluginRegistration, ProviderReference, OperationMap } from './types.js';
7
+ import type { OperationInput, OperationName, OperationResult, PluginRegistration, ProviderReference, OperationMap, ProviderMap } from './types.js';
6
8
  import type { LegacyPlayerContext } from '../legacy-player.js';
7
9
  export { PluginError } from './plugin-error.js';
8
10
  export type { ExecuteOptions, StreamResolutionOptions } from './execution-options.js';
@@ -11,9 +13,31 @@ export declare class PluginRegistry {
11
13
  readonly player: LegacyPlayerContext;
12
14
  private readonly blocked;
13
15
  private readonly hostId?;
16
+ private providerNames;
17
+ private sealedProviders;
18
+ private providersIndex;
19
+ /** Enable a local singleton capability before setup. Source hosts do not enable playback providers.
20
+ * @param name Provider capability name.
21
+ */
22
+ defineProvider<K extends keyof ProviderMap>(name: K): void;
23
+ /** Read the selected provider registration lifetime.
24
+ * @param name Provider capability name.
25
+ * @returns Registration cancellation signal, absent for the default implementation.
26
+ */
27
+ providerSignal<K extends keyof ProviderMap>(name: K): AbortSignal | undefined;
28
+ /** Select and seal a provider before resource initialization. Later replacement registrations fail.
29
+ * @param name Provider capability name.
30
+ * @param dispose Release owned framework resources before plugin teardown.
31
+ * @returns The active implementation, or undefined for the framework default.
32
+ */
33
+ selectProvider<K extends keyof ProviderMap>(name: K, dispose: () => Promise<void>): ProviderMap[K] | undefined;
14
34
  private advertisements;
15
35
  private entries;
16
36
  private handlers;
37
+ private synchronous;
38
+ private dispatching;
39
+ private calls;
40
+ private initializing;
17
41
  private order;
18
42
  private resultOwners;
19
43
  private destroyed;
@@ -28,8 +52,9 @@ export declare class PluginRegistry {
28
52
  /** Define a declaration-merged operation before registering handlers.
29
53
  * @param name Operation name.
30
54
  * @param policy Dispatch policy matching its contract.
55
+ * @param synchronous Whether callbacks must complete before returning; required for interception.
31
56
  */
32
- defineOperation<K extends OperationName>(name: K, policy: OperationMap[K]['policy']): void;
57
+ defineOperation<K extends OperationName>(name: K, policy: OperationMap[K]['policy'], synchronous?: boolean): void;
33
58
  /** Whether an ID is reserved or active.
34
59
  * @param id Plugin ID.
35
60
  * @param hostId Optional deployment constraint.
@@ -44,16 +69,23 @@ export declare class PluginRegistry {
44
69
  * @param hostId Deployment identity.
45
70
  */
46
71
  hasHost(hostId: string): boolean;
47
- /** Advertise only actual local operation handlers.
72
+ /** Advertise only active local operation handlers and supplied provider capabilities.
48
73
  * @returns Serializable provider capability descriptions.
49
74
  */
50
75
  describe(): {
51
76
  id: string;
77
+ provides: never[];
52
78
  operations: (keyof OperationMap)[];
53
79
  protocols: string[];
54
80
  priorities: {
55
81
  [k: string]: number;
56
82
  };
83
+ subscriptions: {
84
+ operation: keyof OperationMap;
85
+ priority: number;
86
+ guildIds: readonly string[] | undefined;
87
+ order: number;
88
+ }[];
57
89
  }[];
58
90
  /** Register all advertised providers from an existing HTTP deployment.
59
91
  * @param host Existing deployment and authentication.
@@ -90,6 +122,20 @@ export declare class PluginRegistry {
90
122
  ready(): Promise<void>;
91
123
  /** Destroy all registrations, attempting every cleanup even when one fails. */
92
124
  destroy(): Promise<void>;
125
+ /** Whether an operation has active subscribers. Does not scan unrelated registrations.
126
+ * @param operation Capability name.
127
+ * @returns Whether at least one active handler exists.
128
+ */
129
+ hasCapability(operation: OperationName): boolean;
130
+ /** Reject reentrant application operations from synchronous capability handlers. */
131
+ assertNotDispatching(): void;
132
+ /** Dispatch a synchronous local capability without scheduling promises.
133
+ * @param operation Capability defined with synchronous execution.
134
+ * @param input Validated operation payload.
135
+ * @param options Scope and cancellation constraints.
136
+ * @returns The selected result, or transformed input for pipe operations.
137
+ */
138
+ executeSync<K extends OperationName>(operation: K, input: OperationInput<K>, options?: ExecuteOptions): OperationResult<K>;
93
139
  /** Execute using the operation's declared policy. Genuine failures reject immediately.
94
140
  * @param operation Typed operation name.
95
141
  * @param input Operation payload.
@@ -98,6 +144,18 @@ export declare class PluginRegistry {
98
144
  */
99
145
  execute<K extends OperationName>(operation: K, input: OperationInput<K>, options?: ExecuteOptions): Promise<OperationResult<K>>;
100
146
  private run;
147
+ /** Serialize using modern application-metadata transformations. Plain model serialization remains synchronous.
148
+ * @param entity Track or playlist to persist.
149
+ * @param options Cancellation and provider scope.
150
+ * @returns A validated JSON persistence payload, without playback grants or live streams.
151
+ */
152
+ serialize(entity: Track | Playlist, options?: ExecuteOptions): Promise<SerializedEntityUnion>;
153
+ /** Restore through modern metadata transformations and the existing schema validator.
154
+ * @param payload Untrusted persistence payload.
155
+ * @param options Cancellation and provider scope.
156
+ * @returns A restored entity without ephemeral playback state.
157
+ */
158
+ restore(payload: unknown, options?: ExecuteOptions): Promise<Track | Playlist>;
101
159
  /** Resolve and normalize a track for the already selected Remedia node.
102
160
  * @param track Data model with a portable provider reference.
103
161
  * @param options Target node mode and cancellation.
@@ -1,3 +1,6 @@
1
+ import { serialize, deserialize } from '../utils/serde.js';
2
+ import { parseEntity } from '../utils/parse-serialized-entity.js';
3
+ import { AsyncLocalStorage } from 'node:async_hooks';
1
4
  import { registerRemote, discoverRemote } from '../remote.js';
2
5
  import { PluginError } from './plugin-error.js';
3
6
  import { dispatchOperation, selectHandlers } from './operation-dispatch.js';
@@ -8,9 +11,44 @@ export class PluginRegistry {
8
11
  player;
9
12
  blocked;
10
13
  hostId;
14
+ providerNames = new Set();
15
+ sealedProviders = new Set();
16
+ providersIndex = new Map();
17
+ /** Enable a local singleton capability before setup. Source hosts do not enable playback providers.
18
+ * @param name Provider capability name.
19
+ */
20
+ defineProvider(name) {
21
+ this.providerNames.add(name);
22
+ }
23
+ /** Read the selected provider registration lifetime.
24
+ * @param name Provider capability name.
25
+ * @returns Registration cancellation signal, absent for the default implementation.
26
+ */
27
+ providerSignal(name) {
28
+ return this.providersIndex.get(name)?.entry.controller.signal;
29
+ }
30
+ /** Select and seal a provider before resource initialization. Later replacement registrations fail.
31
+ * @param name Provider capability name.
32
+ * @param dispose Release owned framework resources before plugin teardown.
33
+ * @returns The active implementation, or undefined for the framework default.
34
+ */
35
+ selectProvider(name, dispose) {
36
+ if (this.sealedProviders.has(name))
37
+ throw new Error(`Provider already selected: ${String(name)}`);
38
+ this.sealedProviders.add(name);
39
+ const provider = this.providersIndex.get(name);
40
+ if (!provider?.entry.active)
41
+ return undefined;
42
+ provider.dispose = dispose;
43
+ return provider.value;
44
+ }
11
45
  advertisements = new WeakMap();
12
46
  entries = new Map();
13
- handlers = [];
47
+ handlers = new Map();
48
+ synchronous = new Set();
49
+ dispatching = false;
50
+ calls = new AsyncLocalStorage();
51
+ initializing = new Set();
14
52
  order = 0;
15
53
  resultOwners = new WeakMap();
16
54
  destroyed = false;
@@ -26,6 +64,13 @@ export class PluginRegistry {
26
64
  this.hostId = hostId;
27
65
  }
28
66
  definitions = new Map([
67
+ ['serialization.beforeRestore', 'pipe'],
68
+ ['serialization.afterSerialize', 'pipe'],
69
+ ['media.beforeResolve', 'pipe'],
70
+ ['search.beforeQuery', 'pipe'],
71
+ ['search.afterResults', 'pipe'],
72
+ ['media.descriptor', 'pipe'],
73
+ ['media.transform', 'pipe'],
29
74
  ['lyrics.search', 'collect'],
30
75
  ['search.query.match', 'collect'],
31
76
  ['search.query.resolve', 'first'],
@@ -38,12 +83,19 @@ export class PluginRegistry {
38
83
  /** Define a declaration-merged operation before registering handlers.
39
84
  * @param name Operation name.
40
85
  * @param policy Dispatch policy matching its contract.
86
+ * @param synchronous Whether callbacks must complete before returning; required for interception.
41
87
  */
42
- defineOperation(name, policy) {
88
+ defineOperation(name, policy, synchronous = false) {
89
+ if (policy === 'intercept' && !synchronous)
90
+ throw new TypeError('Interception requires synchronous dispatch.');
91
+ if (synchronous && policy === 'collect')
92
+ throw new TypeError('Synchronous collection dispatch is unsupported.');
43
93
  if (this.definitions.has(name)) {
44
94
  throw new Error(`Operation already defined: ${name}`);
45
95
  }
46
96
  this.definitions.set(name, policy);
97
+ if (synchronous)
98
+ this.synchronous.add(name);
47
99
  }
48
100
  /** Whether an ID is reserved or active.
49
101
  * @param id Plugin ID.
@@ -87,31 +139,41 @@ export class PluginRegistry {
87
139
  hasHost(hostId) {
88
140
  return [...this.entries.values()].some((entry) => entry.registration.definition.remoteHost?.hostId === hostId);
89
141
  }
90
- /** Advertise only actual local operation handlers.
142
+ /** Advertise only active local operation handlers and supplied provider capabilities.
91
143
  * @returns Serializable provider capability descriptions.
92
144
  */
93
145
  describe() {
94
146
  return [...this.entries.values()]
95
147
  .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
- }));
148
+ .map((entry) => {
149
+ const handlers = [...entry.handlers];
150
+ const operations = [...new Set(handlers.map((handler) => handler.operation))];
151
+ const provides = [...this.providersIndex]
152
+ .filter(([, provider]) => provider.entry === entry)
153
+ .map(([name]) => name);
154
+ return {
155
+ id: entry.id,
156
+ provides,
157
+ operations,
158
+ protocols: [
159
+ ...new Set(handlers
160
+ .filter((handler) => handler.operation.startsWith('search.query.'))
161
+ .flatMap((handler) => handler.protocols ?? [])),
162
+ ],
163
+ priorities: Object.fromEntries(operations.map((operation) => [
164
+ operation,
165
+ Math.max(...handlers
166
+ .filter((handler) => handler.operation === operation)
167
+ .map((handler) => handler.priority ?? 0)),
168
+ ])),
169
+ subscriptions: handlers.map((handler) => ({
170
+ operation: handler.operation,
171
+ priority: handler.priority ?? 0,
172
+ guildIds: handler.guildIds,
173
+ order: handler.order,
174
+ })),
175
+ };
176
+ });
115
177
  }
116
178
  /** Register all advertised providers from an existing HTTP deployment.
117
179
  * @param host Existing deployment and authentication.
@@ -150,7 +212,9 @@ export class PluginRegistry {
150
212
  * @param options Source targeting and block list.
151
213
  */
152
214
  supportsProtocol(protocol, options = {}) {
153
- return this.handlers.some((handler) => (handler.operation === 'search.query.match' || handler.operation === 'search.query.resolve') &&
215
+ return ['search.query.match', 'search.query.resolve']
216
+ .flatMap((name) => this.handlers.get(name) ?? [])
217
+ .some((handler) => (handler.operation === 'search.query.match' || handler.operation === 'search.query.resolve') &&
154
218
  handler.entry.active &&
155
219
  (!options.pluginId || handler.entry.id === options.pluginId) &&
156
220
  (options.hostId === undefined ||
@@ -208,6 +272,7 @@ export class PluginRegistry {
208
272
  registration,
209
273
  controller,
210
274
  cleanups: [],
275
+ handlers: new Set(),
211
276
  pending: new Set(),
212
277
  active: false,
213
278
  ready: Promise.resolve(),
@@ -217,11 +282,27 @@ export class PluginRegistry {
217
282
  player: this.player,
218
283
  options: registration.options,
219
284
  signal: controller.signal,
285
+ provide: (name, value) => {
286
+ controller.signal.throwIfAborted();
287
+ if (!this.providerNames.has(name))
288
+ throw new Error(`Unsupported local provider: ${String(name)}`);
289
+ if (this.sealedProviders.has(name))
290
+ throw new Error(`Provider selection is sealed: ${String(name)}`);
291
+ if (this.providersIndex.has(name))
292
+ throw new Error(`Duplicate provider: ${String(name)}`);
293
+ if (!value)
294
+ throw new TypeError(`Provider implementation is required: ${String(name)}`);
295
+ this.providersIndex.set(name, { entry, value });
296
+ },
220
297
  on: (operation, fn, options = {}) => {
221
298
  controller.signal.throwIfAborted();
222
299
  if (!this.definitions.has(operation)) {
223
300
  throw new Error(`Undefined operation: ${operation}`);
224
301
  }
302
+ if (this.synchronous.has(operation) && fn.constructor.name === 'AsyncFunction')
303
+ throw new TypeError(`Capability ${operation} requires a synchronous callback.`);
304
+ if (!Number.isFinite(options.priority ?? definition.priority ?? 0))
305
+ throw new TypeError('Handler priority must be finite.');
225
306
  const handler = {
226
307
  entry,
227
308
  operation,
@@ -229,11 +310,19 @@ export class PluginRegistry {
229
310
  priority: definition.priority,
230
311
  ...options,
231
312
  ...(definition.remoteHost && definition.priority !== undefined ? { priority: definition.priority } : {}),
313
+ ...(options.guildIds ? { guildIds: Object.freeze([...options.guildIds]) } : {}),
232
314
  order: this.order++,
233
315
  };
234
- this.handlers.push(handler);
316
+ entry.handlers.add(handler);
317
+ const list = this.handlers.get(operation) ?? [];
318
+ this.handlers.set(operation, [...list, handler].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0) || a.order - b.order));
235
319
  return () => {
236
- this.handlers = this.handlers.filter((item) => item !== handler);
320
+ entry.handlers.delete(handler);
321
+ const remaining = this.handlers.get(operation)?.filter((item) => item !== handler) ?? [];
322
+ if (remaining.length)
323
+ this.handlers.set(operation, remaining);
324
+ else
325
+ this.handlers.delete(operation);
237
326
  };
238
327
  },
239
328
  onCleanup: (callback) => {
@@ -260,11 +349,35 @@ export class PluginRegistry {
260
349
  throw new PluginError(entry.id, 'setup', cause);
261
350
  }
262
351
  });
263
- await entry.ready;
352
+ this.initializing.add(entry.ready);
353
+ try {
354
+ await entry.ready;
355
+ }
356
+ finally {
357
+ this.initializing.delete(entry.ready);
358
+ }
264
359
  }
265
360
  async cleanup(entry) {
266
- this.handlers = this.handlers.filter((handler) => handler.entry !== entry);
361
+ for (const operation of new Set([...entry.handlers].map((handler) => handler.operation))) {
362
+ const remaining = this.handlers.get(operation)?.filter((handler) => handler.entry !== entry) ?? [];
363
+ if (remaining.length)
364
+ this.handlers.set(operation, remaining);
365
+ else
366
+ this.handlers.delete(operation);
367
+ }
368
+ entry.handlers.clear();
267
369
  const errors = [];
370
+ for (const [name, provider] of this.providersIndex) {
371
+ if (provider.entry !== entry)
372
+ continue;
373
+ this.providersIndex.delete(name);
374
+ try {
375
+ await provider.dispose?.();
376
+ }
377
+ catch (error) {
378
+ errors.push(new PluginError(entry.id, String(name), error));
379
+ }
380
+ }
268
381
  try {
269
382
  await entry.registration.definition.destroy?.(entry.context);
270
383
  }
@@ -319,7 +432,8 @@ export class PluginRegistry {
319
432
  }
320
433
  /** Initialize pending registrations before dispatch. */
321
434
  async ready() {
322
- await Promise.all([...this.entries.values()].map((entry) => entry.ready));
435
+ if (this.initializing.size)
436
+ await Promise.all(this.initializing);
323
437
  }
324
438
  /** Destroy all registrations, attempting every cleanup even when one fails. */
325
439
  async destroy() {
@@ -331,6 +445,90 @@ export class PluginRegistry {
331
445
  throw new AggregateError(errors, 'Plugin cleanup failed');
332
446
  }
333
447
  }
448
+ /** Whether an operation has active subscribers. Does not scan unrelated registrations.
449
+ * @param operation Capability name.
450
+ * @returns Whether at least one active handler exists.
451
+ */
452
+ hasCapability(operation) {
453
+ return this.handlers.get(operation)?.some((handler) => handler.entry.active) ?? false;
454
+ }
455
+ /** Reject reentrant application operations from synchronous capability handlers. */
456
+ assertNotDispatching() {
457
+ if (this.dispatching)
458
+ throw new Error('Reentrant application operations inside a capability handler are unsupported.');
459
+ }
460
+ /** Dispatch a synchronous local capability without scheduling promises.
461
+ * @param operation Capability defined with synchronous execution.
462
+ * @param input Validated operation payload.
463
+ * @param options Scope and cancellation constraints.
464
+ * @returns The selected result, or transformed input for pipe operations.
465
+ */
466
+ executeSync(operation, input, options = {}) {
467
+ options.signal?.throwIfAborted();
468
+ if (!this.synchronous.has(operation))
469
+ throw new Error(`Operation is not synchronous: ${operation}`);
470
+ const policy = this.definitions.get(operation);
471
+ const list = this.handlers.get(operation);
472
+ if (!list?.length)
473
+ return (policy === 'pipe' ? input : undefined);
474
+ this.assertNotDispatching();
475
+ this.dispatching = true;
476
+ let value = input;
477
+ const errors = [];
478
+ try {
479
+ for (const handler of selectHandlers(operation, input, options, {
480
+ handlers: this.handlers,
481
+ definitions: this.definitions,
482
+ blocked: this.blocked,
483
+ resultOwners: this.resultOwners,
484
+ })) {
485
+ const signal = options.signal
486
+ ? AbortSignal.any([options.signal, handler.entry.controller.signal])
487
+ : handler.entry.controller.signal;
488
+ signal.throwIfAborted();
489
+ try {
490
+ const result = handler.fn(policy === 'pipe' || policy === 'intercept' ? value : input, { signal });
491
+ if (result && typeof result === 'object' && 'then' in result) {
492
+ const pending = Promise.resolve(result);
493
+ handler.entry.pending.add(pending);
494
+ void pending.then(() => handler.entry.pending.delete(pending), () => handler.entry.pending.delete(pending));
495
+ throw new TypeError('Synchronous capability handlers must not return promises.');
496
+ }
497
+ signal.throwIfAborted();
498
+ if (result !== undefined && policy === 'intercept') {
499
+ if (!result || typeof result !== 'object' || !('action' in result))
500
+ throw new TypeError('Expected an explicit capability decision.');
501
+ if (result.action === 'cancel') {
502
+ if (!('reason' in result) || typeof result.reason !== 'string')
503
+ throw new TypeError('Cancellation requires a reason.');
504
+ return result;
505
+ }
506
+ if (result.action !== 'replace' || !('value' in result))
507
+ throw new TypeError('Expected cancel or replace.');
508
+ value = result.value;
509
+ }
510
+ if (result !== undefined && policy === 'first')
511
+ return result;
512
+ if (result !== undefined && policy === 'pipe')
513
+ value = result;
514
+ }
515
+ catch (cause) {
516
+ const error = new PluginError(handler.entry.id, operation, cause);
517
+ if (policy !== 'broadcast')
518
+ throw error;
519
+ errors.push(error);
520
+ }
521
+ }
522
+ if (errors.length === 1)
523
+ throw errors[0];
524
+ if (errors.length)
525
+ throw new AggregateError(errors, `Observers failed during ${operation}`);
526
+ return (policy === 'pipe' ? value : policy === 'intercept' ? { action: 'replace', value } : undefined);
527
+ }
528
+ finally {
529
+ this.dispatching = false;
530
+ }
531
+ }
334
532
  /** Execute using the operation's declared policy. Genuine failures reject immediately.
335
533
  * @param operation Typed operation name.
336
534
  * @param input Operation payload.
@@ -338,13 +536,24 @@ export class PluginRegistry {
338
536
  * @returns Result inferred from the operation policy.
339
537
  */
340
538
  async execute(operation, input, options = {}) {
341
- return this.run(operation, input, options);
539
+ if (this.synchronous.has(operation))
540
+ return this.executeSync(operation, input, options);
541
+ const guarded = operation.startsWith('media.') ||
542
+ operation.startsWith('serialization.') ||
543
+ operation === 'search.beforeQuery' ||
544
+ operation === 'search.afterResults';
545
+ if (!guarded)
546
+ return this.run(operation, input, options);
547
+ const active = this.calls.getStore();
548
+ if (active?.has(operation))
549
+ throw new Error(`Recursive capability dispatch: ${operation}`);
550
+ return this.calls.run(new Set([...(active ?? []), operation]), () => this.run(operation, input, options));
342
551
  }
343
552
  async run(operation, input, options, handled) {
344
553
  const track = input && typeof input === 'object' && 'track' in input ? input.track : undefined;
345
554
  if (track?.sourceReference?.hostId &&
346
555
  track.sourceReference.hostId !== this.hostId &&
347
- !this.handlers.some((handler) => handler.operation === operation &&
556
+ !(this.handlers.get(operation) ?? []).some((handler) => handler.operation === operation &&
348
557
  handler.entry.active &&
349
558
  handler.entry.registration.definition.remoteHost?.hostId === track.sourceReference?.hostId)) {
350
559
  throw new Error(`Source host ${track.sourceReference.hostId} is unavailable in this runtime; execute this Track on its owning source host`);
@@ -373,6 +582,8 @@ export class PluginRegistry {
373
582
  * @returns Whether a byte transformation would be invoked.
374
583
  */
375
584
  hasStreamTransforms(pluginId, options = {}) {
585
+ if (this.hasCapability('media.transform'))
586
+ return true;
376
587
  return (selectHandlers('stream.transform', {}, { ...options, pluginId }, {
377
588
  handlers: this.handlers,
378
589
  definitions: this.definitions,
@@ -380,12 +591,46 @@ export class PluginRegistry {
380
591
  resultOwners: this.resultOwners,
381
592
  }).length > 0);
382
593
  }
594
+ /** Serialize using modern application-metadata transformations. Plain model serialization remains synchronous.
595
+ * @param entity Track or playlist to persist.
596
+ * @param options Cancellation and provider scope.
597
+ * @returns A validated JSON persistence payload, without playback grants or live streams.
598
+ */
599
+ async serialize(entity, options = {}) {
600
+ const input = serialize(entity);
601
+ const result = this.hasCapability('serialization.afterSerialize')
602
+ ? await this.execute('serialization.afterSerialize', input, options)
603
+ : input;
604
+ return parseEntity(result);
605
+ }
606
+ /** Restore through modern metadata transformations and the existing schema validator.
607
+ * @param payload Untrusted persistence payload.
608
+ * @param options Cancellation and provider scope.
609
+ * @returns A restored entity without ephemeral playback state.
610
+ */
611
+ async restore(payload, options = {}) {
612
+ const input = parseEntity(payload);
613
+ const result = this.hasCapability('serialization.beforeRestore')
614
+ ? await this.execute('serialization.beforeRestore', input, options)
615
+ : input;
616
+ return deserialize(parseEntity(result));
617
+ }
383
618
  /** Resolve and normalize a track for the already selected Remedia node.
384
619
  * @param track Data model with a portable provider reference.
385
620
  * @param options Target node mode and cancellation.
386
621
  */
387
622
  async resolveStream(track, options = {}) {
388
- return resolveTrackStream(track, options, (operation, input, execution, handled) => this.run(operation, input, execution, handled), (owner) => this.hasStreamTransforms(owner, options));
623
+ if (this.hasCapability('media.beforeResolve')) {
624
+ const originalPluginId = track.sourceReference?.pluginId;
625
+ const originalHostId = track.sourceReference?.hostId;
626
+ const prepared = await this.execute('media.beforeResolve', { track }, { signal: options.signal });
627
+ if (!prepared ||
628
+ prepared.track.sourceReference?.pluginId !== originalPluginId ||
629
+ prepared.track.sourceReference?.hostId !== originalHostId)
630
+ throw new TypeError('media.beforeResolve must preserve provider and deployment identity.');
631
+ track = prepared.track;
632
+ }
633
+ return resolveTrackStream(track, options, (operation, input, execution, handled) => this.run(operation, input, execution, handled), (owner) => this.hasStreamTransforms(owner, options), (operation) => this.hasCapability(operation));
389
634
  }
390
635
  }
391
636
  //# 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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"}
@@ -10,9 +10,10 @@ export class DeferredSourceRequired extends Error {
10
10
  * @param options Selected node mode and playback lifetime.
11
11
  * @param run Shared operation runner.
12
12
  * @param hasTransforms Inspect applicable transformations for the resolved owner.
13
+ * @param hasCapability Inspect shared modern media subscriptions.
13
14
  * @returns Normalized playable media source.
14
15
  */
15
- export async function resolveTrackStream(track, options, run, hasTransforms) {
16
+ export async function resolveTrackStream(track, options, run, hasTransforms, hasCapability = () => true) {
16
17
  const pluginId = track.sourceReference?.pluginId;
17
18
  let owner = pluginId;
18
19
  let lifetime;
@@ -38,6 +39,29 @@ export async function resolveTrackStream(track, options, run, hasTransforms) {
38
39
  : result instanceof Uint8Array
39
40
  ? { buffer: result }
40
41
  : result;
42
+ // Intercept before transport authorization/materialization so changed URLs pass the same access policy.
43
+ try {
44
+ if (hasCapability('media.descriptor')) {
45
+ const descriptor = await run('media.descriptor', { source, guildId: options.guildId ?? null }, { ...options, pluginId: undefined });
46
+ if (!descriptor || !descriptor.source || typeof descriptor.source !== 'object')
47
+ throw new TypeError('media.descriptor requires a media source.');
48
+ const next = descriptor.source;
49
+ if (!('url' in next && typeof next.url === 'string') &&
50
+ !('file' in next && typeof next.file === 'string') &&
51
+ !('stream' in next && next.stream instanceof Readable) &&
52
+ !('buffer' in next && next.buffer instanceof Uint8Array) &&
53
+ !('hostId' in next && typeof next.hostId === 'string'))
54
+ throw new TypeError('media.descriptor returned an invalid media source.');
55
+ if ('stream' in source && (!('stream' in next) || next.stream !== source.stream))
56
+ throw new TypeError('Use media.transform to replace encoded streams.');
57
+ source = next;
58
+ }
59
+ }
60
+ catch (error) {
61
+ if ('stream' in source)
62
+ source.stream.destroy();
63
+ throw error;
64
+ }
41
65
  if (options.directUrlOnly) {
42
66
  if (!('url' in source)) {
43
67
  if ('stream' in source)
@@ -76,11 +100,20 @@ export async function resolveTrackStream(track, options, run, hasTransforms) {
76
100
  }
77
101
  if ('stream' in source) {
78
102
  const transformed = await run('stream.transform', { track, stream: source.stream }, { ...options, pluginId: owner });
103
+ if (transformed && !(transformed.stream instanceof Readable))
104
+ throw new TypeError('Stream transformation must return a Readable.');
79
105
  if (transformed) {
80
106
  source = { ...source, stream: transformed.stream };
81
107
  streams.add(transformed.stream);
82
108
  }
83
109
  }
110
+ if ('stream' in source) {
111
+ const transformed = await run('media.transform', { track, stream: source.stream }, { ...options, pluginId: undefined });
112
+ if (!transformed || !(transformed.stream instanceof Readable))
113
+ throw new TypeError('media.transform requires an encoded Readable.');
114
+ streams.add(transformed.stream);
115
+ source = { ...source, stream: transformed.stream };
116
+ }
84
117
  await run('track.stream.resolved', { track }, { ...options, pluginId: owner });
85
118
  signal?.throwIfAborted();
86
119
  if (streams.size && signal) {
@@ -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,4 @@
1
+ import type { SerializedEntityUnion } from '../utils/serde.js';
1
2
  import type { RemotePluginHostOptions } from '../remote.js';
2
3
  import type { LyricsRequest, LyricsResult } from '../lyrics.js';
3
4
  import type { Readable } from 'node:stream';
@@ -22,7 +23,7 @@ export type SourceStream = (MediaSource & {
22
23
  expiresAtMs?: number;
23
24
  }) | string | Uint8Array | Readable;
24
25
  /** Operation dispatch behavior. */
25
- export type DispatchPolicy = 'first' | 'collect' | 'pipe' | 'broadcast';
26
+ export type DispatchPolicy = 'first' | 'collect' | 'pipe' | 'broadcast' | 'intercept';
26
27
  /** Declaration merged operation contract. */
27
28
  export interface Operation<Input, Output, Policy extends DispatchPolicy> {
28
29
  /** Handler input. */
@@ -74,6 +75,26 @@ export interface SourceStreamTransform extends SourceTrackRequest {
74
75
  }
75
76
  /** Extensible source operation contracts. Augmented operations also need host definitions. */
76
77
  export interface OperationMap {
78
+ /** Transform a validated persistence payload before restoring an entity. */
79
+ 'serialization.beforeRestore': Operation<SerializedEntityUnion, SerializedEntityUnion, 'pipe'>;
80
+ /** Transform serialized application metadata; the result is validated again. */
81
+ 'serialization.afterSerialize': Operation<SerializedEntityUnion, SerializedEntityUnion, 'pipe'>;
82
+ /** Transform source preparation while preserving portable provider identity. */
83
+ 'media.beforeResolve': Operation<SourceTrackRequest, SourceTrackRequest, 'pipe'>;
84
+ /** Transform a portable search query before provider selection. */
85
+ 'search.beforeQuery': Operation<SourceQuery, SourceQuery, 'pipe'>;
86
+ /** Transform metadata returned by search orchestration. */
87
+ 'search.afterResults': Operation<SearchResultData, SearchResultData, 'pipe'>;
88
+ /** Transform encoded bytes across modern plugins, independent of source ownership. */
89
+ 'media.transform': Operation<SourceStreamTransform, SourceStreamTransform, 'pipe'>;
90
+ /** Transform a resolved descriptor. Standalone execution has no guild context. */
91
+ 'media.descriptor': Operation<{
92
+ readonly source: MediaSource;
93
+ readonly guildId: string | null;
94
+ }, {
95
+ readonly source: MediaSource;
96
+ readonly guildId: string | null;
97
+ }, 'pipe'>;
77
98
  /** Optional lyrics lookup, independent of all source operations. */
78
99
  'lyrics.search': Operation<LyricsRequest, LyricsResult[] | null, 'collect'>;
79
100
  /** Collect scored providers. */
@@ -91,6 +112,9 @@ export interface OperationMap {
91
112
  /** Notification after a source is resolved. */
92
113
  'track.stream.resolved': Operation<SourceTrackRequest, void, 'broadcast'>;
93
114
  }
115
+ /** Declaration merged names restricted to synchronous callbacks. */
116
+ export interface SynchronousOperationMap {
117
+ }
94
118
  /** Names available to source plugins. */
95
119
  export type OperationName = keyof OperationMap;
96
120
  /** Typed input selected by operation name. */
@@ -109,13 +133,18 @@ export interface OperationContext {
109
133
  * @param context Invocation cancellation.
110
134
  * @returns A handled result, or undefined to decline.
111
135
  */
112
- export type OperationHandler<K extends OperationName> = (input: OperationInput<K>, context: OperationContext) => OperationOutput<K> | undefined | Promise<OperationOutput<K> | undefined>;
136
+ export type OperationHandler<K extends OperationName> = (input: OperationInput<K>, context: OperationContext) => OperationOutput<K> | undefined | (K extends keyof SynchronousOperationMap ? never : Promise<OperationOutput<K> | undefined>);
113
137
  /** Handler ordering metadata. */
114
138
  export interface HandlerOptions {
115
139
  /** Higher values run first; equal priorities preserve registration order. */
116
140
  priority?: number;
117
141
  /** Protocols accepted by this handler; absent means unrestricted. */
118
142
  protocols?: readonly string[];
143
+ /** Local guild constraints; unavailable guild context never matches. */
144
+ guildIds?: readonly string[];
145
+ }
146
+ /** Declaration-merged singleton services supplied only by modern plugins. */
147
+ export interface ProviderMap {
119
148
  }
120
149
  /** Source setup context shared by embedded and standalone execution. */
121
150
  export interface PluginContext<Options> {
@@ -132,6 +161,11 @@ export interface PluginContext<Options> {
132
161
  * @returns An idempotent subscription removal function.
133
162
  */
134
163
  on<K extends OperationName>(operation: K, handler: OperationHandler<K>, options?: HandlerOptions): () => void;
164
+ /** Supply one locally owned implementation of a declared singleton capability.
165
+ * @param capability Provider capability declared by the embedding Player.
166
+ * @param implementation Registration-owned implementation.
167
+ */
168
+ provide<K extends keyof ProviderMap>(capability: K, implementation: ProviderMap[K]): void;
135
169
  /** Register cleanup, run in reverse order after active handlers settle.
136
170
  * @param callback Resource cleanup.
137
171
  */
@@ -1 +1 @@
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
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAkRA;;;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"}
package/dist/runtime.js CHANGED
@@ -69,7 +69,7 @@ export class SourcePluginRuntime extends SafeEventEmitter {
69
69
  : null;
70
70
  const protocol = prefix && this.plugins.supportsProtocol(prefix[1], { pluginId: target, blocked }) ? prefix[1] : undefined;
71
71
  const providerHint = target ? undefined : engine;
72
- const input = {
72
+ let input = {
73
73
  query: protocol ? prefix[2] : query,
74
74
  protocol,
75
75
  providerHint,
@@ -80,6 +80,12 @@ export class SourcePluginRuntime extends SafeEventEmitter {
80
80
  blockExtractors: options.blockExtractors,
81
81
  },
82
82
  };
83
+ if (this.plugins.hasCapability('search.beforeQuery')) {
84
+ const transformed = await this.plugins.execute('search.beforeQuery', input, { signal: options.signal });
85
+ if (!transformed || typeof transformed.query !== 'string')
86
+ throw new TypeError('search.beforeQuery requires a string query.');
87
+ input = { ...input, ...transformed };
88
+ }
83
89
  const execution = { signal: options.signal, blocked, pluginId: target, hostId: options.hostId };
84
90
  const matches = target
85
91
  ? [{ pluginId: target, score: 0, hostId: options.hostId }]
@@ -108,7 +114,14 @@ export class SourcePluginRuntime extends SafeEventEmitter {
108
114
  if (options.requestedBy !== undefined)
109
115
  track.requestedBy = options.requestedBy;
110
116
  }
111
- return new SearchResult(result);
117
+ const transformed = this.plugins.hasCapability('search.afterResults')
118
+ ? await this.plugins.execute('search.afterResults', result, { signal: options.signal })
119
+ : result;
120
+ if (!transformed ||
121
+ !Array.isArray(transformed.tracks) ||
122
+ !transformed.tracks.every((track) => track instanceof Track))
123
+ throw new TypeError('search.afterResults requires Track instances.');
124
+ return new SearchResult(transformed);
112
125
  }
113
126
  return SearchResult.empty();
114
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discord-player/plugin-host",
3
- "version": "8.0.0-dev.2",
3
+ "version": "8.0.0-dev.3",
4
4
  "description": "Standalone Discord Player source runtime and Remedia plugin protocol adapter",
5
5
  "keywords": [
6
6
  "api",