openblox
Version:
Roblox API Wrapper For Both Classic And OpenCloud APIs.
108 lines (107 loc) • 4.52 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var usersQuery_exports = {};
__export(usersQuery_exports, {
Users: () => Users
});
module.exports = __toCommonJS(usersQuery_exports);
var import_cloud = require("../../apis/cloud");
const UsersApi_userInfo = import_cloud.UsersApi.userInfo;
const UsersApi_userThumbnail = import_cloud.UsersApi.userThumbnail;
const userInfoFields = ["createTime", "id", "name", "displayName", "about", "locale", "premium", "idVerified", "socialNetworkProfiles"];
const shellFn = (...args) => null;
function uniq_fast(a) {
var seen = {};
var out = [];
var len = a.length;
var j = 0;
for (var i = 0; i < len; i++) {
var item = a[i];
if (seen[item] !== 1) {
seen[item] = 1;
out[j++] = item;
}
}
return out;
}
const getUserInfoSingle_forId = async (userId, data, fields) => {
const { data: userInfo } = await UsersApi_userInfo({ userId });
data[userId] = userInfo[fields[0]];
};
const getUserInfoMulti_forId = async (userId, data, fields) => {
const data_userId = data[userId];
const { data: userInfo } = await UsersApi_userInfo({ userId });
fields.forEach((field) => data_userId[field] = userInfo[field]);
};
const getUsersInfo_forIds = (fields, getUserInfo_forId) => async (userIds, data) => {
await Promise.all(userIds.map((userId) => getUserInfo_forId(userId, data, fields)));
};
const getUserThumbnailSingle_forId = async (userId, data, data_userId, thumbnail, size, format, shape) => {
const { data: userThumbnail } = await UsersApi_userThumbnail({ userId, size, format, shape });
if (!userThumbnail.done) return;
data[userId] = userThumbnail.response.imageUri;
};
const getUserThumbnailMulti_forId = async (userId, data, data_userId, thumbnail, size, format, shape) => {
const { data: userThumbnail } = await UsersApi_userThumbnail({ userId, size, format, shape });
if (!userThumbnail.done) return;
data_userId[thumbnail] = userThumbnail.response.imageUri;
};
const getUsersThumbnail_forIds = async (userIds, data, getUserThumbnail_forId, thumnail, size, format, shape) => {
return await Promise.all(userIds.map((userId) => getUserThumbnail_forId(userId, data, data[userId], thumnail, size, format, shape)));
};
const getUsersThumbnails_forIds = (fields, getUserThumbnail_forId) => async (userIds, data) => {
await Promise.all(fields.map((field) => getUsersThumbnail_forIds(
userIds,
data,
getUserThumbnail_forId,
field?.[0],
field?.[2],
field?.[3],
field?.[4]
)));
};
const Users = {
get: (fields) => {
fields = uniq_fast(fields);
const isSingleField = fields.length == 1;
const usersInfoFields = fields.filter((field) => userInfoFields.includes(field));
const thisGetUsersInfo_forIds = usersInfoFields.length ? getUsersInfo_forIds(usersInfoFields, isSingleField ? getUserInfoSingle_forId : getUserInfoMulti_forId) : shellFn;
const userThumbnailFields = fields.filter((field) => field.startsWith("thumbnail")).map((field) => [field, ...field.split("/")]);
const thisGetUsersThumbnails_forIds = userThumbnailFields.length ? getUsersThumbnails_forIds(userThumbnailFields, isSingleField ? getUserThumbnailSingle_forId : getUserThumbnailMulti_forId) : shellFn;
const createData = isSingleField ? (userIds) => ({}) : (userIds) => {
const data = {};
userIds.forEach((userId) => data[userId] = {});
return data;
};
return {
forIds: async (userIds) => {
const data = createData(userIds);
await Promise.all([
thisGetUsersInfo_forIds(userIds, data),
thisGetUsersThumbnails_forIds(userIds, data)
]);
return { data };
}
};
}
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Users
});