stardew-valley-data 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,112 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.10.0] - 2026-03-19
9
+
10
+ ### Added
11
+
12
+ - `Sturgeon Roe` entry added to `data/forageables.json` with id `"812S"` — a Sturgeon-specific
13
+ variant of Roe; sell price 130g (`30 + floor(200/2)`), image
14
+ `images/forageables/Sturgeon Roe.png`, locations "Fish Ponds (Sturgeon)", all seasons, same
15
+ energy/health as Roe (50/22)
16
+
17
+ ### Fixed
18
+
19
+ - Caviar ingredient in `data/artisan-goods.json` corrected from `id: "723"` (Oyster — wrong) to
20
+ `id: "812S"` (Sturgeon Roe); Sturgeon Roe has no unique game object id — the game dynamically
21
+ renames Roe (id `812`) to "Sturgeon Roe" when produced by a Sturgeon pond
22
+
23
+ ## [0.9.0] - 2026-03-19
24
+
25
+ ### Added
26
+
27
+ - `ArtisanCalculator` class and `artisanCalculator()` factory added to the `calculator` module —
28
+ covers Roe, Aged Roe, Honey, Wine, Juice, Pickles, Jelly, Dried Mushrooms, Dried Fruit, and Smoked
29
+ Fish; returns sell price and (where applicable) energy/health values
30
+ - `ArtisanResult` and `ArtisanEnergyResult` types added to `src/types/calculator.ts`
31
+ - `ArtisanUses` interface added to `src/types/common.ts` —
32
+ `{ honey, wine, juice, pickles, jelly, driedMushrooms, driedFruit: boolean }`
33
+ - `artisanUses: ArtisanUses` field added to all crops (`data/crops.json`, `Crop` type), all
34
+ forageables (`data/forageables.json`, `Forageable` type), and all fruit tree produce
35
+ (`data/trees.json`, `FruitTreeProduce` type)
36
+ - `canSmoke: boolean` field added to all 77 fish in `data/fish.json` and `Fish` type — `true` for
37
+ all rod-caught fish except Seaweed, Green Algae, and White Algae
38
+ - `roe: FishRoe | null` field added to all 77 fish — `'roe'` for 68 standard roe producers,
39
+ `'caviar'` for Sturgeon (roe → Caviar in Preserves Jar), `null` for Squid/Midnight Squid (Squid
40
+ Ink) and non-pond items
41
+ - `fishPond: FishPond | null` field added to all 77 fish — `null` for non-pond items (algae,
42
+ jellies); all 71 pond-eligible fish include a `produce` array of `{ product, minPopulation }`
43
+ entries sourced from the wiki Fish Pond produce table
44
+ - `FishRoe`, `FishPond`, and `FishPondProduce` types added to `src/types/fish.ts`
45
+ - `.smokeable()`, `.byRoe(type)`, and `.pondEligible()` filter methods added to `FishQuery`
46
+ - `byArtisanUse(use: keyof ArtisanUses)` filter method added to `CropQuery`, `ForageableQuery`, and
47
+ `TreeQuery`
48
+ - `sample/artisan-uses/` — new cross-module sample showing all items grouped by artisan use across
49
+ crops, forageables, and fruit trees
50
+ - Cactus Fruit added to `data/forageables.json` (id `90`; fruit — wine, jelly, driedFruit)
51
+ - Tea Leaves moved from `data/forageables.json` to `data/crops.json` — vegetable,
52
+ spring/summer/fall, 20-day grow / 1-day regrow, juice and pickles artisan uses; growth stage
53
+ images added to `images/crops/tea-leaves/`
54
+ - Added `Energy.png`, `Health.png`, and `Poison.png` icon images (20×20) to `images/misc/`
55
+ - `maxQuality` field (`ItemQuality`) added to all farm animal produce and deluxe produce in
56
+ `data/animals.json` and `AnimalProduce` type
57
+ - `maxQuality` field added to all artisan goods in `data/artisan-goods.json` and `ArtisanGood` type
58
+ — `'iridium'` for cask-ageable goods, `'base'` for all others
59
+ - `maxQuality` field added to all forageables in `data/forageables.json` and `Forageable` type —
60
+ `'iridium'` for foraged items, `'base'` for resources (Wood, Stone, Sap, etc.)
61
+ - `maxQuality` field added to all crops in `data/crops.json` and `Crop` type — `'iridium'` for all
62
+ crops except Fiber (`'base'`)
63
+ - `ItemQuality` shared type (`'base' | 'silver' | 'gold' | 'iridium'`) added to
64
+ `src/types/common.ts`; used across `AnimalProduce`, `ArtisanGood`, `Crop`, `Forageable`, and
65
+ `Fish` types
66
+ - `data/fish.json` — `maxQuality` field added to all fish entries (already typed, now present in
67
+ data)
68
+
69
+ ### Changed
70
+
71
+ - Tea Leaves removed from `data/forageables.json`; consolidated to `data/crops.json`
72
+ - `images/forageables/Tea Leaves.png` and `images/craftable/seeds/Tea Sapling.png` removed —
73
+ replaced by unified images under `images/crops/tea-leaves/`; `data/crafting.json` reference
74
+ updated accordingly
75
+ - `FishQuality` type removed from `src/types/fish.ts`; `maxQuality` now uses the shared
76
+ `ItemQuality` type
77
+ - `tsconfig.json` — enabled `noUnusedLocals` and `noUnusedParameters` for stricter compile-time
78
+ checks
79
+
80
+ ### Documentation
81
+
82
+ - `src/modules/calculator/README.md` — added `ArtisanCalculator` methods, formulas, and examples
83
+ - `src/modules/crops/README.md` — added `byArtisanUse` filter and `artisanUses` fields table rows
84
+ - `src/modules/forageables/README.md` — added `byArtisanUse` filter and `artisanUses` fields table
85
+ rows
86
+ - `src/modules/trees/README.md` — added `byArtisanUse` filter and `produce.artisanUses` fields table
87
+ rows; added example usage
88
+ - `src/modules/fish/README.md` — added `canSmoke` row to fish fields table
89
+ - `src/modules/animals/README.md` — added `produce.maxQuality` and `deluxeProduce.maxQuality` rows
90
+ to farm animal fields table
91
+ - `src/modules/artisan-goods/README.md` — added `energyHealth` and `maxQuality` rows to fields table
92
+ - `src/modules/crops/README.md` — added `maxQuality` row to crop fields table
93
+ - `src/modules/fish/README.md` — added `energyHealth` and `maxQuality` rows to fish fields table
94
+ - `src/modules/forageables/README.md` — added `energyHealth` and `maxQuality` rows to forageable
95
+ fields table
96
+
97
+ ### Chore
98
+
99
+ - Renamed internal data constants from `all*Data` to `*Data` pattern across 7 modules (`fish`,
100
+ `forageables`, `cooking`, `bait`, `footwear`, `tackle`, `pierre-shop`) per naming conventions
101
+ - Fixed sort methods in `bait`, `tackle`, and `cooking` modules to use inline
102
+ `return new XxxQuery([...this.data].sort(...))` style for consistency
103
+ - Moved filter methods before sort methods in `cooking` module to match ordering convention
104
+ - Added JSDoc to filter/sort methods in `hats`, `footwear`, `weather`, `maps`, `weapon-stats`,
105
+ `bait`, and `tackle` modules
106
+ - Added `DayOfWeek` and `TraderShopItem` shared types to `src/types/common.ts`; five duplicate
107
+ day-of-week unions (`CarpenterDay`, `DesertTraderDay`, `IslandTraderDay`, `OasisDay`,
108
+ `LocationDay`) are now type aliases
109
+ - `DesertTraderItem` and `IslandTraderItem` are now aliases for the shared `TraderShopItem` type,
110
+ removing an identical 11-field interface duplicated across two files
111
+ - `CraftingIngredient` is now a type alias for the existing `Ingredient` type in `common.ts`,
112
+ removing a structurally identical duplicate interface
113
+
8
114
  ## [0.8.0] - 2026-03-18
