From 0cf419ca296692b87d0dfb6690f841e2e22f7ec1 Mon Sep 17 00:00:00 2001 From: Ecmelt Date: Fri, 6 Feb 2026 18:07:04 +0000 Subject: [PATCH] Update type and keep achievement info on components --- src/api.d.ts | 2 + src/index.ts | 38 +++++++++-- tests/__snapshots__/index.spec.ts.snap | 94 ++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/src/api.d.ts b/src/api.d.ts index f50d989..27a2ca0 100644 --- a/src/api.d.ts +++ b/src/api.d.ts @@ -14,6 +14,8 @@ export interface API_Recipes_Entry { type: 'Item' | 'GuildUpgrade' | 'Currency' id: number count: number + achievement_id?: number + achievement_bit?: number }> id: number chat_link: string diff --git a/src/index.ts b/src/index.ts index 5f41c3c..3a334aa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,27 @@ import { omit, compact, toMap } from '@devoxa/flocky' import { API_Recipes_Entry_Next } from './api' -export type BasicItemComponent = { id: number; type: 'Item'; quantity: number } -export type BasicCurrencyComponent = { id: number; type: 'Currency'; quantity: number } -export type BasicGuildUpgradeComponent = { id: number; type: 'GuildUpgrade'; quantity: number } +export type BasicItemComponent = { + id: number + type: 'Item' + quantity: number + achievement_id?: number + achievement_bit?: number +} +export type BasicCurrencyComponent = { + id: number + type: 'Currency' + quantity: number + achievement_id?: number + achievement_bit?: number +} +export type BasicGuildUpgradeComponent = { + id: number + type: 'GuildUpgrade' + quantity: number + achievement_id?: number + achievement_bit?: number +} export type Prerequisites = Array<{ type: 'Recipe'; id: number }> export interface NestedRecipe extends TransformedRecipe { @@ -20,6 +38,7 @@ interface TransformedRecipe { upgrade_id?: number output_range?: string achievement_id?: number + achievement_bit?: number merchant?: { name: string; locations: Array } prerequisites: Prerequisites multipleRecipeCount: number @@ -67,6 +86,8 @@ function transformRecipe(recipe: API_Recipes_Entry_Next): TransformedRecipeInter id: ingredient.id, type: ingredient.type, quantity: ingredient.count, + achievement_id: ingredient.achievement_id, + achievement_bit: ingredient.achievement_bit, })) return { @@ -148,7 +169,16 @@ function nestRecipe( } // Make sure we use a copy of the object, and insert it into the components - return { ...omit(componentRecipe, ['nested']), quantity: component.quantity } + return { + ...omit(componentRecipe, ['nested']), + quantity: component.quantity, + ...(typeof component.achievement_id === 'number' && { + achievement_id: component.achievement_id, + }), + ...(typeof component.achievement_bit === 'number' && { + achievement_bit: component.achievement_bit, + }), + } }) // Filter guild components that we don't have in our recipes :( diff --git a/tests/__snapshots__/index.spec.ts.snap b/tests/__snapshots__/index.spec.ts.snap index 1813961..bc27df4 100644 --- a/tests/__snapshots__/index.spec.ts.snap +++ b/tests/__snapshots__/index.spec.ts.snap @@ -5,6 +5,8 @@ Object { "achievement_id": 12, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19725, "quantity": 3, "type": "Item", @@ -41,6 +43,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19725, "quantity": 3, "type": "Item", @@ -80,6 +84,8 @@ Object { "achievement_id": 12, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19725, "quantity": 3, "type": "Item", @@ -113,6 +119,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19701, "quantity": 2, "type": "Item", @@ -145,11 +153,15 @@ Object { "weekly_purchase_cap": 0, }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 1, "quantity": 10000, "type": "Currency", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19685, "quantity": 1, "type": "Currency", @@ -189,6 +201,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19723, "quantity": 3, "type": "Item", @@ -222,11 +236,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19697, "quantity": 10, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19704, "quantity": 1, "type": "Item", @@ -288,11 +306,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19697, "quantity": 10, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19704, "quantity": 1, "type": "Item", @@ -334,6 +356,8 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 2, "quantity": 2, "type": "Item", @@ -391,6 +415,8 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 2, "quantity": 2, "type": "Item", @@ -430,6 +456,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 1337, "quantity": 1, "type": "Item", @@ -441,11 +469,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19697, "quantity": 10, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19704, "quantity": 1, "type": "Item", @@ -529,6 +561,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88770, "quantity": 2, "type": "Item", @@ -543,11 +577,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88770, "quantity": 2, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88773, "quantity": 2, "type": "Item", @@ -609,11 +647,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88770, "quantity": 2, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88773, "quantity": 2, "type": "Item", @@ -727,11 +769,15 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88771, "quantity": 3, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 88770, "quantity": 2, "type": "Item", @@ -769,21 +815,29 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24272, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24464, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24326, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 91224, "quantity": 2, "type": "Item", @@ -814,21 +868,29 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24272, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24534, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24326, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 91224, "quantity": 2, "type": "Item", @@ -859,21 +921,29 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24272, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24464, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24326, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 91224, "quantity": 2, "type": "Item", @@ -904,21 +974,29 @@ Array [ "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24272, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24465, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 91137, "quantity": 1, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 91224, "quantity": 2, "type": "Item", @@ -953,6 +1031,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24284, "quantity": 3, "type": "Item", @@ -961,6 +1041,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 19741, "quantity": 2, "type": "Item", @@ -991,11 +1073,15 @@ Object { "weekly_purchase_cap": 0, }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24285, "quantity": 3, "type": "Item", }, Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 24286, "quantity": 3, "type": "Item", @@ -1034,6 +1120,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 99995, "quantity": 2, "type": "Item", @@ -1070,6 +1158,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 99995, "quantity": 2, "type": "Item", @@ -1131,6 +1221,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 99995, "quantity": 2, "type": "Item", @@ -1192,6 +1284,8 @@ Object { "achievement_id": undefined, "components": Array [ Object { + "achievement_bit": undefined, + "achievement_id": undefined, "id": 99995, "quantity": 2, "type": "Item",