UNPKG

tebex_headless

Version:
490 lines (488 loc) 13.6 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // index.ts var tebex_headless_exports = {}; __export(tebex_headless_exports, { Request: () => Request, TebexHeadless: () => TebexHeadless }); module.exports = __toCommonJS(tebex_headless_exports); var import_axios = __toESM(require("axios")); var baseUrl = "https://headless.tebex.io"; async function Request(webstoreIdentifier, privateKey, method, identifier, route, path, params, body) { if (params) { for (const [key, value] of Object.entries(params)) { if (typeof value === "boolean") { params[key] = value ? 1 : 0; } } } const config = { url: `${baseUrl}/api/${route}/${identifier}${path ?? ""}`, params, method, data: body, headers: { "Content-Type": "application/json" } }; if (webstoreIdentifier && privateKey) { config.auth = { username: webstoreIdentifier, password: privateKey }; } const response = await import_axios.default.request(config); return response.data; } var TebexHeadless = class { constructor(webstoreIdentifier, privateKey) { this.webstoreIdentifier = webstoreIdentifier; this.privateKey = privateKey; } /** * @function getCategories * @description A function to get the categories from the Tebex Headless API * * @param {boolean} includePackages Whether to include the packages in the categories * @param {string} basketIdent The identifier of the basket * @param {string} ipAddress The IP address of the user * * @returns {Promise<Category[]>} */ async getCategories(includePackages, basketIdent, ipAddress) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", "/categories", { includePackages, basketIdent, ipAddress } ); return data; } /** * @function getCategory * @description A function to get a category from the Tebex Headless API * * @param {number} id The ID of the category * @param {boolean} includePackages Whether to include the packages in the category * @param {string} basketIdent The identifier of the basket * @param {string} ipAddress The IP address of the user * * @returns {Promise<Category>} */ async getCategory(id, includePackages, basketIdent, ipAddress) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", `/categories/${id}`, { includePackages, basketIdent, ipAddress } ); return data; } /** * @function apply * @description A function to apply a coupon, giftcard or creator code to a basket * * @param {A} body The body of the request * @param {string} basketIdent The identifier of the basket * @param {ApplyType} type The type of the apply request * * @returns {Promise<Message>} */ async apply(basketIdent, type, body) { return await Request( this.webstoreIdentifier, this.privateKey, "post", this.webstoreIdentifier, "accounts", `/baskets/${basketIdent}/${type}`, {}, body ); } /** * @function remove * @description A function to remove a coupon, giftcard or creator code from a basket * * @param {A} body The body of the request * @param {string} basketIdent The identifier of the basket * @param {ApplyType} type The type of the apply request * * @returns {Promise<Message>} */ async remove(basketIdent, type, body) { return await Request( this.webstoreIdentifier, this.privateKey, "post", this.webstoreIdentifier, "accounts", `/baskets/${basketIdent}/${type}/remove`, {}, body ); } /** * @function getPackage * @description A function to get a package from the Tebex Headless API * * @param {number} id The ID of the package * @param {string} basketIdent The identifier of the basket * @param {string} ipAddress The IP address of the user * * @returns {Promise<Package>} */ async getPackage(id, basketIdent, ipAddress) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", `/packages/${id}`, { basketIdent, ipAddress } ); return data; } /** * @function getPackages * @description A function to get all packages from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {string} ipAddress The IP address of the user * * @returns {Promise<Package[]>} */ async getPackages(basketIdent, ipAddress) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", `/packages`, { basketIdent, ipAddress } ); return data; } /** * @function getBasket * @description A function to get a basket from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * * @returns {Promise<Package[]>} */ async getBasket(basketIdent) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", `/baskets/${basketIdent}` ); return data; } /** * @function createBasket * @description A function to create a basket from the Tebex Headless API * * @param {string} complete_url The complete url * @param {string} cancel_url The cancel url * @param {Record<string, any>} custom The custom object of the basket * @param {boolean} complete_auto_redirect Whether the basket should automatically redirect to the complete url * @param {string} ip_address The IP address of the user * * @returns {Promise<Basket>} */ async createBasket(complete_url, cancel_url, custom, complete_auto_redirect, ip_address) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "post", this.webstoreIdentifier, "accounts", "/baskets", { ip_address }, { complete_url, cancel_url, custom, complete_auto_redirect } ); return data; } /** * @function createMinecraftBasket * @description A function to create a minecraft basket from the Tebex Headless API * * @param {string} username The username of the user * @param {string} complete_url The complete url * @param {string} cancel_url The cancel url * @param {Record<string, any>} custom The custom object of the basket * @param {boolean} complete_auto_redirect Whether the basket should automatically redirect to the complete url * @param {string} ip_address The IP address of the user * * @returns {Promise<Basket>} */ async createMinecraftBasket(username, complete_url, cancel_url, custom, complete_auto_redirect, ip_address) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "post", this.webstoreIdentifier, "accounts", "/baskets", { ip_address }, { username, complete_url, cancel_url, custom, complete_auto_redirect } ); return data; } /** * @function getBasketAuthUrl * @description A function to get the auth url of a basket from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {string} returnUrl The return url of the basket * * @returns {Promise<AuthUrl[]>} The data returned or an axios error */ async getBasketAuthUrl(basketIdent, returnUrl) { return await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", `/baskets/${basketIdent}/auth`, { returnUrl } ); } /** * @function addPackageToBasket * @description A function to add a package to a basket from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {number} package_id The ID of the package * @param {number} quantity The quantity of the package * @param {PackageType} type The type of the package * @param {Record<string, any>} variable_data The variable data of the package * * @returns {Promise<Basket>} */ async addPackageToBasket(basketIdent, package_id, quantity, type, variable_data) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "post", basketIdent, "baskets", "/packages", {}, { package_id, quantity, type, variable_data } ); return data; } /** * @function giftPackage * @description A function to gift a package to a user from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {number} package_id The ID of the package * @param {string} target_username_id The ID of the user to gift the package to * * @returns {Promise<Basket>} */ async giftPackage(basketIdent, package_id, target_username_id) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "post", basketIdent, "baskets", "/packages", {}, { package_id, target_username_id } ); return data; } /** * @function removePackage * @description A function to remove a package from a basket from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {number} package_id The ID of the package * * @returns {Promise<Basket>} */ async removePackage(basketIdent, package_id) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "post", basketIdent, "baskets", "/packages/remove", {}, { package_id } ); return data; } /** * @function updateQuantity * @description A function to update the quantity of a package in a basket from the Tebex Headless API * * @param {string} basketIdent The identifier of the basket * @param {number} package_id The ID of the package * @param {number} quantity The quantity of the package * * @returns {Promise<Basket>} */ async updateQuantity(basketIdent, package_id, quantity) { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "put", basketIdent, "baskets", `/packages/${package_id}`, {}, { quantity } ); return data; } /** * @function getWebstore * @description A function to get the webstore from the Tebex Headless API * * @returns {Promise<Webstore>} */ async getWebstore() { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts" ); return data; } /** * @function getPages * @description A function to get the pages from the Tebex Headless API * * @returns {Promise<Page>} */ async getPages() { const { data } = await Request( this.webstoreIdentifier, this.privateKey, "get", this.webstoreIdentifier, "accounts", "/pages" ); return data; } /** * @function updateTier * @description Update an tier of an package * * @param {unknown} tierId The ID of the tier * @param {number} package_id The ID of the package * * @returns {Promise<Message>} */ async updateTier(tierId, package_id) { return await Request( this.webstoreIdentifier, this.privateKey, "patch", this.webstoreIdentifier, "accounts", `/tiers/${tierId}`, {}, { package_id } ); } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Request, TebexHeadless });