From 1eca42c75e313eeb5276973e6ae7ff0d333c71a3 Mon Sep 17 00:00:00 2001 From: catloversg <152669316+catloversg@users.noreply.github.com> Date: Sat, 21 Jun 2025 02:08:49 +0700 Subject: [PATCH] API: Make ns.codingcontract.createDummyContract throw error if type is invalid (#2188) --- markdown/bitburner.codingcontract.createdummycontract.md | 4 ++-- src/CodingContract/ContractTypes.ts | 3 --- src/DevMenu/ui/CodingContractsDev.tsx | 6 ++++-- src/NetscriptFunctions/CodingContract.ts | 6 ++---- src/ScriptEditor/NetscriptDefinitions.d.ts | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/markdown/bitburner.codingcontract.createdummycontract.md b/markdown/bitburner.codingcontract.createdummycontract.md index 620d74695..589b33c0a 100644 --- a/markdown/bitburner.codingcontract.createdummycontract.md +++ b/markdown/bitburner.codingcontract.createdummycontract.md @@ -9,14 +9,14 @@ Generate a dummy contract. **Signature:** ```typescript -createDummyContract(type: string): string; +createDummyContract(type: CodingContractName): string; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| type | string | Type of contract to generate | +| type | [CodingContractName](./bitburner.codingcontractname.md) | Type of contract to generate | **Returns:** diff --git a/src/CodingContract/ContractTypes.ts b/src/CodingContract/ContractTypes.ts index 833129f57..3103601db 100644 --- a/src/CodingContract/ContractTypes.ts +++ b/src/CodingContract/ContractTypes.ts @@ -103,9 +103,6 @@ export function convert2DArrayToString(arr: number[][]): string { return components.join(",").replace(/\s/g, ""); } -export const isCodingContractName = (v: unknown): v is CodingContractName => - Object.values(CodingContractName).some((a) => a === v); - export const CodingContractDefinitions: CodingContractTypes = { ...algorithmicStockTrader, ...arrayJumpingGame, diff --git a/src/DevMenu/ui/CodingContractsDev.tsx b/src/DevMenu/ui/CodingContractsDev.tsx index dcab2aa78..0f0a714d7 100644 --- a/src/DevMenu/ui/CodingContractsDev.tsx +++ b/src/DevMenu/ui/CodingContractsDev.tsx @@ -14,14 +14,16 @@ import { generateRandomContract, generateRandomContractOnHome, } from "../../CodingContract/ContractGenerator"; -import { isCodingContractName } from "../../CodingContract/ContractTypes"; import { CodingContractName } from "@enums"; +import { getEnumHelper } from "../../utils/EnumHelper"; export function CodingContractsDev(): React.ReactElement { const [codingcontract, setCodingcontract] = useState(CodingContractName.FindLargestPrimeFactor); function setCodingcontractDropdown(event: SelectChangeEvent): void { const value = event.target.value; - if (!isCodingContractName(value)) return; + if (!getEnumHelper("CodingContractName").isMember(value)) { + return; + } setCodingcontract(value); } diff --git a/src/NetscriptFunctions/CodingContract.ts b/src/NetscriptFunctions/CodingContract.ts index ae152f296..87e4e1da3 100644 --- a/src/NetscriptFunctions/CodingContract.ts +++ b/src/NetscriptFunctions/CodingContract.ts @@ -5,9 +5,9 @@ import { InternalAPI, NetscriptContext } from "../Netscript/APIWrapper"; import { helpers } from "../Netscript/NetscriptHelpers"; import { CodingContractName } from "@enums"; import { generateDummyContract } from "../CodingContract/ContractGenerator"; -import { isCodingContractName } from "../CodingContract/ContractTypes"; import { type BaseServer } from "../Server/BaseServer"; import { exceptionAlert } from "../utils/helpers/exceptionAlert"; +import { getEnumHelper } from "../utils/EnumHelper"; export function NetscriptCodingContract(): InternalAPI { const getCodingContract = function (ctx: NetscriptContext, hostname: string, filename: string): CodingContract { @@ -128,9 +128,7 @@ export function NetscriptCodingContract(): InternalAPI { return contract.getMaxNumTries() - contract.tries; }, createDummyContract: (ctx) => (_type) => { - const type = helpers.string(ctx, "type", _type); - if (!isCodingContractName(type)) - return helpers.errorMessage(ctx, `The given type is not a valid contract type. Got '${type}'`); + const type = getEnumHelper("CodingContractName").nsGetMember(ctx, _type); return generateDummyContract(type); }, getContractTypes: () => () => Object.values(CodingContractName), diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index c43ed449c..d5ec3aa3d 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -4037,7 +4037,7 @@ export interface CodingContract { * @param type - Type of contract to generate * @returns Filename of the contract. */ - createDummyContract(type: string): string; + createDummyContract(type: CodingContractName): string; /** * List all contract types.