Files
factorio-clusterio/packages/lib/src/link/messages.ts
T
bbassieandClaude Opus 5.5 01cf789f5d Add base instances for instance config inheritance
Instances can be marked as a base with instance.is_base and other
instances inherit config values from it through instance.base_id.
The controller copies base values into inheriting configs and keeps
track of inherited fields in the hidden instance.inherited_fields, so
hosts receive resolved configs and need no changes. Setting a field
stops inheriting it, `instance config inherit` undoes that.

Bases cannot be assigned to a host, are hidden from `instance list`
unless --bases is given, and cannot be deleted or unmarked while
other instances inherit from them. Chains of bases are allowed and
cycles are rejected.

Part of #200

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:54:21 +00:00

181 lines
5.5 KiB
TypeScript

import * as core from "../data/messages_core.js";
import * as controller from "../data/messages_controller.js";
import * as host from "../data/messages_host.js";
import * as instance from "../data/messages_instance.js";
import * as mod from "../data/messages_mod.js";
import * as user from "../data/messages_user.js";
import * as role from "../data/messages_role.js";
import * as note from "../data/messages_note.js";
import * as plugin from "../data/messages_plugin.js";
import * as subscriptions from "../subscriptions.js";
import * as errors from "../errors.js";
import type { RequestClass, EventClass, ErrorClass } from "./link.js";
/**
* Event and Request payloads registered with the Link class. Used to decode
* the data payload of incomming requsts and event messages into instances of
* their proper classes.
* @internal
*/
export const dataClasses: (RequestClass<unknown, unknown> | EventClass<unknown>)[] = [
core.PingRequest,
core.AccountUpdateEvent,
controller.ControllerStopRequest,
controller.ControllerRestartRequest,
controller.ControllerMarkRestartRequiredRequest,
controller.ControllerUpdateRequest,
controller.ControllerConfigGetRequest,
controller.ControllerConfigSetRequest,
controller.ControllerConfigSetFieldRequest,
controller.ControllerConfigSetPropRequest,
controller.HostPairingListRequest,
controller.HostPairingUpdatesEvent,
controller.HostPairingApproveRequest,
controller.HostPairingRejectRequest,
controller.GetFactorioCredentialsRequest,
controller.LogSetSubscriptionsRequest,
controller.LogQueryRequest,
controller.LogMessageEvent,
controller.SystemInfoRequest,
controller.SystemInfoUpdateEvent,
controller.DebugDumpWsRequest,
controller.DebugWsMessageEvent,
controller.FactorioVersionsRequest,
controller.LatestReleasesRequest,
subscriptions.SubscriptionRequest,
host.HostStopRequest,
host.HostRestartRequest,
host.HostMarkRestartRequiredRequest,
host.HostUpdateRequest,
host.HostConfigGetRequest,
host.HostConfigSetRequest,
host.HostConfigSetFieldRequest,
host.HostConfigSetPropRequest,
host.HostListRequest,
host.HostInfoUpdateEvent,
host.HostUpdatesEvent,
host.HostMetricsRequest,
host.ControllerConnectionEvent,
host.PrepareControllerDisconnectRequest,
host.SyncUserListsEvent,
host.HostRevokeRequest,
instance.InstanceDetailsGetRequest,
instance.InstanceDetailsListRequest,
instance.InstanceDetailsUpdatesEvent,
instance.InstanceCreateRequest,
instance.InstanceConfigGetRequest,
instance.InstanceConfigSetRequest,
instance.InstanceConfigSetFieldRequest,
instance.InstanceConfigSetPropRequest,
instance.InstanceConfigInheritFieldRequest,
instance.InstanceAssignRequest,
instance.InstanceMetricsRequest,
instance.InstanceStartRequest,
instance.InstanceRestartRequest,
instance.InstanceSaveDetailsListRequest,
instance.InstanceSaveDetailsUpdatesEvent,
instance.InstanceCreateSaveRequest,
instance.InstanceSaveGameRequest,
instance.InstanceRenameSaveRequest,
instance.InstanceCopySaveRequest,
instance.InstanceDeleteSaveRequest,
instance.InstanceDownloadSaveRequest,
instance.InstanceTransferSaveRequest,
instance.InstancePullSaveRequest,
instance.InstancePushSaveRequest,
instance.InstanceLoadScenarioRequest,
instance.InstanceExportDataRequest,
instance.InstanceExtractPlayersRequest,
instance.InstanceStopRequest,
instance.InstanceKillRequest,
instance.InstanceDeleteRequest,
instance.InstanceDeleteInternalRequest,
instance.InstanceSendRconRequest,
instance.InstancesUpdateRequest,
instance.InstanceAssignInternalRequest,
instance.InstanceUnassignInternalRequest,
instance.InstanceInitialisedEvent,
instance.InstanceStatusChangedEvent,
instance.InstanceDetailsChangedEvent,
instance.InstanceBanlistUpdateEvent,
instance.InstanceAdminlistUpdateEvent,
instance.InstanceWhitelistUpdateEvent,
instance.InstancePlayerUpdateEvent,
mod.ModPackGetRequest,
mod.ModPackGetDefaultRequest,
mod.ModPackListRequest,
mod.ModPackCreateRequest,
mod.ModPackUpdateRequest,
mod.ModPackDeleteRequest,
mod.ModGetRequest,
mod.ModListRequest,
mod.ModSearchRequest,
mod.ModPortalGetAllRequest,
mod.ModDownloadRequest,
mod.ModDeleteRequest,
mod.ModPackUpdatesEvent,
mod.ModUpdatesEvent,
mod.ModPortalDownloadRequest,
mod.ModDependencyResolveRequest,
role.PermissionListRequest,
role.RoleListRequest,
role.RoleUpdatesEvent,
role.RoleCreateRequest,
role.RoleUpdateRequest,
role.RoleGrantDefaultPermissionsRequest,
role.RoleDeleteRequest,
note.NoteListRequest,
note.NoteUpdatesEvent,
note.NoteSetRequest,
user.UserGetRequest,
user.UserListRequest,
user.UserCreateRequest,
user.UserRevokeTokenRequest,
user.UserUpdateRolesRequest,
user.UserSetAdminRequest,
user.UserSetWhitelistedRequest,
user.UserSetBannedRequest,
user.UserDeleteRequest,
user.UserUpdatesEvent,
user.UserBulkImportRequest,
user.UserBulkExportRequest,
plugin.PluginListRequest,
plugin.PluginUpdateRequest,
plugin.PluginInstallRequest,
plugin.PluginSearchRequest,
plugin.PluginLatestVersionsRequest,
plugin.UpdateAllRequest,
];
/**
* Error classes registered with the Link class. Used to send errors thrown
* by request handlers back as instances of the same class.
* @internal
*/
export const errorClasses: ErrorClass[] = [
errors.ClientError,
errors.ValidationError,
errors.InvalidValueError,
errors.InvalidFieldError,
errors.ForbiddenError,
errors.PermissionError,
errors.InvalidAccessError,
errors.NotFoundError,
errors.TimeoutError,
errors.ConflictError,
errors.ServerError,
errors.InternalServerError,
errors.UnavailableError,
errors.InvalidMessage,
errors.SessionLost,
];