XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

chore: mark cached(ish) vendor data as readonly (#4448)

More dummy proofing for The Next Generation:tm: Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4448 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

3a479534
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +17 -6
Modified src/services/serversideVendorsService.ts +7 -6
@@ -1,7 +1,7 @@
1 1 import { unixTimesInMs } from "../constants/timeConstants.ts";
2 2 import { catBreadHash } from "../helpers/stringHelpers.ts";
3 3 import { mixSeeds, SRng } from "./rngService.ts";
4 import type { IItemManifest, IVendorInfo, IVendorManifest } from "../types/vendorTypes.ts";
4 import type { ICachedVendorManifest, IItemManifest, IVendorInfo, IVendorManifest } from "../types/vendorTypes.ts";
5 5 import { logger } from "../utils/logger.ts";
6 6 import type { IRange, IVendor, IVendorOffer } from "warframe-public-export-plus";
7 7 import { ExportVendors } from "warframe-public-export-plus";
@@ -68,7 +68,7 @@ export const getVendorManifestByTypeName = (
68 68 typeName: string,
69 69 fullStock?: boolean,
70 70 buildLabel: string = BL_LATEST
71 ): IVendorManifest | undefined => {
71 ): ICachedVendorManifest | undefined => {
72 72 for (const vendorInfo of generatableVendors) {
73 73 if (vendorInfo.TypeName == typeName) {
74 74 return generateVendorManifest(vendorInfo, fullStock ?? config.fullyStockedVendors);
@@ -108,7 +108,7 @@ export const getVendorManifestByTypeName = (
108 108 return undefined;
109 109 };
110 110
111 export const getVendorManifestByOid = (oid: string, buildLabel: string): IVendorManifest | undefined => {
111 export const getVendorManifestByOid = (oid: string, buildLabel: string): ICachedVendorManifest | undefined => {
112 112 for (const vendorInfo of generatableVendors) {
113 113 if (vendorInfo._id.$oid == oid) {
114 114 return generateVendorManifest(vendorInfo, config.fullyStockedVendors);
@@ -164,10 +164,11 @@ export const getVendorManifestByOid = (oid: string, buildLabel: string): IVendor
164 164 return undefined;
165 165 };
166 166
167 // Returned manifest is a partial copy, but some readonly refs are retained, hence ICachedVendorManifest.
167 168 export const applyStandingToVendorManifest = (
168 vendorManifest: IVendorManifest,
169 vendorManifest: ICachedVendorManifest,
169 170 affiliations: IAffiliation[]
170 ): IVendorManifest => {
171 ): ICachedVendorManifest => {
171 172 return {
172 173 VendorInfo: {
173 174 ...vendorManifest.VendorInfo,
@@ -282,7 +283,7 @@ const generateVendorManifest = (
282 283 vendorInfo: IGeneratableVendorInfo,
283 284 fullStock: boolean | undefined,
284 285 manifest?: IVendor
285 ): IVendorManifest => {
286 ): ICachedVendorManifest => {
286 287 fullStock ??= config.fullyStockedVendors;
287 288 fullStock ??= false;
288 289 if (vendorManifestsUsingFullStock != fullStock) {
Modified src/types/vendorTypes.ts +10 -0
@@ -42,3 +42,13 @@ export interface IVendorInfo {
42 42 export interface IVendorManifest {
43 43 VendorInfo: IVendorInfo;
44 44 }
45
46 interface ICachedVendorInfo extends Omit<IVendorInfo, "IItemPrice" | "ItemManifest" | "ItemPricesBeforeDiscount"> {
47 ItemPrices?: readonly IItemPrice[];
48 ItemManifest: readonly IItemManifest[];
49 ItemPricesBeforeDiscount?: readonly IItemPrice[];
50 }
51
52 export interface ICachedVendorManifest {
53 VendorInfo: ICachedVendorInfo;
54 }