UNPKG

@juice789/tf2items

Version:
166 lines (147 loc) 5.1 kB
import removeAccents from 'remove-accents' import { itemFromSku } from './sku.js' import { toBpQuality, toBpName, toBpPriceIndex } from './skuBp.js' import schemaHelper from './schemaHelper.json' with { type: 'json' } import schema from './schema.json' with { type: 'json' } import { safeItems as items } from './schemaItems.js' const { qualityNames, killstreakTiers, wears } = schemaHelper const { particleEffects, textures } = schema export const marketHashNameFromSku = (sku) => { const { defindex, quality, killstreakTier, target, output, oq, elevated, festivized, texture, wear, australium, series, uncraftable } = itemFromSku(sku) const chemSeries = { 20000: 1, 20005: 2 } const marketHashName = [ oq && oq !== '6' && qualityNames[oq], elevated && 'Strange', !['6', '15'].includes(quality) && qualityNames[quality], festivized && 'Festivized', killstreakTier && killstreakTiers[killstreakTier], australium && 'Australium', texture && textures[texture], target && items[target].item_name, output && items[output].item_name, items[defindex].propername === '1' && quality.toString() === '6' && !elevated && !festivized && !killstreakTier && 'The', items[defindex].item_name, wear && '(' + wears[wear] + ')', chemSeries[defindex] && 'Series #' + chemSeries[defindex], series && !items[defindex].seriesHidden && 'Series #' + series ].filter(Boolean).join(' ') return marketHashName } export const manncoUrl = (sku) => { const { defindex, quality, uncraftable, killstreakTier, target, output, oq, elevated, festivized, texture, wear, australium, series, effect, rch } = itemFromSku(sku) const chemSeries = { 20000: 1, 20005: 2 } const manncoName = [ 440, uncraftable && 'uncraftable', oq && oq !== '6' && qualityNames[oq], effect && particleEffects[effect], elevated && 'strange', ['6', '15'].includes(quality) === false && qualityNames[quality], festivized && 'festivized', killstreakTier && killstreakTiers[killstreakTier], australium && 'australium', texture && textures[texture], target && items[target].item_name, output && items[output].item_name, items[defindex].propername === '1' && quality.toString() === '6' && !elevated && !festivized && !killstreakTier && 'The', defindex === '0000' ? (rch ? items[rch].item_name.replace('\\n', ' ') : 'random craft hat') : items[defindex].item_name.replace('\\n', ' '), wear && wears[wear], chemSeries[defindex] && 'series-' + chemSeries[defindex], series && (!items[defindex].seriesHidden || ['111', '112', '113', '114', '115', '116'].includes(series)) && 'series-' + series ].filter(Boolean).join('-') const url = removeAccents(manncoName).replaceAll(/[^0-9a-zA-Z -]/g, '').replaceAll(' ', '-').toLowerCase() return 'https://mannco.store/item/' + url } export const scmUrl = (sku) => { const marketHashName = marketHashNameFromSku(sku) return marketHashName.includes('Undefined item') ? '#' + encodeURIComponent(marketHashName) : 'https://steamcommunity.com/market/listings/440/' + encodeURIComponent(marketHashName) } export const bpUrl = (sku) => { const { uncraftable } = itemFromSku(sku) const bpUrl = [ toBpQuality(sku), encodeURIComponent(toBpName(sku)), 'Tradable', uncraftable === true ? 'Non-Craftable' : 'Craftable', toBpPriceIndex(sku) ].filter(Boolean).join('/') return 'https://backpack.tf/stats/' + bpUrl } export const marketplaceUrl = (sku) => { const { defindex, quality, uncraftable, killstreakTier, target, output, oq, elevated, festivized, texture, wear, australium, series, craft, effect, rch } = itemFromSku(sku) const marketplaceSku = [ defindex === '0000' ? (rch || '-100') : defindex, quality, effect && 'u' + effect, wear && 'w' + wear, texture && 'pk' + texture, elevated && 'strange', series && 'c' + series, craft && 'n' + craft, uncraftable && 'uncraftable', australium && 'australium', killstreakTier && 'kt-' + killstreakTier, festivized && 'festive', target && 'td-' + target, output && 'od-' + output, oq && 'oq-' + oq ].filter(Boolean).join(';') return 'https://marketplace.tf/items/tf2/' + marketplaceSku }