livekit-server-sdk 2.8.0 → 2.9.0

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 (66) hide show
  1. package/README.md +1 -1
  2. package/dist/AccessToken.cjs +169 -0
  3. package/dist/AccessToken.cjs.map +1 -0
  4. package/dist/AccessToken.js +130 -137
  5. package/dist/AccessToken.js.map +1 -1
  6. package/dist/AccessToken.test.cjs +147 -0
  7. package/dist/AccessToken.test.cjs.map +1 -0
  8. package/dist/AccessToken.test.js +129 -0
  9. package/dist/AccessToken.test.js.map +1 -0
  10. package/dist/AgentDispatchClient.cjs +133 -0
  11. package/dist/AgentDispatchClient.cjs.map +1 -0
  12. package/dist/AgentDispatchClient.d.ts +1 -1
  13. package/dist/AgentDispatchClient.d.ts.map +1 -1
  14. package/dist/AgentDispatchClient.js +102 -79
  15. package/dist/AgentDispatchClient.js.map +1 -1
  16. package/dist/EgressClient.cjs +381 -0
  17. package/dist/EgressClient.cjs.map +1 -0
  18. package/dist/EgressClient.js +349 -288
  19. package/dist/EgressClient.js.map +1 -1
  20. package/dist/IngressClient.cjs +164 -0
  21. package/dist/IngressClient.cjs.map +1 -0
  22. package/dist/IngressClient.js +131 -106
  23. package/dist/IngressClient.js.map +1 -1
  24. package/dist/RoomServiceClient.cjs +240 -0
  25. package/dist/RoomServiceClient.cjs.map +1 -0
  26. package/dist/RoomServiceClient.js +219 -151
  27. package/dist/RoomServiceClient.js.map +1 -1
  28. package/dist/ServiceBase.cjs +49 -0
  29. package/dist/ServiceBase.cjs.map +1 -0
  30. package/dist/ServiceBase.js +25 -28
  31. package/dist/ServiceBase.js.map +1 -1
  32. package/dist/SipClient.cjs +379 -0
  33. package/dist/SipClient.cjs.map +1 -0
  34. package/dist/SipClient.d.ts +15 -0
  35. package/dist/SipClient.d.ts.map +1 -1
  36. package/dist/SipClient.js +360 -260
  37. package/dist/SipClient.js.map +1 -1
  38. package/dist/TwirpRPC.cjs +71 -0
  39. package/dist/TwirpRPC.cjs.map +1 -0
  40. package/dist/TwirpRPC.d.ts.map +1 -1
  41. package/dist/TwirpRPC.js +32 -29
  42. package/dist/TwirpRPC.js.map +1 -1
  43. package/dist/WebhookReceiver.cjs +78 -0
  44. package/dist/WebhookReceiver.cjs.map +1 -0
  45. package/dist/WebhookReceiver.js +48 -45
  46. package/dist/WebhookReceiver.js.map +1 -1
  47. package/dist/WebhookReceiver.test.cjs +38 -0
  48. package/dist/WebhookReceiver.test.cjs.map +1 -0
  49. package/dist/WebhookReceiver.test.js +37 -0
  50. package/dist/WebhookReceiver.test.js.map +1 -0
  51. package/dist/grants.cjs +53 -0
  52. package/dist/grants.cjs.map +1 -0
  53. package/dist/grants.js +25 -23
  54. package/dist/grants.js.map +1 -1
  55. package/dist/grants.test.cjs +27 -0
  56. package/dist/grants.test.cjs.map +1 -0
  57. package/dist/grants.test.js +26 -0
  58. package/dist/grants.test.js.map +1 -0
  59. package/dist/index.cjs +136 -0
  60. package/dist/index.cjs.map +1 -0
  61. package/dist/index.js +104 -12
  62. package/dist/index.js.map +1 -1
  63. package/package.json +12 -3
  64. package/src/AgentDispatchClient.ts +2 -2
  65. package/src/SipClient.ts +33 -0
  66. package/src/TwirpRPC.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EgressClient.js","sourceRoot":"","sources":["../src/EgressClient.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,GAAG,GAAG,QAAQ,CAAC;AAuFrB;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAG3C;;;;OAIG;IACH,YAAY,IAAY,EAAE,MAAe,EAAE,MAAe;QACxD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;IAwBD,KAAK,CAAC,wBAAwB,CAC5B,QAAgB,EAChB,MAA+E,EAC/E,YAA4C,EAC5C,OAAiD,EACjD,SAAmB,EACnB,SAAmB,EACnB,aAAsB;QAEtB,IAAI,MAA0B,CAAC;QAC/B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,GAAG,YAAY,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAyB,YAAY,CAAC;gBAChD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACrB,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC/B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3B,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,aAAN,MAAM,cAAN,MAAM,IAAN,MAAM,GAAK,EAAE,EAAC;QACd,SAAS,aAAT,SAAS,cAAT,SAAS,IAAT,SAAS,GAAK,KAAK,EAAC;QACpB,SAAS,aAAT,SAAS,cAAT,SAAS,IAAT,SAAS,GAAK,KAAK,EAAC;QACpB,aAAa,aAAb,aAAa,cAAb,aAAa,IAAb,aAAa,GAAK,EAAE,EAAC;QAErB,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,GACb,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,IAAI,0BAA0B,CAAC;YACzC,QAAQ;YACR,MAAM;YACN,SAAS;YACT,SAAS;YACT,aAAa;YACb,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,aAAa;YACtB,WAAW;YACX,aAAa;YACb,cAAc;YACd,YAAY;SACb,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,0BAA0B,EAC1B,GAAG,EACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,GAAW,EACX,MAA+E,EAC/E,IAAiB;QAEjB,MAAM,SAAS,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,KAAI,KAAK,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,KAAI,KAAK,CAAC;QAC3C,MAAM,gBAAgB,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,KAAI,KAAK,CAAC;QACzD,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,OAAO,EACP,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,GACb,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAC,CAAC;QAExD,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC;YAC/B,GAAG;YACH,SAAS;YACT,SAAS;YACT,gBAAgB;YAChB,MAAM,EAAE,YAAY;YACpB,OAAO;YACP,WAAW;YACX,aAAa;YACb,cAAc;YACd,YAAY;SACb,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,gBAAgB,EAChB,GAAG,EACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,sBAAsB,CAC1B,QAAgB,EAChB,QAAgB,EAChB,MAAsB,EACtB,IAA+B;QAE/B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,GACzE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC;YACvC,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,WAAW;YACX,aAAa;YACb,cAAc;YACd,YAAY;SACb,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,wBAAwB,EACxB,GAAG,EACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAsBD,KAAK,CAAC,yBAAyB,CAC7B,QAAgB,EAChB,MAA+E,EAC/E,kBAAmD,EACnD,YAAqB,EACrB,OAAiD;QAEjD,IAAI,YAAgC,CAAC;QACrC,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;gBAC3C,YAAY,GAAG,kBAAkB,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAA0B,kBAAkB,CAAC;gBACvD,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YACjC,CAAC;QACH,CAAC;QAED,YAAY,aAAZ,YAAY,cAAZ,YAAY,IAAZ,YAAY,GAAK,EAAE,EAAC;QACpB,YAAY,aAAZ,YAAY,cAAZ,YAAY,IAAZ,YAAY,GAAK,EAAE,EAAC;QAEpB,MAAM,EACJ,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,GACb,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,2BAA2B,CAAC;YAC1C,QAAQ;YACR,YAAY;YACZ,YAAY;YACZ,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,aAAa;YACtB,WAAW;YACX,aAAa;YACb,cAAc;YACd,YAAY;SACb,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,2BAA2B,EAC3B,GAAG,EACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,8DAA8D;IACtD,gBAAgB,CAAC,MAAW;QAClC,OAAO,CACY,MAAO,CAAC,IAAI,KAAK,SAAS;YAC1B,MAAO,CAAC,MAAM,KAAK,SAAS;YAC5B,MAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,MAAO,CAAC,MAAM,KAAK,SAAS,CAC9C,CAAC;IACJ,CAAC;IAED,8DAA8D;IACtD,mBAAmB,CAAC,MAAW;QACrC,OAAO,CACe,MAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,MAAO,CAAC,QAAQ,KAAK,SAAS,CACnD,CAAC;IACJ,CAAC;IAED,8DAA8D;IACtD,qBAAqB,CAAC,MAAW;QACvC,OAAO,CACiB,MAAO,CAAC,cAAc,KAAK,SAAS;YACpC,MAAO,CAAC,YAAY,KAAK,SAAS;YAClC,MAAO,CAAC,cAAc,KAAK,SAAS,CAC3D,CAAC;IACJ,CAAC;IAED,8DAA8D;IACtD,cAAc,CAAC,MAAW;QAChC,OAAO,CACU,MAAO,CAAC,QAAQ,KAAK,SAAS,IAAmB,MAAO,CAAC,IAAI,KAAK,SAAS,CAC3F,CAAC;IACJ,CAAC;IAEO,eAAe,CACrB,MAA+E,EAC/E,IAA8C;QAE9C,IAAI,IAAmC,CAAC;QACxC,IAAI,WAAiD,CAAC;QACtD,IAAI,MAAgC,CAAC;QACrC,IAAI,aAA8C,CAAC;QACnD,IAAI,QAAyC,CAAC;QAC9C,IAAI,cAAsD,CAAC;QAC3D,IAAI,YAA4C,CAAC;QAEjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,aAAa,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,MAAM,CAAC;YACd,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,QAAQ,GAAG,MAAM,CAAC;YAClB,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,GAAG,MAAM,CAAC;YAChB,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,YAaS,CAAC;QAEd,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,GAAG;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,YAAY,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,YAAY,GAAG;gBACb,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,QAAQ;aAChB,CAAC;QACJ,CAAC;QACD,IAAI,aASS,CAAC;QACd,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,aAAa,GAAG;oBACd,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,IAAI;iBACZ,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG;oBACd,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAmB,IAAI;iBAC7B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,aAAa;YACtB,WAAW;YACX,aAAa;YACb,cAAc;YACd,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,MAAiC,EACjC,OAAe;QAEf,IAAI,YASS,CAAC;QAEd,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,YAAY,GAAG;gBACb,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,GAAG;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC;YACjC,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC,MAAM,EAAE,CAAC;QAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,kBAAkB,EAClB,GAAG,EACH,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,MAAc;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,cAAc,EACd,IAAI,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EACtD,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,aAAwB,EACxB,gBAA2B;QAE3B,aAAa,aAAb,aAAa,cAAb,aAAa,IAAb,aAAa,GAAK,EAAE,EAAC;QACrB,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,IAAhB,gBAAgB,GAAK,EAAE,EAAC;QAExB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,cAAc,EACd,IAAI,mBAAmB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,EAC/E,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAYD;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAoC;;QACnD,IAAI,GAAG,GAA+B,EAAE,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,GAAG,GAAG,OAAO,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,YAAY,EACZ,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EACnC,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,MAAA,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,mCAAI,EAAE,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CACjC,GAAG,EACH,YAAY,EACZ,IAAI,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAC5C,CAAC;QACF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
