@eluvio/elv-client-js 4.2.4 → 4.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/ElvClient-min.js +1 -1
  2. package/dist/ElvClient-node-min.js +1 -1
  3. package/dist/ElvFrameClient-min.js +1 -1
  4. package/dist/ElvPermissionsClient-min.js +1 -1
  5. package/dist/ElvWalletClient-min.js +1 -1
  6. package/dist/ElvWalletClient-node-min.js +1 -1
  7. package/dist/src/AuthorizationClient.js +710 -709
  8. package/dist/src/ContentObjectAudit.js +56 -56
  9. package/dist/src/ContentObjectVerification.js +281 -0
  10. package/dist/src/Crypto.js +85 -85
  11. package/dist/src/ElvClient.js +499 -529
  12. package/dist/src/ElvWallet.js +28 -30
  13. package/dist/src/EthClient.js +311 -311
  14. package/dist/src/FrameClient.js +64 -63
  15. package/dist/src/HttpClient.js +60 -60
  16. package/dist/src/Id.js +2 -1
  17. package/dist/src/PermissionsClient.js +487 -499
  18. package/dist/src/RemoteSigner.js +83 -82
  19. package/dist/src/UserProfileClient.js +374 -392
  20. package/dist/src/Utils.js +66 -69
  21. package/dist/src/Validation.js +10 -10
  22. package/dist/src/client/ABRPublishing.js +238 -238
  23. package/dist/src/client/AccessGroups.js +474 -477
  24. package/dist/src/client/ContentAccess.js +1709 -1705
  25. package/dist/src/client/ContentManagement.js +871 -871
  26. package/dist/src/client/Contracts.js +578 -575
  27. package/dist/src/client/Files.js +684 -700
  28. package/dist/src/client/LiveConf.js +3 -1
  29. package/dist/src/client/LiveStream.js +693 -694
  30. package/dist/src/client/NFT.js +14 -14
  31. package/dist/src/client/NTP.js +84 -84
  32. package/dist/src/client/Shares.js +60 -53
  33. package/dist/src/walletClient/ClientMethods.js +951 -977
  34. package/dist/src/walletClient/Notifications.js +14 -14
  35. package/dist/src/walletClient/Profile.js +66 -66
  36. package/dist/src/walletClient/Utils.js +15 -15
  37. package/dist/src/walletClient/index.js +562 -572
  38. package/package.json +1 -1
  39. package/src/Utils.js +1 -4
  40. package/src/client/ABRPublishing.js +1 -1
  41. package/src/client/LiveStream.js +77 -50
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eluvio/elv-client-js",
3
- "version": "4.2.4",
3
+ "version": "4.2.6",
4
4
  "description": "Javascript client for the Eluvio Content Fabric",
5
5
  "main": "src/index.js",
6
6
  "author": "Kevin Talmadge",
package/src/Utils.js CHANGED
@@ -777,10 +777,7 @@ const Utils = {
777
777
  /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);
778
778
 
779
779
  const defaultSettings = {
780
- "maxBufferHole": 2.2,
781
- "nudgeOffset": 0.2,
782
- "nudgeMaxRetry": 12,
783
- "highBufferWatchdogPeriod": 1
780
+ "backBufferLength": 90
784
781
  };
785
782
 
