lokalise-mcp
Version:
The Lokalise MCP Server brings Lokalise's localization power to Claude and AI assistants—manage projects, keys, and translations by chat.
128 lines (127 loc) • 4.43 kB
JavaScript
/**
* Teamusers Service
*
* Service layer for interacting with Lokalise Team Users API.
* Handles all API communication and data transformation.
*/
import { createUnexpectedError } from "../../shared/utils/error.util.js";
import { Logger } from "../../shared/utils/logger.util.js";
import { getLokaliseApi } from "../../shared/utils/lokalise-api.util.js";
const logger = Logger.forContext("teamusers.service.ts");
// ============================================================================
// Service Implementation
// ============================================================================
/**
* Teamusers service for Lokalise API operations
*/
export const teamusersService = {
/**
* List team users
*/
async list(args) {
const methodLogger = logger.forMethod("list");
methodLogger.info("Listing team users", {
teamId: args.teamId,
page: args.page,
limit: args.limit,
});
try {
const api = getLokaliseApi();
const result = await api.teamUsers().list({
team_id: args.teamId,
page: args.page,
limit: args.limit,
});
methodLogger.info("Listed team users successfully", {
teamId: args.teamId,
count: result.items.length,
totalResults: result.totalResults,
});
return result;
}
catch (error) {
methodLogger.error("Failed to list team users", { error, args });
throw createUnexpectedError(`Failed to list team users for team ${args.teamId}`, error);
}
},
/**
* Get a specific team user
*/
async get(args) {
const methodLogger = logger.forMethod("get");
methodLogger.info("Getting team user", {
teamId: args.teamId,
userId: args.userId,
});
try {
const api = getLokaliseApi();
const result = await api.teamUsers().get(args.userId, {
team_id: args.teamId,
});
methodLogger.info("Retrieved team user successfully", {
teamId: args.teamId,
userId: args.userId,
});
return result;
}
catch (error) {
methodLogger.error("Failed to get team user", { error, args });
throw createUnexpectedError(`Failed to get team user ${args.userId} from team ${args.teamId}`, error);
}
},
/**
* Update a team user's role
*/
async update(args) {
const methodLogger = logger.forMethod("update");
methodLogger.info("Updating team user", {
teamId: args.teamId,
userId: args.userId,
role: args.role,
});
try {
const api = getLokaliseApi();
const updateParams = {
role: args.role,
};
const result = await api
.teamUsers()
.update(args.userId, updateParams, { team_id: args.teamId });
methodLogger.info("Updated team user successfully", {
teamId: args.teamId,
userId: args.userId,
newRole: args.role,
});
return result;
}
catch (error) {
methodLogger.error("Failed to update team user", { error, args });
throw createUnexpectedError(`Failed to update team user ${args.userId} in team ${args.teamId}`, error);
}
},
/**
* Delete a team user
*/
async delete(args) {
const methodLogger = logger.forMethod("delete");
methodLogger.info("Deleting team user", {
teamId: args.teamId,
userId: args.userId,
});
try {
const api = getLokaliseApi();
const result = await api.teamUsers().delete(args.userId, {
team_id: args.teamId,
});
methodLogger.info("Deleted team user successfully", {
teamId: args.teamId,
userId: args.userId,
});
return result;
}
catch (error) {
methodLogger.error("Failed to delete team user", { error, args });
throw createUnexpectedError(`Failed to delete team user ${args.userId} from team ${args.teamId}`, error);
}
},
};