Collections & Knowledge

Concessions

Access the complete dataset of Movie Theater concession stand items with typed price and tag information using the chainable ConcessionQuery API.

Quick Start

import { concessions } from 'stardew-valley-data'

// Get all concession items
const all = concessions().get()

// Find a specific item by name
const popcorn = concessions().findByName('Popcorn')

// Get sweet concessions sorted by price
const sweets = concessions().byTag('sweet').sortByPrice().get()

// Get the most expensive items
const priciest = concessions().sortByPrice('desc').get()

Type Definition

Each concession record conforms to the Concession interface:

FieldTypeDescription
idstringUnique identifier for the concession item.
namestringDisplay name of the concession.
pricenumberGold cost at the concession stand.
tagsConcessionTag[]Flavor and category tags for the item.
imagestringPath to the concession image.

ConcessionTag

'sweet' | 'candy' | 'drink' | 'hot' | 'healthy' | 'sour' | 'fatty' | 'sandwich' | 'burger' | 'cold' | 'salty' | 'gourmet' | 'joja'

Query Methods

ConcessionQuery extends QueryBase and inherits five terminal methods shared by all query builders:

MethodReturnsDescription
get()Concession[]Return all results as an array.
first()Concession | undefinedReturn the first result.
find(id)Concession | undefinedFind a concession by exact ID.
findByName(name)Concession | undefinedFind a concession by name (case-insensitive).
count()numberReturn the number of results.

Filter Methods

MethodReturnsDescription
byTag(tag)ConcessionQueryFilter to items that include the given tag.

Sort Methods

MethodReturnsDescription
sortByPrice(order?)ConcessionQuerySort by price. Pass 'asc' (default) or 'desc'.
sortByName(order?)ConcessionQuerySort alphabetically by name. Pass 'asc' (default) or 'desc'.

Examples

List all concessions by price

import { concessions } from 'stardew-valley-data'

const sorted = concessions().sortByPrice().get()

sorted.forEach((c) => {
  console.log(`${c.name}: ${c.price}g — Tags: ${c.tags.join(', ')}`)
})

Find drinks at the concession stand

import { concessions } from 'stardew-valley-data'

const drinks = concessions().byTag('drink').sortByName().get()

drinks.forEach((d) => {
  console.log(`${d.name} (${d.price}g)`)
})

Find items with multiple tags

import { concessions } from 'stardew-valley-data'

// Chain tag filters to find items that are both sweet and cold
const sweetAndCold = concessions().byTag('sweet').byTag('cold').get()

sweetAndCold.forEach((c) => {
  console.log(`${c.name}: ${c.tags.join(', ')}`)
})

Get the cheapest concession

import { concessions } from 'stardew-valley-data'

const cheapest = concessions().sortByPrice().first()

if (cheapest) {
  console.log(`Cheapest: ${cheapest.name} at ${cheapest.price}g`)
}

Wrap a pre-filtered array

You can pass an existing Concession[] array into the concessions() function to create a new query from it:

import { concessions } from 'stardew-valley-data'

const myList = concessions().byTag('salty').get()
const sorted = concessions(myList).sortByPrice('desc').get()
Previous
Secret notes