UNPKG

farmbot

Version:
170 lines (161 loc) 4.98 kB
import { Curve, Crop, DeviceAccountSettings, FarmEvent, FarmwareEnv, FarmwareInstallation, Folder, GenericPointer, Image, Log, Peripheral, PinBinding, PlantPointer, PlantTemplate, PointGroup, Regimen, SavedGarden, Sensor, SensorReading, SequenceResource, Telemetry, Tool, ToolSlotPointer, User, WebcamFeed, WeedPointer, WizardStepResult, } from "./api_resources"; import { FbosConfig } from "./configs/fbos"; import { FirmwareConfig } from "./configs/firmware"; import { WebAppConfig } from "./configs/web_app"; import { Alert } from "../interfaces"; export type ResourceName = | "Alert" | "Crop" | "Curve" | "Device" | "FarmEvent" | "FarmwareEnv" | "FarmwareInstallation" | "FbosConfig" | "FirmwareConfig" | "Folder" | "Image" | "Log" | "Peripheral" | "PinBinding" | "Plant" | "PlantTemplate" | "Point" | "PointGroup" | "Regimen" | "SavedGarden" | "Sensor" | "SensorReading" | "Sequence" | "Telemetry" | "Tool" | "User" | "WebAppConfig" | "WizardStepResult" | "WebcamFeed"; export interface TaggedResourceBase { kind: ResourceName; /** Unique identifier and index key. * We can't use the object's `id` attribute as a local index key because * unsaved objects don't have one. */ uuid: string; body: object; /** Indicates if the resource is saved, saving or dirty. * `undefined` denotes that the resource is saved. */ specialStatus: SpecialStatus; } /** Denotes special status of resource */ export enum SpecialStatus { /** The local copy is different than the one on the remote end. */ DIRTY = "DIRTY", /** The local copy is being saved on the remote end right now? */ SAVING = "SAVING", /** API and FE are in sync. Using "" for now because its falsey like old * `undefined` value */ SAVED = "" } export interface RestResource<T extends ResourceName, U extends object> extends TaggedResourceBase { kind: T; body: U; } export type TaggedResource = | TaggedAlert | TaggedCrop | TaggedCurve | TaggedDevice | TaggedFarmEvent | TaggedFarmwareEnv | TaggedFarmwareInstallation | TaggedFbosConfig | TaggedFirmwareConfig | TaggedFolder | TaggedImage | TaggedLog | TaggedPeripheral | TaggedPinBinding | TaggedPlantTemplate | TaggedPoint | TaggedPointGroup | TaggedRegimen | TaggedSavedGarden | TaggedSensor | TaggedSensorReading | TaggedSequence | TaggedTelemetry | TaggedTool | TaggedUser | TaggedWebAppConfig | TaggedWizardStepResult | TaggedWebcamFeed; type PointUnion = | GenericPointer | PlantPointer | ToolSlotPointer | WeedPointer; export type TaggedAlert = RestResource<"Alert", Alert>; export type TaggedCrop = RestResource<"Crop", Crop>; export type TaggedCurve = RestResource<"Curve", Curve>; export type TaggedDevice = RestResource<"Device", DeviceAccountSettings>; export type TaggedFolder = RestResource<"Folder", Folder>; export type TaggedFarmEvent = RestResource<"FarmEvent", FarmEvent>; export type TaggedFarmwareEnv = RestResource<"FarmwareEnv", FarmwareEnv>; export type TaggedFarmwareInstallation = RestResource<"FarmwareInstallation", FarmwareInstallation>; export type TaggedFbosConfig = RestResource<"FbosConfig", FbosConfig>; export type TaggedFirmwareConfig = RestResource<"FirmwareConfig", FirmwareConfig>; export type TaggedGenericPointer = RestResource<"Point", GenericPointer>; export type TaggedImage = RestResource<"Image", Image>; export type TaggedLog = RestResource<"Log", Log>; export type TaggedPeripheral = RestResource<"Peripheral", Peripheral>; export type TaggedPinBinding = RestResource<"PinBinding", PinBinding>; export type TaggedPlantPointer = RestResource<"Point", PlantPointer>; export type TaggedPlantTemplate = RestResource<"PlantTemplate", PlantTemplate>; export type TaggedPoint = RestResource<"Point", PointUnion>; export type TaggedPointGroup = RestResource<"PointGroup", PointGroup>; export type TaggedRegimen = RestResource<"Regimen", Regimen>; export type TaggedSavedGarden = RestResource<"SavedGarden", SavedGarden>; export type TaggedSensor = RestResource<"Sensor", Sensor>; export type TaggedSensorReading = RestResource<"SensorReading", SensorReading>; export type TaggedSequence = RestResource<"Sequence", SequenceResource>; export type TaggedTelemetry = RestResource<"Telemetry", Telemetry>; export type TaggedTool = RestResource<"Tool", Tool>; export type TaggedToolSlotPointer = RestResource<"Point", ToolSlotPointer>; export type TaggedUser = RestResource<"User", User>; export type TaggedWebAppConfig = RestResource<"WebAppConfig", WebAppConfig>; export type TaggedWebcamFeed = RestResource<"WebcamFeed", WebcamFeed>; export type TaggedWizardStepResult = RestResource<"WizardStepResult", WizardStepResult>; export type TaggedWeedPointer = RestResource<"Point", WeedPointer>; export type PointerType = | TaggedToolSlotPointer | TaggedGenericPointer | TaggedPlantPointer | TaggedWeedPointer;