From bc5b00a3708115be79b531d58962978ef35e732b Mon Sep 17 00:00:00 2001 From: lairaalmas Date: Wed, 6 May 2026 22:19:11 -0300 Subject: [PATCH 1/3] feature: map new lot field apartment number and previously omitted field world.description --- src/data/lots.ts | 5 ++++- src/data/neighborhoods.ts | 1 + src/data/source/lotData.ts | 31 ++++++++++++++++++++++++++----- src/types/lot.ts | 5 +++++ src/types/neighborhood.ts | 2 +- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/data/lots.ts b/src/data/lots.ts index cedd846..217aaaf 100644 --- a/src/data/lots.ts +++ b/src/data/lots.ts @@ -54,7 +54,7 @@ const mapRentDetails = (lot: Lot): RentDetailsDTO => { rent: inGame?.rent ?? null, deposit: inGame?.deposit ?? null, furniture: inGame?.furniture ?? null, - period: inGame?.period ?? null, + period: inGame?.period ?? 'week', price_history: { in_game: { furniture: inGame?.furniture ?? null }, pre_game: { furniture: preGame?.furniture ?? null }, @@ -112,6 +112,7 @@ const mapLot = (lot: Lot, neighborhood: LotDTO['neighborhood'], world: LotDTO['w building_details: { type: lot.buildingDetails?.type, apartment_title: lot.buildingDetails?.apartmentTitle ?? null, + apartment_number: lot.buildingDetails?.apartmentNumber ?? null, bedrooms: lot.buildingDetails?.bedrooms ?? null, bathrooms: lot.buildingDetails?.bathrooms ?? null, floors: lot.buildingDetails?.floors ?? null, @@ -166,6 +167,7 @@ const mapToDTO = (lotsByWorld: LotDataByWorld) => { const neighborhood = neighborhoodSummaryById[neighId]; const neighTitle = neighborhood?.title || neighId; const neighColor = neighborhood?.color || 'default'; + const neighDescription = neighborhood?.description || ''; const world = neighborhood?.world; const worldId = world?.id || ''; @@ -197,6 +199,7 @@ const mapToDTO = (lotsByWorld: LotDataByWorld) => { id: neighId, title: neighTitle, color: neighColor, + description: neighDescription, }; // for each lot diff --git a/src/data/neighborhoods.ts b/src/data/neighborhoods.ts index 2703193..2b271db 100644 --- a/src/data/neighborhoods.ts +++ b/src/data/neighborhoods.ts @@ -107,6 +107,7 @@ const createNeighborhoodSummaryById = (list: NeighborhoodDTO[]) => id: n.id, title: n.title, color: n.color, + description: n.description, world: { id: n.world.id, title: n.world.title, diff --git a/src/data/source/lotData.ts b/src/data/source/lotData.ts index e002207..e9e3eba 100644 --- a/src/data/source/lotData.ts +++ b/src/data/source/lotData.ts @@ -1404,6 +1404,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Culpepper Apartments', + apartmentNumber: '17', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1438,6 +1439,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Culpepper Apartments', + apartmentNumber: '18', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1471,6 +1473,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Culpepper Apartments', + apartmentNumber: '19', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -1502,6 +1505,7 @@ export const lotData: LotDataByWorld = { owner: 'Rasoya', buildingDetails: { apartmentTitle: 'Culpepper Apartments', + apartmentNumber: '20', type: 'apartment', bedrooms: 2, bathrooms: 2, @@ -1533,6 +1537,7 @@ export const lotData: LotDataByWorld = { owner: 'Bheeda', buildingDetails: { apartmentTitle: 'Jasmine Suites Apartments', + apartmentNumber: '2A', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1566,6 +1571,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Jasmine Suites Apartments', + apartmentNumber: '2B', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -1652,6 +1658,7 @@ export const lotData: LotDataByWorld = { owner: 'Benali', buildingDetails: { apartmentTitle: 'Medina Studios Apartments', + apartmentNumber: '910', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1682,6 +1689,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Medina Studios Apartments', + apartmentNumber: '920', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -1715,6 +1723,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Medina Studios Apartments', + apartmentNumber: '930', type: 'apartment', bedrooms: 3, bathrooms: 1, @@ -1747,6 +1756,7 @@ export const lotData: LotDataByWorld = { owner: 'Jang', buildingDetails: { apartmentTitle: 'Hakim House Apartments', + apartmentNumber: '121', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -1776,6 +1786,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Hakim House Apartments', + apartmentNumber: '122', type: 'apartment', bedrooms: 3, bathrooms: 2, @@ -1802,7 +1813,8 @@ export const lotData: LotDataByWorld = { type: 'residential', availability: 'available', buildingDetails: { - apartmentTitle: 'Hakim House Apartments', + apartmentTitle: 'FountainView', + apartmentNumber: '', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1830,7 +1842,6 @@ export const lotData: LotDataByWorld = { availability: 'unavailable', buildingDetails: { type: 'arts center', - bathrooms: 2, floors: 4, }, @@ -1862,6 +1873,7 @@ export const lotData: LotDataByWorld = { owner: 'Karaoke Legends', buildingDetails: { apartmentTitle: 'ZenView Apartments', + apartmentNumber: '701', type: 'apartment', bedrooms: 2, bathrooms: 2, @@ -1891,6 +1903,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'ZenView Apartments', + apartmentNumber: '702', type: 'apartment', bedrooms: 2, bathrooms: 2, @@ -1925,6 +1938,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: '21 Chic Street Apartments', + apartmentNumber: '1310', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -1956,6 +1970,7 @@ export const lotData: LotDataByWorld = { owner: 'Pizzazz', buildingDetails: { apartmentTitle: '21 Chic Street Apartments', + apartmentNumber: '1312', type: 'apartment', bedrooms: 1, bathrooms: 1, @@ -1985,6 +2000,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: '21 Chic Street Apartments', + apartmentNumber: '1313', type: 'apartment', bedrooms: 2, bathrooms: 1, @@ -2011,10 +2027,12 @@ export const lotData: LotDataByWorld = { type: 'residential', availability: 'available', buildingDetails: { + apartmentTitle: 'Torendi Tower', + apartmentNumber: '1', type: 'apartment', bedrooms: 3, bathrooms: 3, - floors: 1, + floors: 2, }, imageURL: 'http://static.wikia.nocookie.net/sims/images/1/11/Torendi_Tower.jpg/revision/latest?cb=20161221005932', @@ -2025,7 +2043,6 @@ export const lotData: LotDataByWorld = { title: 'Planet Honey Popl', description: "Built in the center of the Fashion District, Planet Honey Pop! Karaoke Bar's sprightly melodies are in perfect harmony with the songs of the metro train below", - buyDetails: { preGame: PRICE_NOT_AVAILABLE_IN_PREGAME, inGame: 91464, @@ -2038,7 +2055,6 @@ export const lotData: LotDataByWorld = { availability: 'unavailable', buildingDetails: { type: 'karaoke bar', - bathrooms: 2, floors: 1, }, @@ -2069,6 +2085,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Alto Apartments', + apartmentNumber: '1010', type: 'apartment', bedrooms: 4, bathrooms: 3, @@ -2101,6 +2118,7 @@ export const lotData: LotDataByWorld = { owner: 'Lobo', buildingDetails: { apartmentTitle: 'Alto Apartments', + apartmentNumber: '1020', type: 'apartment', bedrooms: 1, bathrooms: 2, @@ -2131,6 +2149,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Landgraab Apartments', + apartmentNumber: 'VIII', type: 'apartment', bedrooms: 2, bathrooms: 2, @@ -2163,6 +2182,7 @@ export const lotData: LotDataByWorld = { owner: 'Feng', buildingDetails: { apartmentTitle: 'Landgraab Apartments', + apartmentNumber: 'IX', type: 'apartment', bedrooms: 1, bathrooms: 2, @@ -2193,6 +2213,7 @@ export const lotData: LotDataByWorld = { availability: 'available', buildingDetails: { apartmentTitle: 'Spire Apartments', + apartmentNumber: '888', type: 'apartment', bedrooms: 2, bathrooms: 3, diff --git a/src/types/lot.ts b/src/types/lot.ts index c829b9b..05e92d7 100644 --- a/src/types/lot.ts +++ b/src/types/lot.ts @@ -72,6 +72,7 @@ type ResidentialLot = BaseLot & { buildingDetails: { type: ResidentialBuildingType; apartmentTitle?: string; + apartmentNumber?: string; // TBD: only lots that are not empty have bedroom, bathrooms and floors bedrooms?: number; bathrooms?: number; @@ -89,6 +90,7 @@ type CommunityLot = BaseLot & { buildingDetails: { type: CommunityBuildingType; apartmentTitle?: never; + apartmentNumber?: never; bedrooms?: never; bathrooms?: number; floors?: number; @@ -105,6 +107,7 @@ type SpecialLot = BaseLot & { buildingDetails: { type: SpecialBuildingType; apartmentTitle?: never; + apartmentNumber?: never; bedrooms?: never; bathrooms?: never; floors?: never; @@ -127,6 +130,7 @@ type NeighborhoodReference = { id: string; title: string; color: ThemeColors; + description: string; }; export type MainPriceDTO = number | null; @@ -170,6 +174,7 @@ export type LotDTO = { building_details: { type: ResidentialBuildingType | CommunityBuildingType | SpecialBuildingType; apartment_title: string | null; + apartment_number: string | null; bedrooms: number | null; bathrooms: number | null; floors: number | null; diff --git a/src/types/neighborhood.ts b/src/types/neighborhood.ts index 223befe..3badb6d 100644 --- a/src/types/neighborhood.ts +++ b/src/types/neighborhood.ts @@ -19,5 +19,5 @@ export type NeighborhoodDTO = { }; }; -export type NeighborhoodSummaryDTO = Omit; +export type NeighborhoodSummaryDTO = NeighborhoodDTO; export type NeighborhoodSummaryById = Record; From f7bdfe1c0c2e057f36714d8e098d6e8d89d8b54f Mon Sep 17 00:00:00 2001 From: lairaalmas Date: Wed, 6 May 2026 22:25:38 -0300 Subject: [PATCH 2/3] feature: add new residential building type penthouse --- src/data/source/lotData.ts | 4 ++-- src/types/lot.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/source/lotData.ts b/src/data/source/lotData.ts index e9e3eba..6431167 100644 --- a/src/data/source/lotData.ts +++ b/src/data/source/lotData.ts @@ -1815,7 +1815,7 @@ export const lotData: LotDataByWorld = { buildingDetails: { apartmentTitle: 'FountainView', apartmentNumber: '', - type: 'apartment', + type: 'penthouse', bedrooms: 1, bathrooms: 1, floors: 1, @@ -2029,7 +2029,7 @@ export const lotData: LotDataByWorld = { buildingDetails: { apartmentTitle: 'Torendi Tower', apartmentNumber: '1', - type: 'apartment', + type: 'penthouse', bedrooms: 3, bathrooms: 3, floors: 2, diff --git a/src/types/lot.ts b/src/types/lot.ts index 05e92d7..45943ef 100644 --- a/src/types/lot.ts +++ b/src/types/lot.ts @@ -5,7 +5,7 @@ import type { ThemeColors } from './neighborhood.js'; // SPECIFIC INFO - residential x community x special type LotCategory = 'residential' | 'community' | 'special'; -type ResidentialBuildingType = 'empty' | 'house' | 'apartment'; +type ResidentialBuildingType = 'empty' | 'house' | 'apartment' | 'penthouse'; type ResidentialAvailability = 'available' | 'occupied'; type ResidentialTransactionType = 'rent' | 'buy' | 'both'; type ResidentialOwner = string; From 1c4fab99ddaee876c0a27c97f2484bf0ec82a3d6 Mon Sep 17 00:00:00 2001 From: lairaalmas Date: Tue, 12 May 2026 22:42:25 -0300 Subject: [PATCH 3/3] fix: update vulnerable dep --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d41dfd..288b169 100644 --- a/package-lock.json +++ b/package-lock.json @@ -785,9 +785,9 @@ } }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "funding": [ { "type": "github",