@j03fr0st/pubg-ts
Version:
A comprehensive TypeScript wrapper for the PUBG API
152 lines (127 loc) • 5.64 kB
text/typescript
import 'dotenv/config';
import { assetManager, type ItemId, PubgClient, type VehicleId } from '../src/index';
async function unifiedAssetsExample() {
const client = new PubgClient({
apiKey: process.env.PUBG_API_KEY || 'your-api-key-here',
shard: 'pc-na',
});
console.log('=== PUBG Unified Assets Example ===\n');
// 1. Type-safe item access with zero-latency local data
console.log('1. Type-Safe Item Access:');
const ak47Id: ItemId = 'Item_Weapon_AK47_C';
const itemName = client.assets.getItemName(ak47Id);
const itemInfo = client.assets.getItemInfo(ak47Id);
console.log(` Item ID: ${ak47Id}`);
console.log(` Name: ${itemName}`);
if (itemInfo) {
console.log(` Category: ${itemInfo.category}`);
console.log(` Subcategory: ${itemInfo.subcategory}`);
}
console.log();
// 2. Enhanced search and filtering (new capabilities)
console.log('2. Enhanced Search & Filtering:');
const akWeapons = client.assets.searchItems('AK');
const allWeapons = client.assets.getItemsByCategory('weapon');
console.log(` Found ${akWeapons.length} items matching "AK"`);
akWeapons.slice(0, 3).forEach((item) => {
console.log(` - ${item.name} (${item.category})`);
});
console.log(` Total weapons: ${allWeapons.length}`);
console.log();
// 3. Vehicle information with type safety
console.log('3. Vehicle Information:');
const vehicleId: VehicleId = 'BP_Motorbike_04_C';
const vehicleName = client.assets.getVehicleName(vehicleId);
const vehicleInfo = client.assets.getVehicleInfo(vehicleId);
console.log(` Vehicle: ${vehicleName}`);
if (vehicleInfo) {
console.log(` Type: ${vehicleInfo.type}`);
console.log(` Category: ${vehicleInfo.category}`);
}
console.log();
// 4. Complete map coverage
console.log('4. Map Information:');
const allMaps = client.assets.getAllMaps();
const mapName = client.assets.getMapName('Baltic_Main');
console.log(` Baltic map: ${mapName}`);
console.log(` Available maps (${allMaps.length} total):`);
allMaps.slice(0, 5).forEach((map) => {
console.log(` - ${map.name} (${map.id})`);
});
console.log();
// 5. Season data by platform
console.log('5. Season Information:');
const pcSeasons = client.assets.getSeasonsByPlatform('PC');
const currentSeason = client.assets.getCurrentSeason('PC');
console.log(` Total PC seasons: ${pcSeasons.length}`);
if (currentSeason) {
console.log(` Current season: ${currentSeason.name}`);
console.log(` Start date: ${currentSeason.startDate}`);
console.log(` Is active: ${currentSeason.isActive}`);
}
console.log();
// 6. Survival titles with proper rating ranges
console.log('6. Survival Titles:');
const ratings = [100, 500, 1200, 1500, 2000];
for (const rating of ratings) {
const title = client.assets.getSurvivalTitle(rating);
if (title) {
console.log(
` Rating ${rating}: ${title.title} Level ${title.level} (${title.pointsRequired} points)`
);
} else {
console.log(` Rating ${rating}: No title found`);
}
}
console.log();
// 7. Additional dictionary features
console.log('7. Additional Dictionaries:');
const damageCauser = client.assets.getDamageCauserName('Item_Weapon_AK47_C');
const damageType = client.assets.getDamageTypeCategory('Weapon');
const gameMode = client.assets.getGameModeName('squad');
console.log(` Damage causer for AK47: ${damageCauser}`);
console.log(` Damage type for 'Weapon': ${damageType}`);
console.log(` Game mode name for 'squad': ${gameMode}`);
console.log();
// 8. Asset URLs with type safety
console.log('8. Asset URLs:');
const weaponIconUrl = client.assets.getWeaponAssetUrl(ak47Id, 'icon');
const weaponImageUrl = client.assets.getWeaponAssetUrl(ak47Id, 'image');
const vehicleIconUrl = client.assets.getVehicleAssetUrl(vehicleId, 'icon');
console.log(` AK47 Icon: ${weaponIconUrl}`);
console.log(` AK47 Image: ${weaponImageUrl}`);
console.log(` Motorbike Icon: ${vehicleIconUrl}`);
console.log();
// 9. Comprehensive asset statistics
console.log('9. Asset Statistics:');
const stats = client.assets.getAssetStats();
console.log(` Total items: ${stats.totalItems}`);
console.log(` Total vehicles: ${stats.totalVehicles}`);
console.log(` Total maps: ${stats.totalMaps}`);
console.log(' Items by category:');
Object.entries(stats.categoryCounts)
.slice(0, 5)
.forEach(([category, count]) => {
console.log(` - ${category}: ${count}`);
});
console.log();
// 10. Using the standalone asset manager
console.log('10. Standalone Asset Manager:');
const standaloneItemName = assetManager.getItemName('Item_Heal_FirstAid_C');
const standaloneVehicleName = assetManager.getVehicleName('BP_Pickup_06_C');
console.log(` FirstAid name: ${standaloneItemName}`);
console.log(` Pickup truck name: ${standaloneVehicleName}`);
console.log();
console.log('=== Unified Assets Example Complete ===');
console.log('\n✨ Benefits of Unified Asset Manager:');
console.log(' - Zero network requests (all data is local by default)');
console.log(' - Full TypeScript type safety with IntelliSense');
console.log(' - Enhanced search and filtering capabilities');
console.log(' - Comprehensive PUBG asset coverage');
console.log(' - Backward compatibility with existing APIs');
console.log(' - Single unified interface for all asset operations');
console.log(' - Performance caching and smart categorization');
}
// Example usage (uncomment to run):
// unifiedAssetsExample().catch(console.error);
export { unifiedAssetsExample };