返回提交历史
Modified
src/services/serversideVendorsService.ts
+7
-6
Modified
src/types/vendorTypes.ts
+10
-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
代码差异
2 个文件
+17
-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) {
@@ -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
}