786
783
  if(!isSafari && ["ull", "ultraLowLatency"].includes(profile)) {
@@ -323,7 +323,7 @@ exports.CreateABRMezzanine = async function({
323
323
  // determine master object id if a master write token was passed in
324
324
  ValidateWriteToken(masterWriteToken);
325
325
  masterObjectId = this.utils.DecodeWriteToken(masterWriteToken).objectId;
326
- masterLibId = await client.ContentObjectLibraryId({masterObjectId});
326
+ masterLibId = await client.ContentObjectLibraryId({objectId: masterObjectId});
327
327
  }
328
328
 
329
329
  // if pre-existing mez object id passed in, validate
@@ -69,6 +69,7 @@ const CueInfo = async ({eventId, status}) => {
69
69
  * @param {Object} client - The client object
70
70
  * @param {string} libraryId - ID of the library for the new live stream object
71
71
  * @param {string} objectId - ID of the new live stream object
72
+ * @param {string=} writeToken - Write token of the draft
72
73
  * @param {string=} typeAbrMaster - Content type hash
73
74
  * @param {string=} typeLiveStream - Content type hash
74
75
  * @param {string} streamUrl - Live source URL
@@ -93,6 +94,7 @@ const StreamGenerateOffering = async({
93
94
  client,
94
95
  libraryId,
95
96
  objectId,
97
+ writeToken,
96
98
  typeAbrMaster,
97
99
  typeLiveStream,
98
100
  streamUrl,
@@ -109,7 +111,8 @@ const StreamGenerateOffering = async({
109
111
  vWidth,
110
112
  vDisplayAspectRatio,
111
113
  vFrameRate,
112
- vTimeBase
114
+ vTimeBase,
115
+ finalize=true
113
116
  }) => {
114
117
  // compute duration_ts
115
118
  const DUMMY_DURATION = 1001; // should result in integer duration_ts values for both audio and video
@@ -232,27 +235,29 @@ const StreamGenerateOffering = async({
232
235
  // construct /production_master
233
236
  const production_master = {sources, variants};
234
237
 
238
+ const existingWriteToken = !!writeToken;
239
+
235
240
  // get existing metadata
236
241
  console.log("Retrieving current metadata...");
237
242
  let metadata = await client.ContentObjectMetadata({
238
243
  libraryId,
239
- objectId
244
+ objectId,
245
+ writeToken
240
246
  });
241
247
 
242
248
  // add /production_master to metadata
243
249
  metadata.production_master = production_master;
244
250
 
245
251
  // write back to object
246
- console.log("Getting write token...");
247
- let editResponse = await client.EditContentObject({
248
- libraryId,
249
- objectId,
250
- options: {
251
- type: typeAbrMaster
252
- }
253
- });
254
- let writeToken = editResponse.write_token;
255
- console.log(`New write token: ${writeToken}`);
252
+ if(!writeToken) {
253
+ ({writeToken} = await client.EditContentObject({
254
+ libraryId,
255
+ objectId,
256
+ options: {
257
+ type: typeAbrMaster
258
+ }
259
+ }));
260
+ }
256
261
 
257
262
  console.log("Writing back metadata with /production_master added...");
258
263
  await client.ReplaceMetadata({
@@ -262,20 +267,23 @@ const StreamGenerateOffering = async({
262
267
  writeToken
263
268
  });
264
269
 
265
- console.log("Finalizing...");
266
- let finalizeResponse = await client.FinalizeContentObject({
267
- libraryId,
268
- objectId,
269
- writeToken
270
- });
271
- let masterVersionHash = finalizeResponse.hash;
272
- console.log(`Finalized, new version hash: ${masterVersionHash}`);
270
+ let finalizeResponse, masterVersionHash;
271
+ if(!existingWriteToken) {
272
+ finalizeResponse = await client.FinalizeContentObject({
273
+ libraryId,
274
+ objectId,
275
+ writeToken
276
+ });
277
+ masterVersionHash = finalizeResponse.hash;
278
+ }
273
279
 
274
280
  // Generate offering
275
281
  const createResponse = await client.CreateABRMezzanine({
276
282
  libraryId,
277
283
  objectId,
278
- masterVersionHash,
284
+ masterVersionHash: existingWriteToken ? undefined : masterVersionHash,
285
+ masterWriteToken: existingWriteToken ? writeToken : undefined,
286
+ writeToken: existingWriteToken ? writeToken : undefined,
279
287
  variant: "default",
280
288
  offeringKey: "default",
281
289
  abrProfile
@@ -292,13 +300,14 @@ const StreamGenerateOffering = async({
292
300
  }
293
301
 
294
302
  let versionHash = createResponse.hash;
295
- console.log(`New version hash: ${versionHash}`);
296
303
 
297
304
  // get new metadata
298
305
  console.log("Retrieving revised metadata with offering...");
299
306
  metadata = await client.ContentObjectMetadata({
300
307
  libraryId,
301
- versionHash
308
+ objectId,
309
+ writeToken: existingWriteToken ? writeToken : undefined,
310
+ versionHash: existingWriteToken ? undefined : versionHash
302
311
  });
303
312
 
304
313
  console.log("Moving /abr_mezzanine/offerings to /offerings and removing /abr_mezzanine...");
@@ -308,18 +317,6 @@ const StreamGenerateOffering = async({
308
317
  // add items to media_struct needed to use options.json handler
309
318
  metadata.offerings.default.media_struct.duration_rat = `${DUMMY_DURATION}`;
310
319
 
311
- // write back to object
312
- console.log("Getting write token...");
313
- editResponse = await client.EditContentObject({
314
- libraryId,
315
- objectId,
316
- options: {
317
- type: typeLiveStream
318
- }
319
- });
320
- writeToken = editResponse.write_token;
321
- console.log(`New write token: ${writeToken}`);
322
-
323
320
  console.log("Writing back metadata with /offerings...");
324
321
  await client.ReplaceMetadata({
325
322
  libraryId,
@@ -328,17 +325,19 @@ const StreamGenerateOffering = async({
328
325
  writeToken
329
326
  });
330
327
 
331
- console.log("Finalizing...");
332
- finalizeResponse = await client.FinalizeContentObject({
333
- libraryId,
334
- objectId,
335
- writeToken
336
- });
337
-
338
- const finalHash = finalizeResponse.hash;
339
- console.log(`Finalized, new version hash: ${finalHash}`);
328
+ if(finalize) {
329
+ console.log("Finalizing...");
330
+ finalizeResponse = await client.FinalizeContentObject({
331
+ libraryId,
332
+ objectId,
333
+ writeToken,
334
+ commitMessage: "Update offering"
335
+ });
340
336
 
341
- return finalHash;
337
+ const finalHash = finalizeResponse.hash;
338
+ console.log(`Finalized, new version hash: ${finalHash}`);
339
+ return finalHash;
340
+ }
342
341
  };
343
342
 
344
343
  /**
@@ -947,10 +946,18 @@ exports.StreamStopSession = async function({name}) {
947
946
  * @param {string=} format - Specify the list of playout formats and DRM to support,
948
947
  comma-separated (hls-clear, hls-aes128, hls-sample-aes,
949
948
  hls-fairplay)
949
+ * @param {string=} writeToken - Write token of the draft
950
+ * @param {boolean=} finalize - If enabled, target object will be finalized after configuration
950
951
  *
951
952
  * @return {Promise<Object>} - The name, object ID, and state of the stream
952
953
  */
953
- exports.StreamInitialize = async function({name, drm=false, format}) {
954
+ exports.StreamInitialize = async function({
955
+ name,
956
+ drm=false,
957
+ format,
958
+ writeToken,
959
+ finalize=true
960
+ }) {
954
961
  let typeAbrMaster;
955
962
  let typeLiveStream;
956
963
 
@@ -979,7 +986,15 @@ exports.StreamInitialize = async function({name, drm=false, format}) {
979
986
  return {};
980
987
  }
981
988
 
982
- const res = await this.StreamSetOfferingAndDRM({name, typeAbrMaster, typeLiveStream, drm, format});
989
+ const res = await this.StreamSetOfferingAndDRM({
990
+ name,
991
+ typeAbrMaster,
992
+ typeLiveStream,
993
+ drm,
994
+ format,
995
+ writeToken,
996
+ finalize
997
+ });
983
998
 
984
999
  return res;
985
1000
  };
@@ -996,10 +1011,19 @@ exports.StreamInitialize = async function({name, drm=false, format}) {
996
1011
  * @param {string=} format - A list of playout formats and DRM to support, comma-separated
997
1012
  * (hls-clear, hls-aes128, hls-sample-aes, hls-fairplay). If specified,
998
1013
  * this will take precedence over the drm value
1014
+ * @param {string=} writeToken - Write token of the draft
999
1015
  *
1000
1016
  * @return {Promise<Object>} - The name, object ID, and state of the stream
1001
1017
  */
1002
- exports.StreamSetOfferingAndDRM = async function({name, typeAbrMaster, typeLiveStream, drm=false, format}) {
1018
+ exports.StreamSetOfferingAndDRM = async function({
1019
+ name,
1020
+ typeAbrMaster,
1021
+ typeLiveStream,
1022
+ drm=false,
1023
+ format,
1024
+ writeToken,
1025
+ finalize=true
1026
+ }) {
1003
1027
  let status = await this.StreamStatus({name});
1004
1028
  if(status.state != "uninitialized" && status.state != "inactive" && status.state != "stopped") {
1005
1029
  return {
@@ -1088,7 +1112,8 @@ exports.StreamSetOfferingAndDRM = async function({name, typeAbrMaster, typeLiveS
1088
1112
  try {
1089
1113
  let mainMeta = await this.ContentObjectMetadata({
1090
1114
  libraryId,
1091
- objectId
1115
+ objectId,
1116
+ writeToken
1092
1117
  });
1093
1118
 
1094
1119
  let fabURI = mainMeta.live_recording.fabric_config.ingress_node_api;
@@ -1122,7 +1147,9 @@ exports.StreamSetOfferingAndDRM = async function({name, typeAbrMaster, typeLiveS
1122
1147
  vWidth,
1123
1148
  vDisplayAspectRatio,
1124
1149
  vFrameRate,
1125
- vTimeBase
1150
+ vTimeBase,
1151
+ writeToken,
1152
+ finalize
1126
1153
  });
1127
1154
 
1128
1155
  console.log("Finished generating offering");