1
+ {"version":3,"sources":["../src/EgressClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n DirectFileOutput,\n EncodedFileOutput,\n EncodingOptions,\n EncodingOptionsPreset,\n ImageOutput,\n SegmentedFileOutput,\n StreamOutput,\n} from '@livekit/protocol';\nimport {\n EgressInfo,\n ListEgressRequest,\n ListEgressResponse,\n ParticipantEgressRequest,\n RoomCompositeEgressRequest,\n StopEgressRequest,\n TrackCompositeEgressRequest,\n TrackEgressRequest,\n UpdateLayoutRequest,\n UpdateStreamRequest,\n WebEgressRequest,\n} from '@livekit/protocol';\nimport ServiceBase from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'Egress';\n\nexport interface RoomCompositeOptions {\n /**\n * egress layout. optional\n */\n layout?: string;\n /**\n * encoding options or preset. optional\n */\n encodingOptions?: EncodingOptionsPreset | EncodingOptions;\n /**\n * record audio only. optional\n */\n audioOnly?: boolean;\n /**\n * record video only. optional\n */\n videoOnly?: boolean;\n /**\n * custom template url. optional\n */\n customBaseUrl?: string;\n}\n\nexport interface WebOptions {\n /**\n * encoding options or preset. optional\n */\n encodingOptions?: EncodingOptionsPreset | EncodingOptions;\n /**\n * record audio only. optional\n */\n audioOnly?: boolean;\n /**\n * record video only. optional\n */\n videoOnly?: boolean;\n /**\n * await START_RECORDING chrome log\n */\n awaitStartSignal?: boolean;\n}\n\nexport interface ParticipantEgressOptions {\n /**\n * true to capture source screenshare and screenshare_audio\n * false to capture camera and microphone\n */\n screenShare?: boolean;\n /**\n * encoding options or preset. optional\n */\n encodingOptions?: EncodingOptionsPreset | EncodingOptions;\n}\n\nexport interface TrackCompositeOptions {\n /**\n * audio track ID\n */\n audioTrackId?: string;\n /**\n * video track ID\n */\n videoTrackId?: string;\n /**\n * encoding options or preset. optional\n */\n encodingOptions?: EncodingOptionsPreset | EncodingOptions;\n}\n\n/**\n * Used to supply multiple outputs with an egress request\n */\nexport interface EncodedOutputs {\n file?: EncodedFileOutput | undefined;\n stream?: StreamOutput | undefined;\n segments?: SegmentedFileOutput | undefined;\n images?: ImageOutput | undefined;\n}\n\nexport interface ListEgressOptions {\n roomName?: string;\n egressId?: string;\n active?: boolean;\n}\n\n/**\n * Client to access Egress APIs\n */\nexport class EgressClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param roomName - room name\n * @param output - file or stream output\n * @param opts - RoomCompositeOptions\n */\n async startRoomCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n opts?: RoomCompositeOptions,\n ): Promise<EgressInfo>;\n /**\n * @deprecated use RoomCompositeOptions instead\n */\n async startRoomCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n layout?: string,\n options?: EncodingOptionsPreset | EncodingOptions,\n audioOnly?: boolean,\n videoOnly?: boolean,\n customBaseUrl?: string,\n ): Promise<EgressInfo>;\n async startRoomCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n optsOrLayout?: RoomCompositeOptions | string,\n options?: EncodingOptionsPreset | EncodingOptions,\n audioOnly?: boolean,\n videoOnly?: boolean,\n customBaseUrl?: string,\n ): Promise<EgressInfo> {\n let layout: string | undefined;\n if (optsOrLayout !== undefined) {\n if (typeof optsOrLayout === 'string') {\n layout = optsOrLayout;\n } else {\n const opts = <RoomCompositeOptions>optsOrLayout;\n layout = opts.layout;\n options = opts.encodingOptions;\n audioOnly = opts.audioOnly;\n videoOnly = opts.videoOnly;\n customBaseUrl = opts.customBaseUrl;\n }\n }\n\n layout ??= '';\n audioOnly ??= false;\n videoOnly ??= false;\n customBaseUrl ??= '';\n\n const {\n output: legacyOutput,\n options: egressOptions,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n } = this.getOutputParams(output, options);\n\n const req = new RoomCompositeEgressRequest({\n roomName,\n layout,\n audioOnly,\n videoOnly,\n customBaseUrl,\n output: legacyOutput,\n options: egressOptions,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'StartRoomCompositeEgress',\n req,\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param url - url\n * @param output - file or stream output\n * @param opts - WebOptions\n */\n async startWebEgress(\n url: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n opts?: WebOptions,\n ): Promise<EgressInfo> {\n const audioOnly = opts?.audioOnly || false;\n const videoOnly = opts?.videoOnly || false;\n const awaitStartSignal = opts?.awaitStartSignal || false;\n const {\n output: legacyOutput,\n options,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n } = this.getOutputParams(output, opts?.encodingOptions);\n\n const req = new WebEgressRequest({\n url,\n audioOnly,\n videoOnly,\n awaitStartSignal,\n output: legacyOutput,\n options,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'StartWebEgress',\n req,\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * Export a participant's audio and video tracks,\n *\n * @param roomName - room name\n * @param output - one or more outputs\n * @param opts - ParticipantEgressOptions\n */\n async startParticipantEgress(\n roomName: string,\n identity: string,\n output: EncodedOutputs,\n opts?: ParticipantEgressOptions,\n ): Promise<EgressInfo> {\n const { options, fileOutputs, streamOutputs, segmentOutputs, imageOutputs } =\n this.getOutputParams(output, opts?.encodingOptions);\n const req = new ParticipantEgressRequest({\n roomName,\n identity,\n options,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'StartParticipantEgress',\n req,\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param roomName - room name\n * @param output - file or stream output\n * @param opts - TrackCompositeOptions\n */\n async startTrackCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n opts?: TrackCompositeOptions,\n ): Promise<EgressInfo>;\n /**\n * @deprecated use TrackCompositeOptions instead\n */\n async startTrackCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n audioTrackId?: string,\n videoTrackId?: string,\n options?: EncodingOptionsPreset | EncodingOptions,\n ): Promise<EgressInfo>;\n async startTrackCompositeEgress(\n roomName: string,\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n optsOrAudioTrackId?: TrackCompositeOptions | string,\n videoTrackId?: string,\n options?: EncodingOptionsPreset | EncodingOptions,\n ): Promise<EgressInfo> {\n let audioTrackId: string | undefined;\n if (optsOrAudioTrackId !== undefined) {\n if (typeof optsOrAudioTrackId === 'string') {\n audioTrackId = optsOrAudioTrackId;\n } else {\n const opts = <TrackCompositeOptions>optsOrAudioTrackId;\n audioTrackId = opts.audioTrackId;\n videoTrackId = opts.videoTrackId;\n options = opts.encodingOptions;\n }\n }\n\n audioTrackId ??= '';\n videoTrackId ??= '';\n\n const {\n output: legacyOutput,\n options: egressOptions,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n } = this.getOutputParams(output, options);\n const req = new TrackCompositeEgressRequest({\n roomName,\n audioTrackId,\n videoTrackId,\n output: legacyOutput,\n options: egressOptions,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'StartTrackCompositeEgress',\n req,\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isEncodedOutputs(output: any): output is EncodedOutputs {\n return (\n (<EncodedOutputs>output).file !== undefined ||\n (<EncodedOutputs>output).stream !== undefined ||\n (<EncodedOutputs>output).segments !== undefined ||\n (<EncodedOutputs>output).images !== undefined\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isEncodedFileOutput(output: any): output is EncodedFileOutput {\n return (\n (<EncodedFileOutput>output).filepath !== undefined ||\n (<EncodedFileOutput>output).fileType !== undefined\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isSegmentedFileOutput(output: any): output is SegmentedFileOutput {\n return (\n (<SegmentedFileOutput>output).filenamePrefix !== undefined ||\n (<SegmentedFileOutput>output).playlistName !== undefined ||\n (<SegmentedFileOutput>output).filenameSuffix !== undefined\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private isStreamOutput(output: any): output is StreamOutput {\n return (\n (<StreamOutput>output).protocol !== undefined || (<StreamOutput>output).urls !== undefined\n );\n }\n\n private getOutputParams(\n output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput,\n opts?: EncodingOptionsPreset | EncodingOptions,\n ) {\n let file: EncodedFileOutput | undefined;\n let fileOutputs: Array<EncodedFileOutput> | undefined;\n let stream: StreamOutput | undefined;\n let streamOutputs: Array<StreamOutput> | undefined;\n let segments: SegmentedFileOutput | undefined;\n let segmentOutputs: Array<SegmentedFileOutput> | undefined;\n let imageOutputs: Array<ImageOutput> | undefined;\n\n if (this.isEncodedOutputs(output)) {\n if (output.file !== undefined) {\n fileOutputs = [output.file];\n }\n if (output.stream !== undefined) {\n streamOutputs = [output.stream];\n }\n if (output.segments !== undefined) {\n segmentOutputs = [output.segments];\n }\n if (output.images !== undefined) {\n imageOutputs = [output.images];\n }\n } else if (this.isEncodedFileOutput(output)) {\n file = output;\n fileOutputs = [file];\n } else if (this.isSegmentedFileOutput(output)) {\n segments = output;\n segmentOutputs = [segments];\n } else if (this.isStreamOutput(output)) {\n stream = output;\n streamOutputs = [stream];\n }\n\n let legacyOutput:\n | {\n value: EncodedFileOutput;\n case: 'file';\n }\n | {\n value: StreamOutput;\n case: 'stream';\n }\n | {\n value: SegmentedFileOutput;\n case: 'segments';\n }\n | undefined;\n\n if (file) {\n legacyOutput = {\n case: 'file',\n value: file,\n };\n } else if (stream) {\n legacyOutput = {\n case: 'stream',\n value: stream,\n };\n } else if (segments) {\n legacyOutput = {\n case: 'segments',\n value: segments,\n };\n }\n let egressOptions:\n | {\n value: EncodingOptionsPreset;\n case: 'preset';\n }\n | {\n value: EncodingOptions;\n case: 'advanced';\n }\n | undefined;\n if (opts) {\n if (typeof opts === 'number') {\n egressOptions = {\n case: 'preset',\n value: opts,\n };\n } else {\n egressOptions = {\n case: 'advanced',\n value: <EncodingOptions>opts,\n };\n }\n }\n\n return {\n output: legacyOutput,\n options: egressOptions,\n fileOutputs,\n streamOutputs,\n segmentOutputs,\n imageOutputs,\n };\n }\n\n /**\n * @param roomName - room name\n * @param output - file or websocket output\n * @param trackId - track Id\n */\n async startTrackEgress(\n roomName: string,\n output: DirectFileOutput | string,\n trackId: string,\n ): Promise<EgressInfo> {\n let legacyOutput:\n | {\n value: DirectFileOutput;\n case: 'file';\n }\n | {\n value: string;\n case: 'websocketUrl';\n }\n | undefined;\n\n if (typeof output === 'string') {\n legacyOutput = {\n case: 'websocketUrl',\n value: output,\n };\n } else {\n legacyOutput = {\n case: 'file',\n value: output,\n };\n }\n\n const req = new TrackEgressRequest({\n roomName,\n trackId,\n output: legacyOutput,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'StartTrackEgress',\n req,\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param egressId -\n * @param layout -\n */\n async updateLayout(egressId: string, layout: string): Promise<EgressInfo> {\n const data = await this.rpc.request(\n svc,\n 'UpdateLayout',\n new UpdateLayoutRequest({ egressId, layout }).toJson(),\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param egressId -\n * @param addOutputUrls -\n * @param removeOutputUrls -\n */\n async updateStream(\n egressId: string,\n addOutputUrls?: string[],\n removeOutputUrls?: string[],\n ): Promise<EgressInfo> {\n addOutputUrls ??= [];\n removeOutputUrls ??= [];\n\n const data = await this.rpc.request(\n svc,\n 'UpdateStream',\n new UpdateStreamRequest({ egressId, addOutputUrls, removeOutputUrls }).toJson(),\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param options - options to filter listed Egresses, by default returns all\n * Egress instances\n */\n async listEgress(options?: ListEgressOptions): Promise<Array<EgressInfo>>;\n /**\n * @deprecated use `listEgress(options?: ListEgressOptions)` instead\n * @param roomName - list egress for one room only\n */\n async listEgress(roomName?: string): Promise<Array<EgressInfo>>;\n /**\n * @param roomName - list egress for one room only\n */\n async listEgress(options?: string | ListEgressOptions): Promise<Array<EgressInfo>> {\n let req: Partial<ListEgressRequest> = {};\n if (typeof options === 'string') {\n req.roomName = options;\n } else if (options !== undefined) {\n req = options;\n }\n\n const data = await this.rpc.request(\n svc,\n 'ListEgress',\n new ListEgressRequest(req).toJson(),\n await this.authHeader({ roomRecord: true }),\n );\n return ListEgressResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param egressId -\n */\n async stopEgress(egressId: string): Promise<EgressInfo> {\n const data = await this.rpc.request(\n svc,\n 'StopEgress',\n new StopEgressRequest({ egressId }).toJson(),\n await this.authHeader({ roomRecord: true }),\n );\n return EgressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n}\n"],"mappings":"AAYA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,iBAAiB;AAExB,SAAS,UAAU,sBAAsB;AAEzC,MAAM,MAAM;AA0FL,MAAM,qBAAqB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5C,YAAY,MAAc,QAAiB,QAAiB;AAC1D,UAAM,QAAQ,MAAM;AACpB,SAAK,MAAM,IAAI,SAAS,MAAM,cAAc;AAAA,EAC9C;AAAA,EAwBA,MAAM,yBACJ,UACA,QACA,cACA,SACA,WACA,WACA,eACqB;AACrB,QAAI;AACJ,QAAI,iBAAiB,QAAW;AAC9B,UAAI,OAAO,iBAAiB,UAAU;AACpC,iBAAS;AAAA,MACX,OAAO;AACL,cAAM,OAA6B;AACnC,iBAAS,KAAK;AACd,kBAAU,KAAK;AACf,oBAAY,KAAK;AACjB,oBAAY,KAAK;AACjB,wBAAgB,KAAK;AAAA,MACvB;AAAA,IACF;AAEA,eAAW;AACX,kBAAc;AACd,kBAAc;AACd,sBAAkB;AAElB,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK,gBAAgB,QAAQ,OAAO;AAExC,UAAM,MAAM,IAAI,2BAA2B;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,KACA,QACA,MACqB;AACrB,UAAM,aAAY,6BAAM,cAAa;AACrC,UAAM,aAAY,6BAAM,cAAa;AACrC,UAAM,oBAAmB,6BAAM,qBAAoB;AACnD,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK,gBAAgB,QAAQ,6BAAM,eAAe;AAEtD,UAAM,MAAM,IAAI,iBAAiB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,uBACJ,UACA,UACA,QACA,MACqB;AACrB,UAAM,EAAE,SAAS,aAAa,eAAe,gBAAgB,aAAa,IACxE,KAAK,gBAAgB,QAAQ,6BAAM,eAAe;AACpD,UAAM,MAAM,IAAI,yBAAyB;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA,EAsBA,MAAM,0BACJ,UACA,QACA,oBACA,cACA,SACqB;AACrB,QAAI;AACJ,QAAI,uBAAuB,QAAW;AACpC,UAAI,OAAO,uBAAuB,UAAU;AAC1C,uBAAe;AAAA,MACjB,OAAO;AACL,cAAM,OAA8B;AACpC,uBAAe,KAAK;AACpB,uBAAe,KAAK;AACpB,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,qBAAiB;AACjB,qBAAiB;AAEjB,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,KAAK,gBAAgB,QAAQ,OAAO;AACxC,UAAM,MAAM,IAAI,4BAA4B;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA,EAGQ,iBAAiB,QAAuC;AAC9D,WACmB,OAAQ,SAAS,UACjB,OAAQ,WAAW,UACnB,OAAQ,aAAa,UACrB,OAAQ,WAAW;AAAA,EAExC;AAAA;AAAA,EAGQ,oBAAoB,QAA0C;AACpE,WACsB,OAAQ,aAAa,UACrB,OAAQ,aAAa;AAAA,EAE7C;AAAA;AAAA,EAGQ,sBAAsB,QAA4C;AACxE,WACwB,OAAQ,mBAAmB,UAC3B,OAAQ,iBAAiB,UACzB,OAAQ,mBAAmB;AAAA,EAErD;AAAA;AAAA,EAGQ,eAAe,QAAqC;AAC1D,WACiB,OAAQ,aAAa,UAA4B,OAAQ,SAAS;AAAA,EAErF;AAAA,EAEQ,gBACN,QACA,MACA;AACA,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,KAAK,iBAAiB,MAAM,GAAG;AACjC,UAAI,OAAO,SAAS,QAAW;AAC7B,sBAAc,CAAC,OAAO,IAAI;AAAA,MAC5B;AACA,UAAI,OAAO,WAAW,QAAW;AAC/B,wBAAgB,CAAC,OAAO,MAAM;AAAA,MAChC;AACA,UAAI,OAAO,aAAa,QAAW;AACjC,yBAAiB,CAAC,OAAO,QAAQ;AAAA,MACnC;AACA,UAAI,OAAO,WAAW,QAAW;AAC/B,uBAAe,CAAC,OAAO,MAAM;AAAA,MAC/B;AAAA,IACF,WAAW,KAAK,oBAAoB,MAAM,GAAG;AAC3C,aAAO;AACP,oBAAc,CAAC,IAAI;AAAA,IACrB,WAAW,KAAK,sBAAsB,MAAM,GAAG;AAC7C,iBAAW;AACX,uBAAiB,CAAC,QAAQ;AAAA,IAC5B,WAAW,KAAK,eAAe,MAAM,GAAG;AACtC,eAAS;AACT,sBAAgB,CAAC,MAAM;AAAA,IACzB;AAEA,QAAI;AAeJ,QAAI,MAAM;AACR,qBAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF,WAAW,QAAQ;AACjB,qBAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF,WAAW,UAAU;AACnB,qBAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI;AAUJ,QAAI,MAAM;AACR,UAAI,OAAO,SAAS,UAAU;AAC5B,wBAAgB;AAAA,UACd,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,wBAAgB;AAAA,UACd,MAAM;AAAA,UACN,OAAwB;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBACJ,UACA,QACA,SACqB;AACrB,QAAI;AAWJ,QAAI,OAAO,WAAW,UAAU;AAC9B,qBAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,qBAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,mBAAmB;AAAA,MACjC;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACV,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,UAAkB,QAAqC;AACxE,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,oBAAoB,EAAE,UAAU,OAAO,CAAC,EAAE,OAAO;AAAA,MACrD,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aACJ,UACA,eACA,kBACqB;AACrB,sBAAkB,CAAC;AACnB,yBAAqB,CAAC;AAEtB,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,oBAAoB,EAAE,UAAU,eAAe,iBAAiB,CAAC,EAAE,OAAO;AAAA,MAC9E,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,WAAW,SAAkE;AACjF,QAAI,MAAkC,CAAC;AACvC,QAAI,OAAO,YAAY,UAAU;AAC/B,UAAI,WAAW;AAAA,IACjB,WAAW,YAAY,QAAW;AAChC,YAAM;AAAA,IACR;AAEA,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB,GAAG,EAAE,OAAO;AAAA,MAClC,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,mBAAmB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC,EAAE,SAAS,CAAC;AAAA,EACpF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,UAAuC;AACtD,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB,EAAE,SAAS,CAAC,EAAE,OAAO;AAAA,MAC3C,MAAM,KAAK,WAAW,EAAE,YAAY,KAAK,CAAC;AAAA,IAC5C;AACA,WAAO,WAAW,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAChE;AACF;","names":[]}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var IngressClient_exports = {};
30
+ __export(IngressClient_exports, {
31
+ IngressClient: () => IngressClient
32
+ });
33
+ module.exports = __toCommonJS(IngressClient_exports);
34
+ var import_protocol = require("@livekit/protocol");
35
+ var import_ServiceBase = __toESM(require("./ServiceBase.cjs"), 1);
36
+ var import_TwirpRPC = require("./TwirpRPC.cjs");
37
+ const svc = "Ingress";
38
+ class IngressClient extends import_ServiceBase.default {
39
+ /**
40
+ * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'
41
+ * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY
42
+ * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET
43
+ */
44
+ constructor(host, apiKey, secret) {
45
+ super(apiKey, secret);
46
+ this.rpc = new import_TwirpRPC.TwirpRpc(host, import_TwirpRPC.livekitPackage);
47
+ }
48
+ /**
49
+ * @param inputType - protocol for the ingress
50
+ * @param opts - CreateIngressOptions
51
+ */
52
+ async createIngress(inputType, opts) {
53
+ let name = "";
54
+ let participantName = "";
55
+ let participantIdentity = "";
56
+ let bypassTranscoding = false;
57
+ let url = "";
58
+ if (opts == null) {
59
+ throw new Error("options dictionary is required");
60
+ }
61
+ const roomName = opts.roomName;
62
+ const enableTranscoding = opts.enableTranscoding;
63
+ const audio = opts.audio;
64
+ const video = opts.video;
65
+ const participantMetadata = opts.participantMetadata;
66
+ name = opts.name || "";
67
+ participantName = opts.participantName || "";
68
+ participantIdentity = opts.participantIdentity || "";
69
+ bypassTranscoding = opts.bypassTranscoding || false;
70
+ url = opts.url || "";
71
+ if (typeof roomName == "undefined") {
72
+ throw new Error("required roomName option not provided");
73
+ }
74
+ if (participantIdentity == "") {
75
+ throw new Error("required participantIdentity option not provided");
76
+ }
77
+ const req = new import_protocol.CreateIngressRequest({
78
+ inputType,
79
+ name,
80
+ roomName,
81
+ participantIdentity,
82
+ participantMetadata,
83
+ participantName,
84
+ bypassTranscoding,
85
+ enableTranscoding,
86
+ url,
87
+ audio,
88
+ video
89
+ }).toJson();
90
+ const data = await this.rpc.request(
91
+ svc,
92
+ "CreateIngress",
93
+ req,
94
+ await this.authHeader({ ingressAdmin: true })
95
+ );
96
+ return import_protocol.IngressInfo.fromJson(data, { ignoreUnknownFields: true });
97
+ }
98
+ /**
99
+ * @param ingressId - ID of the ingress to update
100
+ * @param opts - UpdateIngressOptions
101
+ */
102
+ async updateIngress(ingressId, opts) {
103
+ const name = opts.name || "";
104
+ const roomName = opts.roomName || "";
105
+ const participantName = opts.participantName || "";
106
+ const participantIdentity = opts.participantIdentity || "";
107
+ const { participantMetadata } = opts;
108
+ const { audio, video, bypassTranscoding, enableTranscoding } = opts;
109
+ const req = new import_protocol.UpdateIngressRequest({
110
+ ingressId,
111
+ name,
112
+ roomName,
113
+ participantIdentity,
114
+ participantName,
115
+ participantMetadata,
116
+ bypassTranscoding,
117
+ enableTranscoding,
118
+ audio,
119
+ video
120
+ }).toJson();
121
+ const data = await this.rpc.request(
122
+ svc,
123
+ "UpdateIngress",
124
+ req,
125
+ await this.authHeader({ ingressAdmin: true })
126
+ );
127
+ return import_protocol.IngressInfo.fromJson(data, { ignoreUnknownFields: true });
128
+ }
129
+ /**
130
+ * @param arg - list room name or options
131
+ */
132
+ async listIngress(arg) {
133
+ let req = {};
134
+ if (typeof arg === "string") {
135
+ req.roomName = arg;
136
+ } else if (arg) {
137
+ req = arg;
138
+ }
139
+ const data = await this.rpc.request(
140
+ svc,
141
+ "ListIngress",
142
+ new import_protocol.ListIngressRequest(req).toJson(),
143
+ await this.authHeader({ ingressAdmin: true })
144
+ );
145
+ return import_protocol.ListIngressResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];
146
+ }
147
+ /**
148
+ * @param ingressId - ingress to delete
149
+ */
150
+ async deleteIngress(ingressId) {
151
+ const data = await this.rpc.request(
152
+ svc,
153
+ "DeleteIngress",
154
+ new import_protocol.DeleteIngressRequest({ ingressId }).toJson(),
155
+ await this.authHeader({ ingressAdmin: true })
156
+ );
157
+ return import_protocol.IngressInfo.fromJson(data, { ignoreUnknownFields: true });
158
+ }
159
+ }
160
+ // Annotate the CommonJS export names for ESM import in node:
161
+ 0 && (module.exports = {
162
+ IngressClient
163
+ });
164
+ //# sourceMappingURL=IngressClient.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/IngressClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { IngressAudioOptions, IngressInput, IngressVideoOptions } from '@livekit/protocol';\nimport {\n CreateIngressRequest,\n DeleteIngressRequest,\n IngressInfo,\n ListIngressRequest,\n ListIngressResponse,\n UpdateIngressRequest,\n} from '@livekit/protocol';\nimport ServiceBase from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'Ingress';\n\nexport interface CreateIngressOptions {\n /**\n * ingress name. optional\n */\n name?: string;\n /**\n * name of the room to send media to. required\n */\n roomName?: string;\n /**\n * unique identity of the participant. required\n */\n participantIdentity: string;\n /**\n * participant display name\n */\n participantName?: string;\n /**\n * metadata to attach to the participant\n */\n participantMetadata?: string;\n /**\n * @deprecated use `enableTranscoding` instead.\n * whether to skip transcoding and forward the input media directly. Only supported by WHIP\n */\n bypassTranscoding?: boolean;\n /**\n * whether to enable transcoding or forward the input media directly.\n * Transcoding is required for all input types except WHIP. For WHIP, the default is to not transcode.\n */\n enableTranscoding?: boolean | undefined;\n /**\n * url of the media to pull for ingresses of type URL\n */\n url?: string;\n /**\n * custom audio encoding parameters. optional\n */\n audio?: IngressAudioOptions;\n /**\n * custom video encoding parameters. optional\n */\n video?: IngressVideoOptions;\n}\n\nexport interface UpdateIngressOptions {\n /**\n * ingress name. optional\n */\n name: string;\n /**\n * name of the room to send media to.\n */\n roomName?: string;\n /**\n * unique identity of the participant.\n */\n participantIdentity?: string;\n /**\n * participant display name\n */\n participantName?: string;\n /**\n * metadata to attach to the participant\n */\n participantMetadata?: string;\n /**\n * @deprecated use `enableTranscoding` instead\n * whether to skip transcoding and forward the input media directly. Only supported by WHIP\n */\n bypassTranscoding?: boolean | undefined;\n /**\n * whether to enable transcoding or forward the input media directly.\n * Transcoding is required for all input types except WHIP. For WHIP, the default is to not transcode.\n */\n enableTranscoding?: boolean | undefined;\n /**\n * custom audio encoding parameters. optional\n */\n audio?: IngressAudioOptions;\n /**\n * custom video encoding parameters. optional\n */\n video?: IngressVideoOptions;\n}\n\nexport interface ListIngressOptions {\n /**\n * list ingress for one room only\n */\n roomName?: string;\n\n /**\n * list ingress by ID\n */\n ingressId?: string;\n}\n\n/**\n * Client to access Ingress APIs\n */\nexport class IngressClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param inputType - protocol for the ingress\n * @param opts - CreateIngressOptions\n */\n async createIngress(inputType: IngressInput, opts: CreateIngressOptions): Promise<IngressInfo> {\n let name: string = '';\n let participantName: string = '';\n let participantIdentity: string = '';\n let bypassTranscoding: boolean = false;\n let url: string = '';\n\n if (opts == null) {\n throw new Error('options dictionary is required');\n }\n\n const roomName: string | undefined = opts.roomName;\n const enableTranscoding: boolean | undefined = opts.enableTranscoding;\n const audio: IngressAudioOptions | undefined = opts.audio;\n const video: IngressVideoOptions | undefined = opts.video;\n const participantMetadata: string | undefined = opts.participantMetadata;\n\n name = opts.name || '';\n participantName = opts.participantName || '';\n participantIdentity = opts.participantIdentity || '';\n bypassTranscoding = opts.bypassTranscoding || false;\n url = opts.url || '';\n\n if (typeof roomName == 'undefined') {\n throw new Error('required roomName option not provided');\n }\n\n if (participantIdentity == '') {\n throw new Error('required participantIdentity option not provided');\n }\n\n const req = new CreateIngressRequest({\n inputType,\n name,\n roomName,\n participantIdentity,\n participantMetadata,\n participantName,\n bypassTranscoding,\n enableTranscoding,\n url,\n audio,\n video,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateIngress',\n req,\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param ingressId - ID of the ingress to update\n * @param opts - UpdateIngressOptions\n */\n async updateIngress(ingressId: string, opts: UpdateIngressOptions): Promise<IngressInfo> {\n const name: string = opts.name || '';\n const roomName: string = opts.roomName || '';\n const participantName: string = opts.participantName || '';\n const participantIdentity: string = opts.participantIdentity || '';\n const { participantMetadata } = opts;\n const { audio, video, bypassTranscoding, enableTranscoding } = opts;\n\n const req = new UpdateIngressRequest({\n ingressId,\n name,\n roomName,\n participantIdentity,\n participantName,\n participantMetadata,\n bypassTranscoding,\n enableTranscoding,\n audio,\n video,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'UpdateIngress',\n req,\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listIngress(opts)` or `listIngress(arg)` instead\n * @param roomName - list ingress for one room only\n */\n async listIngress(roomName?: string): Promise<Array<IngressInfo>>;\n /**\n * @param opts - list options\n */\n async listIngress(opts?: ListIngressOptions): Promise<Array<IngressInfo>>;\n /**\n * @param arg - list room name or options\n */\n async listIngress(arg?: string | ListIngressOptions): Promise<Array<IngressInfo>> {\n let req: Partial<ListIngressRequest> = {};\n if (typeof arg === 'string') {\n req.roomName = arg;\n } else if (arg) {\n req = arg;\n }\n const data = await this.rpc.request(\n svc,\n 'ListIngress',\n new ListIngressRequest(req).toJson(),\n await this.authHeader({ ingressAdmin: true }),\n );\n return ListIngressResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param ingressId - ingress to delete\n */\n async deleteIngress(ingressId: string): Promise<IngressInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteIngress',\n new DeleteIngressRequest({ ingressId }).toJson(),\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n}\n"],"mappings":"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","names":["ServiceBase"]}
@@ -1,112 +1,137 @@
1
- import { CreateIngressRequest, DeleteIngressRequest, IngressInfo, ListIngressRequest, ListIngressResponse, UpdateIngressRequest, } from '@livekit/protocol';
2
- import ServiceBase from './ServiceBase.js';
3
- import { TwirpRpc, livekitPackage } from './TwirpRPC.js';
4
- const svc = 'Ingress';
5
- /**
6
- * Client to access Ingress APIs
7
- */
8
- export class IngressClient extends ServiceBase {
9
- /**
10
- * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'
11
- * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY
12
- * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET
13
- */
14
- constructor(host, apiKey, secret) {
15
- super(apiKey, secret);
16
- this.rpc = new TwirpRpc(host, livekitPackage);
1
+ import {
2
+ CreateIngressRequest,
3
+ DeleteIngressRequest,
4
+ IngressInfo,
5
+ ListIngressRequest,
6
+ ListIngressResponse,
7
+ UpdateIngressRequest
8
+ } from "@livekit/protocol";
9
+ import ServiceBase from "./ServiceBase.js";
10
+ import { TwirpRpc, livekitPackage } from "./TwirpRPC.js";
11
+ const svc = "Ingress";
12
+ class IngressClient extends ServiceBase {
13
+ /**
14
+ * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'
15
+ * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY
16
+ * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET
17
+ */
18
+ constructor(host, apiKey, secret) {
19
+ super(apiKey, secret);
20
+ this.rpc = new TwirpRpc(host, livekitPackage);
21
+ }
22
+ /**
23
+ * @param inputType - protocol for the ingress
24
+ * @param opts - CreateIngressOptions
25
+ */
26
+ async createIngress(inputType, opts) {
27
+ let name = "";
28
+ let participantName = "";
29
+ let participantIdentity = "";
30
+ let bypassTranscoding = false;
31
+ let url = "";
32
+ if (opts == null) {
33
+ throw new Error("options dictionary is required");
17
34
  }
18
- /**
19
- * @param inputType - protocol for the ingress
20
- * @param opts - CreateIngressOptions
21
- */
22
- async createIngress(inputType, opts) {
23
- let name = '';
24
- let participantName = '';
25
- let participantIdentity = '';
26
- let bypassTranscoding = false;
27
- let url = '';
28
- if (opts == null) {
29
- throw new Error('options dictionary is required');
30
- }
31
- const roomName = opts.roomName;
32
- const enableTranscoding = opts.enableTranscoding;
33
- const audio = opts.audio;
34
- const video = opts.video;
35
- const participantMetadata = opts.participantMetadata;
36
- name = opts.name || '';
37
- participantName = opts.participantName || '';
38
- participantIdentity = opts.participantIdentity || '';
39
- bypassTranscoding = opts.bypassTranscoding || false;
40
- url = opts.url || '';
41
- if (typeof roomName == 'undefined') {
42
- throw new Error('required roomName option not provided');
43
- }
44
- if (participantIdentity == '') {
45
- throw new Error('required participantIdentity option not provided');
46
- }
47
- const req = new CreateIngressRequest({
48
- inputType,
49
- name,
50
- roomName,
51
- participantIdentity,
52
- participantMetadata,
53
- participantName,
54
- bypassTranscoding,
55
- enableTranscoding,
56
- url,
57
- audio,
58
- video,
59
- }).toJson();
60
- const data = await this.rpc.request(svc, 'CreateIngress', req, await this.authHeader({ ingressAdmin: true }));
61
- return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
35
+ const roomName = opts.roomName;
36
+ const enableTranscoding = opts.enableTranscoding;
37
+ const audio = opts.audio;
38
+ const video = opts.video;
39
+ const participantMetadata = opts.participantMetadata;
40
+ name = opts.name || "";
41
+ participantName = opts.participantName || "";
42
+ participantIdentity = opts.participantIdentity || "";
43
+ bypassTranscoding = opts.bypassTranscoding || false;
44
+ url = opts.url || "";
45
+ if (typeof roomName == "undefined") {
46
+ throw new Error("required roomName option not provided");
62
47
  }
63
- /**
64
- * @param ingressId - ID of the ingress to update
65
- * @param opts - UpdateIngressOptions
66
- */
67
- async updateIngress(ingressId, opts) {
68
- const name = opts.name || '';
69
- const roomName = opts.roomName || '';
70
- const participantName = opts.participantName || '';
71
- const participantIdentity = opts.participantIdentity || '';
72
- const { participantMetadata } = opts;
73
- const { audio, video, bypassTranscoding, enableTranscoding } = opts;
74
- const req = new UpdateIngressRequest({
75
- ingressId,
76
- name,
77
- roomName,
78
- participantIdentity,
79
- participantName,
80
- participantMetadata,
81
- bypassTranscoding,
82
- enableTranscoding,
83
- audio,
84
- video,
85
- }).toJson();
86
- const data = await this.rpc.request(svc, 'UpdateIngress', req, await this.authHeader({ ingressAdmin: true }));
87
- return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
48
+ if (participantIdentity == "") {
49
+ throw new Error("required participantIdentity option not provided");
88
50
  }
89
- /**
90
- * @param arg - list room name or options
91
- */
92
- async listIngress(arg) {
93
- var _a;
94
- let req = {};
95
- if (typeof arg === 'string') {
96
- req.roomName = arg;
97
- }
98
- else if (arg) {
99
- req = arg;
100
- }
101
- const data = await this.rpc.request(svc, 'ListIngress', new ListIngressRequest(req).toJson(), await this.authHeader({ ingressAdmin: true }));
102
- return (_a = ListIngressResponse.fromJson(data, { ignoreUnknownFields: true }).items) !== null && _a !== void 0 ? _a : [];
103
- }
104
- /**
105
- * @param ingressId - ingress to delete
106
- */
107
- async deleteIngress(ingressId) {
108
- const data = await this.rpc.request(svc, 'DeleteIngress', new DeleteIngressRequest({ ingressId }).toJson(), await this.authHeader({ ingressAdmin: true }));
109
- return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
51
+ const req = new CreateIngressRequest({
52
+ inputType,
53
+ name,
54
+ roomName,
55
+ participantIdentity,
56
+ participantMetadata,
57
+ participantName,
58
+ bypassTranscoding,
59
+ enableTranscoding,
60
+ url,
61
+ audio,
62
+ video
63
+ }).toJson();
64
+ const data = await this.rpc.request(
65
+ svc,
66
+ "CreateIngress",
67
+ req,
68
+ await this.authHeader({ ingressAdmin: true })
69
+ );
70
+ return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
71
+ }
72
+ /**
73
+ * @param ingressId - ID of the ingress to update
74
+ * @param opts - UpdateIngressOptions
75
+ */
76
+ async updateIngress(ingressId, opts) {
77
+ const name = opts.name || "";
78
+ const roomName = opts.roomName || "";
79
+ const participantName = opts.participantName || "";
80
+ const participantIdentity = opts.participantIdentity || "";
81
+ const { participantMetadata } = opts;
82
+ const { audio, video, bypassTranscoding, enableTranscoding } = opts;
83
+ const req = new UpdateIngressRequest({
84
+ ingressId,
85
+ name,
86
+ roomName,
87
+ participantIdentity,
88
+ participantName,
89
+ participantMetadata,
90
+ bypassTranscoding,
91
+ enableTranscoding,
92
+ audio,
93
+ video
94
+ }).toJson();
95
+ const data = await this.rpc.request(
96
+ svc,
97
+ "UpdateIngress",
98
+ req,
99
+ await this.authHeader({ ingressAdmin: true })
100
+ );
101
+ return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
102
+ }
103
+ /**
104
+ * @param arg - list room name or options
105
+ */
106
+ async listIngress(arg) {
107
+ let req = {};
108
+ if (typeof arg === "string") {
109
+ req.roomName = arg;
110
+ } else if (arg) {
111
+ req = arg;
110
112
  }
113
+ const data = await this.rpc.request(
114
+ svc,
115
+ "ListIngress",
116
+ new ListIngressRequest(req).toJson(),
117
+ await this.authHeader({ ingressAdmin: true })
118
+ );
119
+ return ListIngressResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];
120
+ }
121
+ /**
122
+ * @param ingressId - ingress to delete
123
+ */
124
+ async deleteIngress(ingressId) {
125
+ const data = await this.rpc.request(
126
+ svc,
127
+ "DeleteIngress",
128
+ new DeleteIngressRequest({ ingressId }).toJson(),
129
+ await this.authHeader({ ingressAdmin: true })
130
+ );
131
+ return IngressInfo.fromJson(data, { ignoreUnknownFields: true });
132
+ }
111
133
  }
134
+ export {
135
+ IngressClient
136
+ };
112
137
  //# sourceMappingURL=IngressClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IngressClient.js","sourceRoot":"","sources":["../src/IngressClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/IngressClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { IngressAudioOptions, IngressInput, IngressVideoOptions } from '@livekit/protocol';\nimport {\n CreateIngressRequest,\n DeleteIngressRequest,\n IngressInfo,\n ListIngressRequest,\n ListIngressResponse,\n UpdateIngressRequest,\n} from '@livekit/protocol';\nimport ServiceBase from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'Ingress';\n\nexport interface CreateIngressOptions {\n /**\n * ingress name. optional\n */\n name?: string;\n /**\n * name of the room to send media to. required\n */\n roomName?: string;\n /**\n * unique identity of the participant. required\n */\n participantIdentity: string;\n /**\n * participant display name\n */\n participantName?: string;\n /**\n * metadata to attach to the participant\n */\n participantMetadata?: string;\n /**\n * @deprecated use `enableTranscoding` instead.\n * whether to skip transcoding and forward the input media directly. Only supported by WHIP\n */\n bypassTranscoding?: boolean;\n /**\n * whether to enable transcoding or forward the input media directly.\n * Transcoding is required for all input types except WHIP. For WHIP, the default is to not transcode.\n */\n enableTranscoding?: boolean | undefined;\n /**\n * url of the media to pull for ingresses of type URL\n */\n url?: string;\n /**\n * custom audio encoding parameters. optional\n */\n audio?: IngressAudioOptions;\n /**\n * custom video encoding parameters. optional\n */\n video?: IngressVideoOptions;\n}\n\nexport interface UpdateIngressOptions {\n /**\n * ingress name. optional\n */\n name: string;\n /**\n * name of the room to send media to.\n */\n roomName?: string;\n /**\n * unique identity of the participant.\n */\n participantIdentity?: string;\n /**\n * participant display name\n */\n participantName?: string;\n /**\n * metadata to attach to the participant\n */\n participantMetadata?: string;\n /**\n * @deprecated use `enableTranscoding` instead\n * whether to skip transcoding and forward the input media directly. Only supported by WHIP\n */\n bypassTranscoding?: boolean | undefined;\n /**\n * whether to enable transcoding or forward the input media directly.\n * Transcoding is required for all input types except WHIP. For WHIP, the default is to not transcode.\n */\n enableTranscoding?: boolean | undefined;\n /**\n * custom audio encoding parameters. optional\n */\n audio?: IngressAudioOptions;\n /**\n * custom video encoding parameters. optional\n */\n video?: IngressVideoOptions;\n}\n\nexport interface ListIngressOptions {\n /**\n * list ingress for one room only\n */\n roomName?: string;\n\n /**\n * list ingress by ID\n */\n ingressId?: string;\n}\n\n/**\n * Client to access Ingress APIs\n */\nexport class IngressClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param inputType - protocol for the ingress\n * @param opts - CreateIngressOptions\n */\n async createIngress(inputType: IngressInput, opts: CreateIngressOptions): Promise<IngressInfo> {\n let name: string = '';\n let participantName: string = '';\n let participantIdentity: string = '';\n let bypassTranscoding: boolean = false;\n let url: string = '';\n\n if (opts == null) {\n throw new Error('options dictionary is required');\n }\n\n const roomName: string | undefined = opts.roomName;\n const enableTranscoding: boolean | undefined = opts.enableTranscoding;\n const audio: IngressAudioOptions | undefined = opts.audio;\n const video: IngressVideoOptions | undefined = opts.video;\n const participantMetadata: string | undefined = opts.participantMetadata;\n\n name = opts.name || '';\n participantName = opts.participantName || '';\n participantIdentity = opts.participantIdentity || '';\n bypassTranscoding = opts.bypassTranscoding || false;\n url = opts.url || '';\n\n if (typeof roomName == 'undefined') {\n throw new Error('required roomName option not provided');\n }\n\n if (participantIdentity == '') {\n throw new Error('required participantIdentity option not provided');\n }\n\n const req = new CreateIngressRequest({\n inputType,\n name,\n roomName,\n participantIdentity,\n participantMetadata,\n participantName,\n bypassTranscoding,\n enableTranscoding,\n url,\n audio,\n video,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateIngress',\n req,\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param ingressId - ID of the ingress to update\n * @param opts - UpdateIngressOptions\n */\n async updateIngress(ingressId: string, opts: UpdateIngressOptions): Promise<IngressInfo> {\n const name: string = opts.name || '';\n const roomName: string = opts.roomName || '';\n const participantName: string = opts.participantName || '';\n const participantIdentity: string = opts.participantIdentity || '';\n const { participantMetadata } = opts;\n const { audio, video, bypassTranscoding, enableTranscoding } = opts;\n\n const req = new UpdateIngressRequest({\n ingressId,\n name,\n roomName,\n participantIdentity,\n participantName,\n participantMetadata,\n bypassTranscoding,\n enableTranscoding,\n audio,\n video,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'UpdateIngress',\n req,\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listIngress(opts)` or `listIngress(arg)` instead\n * @param roomName - list ingress for one room only\n */\n async listIngress(roomName?: string): Promise<Array<IngressInfo>>;\n /**\n * @param opts - list options\n */\n async listIngress(opts?: ListIngressOptions): Promise<Array<IngressInfo>>;\n /**\n * @param arg - list room name or options\n */\n async listIngress(arg?: string | ListIngressOptions): Promise<Array<IngressInfo>> {\n let req: Partial<ListIngressRequest> = {};\n if (typeof arg === 'string') {\n req.roomName = arg;\n } else if (arg) {\n req = arg;\n }\n const data = await this.rpc.request(\n svc,\n 'ListIngress',\n new ListIngressRequest(req).toJson(),\n await this.authHeader({ ingressAdmin: true }),\n );\n return ListIngressResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param ingressId - ingress to delete\n */\n async deleteIngress(ingressId: string): Promise<IngressInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteIngress',\n new DeleteIngressRequest({ ingressId }).toJson(),\n await this.authHeader({ ingressAdmin: true }),\n );\n return IngressInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n}\n"],"mappings":"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","names":[]}