unified-video-framework 1.4.394 → 1.4.396

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.4.394",
3
+ "version": "1.4.396",
4
4
  "description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -24,5 +24,17 @@ export declare class DRMHelper {
24
24
  userAgent: string;
25
25
  };
26
26
  static formatLicenseHeaders(baseHeaders?: Record<string, string>, token?: string): Record<string, string>;
27
+ static createConfig(options: {
28
+ licenseUrl: string;
29
+ certificateUrl?: string;
30
+ token?: string;
31
+ headers?: Record<string, string>;
32
+ drmType?: DRMType;
33
+ }): {
34
+ widevine?: DRMConfiguration;
35
+ fairplay?: DRMConfiguration;
36
+ playready?: DRMConfiguration;
37
+ };
38
+ static createSimpleConfig(licenseUrl: string, token?: string, drmType?: DRMType): any;
27
39
  }
28
40
  //# sourceMappingURL=DRMHelper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DRMHelper.d.ts","sourceRoot":"","sources":["../../src/drm/DRMHelper.ts"],"names":[],"mappings":"AAIA,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,SAAS;WAIP,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;WAoDxC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;WA0BrC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/D,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAgBnD,MAAM,CAAC,0BAA0B,CAC/B,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAA0C,GACtD,2BAA2B,EAAE;IAehC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAiB3D,MAAM,CAAC,iBAAiB,IAAI;QAC1B,cAAc,EAAE,OAAO,CAAC;QACxB,sBAAsB,EAAE,OAAO,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;KACnB;IAWD,MAAM,CAAC,oBAAoB,CACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAY1B"}
1
+ {"version":3,"file":"DRMHelper.d.ts","sourceRoot":"","sources":["../../src/drm/DRMHelper.ts"],"names":[],"mappings":"AAIA,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,SAAS;WAIP,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;WAoDxC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;WA0BrC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/D,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAgBnD,MAAM,CAAC,0BAA0B,CAC/B,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAA0C,GACtD,2BAA2B,EAAE;IAehC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAiB3D,MAAM,CAAC,iBAAiB,IAAI;QAC1B,cAAc,EAAE,OAAO,CAAC;QACxB,sBAAsB,EAAE,OAAO,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;KACnB;IAWD,MAAM,CAAC,oBAAoB,CACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAiBzB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG;QACF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC9B;IAoED,MAAM,CAAC,kBAAkB,CACvB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,OAA0B,GAClC,GAAG;CAwCP"}
@@ -119,5 +119,92 @@ export class DRMHelper {
119
119
  }
120
120
  return headers;
121
121
  }
122
+ static createConfig(options) {
123
+ const { licenseUrl, certificateUrl, token, headers = {}, drmType } = options;
124
+ if (!licenseUrl) {
125
+ throw new Error('DRMHelper.createConfig: licenseUrl is required');
126
+ }
127
+ const finalHeaders = this.formatLicenseHeaders(headers, token);
128
+ if (drmType && drmType !== DRMType.NONE) {
129
+ const config = {
130
+ type: drmType,
131
+ licenseUrl,
132
+ certificateUrl,
133
+ headers: finalHeaders,
134
+ };
135
+ switch (drmType) {
136
+ case DRMType.WIDEVINE:
137
+ return { widevine: config };
138
+ case DRMType.FAIRPLAY:
139
+ return { fairplay: config };
140
+ case DRMType.PLAYREADY:
141
+ return { playready: config };
142
+ }
143
+ }
144
+ const hasWidevineInUrl = licenseUrl.includes('/widevine');
145
+ const hasFairplayInUrl = licenseUrl.includes('/fairplay');
146
+ const hasPlayreadyInUrl = licenseUrl.includes('/playready');
147
+ return {
148
+ widevine: {
149
+ type: DRMType.WIDEVINE,
150
+ licenseUrl: hasWidevineInUrl
151
+ ? licenseUrl
152
+ : licenseUrl.replace(/\/(fairplay|playready)/, '/widevine'),
153
+ certificateUrl,
154
+ headers: finalHeaders,
155
+ },
156
+ fairplay: {
157
+ type: DRMType.FAIRPLAY,
158
+ licenseUrl: hasFairplayInUrl
159
+ ? licenseUrl
160
+ : licenseUrl.replace(/\/(widevine|playready)/, '/fairplay'),
161
+ certificateUrl: certificateUrl || (licenseUrl.includes('/license')
162
+ ? licenseUrl.replace(/\/license$/, '/cert')
163
+ : undefined),
164
+ headers: finalHeaders,
165
+ },
166
+ playready: {
167
+ type: DRMType.PLAYREADY,
168
+ licenseUrl: hasPlayreadyInUrl
169
+ ? licenseUrl
170
+ : licenseUrl.replace(/\/(widevine|fairplay)/, '/playready'),
171
+ headers: finalHeaders,
172
+ },
173
+ };
174
+ }
175
+ static createSimpleConfig(licenseUrl, token, drmType = DRMType.WIDEVINE) {
176
+ if (!licenseUrl) {
177
+ throw new Error('DRMHelper.createSimpleConfig: licenseUrl is required');
178
+ }
179
+ const headers = token ? { 'Authorization': `Bearer ${token}` } : {};
180
+ if (drmType === DRMType.WIDEVINE) {
181
+ return {
182
+ widevine: {
183
+ licenseUrl,
184
+ headers,
185
+ },
186
+ };
187
+ }
188
+ if (drmType === DRMType.FAIRPLAY) {
189
+ return {
190
+ fairplay: {
191
+ licenseUrl,
192
+ certificateUrl: licenseUrl.includes('/license')
193
+ ? licenseUrl.replace(/\/license$/, '/cert')
194
+ : undefined,
195
+ headers,
196
+ },
197
+ };
198
+ }
199
+ if (drmType === DRMType.PLAYREADY) {
200
+ return {
201
+ playready: {
202
+ licenseUrl,
203
+ headers,
204
+ },
205
+ };
206
+ }
207
+ return {};
208
+ }
122
209
  }