9
115
 
10
116
  ### Fix
@@ -29,7 +135,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
29
135
 
30
136
  - Fix Typo in Wild Seed names to use abbreviated name over full
31
137
 
32
- ## [v0.5.0] - 2026-03-18
138
+ ## [0.5.0] - 2026-03-18
33
139
 
34
140
  ### Breaking Changes
35
141
 
@@ -50,19 +156,19 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
50
156
 
51
157
  - Bump Dependencies
52
158
 
53
- ## [v0.4.0] - 2026-03-15
159
+ ## [0.4.0] - 2026-03-15
54
160
 
55
161
  ### Breaking Changes
56
162
 
57
163
  - Change many of the output modules for parsing the file.
58
164
 
59
- ## [v0.3.0] - 2026-03-15
165
+ ## [0.3.0] - 2026-03-15
60
166
 
61
167
  ### Fix
62
168
 
63
169
  - Add missing Villager Events
64
170
 
65
- ## [v0.2.0] - 2026-03-10
171
+ ## [0.2.0] - 2026-03-10
66
172
 
67
173
  ### Added
68
174
 
package/data/animals.json CHANGED
@@ -105,13 +105,15 @@
105
105
  "id": "176",
106
106
  "name": "Egg",
107
107
  "sellPrice": 50,
