npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

steam-interaction

v1.0.0

Published

```ts const cookie = { steamRefresh_steam: '', steamLoginSecure: `76561199035699070%7C%7CeyAidHlwIjogIkpXVCIsICJhbGciOiAiRWREU0EiIH0.eyAiaXNzIjogInI6MERENl8yM0FCQ0U5Rl80QUEwMyIsICJzdWIiOiAiNzY1NjExOTkwMzU2OTkwNzAiLCA

Downloads

4

Readme

Cookies Example

  const cookie = {
        steamRefresh_steam:         '',
        steamLoginSecure:           `76561199035699070%7C%7CeyAidHlwIjogIkpXVCIsICJhbGciOiAiRWREU0EiIH0.eyAiaXNzIjogInI6MERENl8yM0FCQ0U5Rl80QUEwMyIsICJzdWIiOiAiNzY1NjExOTkwMzU2OTkwNzAiLCAiYXVkIjogWyAid2ViIiBdLCAiZXhwIjogMTcwNDY3MDU1MiwgIm5iZiI6IDE2OTU5NDI4MjIsICJpYXQiOiAxNzA0NTgyODIyLCAianRpIjogIjBERDlfMjNBQkNFQTRfODNCNTkiLCAib2F0IjogMTcwNDU1NjE2MywgInJ0X2V4cCI6IDE3MjI5MzQyNjUsICJwZXIiOiAwLCAiaXBfc3ViamVjdCI6ICIxNjYuMS4yMzAuMjU0IiwgImlwX2NvbmZpcm1lciI6ICIxNjYuMS4yMzAuMjU0IiB9.qtwJQ35SmJrsJSh-CLeUcZdri0r_G_fyimag1Ho6attigdwreJndbpKFkNoyQzbeOjKXEFpPB5h7GUl8Eo5WCA`,
        sessionid:                  '22c0035bf55f53b4b01e4a1a',
        steamCountry:               '',
        steamDataId:                '',
        steamRememberLogin:         'True',
        Steam_Language:             'english',
        steamMachineAuth:           '',
        webTradeEligibility:        '%7B%22allowed%22%3A0%2C%22reason%22%3A16416%2C%22allowed_at_time%22%3A1697620832%2C%22steamguard_required_days%22%3A15%2C%22new_device_cooldown_days%22%3A0%2C%22expiration%22%3A1697016332%2C%22time_checked%22%3A1697016032%7D',
        timezoneOffset:             '10800,0'
    } as Cookie

Credentials Example

  const accountCredentials = new AccountCredentials();
  accountCredentials.login = "Your steam login";
  accountCredentials.password = "Your steam password";
  accountCredentials.shared_secret = "Your steam shared secret";
  accountCredentials.identity_secret = "Your steam identity secret";

Services

Login Service

Login method

 

  const loginService: LoginService = new LoginService({
		timezone: "Your timezone (by default 7200,0)",
		steamLanguage: "Your steam language"
	},
		'Your proxy string (optional parameter)'
	);
  //This method return cookie, acceesToken, RefreshToken and steam sessionid
const res = await loginService.login(accountCredentials);  

Web Login Service

Login via credentials method

 const credentials = new AccountCredentials();
  credentials.login = "Your steam login";
  credentials.password = "Your steam password";
  credentials.shared_secret = "Your steam shared secret";
  credentials.identity_secret = "Your steam identity secret";
const webLoginService: WebLoginService = new WebLoginService({
		timezone: "Your timezone (by default 7200,0)",
		steamLanguage: "Your steam language (by default 'english')"
	},
		'Your proxy string (optional parameter)'
  );

//This method return cookie, acceesToken, RefreshToken and steam sessionid
const loginResult = await webLoginService.logOnViaCredentials(credentials);

BuyOrderService

