@discord-player/plugin-host 8.0.0-dev.1 → 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.
- package/README.md +73 -28
- package/dist/compat/base-extractor.d.ts +6 -0
- package/dist/compat/base-extractor.js.map +1 -1
- package/dist/compat/extractor-execution-context.js.map +1 -1
- package/dist/compat/extractor-plugin.js +107 -75
- package/dist/compat/extractor-plugin.js.map +1 -1
- package/dist/compat/utils.js.map +1 -1
- package/dist/errors.d.ts +0 -2
- package/dist/errors.js +0 -2
- package/dist/errors.js.map +1 -1
- package/dist/host.js +81 -20
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy-player.d.ts +1 -1
- package/dist/lyrics.d.ts +56 -0
- package/dist/lyrics.js +110 -0
- package/dist/lyrics.js.map +1 -0
- package/dist/media.js.map +1 -1
- package/dist/plugins/execution-options.d.ts +2 -0
- package/dist/plugins/operation-dispatch.js +10 -2
- package/dist/plugins/operation-dispatch.js.map +1 -1
- package/dist/plugins/plugin-error.js.map +1 -1
- package/dist/plugins/registry-internals.d.ts +2 -2
- package/dist/plugins/registry.d.ts +45 -5
- package/dist/plugins/registry.js +149 -15
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/stream-resolver.js +5 -2
- package/dist/plugins/stream-resolver.js.map +1 -1
- package/dist/plugins/types.d.ts +26 -23
- package/dist/plugins/types.js.map +1 -1
- package/dist/protocol.d.ts +35 -0
- package/dist/protocol.js.map +1 -1
- package/dist/providers/lrclib.d.ts +120 -0
- package/dist/providers/lrclib.js +183 -0
- package/dist/providers/lrclib.js.map +1 -0
- package/dist/remote.d.ts +29 -0
- package/dist/remote.js +142 -0
- package/dist/remote.js.map +1 -0
- package/dist/runtime.d.ts +0 -8
- package/dist/runtime.js +41 -43
- package/dist/runtime.js.map +1 -1
- package/dist/structures/search-result.js.map +1 -1
- package/dist/structures/track-types.d.ts +7 -3
- package/dist/structures/track.d.ts +4 -11
- package/dist/structures/track.js +8 -10
- package/dist/structures/track.js.map +1 -1
- package/dist/types.d.ts +2 -4
- package/dist/utils/legacy-serialization-schemas.d.ts +10 -0
- package/dist/utils/serialization-schemas.d.ts +15 -0
- package/dist/utils/serialization-schemas.js +1 -0
- package/dist/utils/serialization-schemas.js.map +1 -1
- package/dist/utils/serialization.js.map +1 -1
- package/docs/remedia-contract.md +9 -8
- package/package.json +3 -3
|
@@ -1,20 +1,23 @@
|
|
|
1
|
+
import { type RemotePluginHostOptions } from '../remote.js';
|
|
1
2
|
import type { MediaSource } from '@remedia/client';
|
|
2
3
|
import type { Track } from '../structures/track.js';
|
|
3
4
|
import type { ExecuteOptions, StreamResolutionOptions } from './execution-options.js';
|
|
4
|
-
import type { OperationInput, OperationName, OperationResult, PluginRegistration,
|
|
5
|
+
import type { OperationInput, OperationName, OperationResult, PluginRegistration, ProviderReference, OperationMap } from './types.js';
|
|
5
6
|
import type { LegacyPlayerContext } from '../legacy-player.js';
|
|
6
7
|
export { PluginError } from './plugin-error.js';
|
|
7
8
|
export type { ExecuteOptions, StreamResolutionOptions } from './execution-options.js';
|
|
8
|
-
/** Context-owned
|
|
9
|
+
/** Context-owned capability registry. Removal aborts and drains calls before teardown. */
|
|
9
10
|
export declare class PluginRegistry {
|
|
10
11
|
readonly player: LegacyPlayerContext;
|
|
11
12
|
private readonly blocked;
|
|
12
13
|
private readonly hostId?;
|
|
14
|
+
private advertisements;
|
|
13
15
|
private entries;
|
|
14
16
|
private handlers;
|
|
15
17
|
private order;
|
|
16
18
|
private resultOwners;
|
|
17
19
|
private destroyed;
|
|
20
|
+
private readonly lifetime;
|
|
18
21
|
/** Create an independent host.
|
|
19
22
|
* @param player Structural source context.
|
|
20
23
|
* @param blocked Default disabled source IDs supplied by the owning Player.
|
|
@@ -26,16 +29,52 @@ export declare class PluginRegistry {
|
|
|
26
29
|
* @param name Operation name.
|
|
27
30
|
* @param policy Dispatch policy matching its contract.
|
|
28
31
|
*/
|
|
29
|
-
defineOperation<K extends OperationName>(name: K, policy:
|
|
32
|
+
defineOperation<K extends OperationName>(name: K, policy: OperationMap[K]['policy']): void;
|
|
30
33
|
/** Whether an ID is reserved or active.
|
|
31
34
|
* @param id Plugin ID.
|
|
35
|
+
* @param hostId Optional deployment constraint.
|
|
32
36
|
*/
|
|
33
|
-
has(id: string): boolean;
|
|
37
|
+
has(id: string, hostId?: string): boolean;
|
|
38
|
+
/** List active provider/deployment references in priority and registration order.
|
|
39
|
+
* @param operation Capability to inspect.
|
|
40
|
+
* @returns Unique eligible provider/deployment references.
|
|
41
|
+
*/
|
|
42
|
+
providers(operation: OperationName): ProviderReference[];
|
|
43
|
+
/** Check whether a deployment has an owned registration.
|
|
44
|
+
* @param hostId Deployment identity.
|
|
45
|
+
*/
|
|
46
|
+
hasHost(hostId: string): boolean;
|
|
47
|
+
/** Advertise only actual local operation handlers.
|
|
48
|
+
* @returns Serializable provider capability descriptions.
|
|
49
|
+
*/
|
|
50
|
+
describe(): {
|
|
51
|
+
id: string;
|
|
52
|
+
operations: (keyof OperationMap)[];
|
|
53
|
+
protocols: string[];
|
|
54
|
+
priorities: {
|
|
55
|
+
[k: string]: number;
|
|
56
|
+
};
|
|
57
|
+
}[];
|
|
58
|
+
/** Register all advertised providers from an existing HTTP deployment.
|
|
59
|
+
* @param host Existing deployment and authentication.
|
|
60
|
+
* @param signal Caller lifetime.
|
|
61
|
+
*/
|
|
62
|
+
registerHost(host: RemotePluginHostOptions, signal?: AbortSignal): Promise<void>;
|
|
34
63
|
/** Whether an active matching handler explicitly accepts a protocol.
|
|
35
64
|
* @param protocol Query prefix without punctuation.
|
|
36
65
|
* @param options Source targeting and block list.
|
|
37
66
|
*/
|
|
38
67
|
supportsProtocol(protocol: string, options?: ExecuteOptions): boolean;
|
|
68
|
+
/** Ordered owners of a custom query protocol.
|
|
69
|
+
* @param protocol Registered protocol prefix.
|
|
70
|
+
* @param options Targeting and block list.
|
|
71
|
+
* @returns Eligible provider identities, in dispatch order.
|
|
72
|
+
*/
|
|
73
|
+
protocolMatches(protocol: string, options?: ExecuteOptions): {
|
|
74
|
+
pluginId: string;
|
|
75
|
+
hostId: string | undefined;
|
|
76
|
+
score: number;
|
|
77
|
+
}[];
|
|
39
78
|
/** Register and initialize a source descriptor, reserving its ID synchronously.
|
|
40
79
|
* @param registration Descriptor produced by definePlugin.
|
|
41
80
|
*/
|
|
@@ -43,9 +82,10 @@ export declare class PluginRegistry {
|
|
|
43
82
|
private cleanup;
|
|
44
83
|
/** Abort new and active work, drain handlers, and release resources. Handlers must cooperate with cancellation.
|
|
45
84
|
* @param id Plugin ID.
|
|
85
|
+
* @param hostId Optional deployment identity when the provider exists on multiple hosts.
|
|
46
86
|
* @returns Whether the registration existed.
|
|
47
87
|
*/
|
|
48
|
-
unregister(id: string): Promise<boolean>;
|
|
88
|
+
unregister(id: string, hostId?: string): Promise<boolean>;
|
|
49
89
|
/** Initialize pending registrations before dispatch. */
|
|
50
90
|
ready(): Promise<void>;
|
|
51
91
|
/** Destroy all registrations, attempting every cleanup even when one fails. */
|
package/dist/plugins/registry.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
import { registerRemote, discoverRemote } from '../remote.js';
|
|
1
2
|
import { PluginError } from './plugin-error.js';
|
|
2
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
|
|
6
|
+
/** Context-owned capability registry. Removal aborts and drains calls before teardown. */
|
|
6
7
|
export class PluginRegistry {
|
|
7
8
|
player;
|
|
8
9
|
blocked;
|
|
9
10
|
hostId;
|
|
11
|
+
advertisements = new WeakMap();
|
|
10
12
|
entries = new Map();
|
|
11
13
|
handlers = [];
|
|
12
14
|
order = 0;
|
|
13
15
|
resultOwners = new WeakMap();
|
|
14
16
|
destroyed = false;
|
|
17
|
+
lifetime = new AbortController();
|
|
15
18
|
/** Create an independent host.
|
|
16
19
|
* @param player Structural source context.
|
|
17
20
|
* @param blocked Default disabled source IDs supplied by the owning Player.
|
|
@@ -23,6 +26,7 @@ export class PluginRegistry {
|
|
|
23
26
|
this.hostId = hostId;
|
|
24
27
|
}
|
|
25
28
|
definitions = new Map([
|
|
29
|
+
['lyrics.search', 'collect'],
|
|
26
30
|
['search.query.match', 'collect'],
|
|
27
31
|
['search.query.resolve', 'first'],
|
|
28
32
|
['track.stream', 'first'],
|
|
@@ -43,9 +47,10 @@ export class PluginRegistry {
|
|
|
43
47
|
}
|
|
44
48
|
/** Whether an ID is reserved or active.
|
|
45
49
|
* @param id Plugin ID.
|
|
50
|
+
* @param hostId Optional deployment constraint.
|
|
46
51
|
*/
|
|
47
|
-
has(id) {
|
|
48
|
-
return this.entries.
|
|
52
|
+
has(id, hostId) {
|
|
53
|
+
return [...this.entries.values()].some((entry) => entry.id === id && (!hostId || entry.registration.definition.remoteHost?.hostId === hostId));
|
|
49
54
|
}
|
|
50
55
|
/** Registration lifetime for transport-owned ephemeral state.
|
|
51
56
|
* @internal
|
|
@@ -55,18 +60,130 @@ export class PluginRegistry {
|
|
|
55
60
|
registrationSignal(id) {
|
|
56
61
|
return this.entries.get(id)?.controller.signal;
|
|
57
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
|
+
}
|
|
58
148
|
/** Whether an active matching handler explicitly accepts a protocol.
|
|
59
149
|
* @param protocol Query prefix without punctuation.
|
|
60
150
|
* @param options Source targeting and block list.
|
|
61
151
|
*/
|
|
62
152
|
supportsProtocol(protocol, options = {}) {
|
|
63
|
-
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') &&
|
|
64
154
|
handler.entry.active &&
|
|
65
155
|
(!options.pluginId || handler.entry.id === options.pluginId) &&
|
|
156
|
+
(options.hostId === undefined ||
|
|
157
|
+
(handler.entry.registration.definition.remoteHost?.hostId ?? null) === options.hostId) &&
|
|
66
158
|
!this.blocked().includes(handler.entry.id) &&
|
|
67
159
|
!options.blocked?.includes(handler.entry.id) &&
|
|
68
160
|
handler.protocols?.includes(protocol));
|
|
69
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
|
+
}
|
|
70
187
|
/** Register and initialize a source descriptor, reserving its ID synchronously.
|
|
71
188
|
* @param registration Descriptor produced by definePlugin.
|
|
72
189
|
*/
|
|
@@ -75,10 +192,14 @@ export class PluginRegistry {
|
|
|
75
192
|
if (this.destroyed) {
|
|
76
193
|
throw new Error('Plugin host has been destroyed.');
|
|
77
194
|
}
|
|
78
|
-
if (!definition ||
|
|
79
|
-
|
|
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.');
|
|
80
200
|
}
|
|
81
|
-
|
|
201
|
+
const key = definition.remoteHost ? `${definition.remoteHost.hostId}::${definition.id}` : definition.id;
|
|
202
|
+
if (this.entries.has(key)) {
|
|
82
203
|
throw new Error(`Duplicate plugin ID: ${definition.id}`);
|
|
83
204
|
}
|
|
84
205
|
const controller = new AbortController();
|
|
@@ -105,7 +226,9 @@ export class PluginRegistry {
|
|
|
105
226
|
entry,
|
|
106
227
|
operation,
|
|
107
228
|
fn,
|
|
229
|
+
priority: definition.priority,
|
|
108
230
|
...options,
|
|
231
|
+
...(definition.remoteHost && definition.priority !== undefined ? { priority: definition.priority } : {}),
|
|
109
232
|
order: this.order++,
|
|
110
233
|
};
|
|
111
234
|
this.handlers.push(handler);
|
|
@@ -118,10 +241,12 @@ export class PluginRegistry {
|
|
|
118
241
|
entry.cleanups.push(callback);
|
|
119
242
|
},
|
|
120
243
|
};
|
|
121
|
-
this.entries.set(
|
|
244
|
+
this.entries.set(key, entry);
|
|
122
245
|
entry.ready = Promise.resolve().then(async () => {
|
|
123
246
|
try {
|
|
124
|
-
|
|
247
|
+
if (definition.remoteHost)
|
|
248
|
+
await registerRemote(entry.context, definition.id, definition.remoteHost, this.advertisements.get(registration));
|
|
249
|
+
await definition.setup?.(entry.context);
|
|
125
250
|
entry.active = !controller.signal.aborted;
|
|
126
251
|
}
|
|
127
252
|
catch (cause) {
|
|
@@ -154,19 +279,23 @@ export class PluginRegistry {
|
|
|
154
279
|
errors.push(new PluginError(entry.id, 'cleanup', error));
|
|
155
280
|
}
|
|
156
281
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
282
|
+
for (const [key, value] of this.entries)
|
|
283
|
+
if (value === entry)
|
|
284
|
+
this.entries.delete(key);
|
|
160
285
|
if (errors.length) {
|
|
161
286
|
throw new AggregateError(errors, `Plugin ${entry.id} cleanup failed`);
|
|
162
287
|
}
|
|
163
288
|
}
|
|
164
289
|
/** Abort new and active work, drain handlers, and release resources. Handlers must cooperate with cancellation.
|
|
165
290
|
* @param id Plugin ID.
|
|
291
|
+
* @param hostId Optional deployment identity when the provider exists on multiple hosts.
|
|
166
292
|
* @returns Whether the registration existed.
|
|
167
293
|
*/
|
|
168
|
-
async unregister(id) {
|
|
169
|
-
const
|
|
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);
|
|
170
299
|
if (!entry) {
|
|
171
300
|
return false;
|
|
172
301
|
}
|
|
@@ -195,6 +324,7 @@ export class PluginRegistry {
|
|
|
195
324
|
/** Destroy all registrations, attempting every cleanup even when one fails. */
|
|
196
325
|
async destroy() {
|
|
197
326
|
this.destroyed = true;
|
|
327
|
+
this.lifetime.abort();
|
|
198
328
|
const results = await Promise.allSettled([...this.entries.keys()].map((id) => this.unregister(id)));
|
|
199
329
|
const errors = results.filter((result) => result.status === 'rejected').map((result) => result.reason);
|
|
200
330
|
if (errors.length) {
|
|
@@ -212,7 +342,11 @@ export class PluginRegistry {
|
|
|
212
342
|
}
|
|
213
343
|
async run(operation, input, options, handled) {
|
|
214
344
|
const track = input && typeof input === 'object' && 'track' in input ? input.track : undefined;
|
|
215
|
-
if (track?.sourceReference?.hostId &&
|
|
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)) {
|
|
216
350
|
throw new Error(`Source host ${track.sourceReference.hostId} is unavailable in this runtime; execute this Track on its owning source host`);
|
|
217
351
|
}
|
|
218
352
|
options.signal?.throwIfAborted();
|
|
@@ -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,3 +1,4 @@
|
|
|
1
|
+
import { SourceUnavailableError } from '../errors.js';
|
|
1
2
|
import { Readable } from 'node:stream';
|
|
2
3
|
import { PluginError } from './plugin-error.js';
|
|
3
4
|
/** Transport must defer this resolution until its media grant is redeemed. @internal */
|
|
@@ -26,7 +27,7 @@ export async function resolveTrackStream(track, options, run, hasTransforms) {
|
|
|
26
27
|
result = await run('track.bridge', { track, sourcePluginId: pluginId }, options, handled);
|
|
27
28
|
}
|
|
28
29
|
if (result === undefined) {
|
|
29
|
-
throw new
|
|
30
|
+
throw new SourceUnavailableError(pluginId ?? track.title ?? track.id);
|
|
30
31
|
}
|
|
31
32
|
let source = typeof result === 'string'
|
|
32
33
|
? /^https?:\/\//i.test(result)
|
|
@@ -34,7 +35,9 @@ export async function resolveTrackStream(track, options, run, hasTransforms) {
|
|
|
34
35
|
: { file: result }
|
|
35
36
|
: result instanceof Readable
|
|
36
37
|
? { stream: result }
|
|
37
|
-
: result
|
|
38
|
+
: result instanceof Uint8Array
|
|
39
|
+
? { buffer: result }
|
|
40
|
+
: result;
|
|
38
41
|
if (options.directUrlOnly) {
|
|
39
42
|
if (!('url' in source)) {
|
|
40
43
|
if ('stream' in source)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-resolver.js","sourceRoot":"","sources":["../../src/plugins/stream-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,wFAAwF;AACxF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;CAAG;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAY,EACZ,OAAgC,EAChC,GAAoB,EACpB,aAA0C;IAE1C,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC;IACjD,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,QAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,MAAmB,EAAE,EAAE;QAClD,KAAK,GAAG,EAAE,CAAC;QACX,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IAErF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,aAAa;YAAE,MAAM,IAAI,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-resolver.js","sourceRoot":"","sources":["../../src/plugins/stream-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -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,7 @@ 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
|
|
11
|
+
export type ProviderReference = {
|
|
10
12
|
/** Deployment identity, separate from the provider ID. Omit for ordinary embedded sources. */
|
|
11
13
|
hostId?: string;
|
|
12
14
|
/** Registered source plugin ID. */
|
|
@@ -18,7 +20,7 @@ export type SourceReference = {
|
|
|
18
20
|
export type SourceStream = (MediaSource & {
|
|
19
21
|
/** Trustworthy absolute URL/source expiration supplied by the provider, in Unix milliseconds. Omit when unknown. */
|
|
20
22
|
expiresAtMs?: number;
|
|
21
|
-
}) | string | Readable;
|
|
23
|
+
}) | string | Uint8Array | Readable;
|
|
22
24
|
/** Operation dispatch behavior. */
|
|
23
25
|
export type DispatchPolicy = 'first' | 'collect' | 'pipe' | 'broadcast';
|
|
24
26
|
/** Declaration merged operation contract. */
|
|
@@ -34,8 +36,10 @@ export interface Operation<Input, Output, Policy extends DispatchPolicy> {
|
|
|
34
36
|
export interface SourceQuery {
|
|
35
37
|
/** Search text or source location. */
|
|
36
38
|
query: string;
|
|
39
|
+
/** Generic hint when searchEngine does not select a registered provider. */
|
|
40
|
+
providerHint?: string;
|
|
37
41
|
/** Portable search hints and local cancellation. */
|
|
38
|
-
options?: SearchOptions
|
|
42
|
+
options?: Omit<SearchOptions, 'searchEngine' | 'hostId' | 'signal' | 'resolveCustomProtocols'>;
|
|
39
43
|
/** Explicit protocol prefix when present. */
|
|
40
44
|
protocol?: string;
|
|
41
45
|
}
|
|
@@ -43,6 +47,8 @@ export interface SourceQuery {
|
|
|
43
47
|
export interface SourceMatch {
|
|
44
48
|
/** Provider ID; supplied automatically by the host. */
|
|
45
49
|
pluginId?: string;
|
|
50
|
+
/** Deployment selected by matching; absent for embedded handlers. */
|
|
51
|
+
hostId?: string;
|
|
46
52
|
/** Confidence score; higher wins within a priority tier. */
|
|
47
53
|
score: number;
|
|
48
54
|
}
|
|
@@ -67,7 +73,9 @@ export interface SourceStreamTransform extends SourceTrackRequest {
|
|
|
67
73
|
stream: Readable;
|
|
68
74
|
}
|
|
69
75
|
/** Extensible source operation contracts. Augmented operations also need host definitions. */
|
|
70
|
-
export interface
|
|
76
|
+
export interface OperationMap {
|
|
77
|
+
/** Optional lyrics lookup, independent of all source operations. */
|
|
78
|
+
'lyrics.search': Operation<LyricsRequest, LyricsResult[] | null, 'collect'>;
|
|
71
79
|
/** Collect scored providers. */
|
|
72
80
|
'search.query.match': Operation<SourceQuery, SourceMatch | null, 'collect'>;
|
|
73
81
|
/** Resolve metadata with the selected provider. */
|
|
@@ -84,13 +92,13 @@ export interface SourceOperationMap {
|
|
|
84
92
|
'track.stream.resolved': Operation<SourceTrackRequest, void, 'broadcast'>;
|
|
85
93
|
}
|
|
86
94
|
/** Names available to source plugins. */
|
|
87
|
-
export type OperationName = keyof
|
|
95
|
+
export type OperationName = keyof OperationMap;
|
|
88
96
|
/** Typed input selected by operation name. */
|
|
89
|
-
export type OperationInput<K extends OperationName> =
|
|
97
|
+
export type OperationInput<K extends OperationName> = OperationMap[K]['input'];
|
|
90
98
|
/** Typed handler result selected by operation name. */
|
|
91
|
-
export type OperationOutput<K extends OperationName> =
|
|
99
|
+
export type OperationOutput<K extends OperationName> = OperationMap[K]['output'];
|
|
92
100
|
/** Dispatch result selected by the declared policy. */
|
|
93
|
-
export type OperationResult<K extends OperationName> =
|
|
101
|
+
export type OperationResult<K extends OperationName> = OperationMap[K]['policy'] extends 'collect' ? OperationOutput<K>[] : OperationMap[K]['policy'] extends 'broadcast' ? void : OperationOutput<K> | undefined;
|
|
94
102
|
/** Per-invocation cancellation supplied to all handlers. */
|
|
95
103
|
export interface OperationContext {
|
|
96
104
|
/** Caller cancellation combined with registration removal. */
|
|
@@ -110,7 +118,7 @@ export interface HandlerOptions {
|
|
|
110
118
|
protocols?: readonly string[];
|
|
111
119
|
}
|
|
112
120
|
/** Source setup context shared by embedded and standalone execution. */
|
|
113
|
-
export interface
|
|
121
|
+
export interface PluginContext<Options> {
|
|
114
122
|
/** Options belonging to this registration. */
|
|
115
123
|
readonly options: Options;
|
|
116
124
|
/** Registration lifetime signal. */
|
|
@@ -130,31 +138,26 @@ export interface SourcePluginContext<Options> {
|
|
|
130
138
|
onCleanup(callback: () => void | Promise<void>): void;
|
|
131
139
|
}
|
|
132
140
|
/** Source declaration reusable across Player instances. */
|
|
133
|
-
export interface
|
|
141
|
+
export interface PluginDefinition<Options> {
|
|
134
142
|
/** Unique registration identifier. */
|
|
135
143
|
id: string;
|
|
136
|
-
/**
|
|
137
|
-
|
|
144
|
+
/** Existing HTTP deployment providing this provider's metadata capabilities. */
|
|
145
|
+
remoteHost?: RemotePluginHostOptions;
|
|
146
|
+
/** Default operation priority. */
|
|
147
|
+
priority?: number;
|
|
138
148
|
/** Initialize owned resources and handlers.
|
|
139
149
|
* @param ctx Registration context.
|
|
140
150
|
*/
|
|
141
|
-
setup(ctx:
|
|
151
|
+
setup?(ctx: PluginContext<Options>): void | Promise<void>;
|
|
142
152
|
/** Optional teardown after calls have drained.
|
|
143
153
|
* @param ctx Registration context.
|
|
144
154
|
*/
|
|
145
|
-
destroy?(ctx:
|
|
146
|
-
}
|
|
147
|
-
/** Reserved runtime kind; no runtime capabilities are implemented. */
|
|
148
|
-
export interface RuntimePluginDefinition {
|
|
149
|
-
/** Unique registration identifier. */
|
|
150
|
-
id: string;
|
|
151
|
-
/** Reserved discriminant, rejected by the source host. */
|
|
152
|
-
kind: 'runtime';
|
|
155
|
+
destroy?(ctx: PluginContext<Options>): void | Promise<void>;
|
|
153
156
|
}
|
|
154
157
|
/** Registration descriptor produced by a factory. */
|
|
155
158
|
export interface PluginRegistration<Options = unknown> {
|
|
156
159
|
/** Reusable source declaration. */
|
|
157
|
-
definition:
|
|
160
|
+
definition: PluginDefinition<Options>;
|
|
158
161
|
/** Registration-local options. */
|
|
159
162
|
options: Options;
|
|
160
163
|
}
|
|
@@ -167,4 +170,4 @@ export type PluginFactory<Options> = {} extends Options ? (options?: Options) =>
|
|
|
167
170
|
* @param definition Source lifecycle and identity.
|
|
168
171
|
* @returns A typed registration factory. Each call supplies independent options.
|
|
169
172
|
*/
|
|
170
|
-
export declare function definePlugin<Options = Record<string, never>>(definition:
|
|
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":"
|
|
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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SearchOptions } from './types.js';
|
|
1
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';
|
|
@@ -26,3 +27,37 @@ export declare function deserializeSourceResult(result: PortableSourceResult): S
|
|
|
26
27
|
* @returns Portable metadata with an optional opaque state token. Persistence should use serialize().
|
|
27
28
|
*/
|
|
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
|
+
};
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAwB,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAA2B,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAmB/C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAA4B;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QACtE,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAErF,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAEpG,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;QAE3B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,YAAY,QAAQ,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAEnH,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAEzB,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpG,CAAC"}
|