108
- "image": "images/animals/produce/Egg.png"
108
+ "image": "images/animals/produce/Egg.png",
109
+ "maxQuality": "iridium"
109
110
  },
110
111
  "deluxeProduce": {
111
112
  "id": "174",
112
113
  "name": "Large Egg",
113
114
  "sellPrice": 95,
114
- "image": "images/animals/produce/Large Egg.png"
115
+ "image": "images/animals/produce/Large Egg.png",
116
+ "maxQuality": "iridium"
115
117
  },
116
118
  "image": "images/animals/White Chicken.png"
117
119
  },
@@ -131,13 +133,15 @@
131
133
  "id": "180",
132
134
  "name": "Brown Egg",
133
135
  "sellPrice": 50,
134
- "image": "images/animals/produce/Brown Egg.png"
136
+ "image": "images/animals/produce/Brown Egg.png",
137
+ "maxQuality": "iridium"
135
138
  },
136
139
  "deluxeProduce": {
137
140
  "id": "182",
138
141
  "name": "Large Brown Egg",
139
142
  "sellPrice": 95,
140
- "image": "images/animals/produce/Large Brown Egg.png"
143
+ "image": "images/animals/produce/Large Brown Egg.png",
144
+ "maxQuality": "iridium"
141
145
  },
142
146
  "image": "images/animals/Brown Chicken.png"
143
147
  },
@@ -157,13 +161,15 @@
157
161
  "id": "176",
158
162
  "name": "Egg",
159
163
  "sellPrice": 50,
160
- "image": "images/animals/produce/Egg.png"
164
+ "image": "images/animals/produce/Egg.png",
165
+ "maxQuality": "iridium"
161
166
  },
162
167
  "deluxeProduce": {
163
168
  "id": "174",
164
169
  "name": "Large Egg",
165
170
  "sellPrice": 95,
166
- "image": "images/animals/produce/Large Egg.png"
171
+ "image": "images/animals/produce/Large Egg.png",
172
+ "maxQuality": "iridium"
167
173
  },
168
174
  "image": "images/animals/Blue Chicken.png"
169
175
  },
@@ -183,7 +189,8 @@
183
189
  "id": "305",
184
190
  "name": "Void Egg",
185
191
  "sellPrice": 65,
186
- "image": "images/animals/produce/Void Egg.png"
192
+ "image": "images/animals/produce/Void Egg.png",
193
+ "maxQuality": "iridium"
187
194
  },
188
195
  "deluxeProduce": null,
189
196
  "image": "images/animals/Void Chicken.png"
@@ -204,7 +211,8 @@
204
211
  "id": "928",
205
212
  "name": "Golden Egg",
206
213
  "sellPrice": 500,
207
- "image": "images/animals/produce/Golden Egg.png"
214
+ "image": "images/animals/produce/Golden Egg.png",
215
+ "maxQuality": "iridium"
208
216
  },
209
217
  "deluxeProduce": null,
210
218
  "image": "images/animals/Golden Chicken.png"
@@ -225,13 +233,15 @@
225
233
  "id": "442",
226
234
  "name": "Duck Egg",
227
235
  "sellPrice": 95,
228
- "image": "images/animals/produce/Duck Egg.png"
236
+ "image": "images/animals/produce/Duck Egg.png",
237
+ "maxQuality": "iridium"
229
238
  },
230
239
  "deluxeProduce": {
231
240
  "id": "444",
232
241
  "name": "Duck Feather",
233
242
  "sellPrice": 250,
234
- "image": "images/animals/produce/Duck Feather.png"
243
+ "image": "images/animals/produce/Duck Feather.png",
244
+ "maxQuality": "iridium"
235
245
  },
236
246
  "image": "images/animals/Duck.png"
237
247
  },
@@ -251,13 +261,15 @@
251
261
  "id": "440",
252
262
  "name": "Wool",
253
263
  "sellPrice": 340,
254
- "image": "images/animals/produce/Wool.png"
264
+ "image": "images/animals/produce/Wool.png",
265
+ "maxQuality": "iridium"
255
266
  },
