const { AccessToken } = require('livekit-server-sdk');
require('dotenv').config();
const apiKey = process.env.liveKitKey;
const apiSecret = process.env.liveKitSecret;
/**
* Creates a LiveKit JWT for a participant.
*
* @param {Object} params - Token creation input.
* @param {string} params.roomName - Target room to join.
* @param {string} params.username - Participant identity.
* @param {string} [params.metadata] - Optional participant metadata JSON string.
* @returns {Promise<string>} Signed JWT token.
*/
async function createToken({
roomName,
username,
metadata,
}) {
const at = new AccessToken(apiKey, apiSecret, { identity: username, metadata });
at.addGrant({ roomJoin: true, room: roomName });
const token = await at.toJwt();
return token;
}
module.exports = createToken;
// This code allows you to call from the cli
if (require.main === module) {
const roomName = process.argv[2] || 'test-room';
const username = process.argv[3] || 'host';
createToken({ roomName, username })
.then(token => {
console.log({token});
})
.catch(console.error);
}