@eluvio/elv-client-js 4.2.10 → 4.2.12

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 (40) 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 +723 -710
  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 +500 -530
  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 +163 -114
  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 +6 -1
  29. package/dist/src/client/LiveStream.js +686 -722
  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 +581 -579
  38. package/package.json +1 -1
  39. package/src/client/LiveConf.js +5 -1
  40. package/src/client/LiveStream.js +9 -38
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eluvio/elv-client-js",
3
- "version": "4.2.10",
3
+ "version": "4.2.12",
4
4
  "description": "Javascript client for the Eluvio Content Fabric",
5
5
  "main": "src/index.js",
6
6
  "author": "Kevin Talmadge",
@@ -508,7 +508,7 @@ class LiveConf {
508
508
  let globalAudioBitrate = 0;
509
509
  let nAudio = 0;
510
510
 
511
- for(let i = 0; i < Object.keys(audioStreams).length; i ++ ) {
511
+ for(let i = 0; i < Object.keys(audioStreams).length; i++) {
512
512
  let audioLadderSpec = {};
513
513
  const audioIndex = Object.keys(audioStreams)[i];
514
514
  const audio = audioStreams[audioIndex];
@@ -533,6 +533,10 @@ class LiveConf {
533
533
  audioLadderSpec.stream_label = audio.playoutLabel ? audio.playoutLabel : null;
534
534
  audioLadderSpec.media_type = 2;
535
535
 
536
+ if(Object.keys(audioStreams).length === 1) {
537
+ audioLadderSpec.default = true;
538
+ }
539
+
536
540
  conf.live_recording.recording_config.recording_params.ladder_specs.push(audioLadderSpec);
537
541
  if(audio.recordingBitrate > globalAudioBitrate) {
538
542
  globalAudioBitrate = audio.recordingBitrate;
@@ -346,7 +346,6 @@ const StreamGenerateOffering = async({
346
346
  * @methodGroup Live Stream
347
347
  * @namedParams
348
348
  * @param {string} name - Object ID or name of the live stream object
349
- * @param {boolean=} stopLro - If specified, will stop LRO
350
349
  * @param {boolean=} showParams - If specified, will return recording_params with status
351
350
  * States:
352
351
  * unconfigured - no live_recording_config
@@ -359,7 +358,7 @@ const StreamGenerateOffering = async({
359
358
  *
360
359
  * @return {Promise<Object>} - The status response for the object, as well as logs, warnings and errors from the master initialization
361
360
  */
362
- exports.StreamStatus = async function({name, stopLro=false, showParams=false}) {
361
+ exports.StreamStatus = async function({name, showParams=false}) {
363
362
  let objectId = name;
364
363
  let status = {name: name};
365
364
 
@@ -418,13 +417,11 @@ exports.StreamStatus = async function({name, stopLro=false, showParams=false}) {
418
417
  status.stream_id = edgeWriteToken; // By convention the stream ID is its write token
419
418
  let edgeMeta;
420
419
  try {
421
- edgeMeta = await this.ContentObjectMetadata({
420
+ edgeMeta = await this.CallBitcodeMethod({
422
421
  libraryId: libraryId,
423
422
  objectId: objectId,
424
- writeToken: edgeWriteToken,
425
- select: [
426
- "live_recording"
427
- ]
423
+ method: "/live/meta",
424
+ constant: true
428
425
  });
429
426
  } catch(error) {
430
427
  if(error.message && error.message.includes("ERR_TOO_MANY_REDIRECTS")) {
@@ -444,6 +441,7 @@ exports.StreamStatus = async function({name, stopLro=false, showParams=false}) {
444
441
  if(edgeMeta.live_recording === undefined ||
445
442
  edgeMeta.live_recording.recordings === undefined ||
446
443
  edgeMeta.live_recording.recordings.recording_sequence === undefined) {
444
+ // StreamStartOrStopOrReset relies on the state being 'stopped' before launching the LRO - and so this state cannot be changed to 'inactive'
447
445
  status.state = "stopped";
448
446
  return status;
449
447
  }
@@ -482,7 +480,7 @@ exports.StreamStatus = async function({name, stopLro=false, showParams=false}) {
482
480
  libraryId: libraryId,
483
481
  objectId: objectId,
484
482
  writeToken: edgeWriteToken,
485
- call: "live/status/" + tlro
483
+ call: "live/status"
486
484
  });
487
485
 
488
486
  status.insertions = [];
@@ -522,45 +520,18 @@ exports.StreamStatus = async function({name, stopLro=false, showParams=false}) {
522
520
  return status;
523
521
  }
524
522
 
525
- const segDurationMeta = edgeMeta.live_recording.recording_config.recording_params.xc_params.seg_duration;
526
-
527
523
  // Convert LRO 'state' to desired 'state'
528
524
  if(state === "running" && videoLastFinalizationTimeEpochSec <= 0) {
529
- state = "starting";
530
- } else if(state === "running" && segDurationMeta !== undefined && sinceLastFinalize > (parseInt(segDurationMeta) + 5)) {
531
- state = "stalled";
525
+ state = "starting"; // The LRO returns 'running' even if the source hasn't connected
532
526
  } else if(state == "terminated") {
533
- state = "stopped";
527
+ state = "stopped"; // The LRO reports 'terminated' which for the recording means 'stopped'
534
528
  }
535
529
  status.state = state;
536
530
 
537
- if((state === "running" || state === "stalled" || state === "starting") && stopLro) {
538
- lroStopUrl = await this.FabricUrl({
539
- libraryId,
540
- objectId,
541
- writeToken: edgeWriteToken,
542
- call: "live/stop/" + tlro
543
- });
544
-
545
- try {
546
- await this.utils.ResponseToJson(
547
- await HttpClient.Fetch(lroStopUrl)
548
- );
549
-
550
- console.log("LRO Stop: ", lroStatus.body);
551
- } catch(error) {
552
- console.log("LRO Stop (failed): ", error.response.statusCode);
553
- }
554
-
555
- state = "stopped";
556
- status.state = state;
557
- }
558
-
559
531
  if(state === "running") {
560
532
  let playout_urls = {};
561
533
  let playout_options = await this.PlayoutOptions({
562
- objectId,
563
- linkPath: "public/asset_metadata/sources/default"
534
+ objectId
564
535
  });
565
536
 
566
537
  let hls_clear_enabled = (