Place buy order method

 
  const buyOrderService: BuyOrderService = new BuyOrderService(
		cookie, //Your Cookie object
		'Your steam sessionid',
		'Your proxy string (optional parameter)'
	);
  const order: Order = {
			currency: ECurrencyCode.RUB, //Enter your currency from ECurrencyCode enum
			appid: 'ID of the game to which the item belongs (such as 570)',
			market_hash_name: "Your market item name with spaces",
			price_total: 123, //Total of your order in format without comma (1,23 = 123)
			quantity: 1,  // Quantity of items
		};
  const res = await buyOrderService.placeBuyOrder(order);

Get Item Orders

const params = { nameId: "176321160", currency: ECurrencyCode.RUB, appId: 570, itemName: "Doll of the Dead" };
const res = await buyOrderService.getItemOrdersHistory(params);

Cancel Order

const orderId = "6621500342";   //You can find this from getItemOrdersHistory or steam page
const res = await buyOrderService.cancelBuyOrder(orderId);

Get buy order status

const orderId = "6621666187";  //You can find this from getItemOrdersHistory or steam page
const res = await buyOrderService.getBuyOrderStatus(orderId);

ConfirmationService

Get all confirmations

const confirmationService: ConfirmationService = new ConfirmationService(
		cookie,
		{
			mobileOs: "android",    //Optional
			profileId64: '783758372894', //Your steam id 64
		},
		credentials.identity_secret,
		'Your proxy string (optional parameter)'
);
const confs: Confirmation[] = await confirmService.getConfirmations();

Respond to one confirmation

const res: boolean = await confirmService.respondToConfirmation(
				confs[0].id,                //Confirmation Id
				confs[0]?.nonce,            //One-time code to use confirmation 
				ConfirmationAction.Accept   //Accept or Decline
			);

Respond to all confirmation

	 const res: boolean = await confirmService.respondToAllConfirmations(ConfirmationAction.Accept);

CookieValidationService

 let cookieValidationService: CookieValidationService = new CookieValidationService(cookie, 'Your proxy string (optional parameter)');
await cookieValidationService.isCookieHaveValidSession()	//Check cookie valid session

InventoryService

Get all inventory Test

let inventoryService: InventoryService = new InventoryService(cookie, 'Your proxy string (optional parameter)');
const params: GetInventoryParams = {
	appID: Apps.DOTA2,						// Game id (570 fro DOTA2)
	profileId64: "76561199035699070",		//Steam id 64 account you want to view inventory
};
const inventory: InventoryAssetItem[] = await inventoryService.getAllInventoryAssets(params.profileId64, params.appID);

StoreService

const storeService: StoreService = new StoreService(cookie, 'Your steam sessionid', 'Your proxy string (optional parameter)');
const res = await storeService.redeemWalletCode("Your wallet code");

TradeOfferService

Get All Trade offers (sended and received)

	const tradeOfferService: TradeOfferService = new TradeOfferService(
		{
			apiKey: 'Your steam API key',
			sessionId: 'Your steam sessionid',
		},
		cookie,
		'Your proxy string (optional parameter)'
	);
 const offers = await tradeOfferService.getOffers(EOfferFilter.All);

Get concrete offer information

	const offerID = "5489849179";	//You can get this info from getOffers method or watch from steam page
	const trade = await tradeOfferService.getOffer(offerID);

Create simple empty trade offer

const partnerSteamId64 = "76561199111873879"	//Your partner steam id 64		
const tradeUrlToken = "lyqEqgxg"				//You can find this token from partner trade url
const res = await tradeOfferService.createOffer(partnerSteamId64, tradeUrlToken);

Send new trade offer. This example shows how to create a new trade offer, add one item from your inventory and one item from your partner’s inventory to it, and send the offer

	const offer = await createSimpleTradeOffer(tradeOfferService);
	const response = await tradeOfferService.sendOffer(offer);