123
210
  //# sourceMappingURL=DRMHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DRMHelper.js","sourceRoot":"","sources":["../../src/drm/DRMHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DRMHelper.js","sourceRoot":"","sources":["../../src/drm/DRMHelper.ts"],"names":[],"mappings":"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"}
@@ -192,4 +192,131 @@ export class DRMHelper {
192
192
 
193
193
  return headers;
194
194
  }
195
+
196
+ /**
197
+ * Create a DRM configuration object for SecureVideoPlayer/WebPlayerView
198
+ * This is a helper to quickly create DRM configs
199
+ */
200
+ static createConfig(options: {
201
+ licenseUrl: string;
202
+ certificateUrl?: string;
203
+ token?: string;
204
+ headers?: Record<string, string>;
205
+ drmType?: DRMType;
206
+ }): {
207
+ widevine?: DRMConfiguration;
208
+ fairplay?: DRMConfiguration;
209
+ playready?: DRMConfiguration;
210
+ } {
211
+ const { licenseUrl, certificateUrl, token, headers = {}, drmType } = options;
212
+
213
+ // Validate required parameter
214
+ if (!licenseUrl) {
215
+ throw new Error('DRMHelper.createConfig: licenseUrl is required');
216
+ }
217
+
218
+ // Format headers with token
219
+ const finalHeaders = this.formatLicenseHeaders(headers, token);
220
+
221
+ // If specific DRM type is requested
222
+ if (drmType && drmType !== DRMType.NONE) {
223
+ const config: DRMConfiguration = {
224
+ type: drmType,
225
+ licenseUrl,
226
+ certificateUrl,
227
+ headers: finalHeaders,
228
+ };
229
+
230
+ switch (drmType) {
231
+ case DRMType.WIDEVINE:
232
+ return { widevine: config };
233
+ case DRMType.FAIRPLAY:
234
+ return { fairplay: config };
235
+ case DRMType.PLAYREADY:
236
+ return { playready: config };
237
+ }
238
+ }
239
+
240
+ // Otherwise, create multi-DRM config (all platforms)
241
+ // Try to intelligently generate URLs for different DRM systems
242
+ const hasWidevineInUrl = licenseUrl.includes('/widevine');
243
+ const hasFairplayInUrl = licenseUrl.includes('/fairplay');
244
+ const hasPlayreadyInUrl = licenseUrl.includes('/playready');
245
+
246
+ return {
247
+ widevine: {
248
+ type: DRMType.WIDEVINE,
249
+ licenseUrl: hasWidevineInUrl
250
+ ? licenseUrl
251
+ : licenseUrl.replace(/\/(fairplay|playready)/, '/widevine'),
252
+ certificateUrl,
253
+ headers: finalHeaders,
254
+ },
255
+ fairplay: {
256
+ type: DRMType.FAIRPLAY,
257
+ licenseUrl: hasFairplayInUrl
258
+ ? licenseUrl
259
+ : licenseUrl.replace(/\/(widevine|playready)/, '/fairplay'),
260
+ certificateUrl: certificateUrl || (licenseUrl.includes('/license')
261
+ ? licenseUrl.replace(/\/license$/, '/cert')
262
+ : undefined),
263
+ headers: finalHeaders,
264
+ },
265
+ playready: {
266
+ type: DRMType.PLAYREADY,
267
+ licenseUrl: hasPlayreadyInUrl
268
+ ? licenseUrl
269
+ : licenseUrl.replace(/\/(widevine|fairplay)/, '/playready'),
270
+ headers: finalHeaders,
271
+ },
272
+ };
273
+ }
274
+
275
+ /**
276
+ * Create a simple single-DRM configuration (most common use case)
277
+ */
278
+ static createSimpleConfig(
279
+ licenseUrl: string,
280
+ token?: string,
281
+ drmType: DRMType = DRMType.WIDEVINE
282
+ ): any {
283
+ // Validate required parameter
284
+ if (!licenseUrl) {
285
+ throw new Error('DRMHelper.createSimpleConfig: licenseUrl is required');
286
+ }
287
+
288
+ const headers = token ? { 'Authorization': `Bearer ${token}` } : {};
289
+
290
+ if (drmType === DRMType.WIDEVINE) {
291
+ return {
292
+ widevine: {
293
+ licenseUrl,
294
+ headers,
295
+ },
296
+ };
297
+ }
298
+
299
+ if (drmType === DRMType.FAIRPLAY) {
300
+ return {
301
+ fairplay: {
302
+ licenseUrl,
303
+ certificateUrl: licenseUrl.includes('/license')
304
+ ? licenseUrl.replace(/\/license$/, '/cert')
305
+ : undefined,
306
+ headers,
307
+ },
308
+ };
309
+ }
310
+
311
+ if (drmType === DRMType.PLAYREADY) {
312
+ return {
313
+ playready: {
314
+ licenseUrl,
315
+ headers,
316
+ },
317
+ };
318
+ }
319
+
320
+ return {};
321
+ }
195
322
  }