Skip to content

Commit

Permalink
Version 3.4.0-b5
Browse files Browse the repository at this point in the history
Fixed default exports
  • Loading branch information
chrishamm committed Apr 7, 2022
1 parent bc9d0f7 commit 30e0c16
Show file tree
Hide file tree
Showing 60 changed files with 254 additions and 133 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@duet3d/objectmodel",
"version": "3.4.0-b4",
"version": "3.4.0-b5",
"description": "TypeScript implementation of the Duet3D Object Model",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
4 changes: 3 additions & 1 deletion src/ModelCollection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { setArrayItem } from "./index";
/**
* Class for storing model object items in an array
*/
export default class ModelCollection<T extends IModelObject> extends Array<T> implements IModelObject {
export class ModelCollection<T extends IModelObject> extends Array<T> implements IModelObject {
private readonly itemConstructor: { new(): T };

/**
Expand Down Expand Up @@ -80,3 +80,5 @@ export default class ModelCollection<T extends IModelObject> extends Array<T> im
return this;
}
}

export default ModelCollection
4 changes: 3 additions & 1 deletion src/ModelDictionary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { IModelObject, isModelObject } from "./ModelObject";
/**
* Dictionary class to map object model data
*/
export default class ModelDictionary<T> extends Map<string, T | null> implements IModelObject {
export class ModelDictionary<T> extends Map<string, T | null> implements IModelObject {
private readonly nullDeletesKeys: boolean;
private readonly itemConstructor: { new(): T } | null;

Expand Down Expand Up @@ -68,3 +68,5 @@ export default class ModelDictionary<T> extends Map<string, T | null> implements
return this;
}
}

export default ModelDictionary
4 changes: 3 additions & 1 deletion src/ModelObject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function isModelObject(value: any): value is IModelObject {
/**
* Base class for object model classes
*/
export default abstract class ModelObject implements IModelObject {
export abstract class ModelObject implements IModelObject {
/**
* Update this instance from the given data
* @param jsonElement JSON data to upgrade this instance from
Expand Down Expand Up @@ -163,3 +163,5 @@ export function initItem<T>(itemType: { new(): T }, data: { [Property in keyof T
}
return result;
}

export default ModelObject
47 changes: 47 additions & 0 deletions src/ObjectModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import ModelCollection from "./ModelCollection";
import ModelDictionary from "./ModelDictionary";
import ModelObject from "./ModelObject";

import Board from "./boards";
import State from "./state";
import Directories from "./directories";
import Fan from "./fans";
import Heat from "./heat";
import HttpEndpoint from "./httpEndpoints";
import InputChannel from "./inputs/InputChannel";
import Job from "./job";
import Limits from "./limits";
import Message from "./messages";
import Move from "./move";
import Plugin from "./plugins";
import Scanner from "./scanner";
import Sensors from "./sensors";
import Spindle from "./spindles";
import UserSession from "./userSessions";
import Volume from "./volumes";

/**
* Refer to the DSF/RRF documentation for descriptions of the object model fields
*/
export class ObjectModel extends ModelObject {
readonly boards: ModelCollection<Board> = new ModelCollection(Board);
readonly directories: Directories = new Directories();
readonly fans: ModelCollection<Fan> = new ModelCollection(Fan);
readonly global: ModelDictionary<any> = new ModelDictionary(false);
readonly heat: Heat = new Heat();
readonly httpEndpoints: ModelCollection<HttpEndpoint> = new ModelCollection(HttpEndpoint);
readonly inputs: ModelCollection<InputChannel> = new ModelCollection(InputChannel);
readonly job: Job = new Job();
readonly limits: Limits = new Limits();
readonly messages: ModelCollection<Message> = new ModelCollection(Message); // must be manually cleared after updates
readonly move: Move = new Move();
readonly plugins: ModelDictionary<Plugin> = new ModelDictionary(true, Plugin);
readonly scanner: Scanner = new Scanner();
readonly sensors: Sensors = new Sensors();
readonly spindles: ModelCollection<Spindle> = new ModelCollection(Spindle);
readonly state: State = new State();
readonly userSessions: ModelCollection<UserSession> = new ModelCollection(UserSession);
readonly volumes: ModelCollection<Volume> = new ModelCollection(Volume);
}

export default ObjectModel
4 changes: 3 additions & 1 deletion src/boards/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export class DirectDisplay extends ModelObject {
typeName: string = "";
}

export default class Board extends ModelObject {
export class Board extends ModelObject {
constructor() {
super();
this.wrapModelProperty("accelerometer", Accelerometer);
Expand Down Expand Up @@ -62,3 +62,5 @@ export default class Board extends ModelObject {
v12: MinMaxCurrent | null = null;
vIn: MinMaxCurrent | null = null;
}

export default Board
4 changes: 3 additions & 1 deletion src/directories/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ModelObject from "../ModelObject";

export default class Directories extends ModelObject {
export class Directories extends ModelObject {
filaments: string = "0:/filaments";
firmware: string = "0:/firmware";
gCodes: string = "0:/gcodes";
Expand All @@ -10,3 +10,5 @@ export default class Directories extends ModelObject {
system: string = "0:/sys";
web: string = "0:/www";
}

export default Directories
4 changes: 3 additions & 1 deletion src/fans/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export class FanThermostaticControl extends ModelObject {
lowTemperature: number | null = null;
}

export default class Fan extends ModelObject {
export class Fan extends ModelObject {
actualValue: number = 0;
blip: number = 0.1;
frequency: number = 250;
Expand All @@ -17,3 +17,5 @@ export default class Fan extends ModelObject {
rpm: number = -1;
readonly thermostatic: FanThermostaticControl = new FanThermostaticControl();
}

export default Fan
4 changes: 3 additions & 1 deletion src/heat/Heater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export enum HeaterState {
offline = "offline"
}

export default class Heater extends ModelObject {
export class Heater extends ModelObject {
active: number = 0;
avgPwm: number = 0;
current: number = -273.15;
Expand All @@ -24,3 +24,5 @@ export default class Heater extends ModelObject {
standby: number = 0;
state: HeaterState = HeaterState.off;
}

export default Heater
4 changes: 3 additions & 1 deletion src/heat/HeaterModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export class HeaterModelPID extends ModelObject {
used: boolean = true;
}

export default class HeaterModel extends ModelObject {
export class HeaterModel extends ModelObject {
coolingExp: number = 1.35;
coolingRate: number = 0.56;
deadTime: number = 5.5;
Expand All @@ -20,3 +20,5 @@ export default class HeaterModel extends ModelObject {
readonly pid: HeaterModelPID = new HeaterModelPID();
standardVoltage: number | null = null;
}

export default HeaterModel
4 changes: 3 additions & 1 deletion src/heat/HeaterMonitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ export enum HeaterMonitorCondition {
tooLow = "tooLow"
}

export default class HeaterMonitor extends ModelObject {
export class HeaterMonitor extends ModelObject {
action: HeaterMonitorAction = HeaterMonitorAction.generateFault;
condition: HeaterMonitorCondition = HeaterMonitorCondition.disabled;
limit: number = 2000;
}

export default HeaterMonitor
6 changes: 4 additions & 2 deletions src/heat/index.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import ModelCollection from "../ModelCollection";
import Heater from "./Heater";
import ModelObject from "../ModelObject";
import Heater from "./Heater";

export default class Heat extends ModelObject {
export class Heat extends ModelObject {
bedHeaters: Array<number> = new Array<number>();
chamberHeaters: Array<number> = new Array<number>();
coldExtrudeTemperature: number = 160;
coldRetractTemperature: number = 90;
readonly heaters: ModelCollection<Heater> = new ModelCollection(Heater);
}

export default Heat

export * from "./Heater";
export * from "./HeaterModel";
export * from "./HeaterMonitor";
4 changes: 3 additions & 1 deletion src/httpEndpoints/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ export enum HttpEndpointType {
WebSocket = "WebSocket"
}

export default class HttpEndpoint extends ModelObject {
export class HttpEndpoint extends ModelObject {
endpointType: HttpEndpointType = HttpEndpointType.GET;
namespace: string = "";
path: string = "";
isUploadRequest: boolean = false;
unixSocket: string = "";
}

export default HttpEndpoint
72 changes: 16 additions & 56 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,4 @@
import ModelCollection from "./ModelCollection";
import ModelDictionary from "./ModelDictionary";
import ModelObject from "./ModelObject";

import Board from "./boards";
import State from "./state";
import Directories from "./directories";
import Fan from "./fans";
import Heat from "./heat";
import HttpEndpoint from "./httpEndpoints";
import InputChannel from "./inputs/InputChannel";
import Job from "./job";
import Limits from "./limits";
import Message from "./messages";
import Move from "./move";
import Plugin from "./plugins";
import Scanner from "./scanner";
import Sensors from "./sensors";
import Spindle from "./spindles";
import UserSession from "./userSessions";
import Volume from "./volumes";

// Unfortunately we need to define a way to update arrays to remain compatible with Vue 2 (due to IE11).
// This will become obsolete as soon as DWC is upgraded to Vue 3, but that isn't going to happen anytime soon.
// Until then a Vue 2 user would have to call something like this on initialization to work around this limitation:
// globalThis._duetModelSetArray = (array, index, value) => Vue.set(array, index, value);
(globalThis as any)._duetModelSetArray = (array: Array<any>, index: number, value: any) => array[index] = value;
export function setArrayItem(array: Array<any>, index: number, value: any) {
(globalThis as any)._duetModelSetArray(array, index, value);
}

/**
* Refer to the DSF/RRF documentation for descriptions of the object model fields
*/
export default class ObjectModel extends ModelObject {
readonly boards: ModelCollection<Board> = new ModelCollection(Board);
readonly directories: Directories = new Directories();
readonly fans: ModelCollection<Fan> = new ModelCollection(Fan);
readonly global: ModelDictionary<any> = new ModelDictionary(false);
readonly heat: Heat = new Heat();
readonly httpEndpoints: ModelCollection<HttpEndpoint> = new ModelCollection(HttpEndpoint);
readonly inputs: ModelCollection<InputChannel> = new ModelCollection(InputChannel);
readonly job: Job = new Job();
readonly limits: Limits = new Limits();
readonly messages: ModelCollection<Message> = new ModelCollection(Message); // must be manually cleared after updates
readonly move: Move = new Move();
readonly plugins: ModelDictionary<Plugin> = new ModelDictionary(true, Plugin);
readonly scanner: Scanner = new Scanner();
readonly sensors: Sensors = new Sensors();
readonly spindles: ModelCollection<Spindle> = new ModelCollection(Spindle);
readonly state: State = new State();
readonly userSessions: ModelCollection<UserSession> = new ModelCollection(UserSession);
readonly volumes: ModelCollection<Volume> = new ModelCollection(Volume);
}

// Export everything again from here to simplify imports from other packages
// Expose all the sub-exports
export * from "./ModelCollection";
export * from "./ModelDictionary";
export * from "./ModelObject";
Expand All @@ -75,3 +20,18 @@ export * from "./sensors";
export * from "./spindles";
export * from "./userSessions";
export * from "./volumes";

export * from "./ObjectModel";

// Expose ObjectModel as default export
import ObjectModel from "./ObjectModel";
export default ObjectModel;

// Unfortunately we need to define a way to update arrays to remain compatible with Vue 2 (due to IE11).
// This will become obsolete as soon as DWC is upgraded to Vue 3, but that isn't going to happen anytime soon.
// Until then a Vue 2 user would have to call something like this on initialization to work around this limitation:
// globalThis._duetModelSetArray = (array, index, value) => Vue.set(array, index, value);
(globalThis as any)._duetModelSetArray = (array: Array<any>, index: number, value: any) => array[index] = value;
export function setArrayItem(array: Array<any>, index: number, value: any) {
(globalThis as any)._duetModelSetArray(array, index, value);
}
2 changes: 2 additions & 0 deletions src/inputs/CodeChannel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ export enum CodeChannel {
autopause = 11,
unknown = 12
}

export default CodeChannel
2 changes: 2 additions & 0 deletions src/inputs/Compatibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ export enum Compatibility {
Repetier = "Repetier",
NanoDLP = "NanoDLP"
}

export default Compatibility
6 changes: 4 additions & 2 deletions src/inputs/InputChannel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Compatibility } from "./Compatibility";
import ModelObject from "../ModelObject";
import Compatibility from "./Compatibility";

export enum DistanceUnit {
mm ="mm",
Expand All @@ -14,7 +14,7 @@ export enum InputChannelState {
reading = "reading"
}

export default class InputChannel extends ModelObject {
export class InputChannel extends ModelObject {
axesRelative: boolean = false;
compatibility: Compatibility = Compatibility.RepRapFirmware;
distanceUnit: DistanceUnit = DistanceUnit.mm;
Expand All @@ -28,3 +28,5 @@ export default class InputChannel extends ModelObject {
lineNumber: bigint = 0n;
volumetric: boolean = false;
}

export default InputChannel
6 changes: 4 additions & 2 deletions src/job/Build.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ModelObject from "../ModelObject";
import ModelCollection from "../ModelCollection";
import ModelObject from "../ModelObject";

export class BuildObject extends ModelObject {
cancelled: boolean = false;
Expand All @@ -8,9 +8,11 @@ export class BuildObject extends ModelObject {
y: Array<number | null> = new Array<number | null>();
}

export default class Build extends ModelObject {
export class Build extends ModelObject {
currentObject: number = -1;
m486names: boolean = false;
m486numbers: boolean = false;
readonly objects: ModelCollection<BuildObject> = new ModelCollection(BuildObject);
}

export default Build
6 changes: 4 additions & 2 deletions src/job/GCodeFileInfo.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import ModelObject from "../ModelObject";
import ModelCollection from "../ModelCollection";
import ModelObject from "../ModelObject";
import ThumbnailInfo from "./ThumbnailInfo";

export default class GCodeFileInfo extends ModelObject {
export class GCodeFileInfo extends ModelObject {
filament: Array<number> = new Array<number>();
fileName: string = "";
generatedBy: string = "";
Expand All @@ -15,3 +15,5 @@ export default class GCodeFileInfo extends ModelObject {
size: bigint = 0n;
readonly thumbnails: ModelCollection<ThumbnailInfo> = new ModelCollection(ThumbnailInfo);
}

export default GCodeFileInfo
6 changes: 4 additions & 2 deletions src/job/ThumbnailInfo.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import ModelObject from "../ModelObject";
import { ModelObject } from "../ModelObject";

export enum ThumbnailFormat {
jpeg = 'jpeg',
png = 'png',
qoi = 'qoi'
}

export default class ThumbnailInfo extends ModelObject {
export class ThumbnailInfo extends ModelObject {
data: string | null = null;
format: ThumbnailFormat = ThumbnailFormat.png;
height: number = 0;
offset: number = 0;
size: number = 0;
width: number = 0;
}

export default ThumbnailInfo
Loading

0 comments on commit 30e0c16

Please sign in to comment.