async function createSimpleTradeOffer(tradeOfferService: TradeOfferService): Promise<TradeOffer> {
	const partnerId = "76561199032664256";
	const tradeOffer = tradeOfferService.createOffer(partnerId, "lyqEqgxg");

	const myItem: InventoryAssetItem | null = await getFirstInventoryItem(TestConfig.steamId.getSteamID64());
	if (myItem) {
		tradeOffer.addMyItem(myItem);
	}

	const partnerItem: InventoryAssetItem | null = await getFirstInventoryItem(partnerId);
	if (partnerItem) {
		tradeOffer.addTheirItem(partnerItem);
	}

	tradeOffer.message = "This trade offer for you";
	return tradeOffer;
}
async function getFirstInventoryItem(profileId: string): Promise<InventoryAssetItem | null> {
	const inventoryService = new InventoryService(TestConfig.cookie, undefined);
	const inventoryParams: GetInventoryParams = {
		profileId64: profileId,
		appID: Apps.DOTA2,
		count: 1,
	};
	const inventory: GetInventoryResult | null = await inventoryService.getInventory(inventoryParams);
	if (!inventory?.assets) {
		return null;
	}
	return inventory?.assets[0];
}

Accept active trade offer

	const offers = await getOffers(tradeOfferService);
	//We finded one active trade offer from your steam account
	const activeOffer = offers?.receivedTradeOffers.find((x) => x.tradeOfferState == ETradeOfferState.Active);
	const res = await tradeOfferService.acceptOffer(activeOffer.tradeOfferId, activeOffer.partnerId64);

Decline trade offer

const offers = await getOffers(tradeOfferService);
const activeOffer = offers?.sendedTradeOffers.find(
	(x) => x.tradeOfferState == ETradeOfferState.Active ||
	x.tradeOfferState == ETradeOfferState.CreatedNeedsConfirmation
);
const res: boolean = await tradeOfferService.cancelOffer(activeOffer.tradeOfferId);

MarketService

Get price history example

const historyItem: PriceHistoryItem = {
	currency: ECurrencyCode.GBP,					
	appid: Apps.CSGO,
	itemName: "Antwerp 2022 Legends Sticker Capsule",
	encodedName: "",		//This parameter is optional, is your itemName but url encoded
};
const priceHistory = await marketService.getPriceHistory(historyItem);

Get Market history by page parameters

const historyPage: MarketHistoryPage = {
		page: 1,
		cntPerPage: 100,
	};
const marketHistory = await marketService.getMarketHistory(historyPage);

Get item info by game id and item name

const itemInfo = await marketService.getItemInfo(Apps.DOTA2, "Helm of Retribution");

Get my listings

  const params = {
			currentPage: 1,
			cntPerPage: 100,
			currency: ECurrencyCode.RUB,
		}
  const page = await marketService.getMyListings(params);

Get market listing by page

const params: ExtendedListingsPage = {
		marketItemName: "Mega-Kills: Cave Johnson",
		currency: ECurrencyCode.USD,
		cntPerPage: 100,	//Quantity elements on one page
		currentPage: 5,		//Current page number
		appId: 570,
	};
const page = await marketService.getMarketListings(params);

Sell item

	const appId = Apps.DOTA2;
	const params: SellParams = {
		amount: 1,														//Quantity items
		contextid: ContextManager.getContextId(appId),					//Get information about your game id context (such as for 570 is context = 2)
		appid: appId,
		assetid: "28377029318",											//You can find assetid from getMarketListing method
		price: 100,														//price fro item without comma (100 = 1,00)
	};
	const res = await marketService.sell(params, '76561199032664256');	//Enter your steamId64

Buy item example


	const marketItemInfo: MarketItemInfo = {
		marketItemName: "Summer's Mirth",
		appId: 570
	}
	const listingId = "4376994758654887310";	//you can find this listing id from getMarketListing method or steam market item page
	const buyParams: BuyParams = {
		subtotal: 84,					//	price of the item itself
		fee: 12,						// 	steam commission for purchase
		total: 96,						// 	Your full price with fee+subtotal
		currency: ECurrencyCode.RUB,	//	Currency
		save_my_address: 0,				//	Is optional parameter for steam
		quantity: 1,
	};
	const res = await marketService.buy(buyParams,listingId,marketItemInfo);

Remove item example

	const listingId: string = "7231148125631140232";
	const res: boolean = await marketService.removeListing(listingid);