UNPKG

openblox

Version:

Roblox API Wrapper For Both Classic And OpenCloud APIs.

108 lines (107 loc) 4.52 kB
"use strict"; 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 });