256
267
  "deluxeProduce": {
257
268
  "id": "446",
258
269
  "name": "Rabbit's Foot",
259
270
  "sellPrice": 565,
260
- "image": "images/animals/produce/Rabbit's Foot.png"
271
+ "image": "images/animals/produce/Rabbit's Foot.png",
272
+ "maxQuality": "iridium"
261
273
  },
262
274
  "image": "images/animals/Rabbit.png"
263
275
  },
@@ -277,7 +289,8 @@
277
289
  "id": "107",
278
290
  "name": "Dinosaur Egg",
279
291
  "sellPrice": 350,
280
- "image": "images/animals/produce/Dinosaur Egg.png"
292
+ "image": "images/animals/produce/Dinosaur Egg.png",
293
+ "maxQuality": "iridium"
281
294
  },
282
295
  "deluxeProduce": null,
283
296
  "image": "images/animals/Dinosaur.png"
@@ -298,13 +311,15 @@
298
311
  "id": "184",
299
312
  "name": "Milk",
300
313
  "sellPrice": 125,
301
- "image": "images/animals/produce/Milk.png"
314
+ "image": "images/animals/produce/Milk.png",
315
+ "maxQuality": "iridium"
302
316
  },
303
317
  "deluxeProduce": {
304
318
  "id": "186",
305
319
  "name": "Large Milk",
306
320
  "sellPrice": 190,
307
- "image": "images/animals/produce/Large Milk.png"
321
+ "image": "images/animals/produce/Large Milk.png",
322
+ "maxQuality": "iridium"
308
323
  },
309
324
  "image": "images/animals/White Cow.png"
310
325
  },
@@ -324,13 +339,15 @@
324
339
  "id": "184",
325
340
  "name": "Milk",
326
341
  "sellPrice": 125,
327
- "image": "images/animals/produce/Milk.png"
342
+ "image": "images/animals/produce/Milk.png",
343
+ "maxQuality": "iridium"
328
344
  },
329
345
  "deluxeProduce": {
330
346
  "id": "186",
331
347
  "name": "Large Milk",
332
348
  "sellPrice": 190,
333
- "image": "images/animals/produce/Large Milk.png"
349
+ "image": "images/animals/produce/Large Milk.png",
350
+ "maxQuality": "iridium"
334
351
  },
335
352
  "image": "images/animals/Brown Cow.png"
336
353
  },
@@ -350,13 +367,15 @@
350
367
  "id": "436",
351
368
  "name": "Goat Milk",
352
369
  "sellPrice": 225,
353
- "image": "images/animals/produce/Goat Milk.png"
370
+ "image": "images/animals/produce/Goat Milk.png",
371
+ "maxQuality": "iridium"
354
372
  },
355
373
  "deluxeProduce": {
356
374
  "id": "438",
357
375
  "name": "Large Goat Milk",
358
376
  "sellPrice": 345,
359
- "image": "images/animals/produce/Large Goat Milk.png"
377
+ "image": "images/animals/produce/Large Goat Milk.png",
378
+ "maxQuality": "iridium"
360
379
  },
361
380
  "image": "images/animals/Goat.png"
362
381
  },
@@ -376,7 +395,8 @@
376
395
  "id": "440",
377
396
  "name": "Wool",
378
397
  "sellPrice": 340,
379
- "image": "images/animals/produce/Wool.png"
398
+ "image": "images/animals/produce/Wool.png",
399
+ "maxQuality": "iridium"
380
400
  },
381
401
  "deluxeProduce": null,
382
402
  "image": "images/animals/Sheep.png"
@@ -397,7 +417,8 @@
397
417
  "id": "430",
398
418
  "name": "Truffle",
399
419
  "sellPrice": 625,
400
- "image": "images/animals/produce/Truffle.png"
420
+ "image": "images/animals/produce/Truffle.png",
421
+ "maxQuality": "iridium"
401
422
  },
402
423
  "deluxeProduce": null,
403
424
  "image": "images/animals/Pig.png"
@@ -418,7 +439,8 @@
418
439
  "id": "289",
419
440
  "name": "Ostrich Egg",
420
441
  "sellPrice": 600,
421
- "image": "images/animals/produce/Ostrich Egg.png"
442
+ "image": "images/animals/produce/Ostrich Egg.png",
443
+ "maxQuality": "iridium"
422
444
  },
423
445
  "deluxeProduce": null,
424
446
  "image": "images/animals/Ostrich.png"