Shops

Oasis

Access the complete stock list for Sandy's Oasis shop in the Calico Desert with category and day-of-week filtering using the chainable OasisQuery API.

Quick Start

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

// Get all oasis items
const all = oasis().get()

// Get seeds only
const seeds = oasis().seeds().get()

// Get items available on Saturday
const saturday = oasis().byDay('Saturday').get()

// Get permanent stock sorted by price
const permanent = oasis().permanent().sortByPrice().get()

Type Definition

Each item conforms to the OasisItem interface:

FieldTypeDescription
idstringUnique identifier.
namestringDisplay name of the item.
pricenumberPurchase price in gold.
descriptionstringIn-game description text.
imagestringPath to the item's image.
categoryOasisCategoryItem category.
dayOasisDay | undefinedDay of the week when available (undefined for permanent stock).
availabilitystring | undefinedSpecial purchase condition, if any.

OasisCategory

type OasisCategory = 'seed' | 'food' | 'furniture' | 'clothing' | 'special'

OasisDay

type OasisDay =
  | 'Monday'
  | 'Tuesday'
  | 'Wednesday'
  | 'Thursday'
  | 'Friday'
  | 'Saturday'
  | 'Sunday'

Query Methods

OasisQuery extends QueryBase and inherits five terminal methods:

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

Filter Methods

MethodReturnsDescription
seeds()OasisQueryFilter to seeds only.
food()OasisQueryFilter to food items only.
clothing()OasisQueryFilter to clothing items only.
byCategory(category)OasisQueryFilter to items in the given category.
permanent()OasisQueryFilter to items always in stock (no day restriction).
daily()OasisQueryFilter to day-specific rotating items only.
byDay(day)OasisQueryFilter to all items available on the given day (permanent + that day's item).
alwaysAvailable()OasisQueryFilter to items with no special purchase condition.

Sort Methods

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

Examples

List all seeds sorted by price

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

const seeds = oasis().seeds().sortByPrice().get()

seeds.forEach((seed) => {
  console.log(`${seed.name} - ${seed.price}g`)
})

Show the daily rotation

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

const days = [
  'Monday',
  'Tuesday',
  'Wednesday',
  'Thursday',
  'Friday',
  'Saturday',
  'Sunday',
]

days.forEach((day) => {
  const dailyItems = oasis()
    .daily()
    .get()
    .filter((i) => i.day === day)
  dailyItems.forEach((item) => {
    console.log(`${day}: ${item.name} - ${item.price}g`)
  })
})

Get clothing and furniture items

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

const clothing = oasis().clothing().sortByName().get()
const furniture = oasis().byCategory('furniture').sortByName().get()

console.log(`Clothing: ${clothing.length} items`)
console.log(`Furniture: ${furniture.length} items`)
Previous
Medical supplies