From 3d7d2d7734330175d49b3e4155847911d193855f Mon Sep 17 00:00:00 2001 From: David Walker Date: Fri, 16 Jan 2026 23:30:49 -0800 Subject: [PATCH] REFACTOR: Move Result to the public API (#2398) * REFACTOR: Move Result to the public API This refactors Result to be part of the public NetscriptDefinitions. It is not used by anything in this PR, but it is planned to be used in the autoinfil APIs, or lacking that, future APIs, so this should not be exposing anything prematurely. * Add @public as api-extractor suggested and generate docs * Use import type --------- Co-authored-by: CatLover <152669316+catloversg@users.noreply.github.com> --- markdown/bitburner.failureresult.md | 12 ++++++++ markdown/bitburner.md | 30 +++++++++++++++++++ markdown/bitburner.result.md | 14 +++++++++ markdown/bitburner.successresult.md | 12 ++++++++ src/CodingContract/Contract.ts | 2 +- src/Corporation/Actions.ts | 4 +-- src/Corporation/Corporation.ts | 4 +-- src/CotMG/Helper.tsx | 2 +- src/Documentation/pages.ts | 6 ++++ src/Faction/FactionHelpers.tsx | 2 +- src/Hacknet/HacknetHelpers.tsx | 2 +- src/Hacknet/HashManager.ts | 2 +- src/NetscriptFunctions/Infiltration.ts | 2 +- src/NetscriptWorker.ts | 3 +- .../Player/PlayerObjectGangMethods.ts | 2 +- .../Player/PlayerObjectGeneralMethods.ts | 2 +- src/ScriptEditor/NetscriptDefinitions.d.ts | 7 +++++ src/Settings/Settings.ts | 2 +- src/types.ts | 4 --- 19 files changed, 95 insertions(+), 19 deletions(-) create mode 100644 markdown/bitburner.failureresult.md create mode 100644 markdown/bitburner.result.md create mode 100644 markdown/bitburner.successresult.md diff --git a/markdown/bitburner.failureresult.md b/markdown/bitburner.failureresult.md new file mode 100644 index 000000000..07149d10e --- /dev/null +++ b/markdown/bitburner.failureresult.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [FailureResult](./bitburner.failureresult.md) + +## FailureResult type + + +**Signature:** + +```typescript +type FailureResult = { success: false; message: string }; +``` diff --git a/markdown/bitburner.md b/markdown/bitburner.md index 63a02910b..4fc8fff36 100644 --- a/markdown/bitburner.md +++ b/markdown/bitburner.md @@ -1803,6 +1803,16 @@ Warning: Spoiler ahead. This enum contains names of \*\*all\*\* factions. If you + + + +[FailureResult](./bitburner.failureresult.md) + + + + + + @@ -2029,6 +2039,16 @@ A stand-in for the real React.ReactNode. A [ReactElement](./bitburner.reacteleme Use React.createElement to make the ReactElement type, see [creating an element without jsx](https://react.dev/reference/react/createElement#creating-an-element-without-jsx) from the official React documentation. + + + +[Result](./bitburner.result.md) + + + + + + @@ -2171,6 +2191,16 @@ These special Bladeburner action types are only for Sleeve + + + +[SuccessResult](./bitburner.successresult.md) + + + + + + diff --git a/markdown/bitburner.result.md b/markdown/bitburner.result.md new file mode 100644 index 000000000..bae2fd6d0 --- /dev/null +++ b/markdown/bitburner.result.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [Result](./bitburner.result.md) + +## Result type + + +**Signature:** + +```typescript +type Result = SuccessResult | FailureResult; +``` +**References:** [SuccessResult](./bitburner.successresult.md), [FailureResult](./bitburner.failureresult.md) + diff --git a/markdown/bitburner.successresult.md b/markdown/bitburner.successresult.md new file mode 100644 index 000000000..d8f7018f1 --- /dev/null +++ b/markdown/bitburner.successresult.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) > [bitburner](./bitburner.md) > [SuccessResult](./bitburner.successresult.md) + +## SuccessResult type + + +**Signature:** + +```typescript +type SuccessResult = { success: true; message?: string } & T; +``` diff --git a/src/CodingContract/Contract.ts b/src/CodingContract/Contract.ts index 4fd525dad..a2f384561 100644 --- a/src/CodingContract/Contract.ts +++ b/src/CodingContract/Contract.ts @@ -4,7 +4,7 @@ import { CodingContractTypes } from "./ContractTypes"; import { Generic_fromJSON, Generic_toJSON, IReviverValue, constructorsForReviver } from "../utils/JSONReviver"; import { ContractFilePath, resolveContractFilePath } from "../Paths/ContractFilePath"; import { assertObject } from "../utils/TypeAssertion"; -import { Result } from "../types"; +import type { Result } from "@nsdefs"; import { CodingContractEventEmitter } from "./CodingContractEventEmitter"; // Numeric enum diff --git a/src/Corporation/Actions.ts b/src/Corporation/Actions.ts index 368535b9a..cae2faa34 100644 --- a/src/Corporation/Actions.ts +++ b/src/Corporation/Actions.ts @@ -1,5 +1,5 @@ import { Player } from "@player"; -import { CorpResearchName, CorpSmartSupplyOption } from "@nsdefs"; +import type { CorpResearchName, CorpSmartSupplyOption, Result } from "@nsdefs"; import { MaterialInfo } from "./MaterialInfo"; import { Corporation } from "./Corporation"; @@ -25,7 +25,7 @@ import { canCreateCorporation, convertCreatingCorporationCheckResultToMessage, } from "./helpers"; -import { PositiveInteger, Result } from "../types"; +import type { PositiveInteger } from "../types"; import { Factions } from "../Faction/Factions"; import { throwIfReachable } from "../utils/helpers/throwIfReachable"; import { formatMoney, formatNumber } from "../ui/formatNumber"; diff --git a/src/Corporation/Corporation.ts b/src/Corporation/Corporation.ts index 32c17f086..0cfbc4018 100644 --- a/src/Corporation/Corporation.ts +++ b/src/Corporation/Corporation.ts @@ -1,6 +1,6 @@ import type { PromisePair } from "../Types/Promises"; import { Player } from "@player"; -import { CorpStateName, InvestmentOffer } from "@nsdefs"; +import type { CorpStateName, InvestmentOffer, Result } from "@nsdefs"; import { CorpUnlockName, CorpUpgradeName, LiteratureName } from "@enums"; import { CorporationState } from "./CorporationState"; import { CorpUnlocks } from "./data/CorporationUnlocks"; @@ -17,7 +17,7 @@ import { dialogBoxCreate } from "../ui/React/DialogBox"; import { constructorsForReviver, Generic_toJSON, Generic_fromJSON, IReviverValue } from "../utils/JSONReviver"; import { JSONMap, JSONSet } from "../Types/Jsonable"; import { formatMoney } from "../ui/formatNumber"; -import { isPositiveInteger, type Result } from "../types"; +import { isPositiveInteger } from "../types"; import { createEnumKeyedRecord, getRecordValues } from "../Types/Record"; import { getKeyList } from "../utils/helpers/getKeyList"; import { assertObject } from "../utils/TypeAssertion"; diff --git a/src/CotMG/Helper.tsx b/src/CotMG/Helper.tsx index 25c0aadc7..4a325ca5c 100644 --- a/src/CotMG/Helper.tsx +++ b/src/CotMG/Helper.tsx @@ -5,7 +5,7 @@ import { Reviver } from "../utils/GenericReviver"; import { BaseGift } from "./BaseGift"; import { StaneksGift } from "./StaneksGift"; -import { Result } from "../types"; +import type { Result } from "@nsdefs"; import { isStanekGiftImplemented } from "../utils/ErrorHelper"; export let staneksGift = new StaneksGift(); diff --git a/src/Documentation/pages.ts b/src/Documentation/pages.ts index b14eca0ff..20e4b25f4 100644 --- a/src/Documentation/pages.ts +++ b/src/Documentation/pages.ts @@ -458,6 +458,7 @@ import nsDoc_bitburner_factionworktask_factionworktype_md from "../../markdown/b import nsDoc_bitburner_factionworktask_md from "../../markdown/bitburner.factionworktask.md?raw"; import nsDoc_bitburner_factionworktask_type_md from "../../markdown/bitburner.factionworktask.type.md?raw"; import nsDoc_bitburner_factionworktype_md from "../../markdown/bitburner.factionworktype.md?raw"; +import nsDoc_bitburner_failureresult_md from "../../markdown/bitburner.failureresult.md?raw"; import nsDoc_bitburner_filemetadata_atime_md from "../../markdown/bitburner.filemetadata.atime.md?raw"; import nsDoc_bitburner_filemetadata_btime_md from "../../markdown/bitburner.filemetadata.btime.md?raw"; import nsDoc_bitburner_filemetadata_md from "../../markdown/bitburner.filemetadata.md?raw"; @@ -1151,6 +1152,7 @@ import nsDoc_bitburner_resetinfo_lastnodereset_md from "../../markdown/bitburner import nsDoc_bitburner_resetinfo_md from "../../markdown/bitburner.resetinfo.md?raw"; import nsDoc_bitburner_resetinfo_ownedaugs_md from "../../markdown/bitburner.resetinfo.ownedaugs.md?raw"; import nsDoc_bitburner_resetinfo_ownedsf_md from "../../markdown/bitburner.resetinfo.ownedsf.md?raw"; +import nsDoc_bitburner_result_md from "../../markdown/bitburner.result.md?raw"; import nsDoc_bitburner_runningscript_args_md from "../../markdown/bitburner.runningscript.args.md?raw"; import nsDoc_bitburner_runningscript_dynamicramusage_md from "../../markdown/bitburner.runningscript.dynamicramusage.md?raw"; import nsDoc_bitburner_runningscript_filename_md from "../../markdown/bitburner.runningscript.filename.md?raw"; @@ -1388,6 +1390,7 @@ import nsDoc_bitburner_studytask_classtype_md from "../../markdown/bitburner.stu import nsDoc_bitburner_studytask_location_md from "../../markdown/bitburner.studytask.location.md?raw"; import nsDoc_bitburner_studytask_md from "../../markdown/bitburner.studytask.md?raw"; import nsDoc_bitburner_studytask_type_md from "../../markdown/bitburner.studytask.type.md?raw"; +import nsDoc_bitburner_successresult_md from "../../markdown/bitburner.successresult.md?raw"; import nsDoc_bitburner_tailproperties_fontsize_md from "../../markdown/bitburner.tailproperties.fontsize.md?raw"; import nsDoc_bitburner_tailproperties_height_md from "../../markdown/bitburner.tailproperties.height.md?raw"; import nsDoc_bitburner_tailproperties_md from "../../markdown/bitburner.tailproperties.md?raw"; @@ -1968,6 +1971,7 @@ AllPages["nsDoc/bitburner.factionworktask.factionworktype.md"] = nsDoc_bitburner AllPages["nsDoc/bitburner.factionworktask.md"] = nsDoc_bitburner_factionworktask_md; AllPages["nsDoc/bitburner.factionworktask.type.md"] = nsDoc_bitburner_factionworktask_type_md; AllPages["nsDoc/bitburner.factionworktype.md"] = nsDoc_bitburner_factionworktype_md; +AllPages["nsDoc/bitburner.failureresult.md"] = nsDoc_bitburner_failureresult_md; AllPages["nsDoc/bitburner.filemetadata.atime.md"] = nsDoc_bitburner_filemetadata_atime_md; AllPages["nsDoc/bitburner.filemetadata.btime.md"] = nsDoc_bitburner_filemetadata_btime_md; AllPages["nsDoc/bitburner.filemetadata.md"] = nsDoc_bitburner_filemetadata_md; @@ -2661,6 +2665,7 @@ AllPages["nsDoc/bitburner.resetinfo.lastnodereset.md"] = nsDoc_bitburner_resetin AllPages["nsDoc/bitburner.resetinfo.md"] = nsDoc_bitburner_resetinfo_md; AllPages["nsDoc/bitburner.resetinfo.ownedaugs.md"] = nsDoc_bitburner_resetinfo_ownedaugs_md; AllPages["nsDoc/bitburner.resetinfo.ownedsf.md"] = nsDoc_bitburner_resetinfo_ownedsf_md; +AllPages["nsDoc/bitburner.result.md"] = nsDoc_bitburner_result_md; AllPages["nsDoc/bitburner.runningscript.args.md"] = nsDoc_bitburner_runningscript_args_md; AllPages["nsDoc/bitburner.runningscript.dynamicramusage.md"] = nsDoc_bitburner_runningscript_dynamicramusage_md; AllPages["nsDoc/bitburner.runningscript.filename.md"] = nsDoc_bitburner_runningscript_filename_md; @@ -2898,6 +2903,7 @@ AllPages["nsDoc/bitburner.studytask.classtype.md"] = nsDoc_bitburner_studytask_c AllPages["nsDoc/bitburner.studytask.location.md"] = nsDoc_bitburner_studytask_location_md; AllPages["nsDoc/bitburner.studytask.md"] = nsDoc_bitburner_studytask_md; AllPages["nsDoc/bitburner.studytask.type.md"] = nsDoc_bitburner_studytask_type_md; +AllPages["nsDoc/bitburner.successresult.md"] = nsDoc_bitburner_successresult_md; AllPages["nsDoc/bitburner.tailproperties.fontsize.md"] = nsDoc_bitburner_tailproperties_fontsize_md; AllPages["nsDoc/bitburner.tailproperties.height.md"] = nsDoc_bitburner_tailproperties_height_md; AllPages["nsDoc/bitburner.tailproperties.md"] = nsDoc_bitburner_tailproperties_md; diff --git a/src/Faction/FactionHelpers.tsx b/src/Faction/FactionHelpers.tsx index 1e2266c6f..dde0c49db 100644 --- a/src/Faction/FactionHelpers.tsx +++ b/src/Faction/FactionHelpers.tsx @@ -20,7 +20,7 @@ import { SFC32RNG } from "../Casino/RNG"; import { isFactionWork } from "../Work/FactionWork"; import { getAugCost } from "../Augmentation/AugmentationHelpers"; import { getRecordKeys } from "../Types/Record"; -import type { Result } from "../types"; +import type { Result } from "@nsdefs"; export function inviteToFaction(faction: Faction): void { if (faction.alreadyInvited || faction.isMember) return; diff --git a/src/Hacknet/HacknetHelpers.tsx b/src/Hacknet/HacknetHelpers.tsx index 4f5438d5b..439d03ce8 100644 --- a/src/Hacknet/HacknetHelpers.tsx +++ b/src/Hacknet/HacknetHelpers.tsx @@ -25,7 +25,7 @@ import { Companies } from "../Company/Companies"; import { isMember } from "../utils/EnumHelper"; import { canAccessBitNodeFeature } from "../BitNode/BitNodeUtils"; import { checkServerOwnership, ServerOwnershipType } from "../Server/ServerHelpers"; -import { Result } from "../types"; +import type { Result } from "@nsdefs"; import { exceptionAlert } from "../utils/helpers/exceptionAlert"; import { HashUpgradeEnum } from "./Enums"; diff --git a/src/Hacknet/HashManager.ts b/src/Hacknet/HashManager.ts index 0a0493f40..768ab3c99 100644 --- a/src/Hacknet/HashManager.ts +++ b/src/Hacknet/HashManager.ts @@ -10,7 +10,7 @@ import { HashUpgrades } from "./HashUpgrades"; import { HashUpgrade } from "./HashUpgrade"; import { Generic_fromJSON, Generic_toJSON, IReviverValue, constructorsForReviver } from "../utils/JSONReviver"; -import { Result } from "../types"; +import type { Result } from "@nsdefs"; import { HashUpgradeEnum } from "./Enums"; export class HashManager { diff --git a/src/NetscriptFunctions/Infiltration.ts b/src/NetscriptFunctions/Infiltration.ts index 928dc5699..af4488b1c 100644 --- a/src/NetscriptFunctions/Infiltration.ts +++ b/src/NetscriptFunctions/Infiltration.ts @@ -1,5 +1,5 @@ import type { InternalAPI, NetscriptContext } from "../Netscript/APIWrapper"; -import { Infiltration as NetscriptInfiltation, InfiltrationLocation } from "@nsdefs"; +import type { Infiltration as NetscriptInfiltation, InfiltrationLocation } from "@nsdefs"; import { FactionName, LocationName } from "@enums"; import { Location } from "../Locations/Location"; import { Locations } from "../Locations/Locations"; diff --git a/src/NetscriptWorker.ts b/src/NetscriptWorker.ts index 18ee8c1d1..419f06930 100644 --- a/src/NetscriptWorker.ts +++ b/src/NetscriptWorker.ts @@ -25,7 +25,7 @@ import { roundToTwo } from "./utils/helpers/roundToTwo"; import { parseCommand } from "./Terminal/Parser"; import { Terminal } from "./Terminal"; -import { ScriptArg } from "@nsdefs"; +import type { ScriptArg, Result } from "@nsdefs"; import { CompleteRunOptions, getRunningScriptsByArgs } from "./Netscript/NetscriptHelpers"; import { handleUnknownError } from "./utils/ErrorHandler"; import { isLegacyScript, resolveScriptFilePath, ScriptFilePath } from "./Paths/ScriptFilePath"; @@ -33,7 +33,6 @@ import { Player } from "@player"; import { UIEventEmitter, UIEventType } from "./ui/UIEventEmitter"; import { getErrorMessageWithStackAndCause } from "./utils/ErrorHelper"; import { exceptionAlert } from "./utils/helpers/exceptionAlert"; -import { Result } from "./types"; export const NetscriptPorts = new Map(); diff --git a/src/PersonObjects/Player/PlayerObjectGangMethods.ts b/src/PersonObjects/Player/PlayerObjectGangMethods.ts index 0c02a2981..7cdd00086 100644 --- a/src/PersonObjects/Player/PlayerObjectGangMethods.ts +++ b/src/PersonObjects/Player/PlayerObjectGangMethods.ts @@ -7,7 +7,7 @@ import { Gang } from "../../Gang/Gang"; import { GangConstants } from "../../Gang/data/Constants"; import { isFactionWork } from "../../Work/FactionWork"; import { canAccessBitNodeFeature } from "../../BitNode/BitNodeUtils"; -import { Result } from "../../types"; +import type { Result } from "@nsdefs"; export function canAccessGang(this: PlayerObject): Result { if (this.bitNodeOptions.disableGang) { diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts index 16619a3c0..086664a8d 100644 --- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts +++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.ts @@ -54,7 +54,7 @@ import { canAccessBitNodeFeature } from "../../BitNode/BitNodeUtils"; import { AlertEvents } from "../../ui/React/AlertManager"; import { Augmentations } from "../../Augmentation/Augmentations"; import { PlayerEventType, PlayerEvents } from "./PlayerEvents"; -import { Result } from "../../types"; +import type { Result } from "@nsdefs"; import type { AchievementId } from "../../Achievements/Types"; import { Infiltration } from "../../Infiltration/Infiltration"; diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index 2f6b2f811..d0c7aa163 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -3,6 +3,13 @@ */ type _ValueOf = T[keyof T]; +/** @public */ +type SuccessResult = { success: true; message?: string } & T; +/** @public */ +type FailureResult = { success: false; message: string }; +/** @public */ +type Result = SuccessResult | FailureResult; + /** All netscript definitions */ /** diff --git a/src/Settings/Settings.ts b/src/Settings/Settings.ts index 0ac64ae6c..5bb390bdf 100644 --- a/src/Settings/Settings.ts +++ b/src/Settings/Settings.ts @@ -4,7 +4,7 @@ import { defaultStyles } from "../Themes/Styles"; import { CursorStyle, CursorBlinking, WordWrapOptions, StickyScroll } from "../ScriptEditor/ui/Options"; import { defaultMonacoTheme } from "../ScriptEditor/ui/themes"; import { assertObject } from "../utils/TypeAssertion"; -import { Result } from "../types"; +import type { Result } from "@nsdefs"; import { assertAndSanitizeEditorTheme, assertAndSanitizeKeyBindings, diff --git a/src/types.ts b/src/types.ts index 1d77ca71f..384bbdd8d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -31,10 +31,6 @@ export interface IReturnStatus { msg?: string; } -type SuccessResult = { success: true; message?: string } & T; -type FailureResult = { success: false; message: string }; -export type Result = SuccessResult | FailureResult; - /** Defines the minimum and maximum values for a range. * It is up to the consumer if these values are inclusive or exclusive. * It is up to the implementor to ensure max > min. */