mcp-3d-printer-server 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/package.json +2 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -800
- package/dist/index.js.map +0 -1
- package/dist/printers/bambu.d.ts +0 -25
- package/dist/printers/bambu.js +0 -111
- package/dist/printers/creality.d.ts +0 -10
- package/dist/printers/creality.js +0 -90
- package/dist/printers/duet.d.ts +0 -10
- package/dist/printers/duet.js +0 -66
- package/dist/printers/klipper.d.ts +0 -10
- package/dist/printers/klipper.js +0 -62
- package/dist/printers/octoprint.d.ts +0 -10
- package/dist/printers/octoprint.js +0 -97
- package/dist/printers/printer-factory.d.ts +0 -9
- package/dist/printers/printer-factory.js +0 -33
- package/dist/printers/prusa.d.ts +0 -10
- package/dist/printers/prusa.js +0 -93
- package/dist/printers/repetier.d.ts +0 -10
- package/dist/printers/repetier.js +0 -59
- package/dist/stl/stl-manipulator.d.ts +0 -127
- package/dist/stl/stl-manipulator.js +0 -870
- package/dist/test/stl-manipulator-test.d.ts +0 -2
- package/dist/test/stl-manipulator-test.js +0 -91
- package/dist/types.d.ts +0 -23
- package/dist/types.js +0 -26
- package/src/test/stl-manipulator-test.js +0 -114
- package/src/test/stl-manipulator-test.ts +0 -124
- package/src/test/tsconfig.json +0 -13
- package/test/sample_cube.stl +0 -86
- package/test/sample_cube_extended.stl +0 -172
- package/test/sample_cube_modified.stl +0 -86
- package/test/sample_cube_rotated.stl +0 -86
- package/test/sample_cube_scaled.stl +0 -86
- package/test/sample_cube_translated.stl +0 -86
- package/test/sample_cube_visualization.svg +0 -52
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/printers/bambu.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation, BambuPrinterStore } from "../types.js";
|
|
2
|
-
export declare class BambuImplementation extends PrinterImplementation {
|
|
3
|
-
private bambuPrinterStore;
|
|
4
|
-
constructor(apiClient: any, bambuPrinterStore: BambuPrinterStore);
|
|
5
|
-
private getBambuPrinter;
|
|
6
|
-
getStatus(host: string, port: string, apiKey: string): Promise<import("bambu-js").PrinterState>;
|
|
7
|
-
getFiles(host: string, port: string, apiKey: string): Promise<{
|
|
8
|
-
files: string[];
|
|
9
|
-
}>;
|
|
10
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<{
|
|
11
|
-
name: string;
|
|
12
|
-
exists: boolean;
|
|
13
|
-
}>;
|
|
14
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<{
|
|
15
|
-
status: string;
|
|
16
|
-
message: string;
|
|
17
|
-
}>;
|
|
18
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<void>;
|
|
19
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<{
|
|
20
|
-
status: string;
|
|
21
|
-
message: string;
|
|
22
|
-
}>;
|
|
23
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<void>;
|
|
24
|
-
private extractBambuCredentials;
|
|
25
|
-
}
|
package/dist/printers/bambu.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export class BambuImplementation extends PrinterImplementation {
|
|
3
|
-
constructor(apiClient, bambuPrinterStore) {
|
|
4
|
-
super(apiClient);
|
|
5
|
-
this.bambuPrinterStore = bambuPrinterStore;
|
|
6
|
-
}
|
|
7
|
-
getBambuPrinter(host, serial, token) {
|
|
8
|
-
return this.bambuPrinterStore.get(host, serial, token);
|
|
9
|
-
}
|
|
10
|
-
async getStatus(host, port, apiKey) {
|
|
11
|
-
// Extracting Bambu-specific parameters from apiKey
|
|
12
|
-
// Format should be "serial:token"
|
|
13
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
14
|
-
const printer = this.getBambuPrinter(host, serial, token);
|
|
15
|
-
// Connect if not already connected
|
|
16
|
-
if (!printer.isConnected) {
|
|
17
|
-
await printer.connect();
|
|
18
|
-
// Wait for initial state
|
|
19
|
-
await printer.awaitInitialState(10000); // 10 second timeout
|
|
20
|
-
}
|
|
21
|
-
return printer.getState();
|
|
22
|
-
}
|
|
23
|
-
async getFiles(host, port, apiKey) {
|
|
24
|
-
// Extracting Bambu-specific parameters
|
|
25
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
26
|
-
const printer = this.getBambuPrinter(host, serial, token);
|
|
27
|
-
// Connect if not already connected
|
|
28
|
-
if (!printer.isConnected) {
|
|
29
|
-
await printer.connect();
|
|
30
|
-
}
|
|
31
|
-
// Using the manipulateFiles API to list files
|
|
32
|
-
const fileList = [];
|
|
33
|
-
await printer.manipulateFiles(async (context) => {
|
|
34
|
-
const files = await context.readDir("gcodes");
|
|
35
|
-
fileList.push(...files);
|
|
36
|
-
});
|
|
37
|
-
return { files: fileList };
|
|
38
|
-
}
|
|
39
|
-
async getFile(host, port, apiKey, filename) {
|
|
40
|
-
// Extracting Bambu-specific parameters
|
|
41
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
42
|
-
// Bambu doesn't have a direct API to get file content
|
|
43
|
-
// Instead, this returns metadata about the file by confirming it exists
|
|
44
|
-
const printer = this.getBambuPrinter(host, serial, token);
|
|
45
|
-
// Connect if not already connected
|
|
46
|
-
if (!printer.isConnected) {
|
|
47
|
-
await printer.connect();
|
|
48
|
-
}
|
|
49
|
-
let fileExists = false;
|
|
50
|
-
await printer.manipulateFiles(async (context) => {
|
|
51
|
-
const files = await context.readDir("gcodes");
|
|
52
|
-
fileExists = files.includes(filename);
|
|
53
|
-
});
|
|
54
|
-
if (!fileExists) {
|
|
55
|
-
throw new Error(`File not found: ${filename}`);
|
|
56
|
-
}
|
|
57
|
-
return { name: filename, exists: true };
|
|
58
|
-
}
|
|
59
|
-
async uploadFile(host, port, apiKey, filePath, filename, print) {
|
|
60
|
-
// Extracting Bambu-specific parameters
|
|
61
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
62
|
-
const printer = this.getBambuPrinter(host, serial, token);
|
|
63
|
-
// Connect if not already connected
|
|
64
|
-
if (!printer.isConnected) {
|
|
65
|
-
await printer.connect();
|
|
66
|
-
}
|
|
67
|
-
// Upload file via FTP
|
|
68
|
-
await printer.manipulateFiles(async (context) => {
|
|
69
|
-
await context.sendFile(filePath, `gcodes/${filename}`);
|
|
70
|
-
});
|
|
71
|
-
if (print) {
|
|
72
|
-
// To start a print directly, we would need more info
|
|
73
|
-
// This is a placeholder - starting a print needs more details
|
|
74
|
-
throw new Error("Direct printing of uploaded files is not implemented yet");
|
|
75
|
-
}
|
|
76
|
-
return { status: "success", message: `File ${filename} uploaded successfully` };
|
|
77
|
-
}
|
|
78
|
-
async startJob(host, port, apiKey, filename) {
|
|
79
|
-
// Extracting Bambu-specific parameters
|
|
80
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
81
|
-
// Starting a job requires more information for Bambu printers
|
|
82
|
-
// This is a simplified implementation - in reality, we need
|
|
83
|
-
// more details about the 3MF project file structure
|
|
84
|
-
throw new Error("Starting a print job on Bambu printers requires more information about the file structure");
|
|
85
|
-
}
|
|
86
|
-
async cancelJob(host, port, apiKey) {
|
|
87
|
-
// Extracting Bambu-specific parameters
|
|
88
|
-
const [serial, token] = this.extractBambuCredentials(apiKey);
|
|
89
|
-
const printer = this.getBambuPrinter(host, serial, token);
|
|
90
|
-
// Connect if not already connected
|
|
91
|
-
if (!printer.isConnected) {
|
|
92
|
-
await printer.connect();
|
|
93
|
-
}
|
|
94
|
-
// Cancel print
|
|
95
|
-
printer.stop();
|
|
96
|
-
return { status: "success", message: "Print job cancelled" };
|
|
97
|
-
}
|
|
98
|
-
async setTemperature(host, port, apiKey, component, temperature) {
|
|
99
|
-
// Bambu API doesn't have direct temperature controls
|
|
100
|
-
// We would need to send custom G-code commands
|
|
101
|
-
throw new Error("Setting temperatures directly is not supported via the Bambu API");
|
|
102
|
-
}
|
|
103
|
-
// Helper method to extract Bambu-specific credentials from apiKey
|
|
104
|
-
extractBambuCredentials(apiKey) {
|
|
105
|
-
const parts = apiKey.split(':');
|
|
106
|
-
if (parts.length !== 2) {
|
|
107
|
-
throw new Error("Invalid Bambu credentials format. Expected 'serial:token'");
|
|
108
|
-
}
|
|
109
|
-
return [parts[0], parts[1]];
|
|
110
|
-
}
|
|
111
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class CrealityImplementation extends PrinterImplementation {
|
|
3
|
-
getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
4
|
-
getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
5
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
6
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
7
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
8
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
9
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
10
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import FormData from "form-data";
|
|
4
|
-
export class CrealityImplementation extends PrinterImplementation {
|
|
5
|
-
async getStatus(host, port, apiKey) {
|
|
6
|
-
const url = `http://${host}:${port}/api/device/status`;
|
|
7
|
-
const response = await this.apiClient.get(url, {
|
|
8
|
-
headers: {
|
|
9
|
-
"Authorization": `Bearer ${apiKey}`
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
return response.data;
|
|
13
|
-
}
|
|
14
|
-
async getFiles(host, port, apiKey) {
|
|
15
|
-
const url = `http://${host}:${port}/api/storage/list`;
|
|
16
|
-
const response = await this.apiClient.get(url, {
|
|
17
|
-
headers: {
|
|
18
|
-
"Authorization": `Bearer ${apiKey}`
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return response.data;
|
|
22
|
-
}
|
|
23
|
-
async getFile(host, port, apiKey, filename) {
|
|
24
|
-
const url = `http://${host}:${port}/api/storage/info?filename=${encodeURIComponent(filename)}`;
|
|
25
|
-
const response = await this.apiClient.get(url, {
|
|
26
|
-
headers: {
|
|
27
|
-
"Authorization": `Bearer ${apiKey}`
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return response.data;
|
|
31
|
-
}
|
|
32
|
-
async uploadFile(host, port, apiKey, filePath, filename, print) {
|
|
33
|
-
const url = `http://${host}:${port}/api/storage/upload`;
|
|
34
|
-
const formData = new FormData();
|
|
35
|
-
formData.append("file", fs.createReadStream(filePath));
|
|
36
|
-
formData.append("filename", filename);
|
|
37
|
-
const response = await this.apiClient.post(url, formData, {
|
|
38
|
-
headers: {
|
|
39
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
40
|
-
...formData.getHeaders()
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
if (print && response.data.success) {
|
|
44
|
-
await this.startJob(host, port, apiKey, filename);
|
|
45
|
-
}
|
|
46
|
-
return response.data;
|
|
47
|
-
}
|
|
48
|
-
async startJob(host, port, apiKey, filename) {
|
|
49
|
-
const url = `http://${host}:${port}/api/job/start`;
|
|
50
|
-
const response = await this.apiClient.post(url, {
|
|
51
|
-
filename: filename
|
|
52
|
-
}, {
|
|
53
|
-
headers: {
|
|
54
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
55
|
-
"Content-Type": "application/json"
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return response.data;
|
|
59
|
-
}
|
|
60
|
-
async cancelJob(host, port, apiKey) {
|
|
61
|
-
const url = `http://${host}:${port}/api/job/cancel`;
|
|
62
|
-
const response = await this.apiClient.post(url, {}, {
|
|
63
|
-
headers: {
|
|
64
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
65
|
-
"Content-Type": "application/json"
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return response.data;
|
|
69
|
-
}
|
|
70
|
-
async setTemperature(host, port, apiKey, component, temperature) {
|
|
71
|
-
const url = `http://${host}:${port}/api/printer/temperature`;
|
|
72
|
-
let data = {};
|
|
73
|
-
if (component === "bed") {
|
|
74
|
-
data.bed = temperature;
|
|
75
|
-
}
|
|
76
|
-
else if (component === "extruder") {
|
|
77
|
-
data.hotend = temperature;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
throw new Error(`Unsupported component: ${component}`);
|
|
81
|
-
}
|
|
82
|
-
const response = await this.apiClient.post(url, data, {
|
|
83
|
-
headers: {
|
|
84
|
-
"Authorization": `Bearer ${apiKey}`,
|
|
85
|
-
"Content-Type": "application/json"
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
return response.data;
|
|
89
|
-
}
|
|
90
|
-
}
|
package/dist/printers/duet.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class DuetImplementation extends PrinterImplementation {
|
|
3
|
-
getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
4
|
-
getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
5
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
6
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
7
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
8
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
9
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
10
|
-
}
|
package/dist/printers/duet.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import FormData from "form-data";
|
|
4
|
-
export class DuetImplementation extends PrinterImplementation {
|
|
5
|
-
async getStatus(host, port, apiKey) {
|
|
6
|
-
const url = `http://${host}:${port}/machine/status`;
|
|
7
|
-
const response = await this.apiClient.get(url);
|
|
8
|
-
return response.data;
|
|
9
|
-
}
|
|
10
|
-
async getFiles(host, port, apiKey) {
|
|
11
|
-
const url = `http://${host}:${port}/machine/file-list`;
|
|
12
|
-
const response = await this.apiClient.get(url);
|
|
13
|
-
return response.data;
|
|
14
|
-
}
|
|
15
|
-
async getFile(host, port, apiKey, filename) {
|
|
16
|
-
const url = `http://${host}:${port}/machine/file/${encodeURIComponent(filename)}`;
|
|
17
|
-
const response = await this.apiClient.get(url);
|
|
18
|
-
return response.data;
|
|
19
|
-
}
|
|
20
|
-
async uploadFile(host, port, apiKey, filePath, filename, print) {
|
|
21
|
-
const url = `http://${host}:${port}/machine/file-upload`;
|
|
22
|
-
const formData = new FormData();
|
|
23
|
-
formData.append("file", fs.createReadStream(filePath));
|
|
24
|
-
formData.append("filename", filename);
|
|
25
|
-
const response = await this.apiClient.post(url, formData, {
|
|
26
|
-
headers: {
|
|
27
|
-
...formData.getHeaders()
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
if (print && response.data.err === 0) {
|
|
31
|
-
await this.startJob(host, port, apiKey, filename);
|
|
32
|
-
}
|
|
33
|
-
return response.data;
|
|
34
|
-
}
|
|
35
|
-
async startJob(host, port, apiKey, filename) {
|
|
36
|
-
const url = `http://${host}:${port}/machine/code`;
|
|
37
|
-
const response = await this.apiClient.post(url, {
|
|
38
|
-
code: `M32 "${filename}"`
|
|
39
|
-
});
|
|
40
|
-
return response.data;
|
|
41
|
-
}
|
|
42
|
-
async cancelJob(host, port, apiKey) {
|
|
43
|
-
const url = `http://${host}:${port}/machine/code`;
|
|
44
|
-
const response = await this.apiClient.post(url, {
|
|
45
|
-
code: "M0"
|
|
46
|
-
});
|
|
47
|
-
return response.data;
|
|
48
|
-
}
|
|
49
|
-
async setTemperature(host, port, apiKey, component, temperature) {
|
|
50
|
-
const url = `http://${host}:${port}/machine/code`;
|
|
51
|
-
let gcode;
|
|
52
|
-
if (component === "bed") {
|
|
53
|
-
gcode = `M140 S${temperature}`;
|
|
54
|
-
}
|
|
55
|
-
else if (component === "extruder") {
|
|
56
|
-
gcode = `M104 S${temperature}`;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
throw new Error(`Unsupported component: ${component}`);
|
|
60
|
-
}
|
|
61
|
-
const response = await this.apiClient.post(url, {
|
|
62
|
-
code: gcode
|
|
63
|
-
});
|
|
64
|
-
return response.data;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class KlipperImplementation extends PrinterImplementation {
|
|
3
|
-
getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
4
|
-
getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
5
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
6
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
7
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
8
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
9
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
10
|
-
}
|
package/dist/printers/klipper.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import FormData from "form-data";
|
|
4
|
-
export class KlipperImplementation extends PrinterImplementation {
|
|
5
|
-
async getStatus(host, port, apiKey) {
|
|
6
|
-
const url = `http://${host}:${port}/printer/info`;
|
|
7
|
-
const response = await this.apiClient.get(url);
|
|
8
|
-
return response.data;
|
|
9
|
-
}
|
|
10
|
-
async getFiles(host, port, apiKey) {
|
|
11
|
-
const url = `http://${host}:${port}/server/files/list`;
|
|
12
|
-
const response = await this.apiClient.get(url);
|
|
13
|
-
return response.data;
|
|
14
|
-
}
|
|
15
|
-
async getFile(host, port, apiKey, filename) {
|
|
16
|
-
const url = `http://${host}:${port}/server/files/metadata?filename=${encodeURIComponent(filename)}`;
|
|
17
|
-
const response = await this.apiClient.get(url);
|
|
18
|
-
return response.data;
|
|
19
|
-
}
|
|
20
|
-
async uploadFile(host, port, apiKey, filePath, filename, print) {
|
|
21
|
-
const url = `http://${host}:${port}/server/files/upload`;
|
|
22
|
-
const formData = new FormData();
|
|
23
|
-
formData.append("file", fs.createReadStream(filePath));
|
|
24
|
-
formData.append("filename", filename);
|
|
25
|
-
const response = await this.apiClient.post(url, formData, {
|
|
26
|
-
headers: {
|
|
27
|
-
...formData.getHeaders()
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
if (print && response.data.result === "success") {
|
|
31
|
-
await this.startJob(host, port, apiKey, filename);
|
|
32
|
-
}
|
|
33
|
-
return response.data;
|
|
34
|
-
}
|
|
35
|
-
async startJob(host, port, apiKey, filename) {
|
|
36
|
-
const url = `http://${host}:${port}/printer/print/start`;
|
|
37
|
-
const response = await this.apiClient.post(url, { filename });
|
|
38
|
-
return response.data;
|
|
39
|
-
}
|
|
40
|
-
async cancelJob(host, port, apiKey) {
|
|
41
|
-
const url = `http://${host}:${port}/printer/print/cancel`;
|
|
42
|
-
const response = await this.apiClient.post(url, null);
|
|
43
|
-
return response.data;
|
|
44
|
-
}
|
|
45
|
-
async setTemperature(host, port, apiKey, component, temperature) {
|
|
46
|
-
const url = `http://${host}:${port}/printer/gcode/script`;
|
|
47
|
-
let gcode;
|
|
48
|
-
if (component === "bed") {
|
|
49
|
-
gcode = `SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=${temperature}`;
|
|
50
|
-
}
|
|
51
|
-
else if (component === "extruder") {
|
|
52
|
-
gcode = `SET_HEATER_TEMPERATURE HEATER=extruder TARGET=${temperature}`;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
throw new Error(`Unsupported component: ${component}`);
|
|
56
|
-
}
|
|
57
|
-
const response = await this.apiClient.post(url, {
|
|
58
|
-
script: gcode
|
|
59
|
-
});
|
|
60
|
-
return response.data;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class OctoPrintImplementation extends PrinterImplementation {
|
|
3
|
-
getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
4
|
-
getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
5
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
6
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
7
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
8
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
9
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
10
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import FormData from "form-data";
|
|
4
|
-
export class OctoPrintImplementation extends PrinterImplementation {
|
|
5
|
-
async getStatus(host, port, apiKey) {
|
|
6
|
-
const url = `http://${host}:${port}/api/printer`;
|
|
7
|
-
const response = await this.apiClient.get(url, {
|
|
8
|
-
headers: {
|
|
9
|
-
"X-Api-Key": apiKey
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
return response.data;
|
|
13
|
-
}
|
|
14
|
-
async getFiles(host, port, apiKey) {
|
|
15
|
-
const url = `http://${host}:${port}/api/files`;
|
|
16
|
-
const response = await this.apiClient.get(url, {
|
|
17
|
-
headers: {
|
|
18
|
-
"X-Api-Key": apiKey
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return response.data;
|
|
22
|
-
}
|
|
23
|
-
async getFile(host, port, apiKey, filename) {
|
|
24
|
-
const url = `http://${host}:${port}/api/files/local/${filename}`;
|
|
25
|
-
const response = await this.apiClient.get(url, {
|
|
26
|
-
headers: {
|
|
27
|
-
"X-Api-Key": apiKey
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return response.data;
|
|
31
|
-
}
|
|
32
|
-
async uploadFile(host, port, apiKey, filePath, filename, print) {
|
|
33
|
-
const url = `http://${host}:${port}/api/files/local`;
|
|
34
|
-
const formData = new FormData();
|
|
35
|
-
formData.append("file", fs.createReadStream(filePath));
|
|
36
|
-
formData.append("filename", filename);
|
|
37
|
-
if (print) {
|
|
38
|
-
formData.append("print", "true");
|
|
39
|
-
}
|
|
40
|
-
const response = await this.apiClient.post(url, formData, {
|
|
41
|
-
headers: {
|
|
42
|
-
"X-Api-Key": apiKey,
|
|
43
|
-
...formData.getHeaders()
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
return response.data;
|
|
47
|
-
}
|
|
48
|
-
async startJob(host, port, apiKey, filename) {
|
|
49
|
-
const url = `http://${host}:${port}/api/files/local/${filename}`;
|
|
50
|
-
const response = await this.apiClient.post(url, {
|
|
51
|
-
command: "select",
|
|
52
|
-
print: true
|
|
53
|
-
}, {
|
|
54
|
-
headers: {
|
|
55
|
-
"X-Api-Key": apiKey,
|
|
56
|
-
"Content-Type": "application/json"
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
return response.data;
|
|
60
|
-
}
|
|
61
|
-
async cancelJob(host, port, apiKey) {
|
|
62
|
-
const url = `http://${host}:${port}/api/job`;
|
|
63
|
-
const response = await this.apiClient.post(url, {
|
|
64
|
-
command: "cancel"
|
|
65
|
-
}, {
|
|
66
|
-
headers: {
|
|
67
|
-
"X-Api-Key": apiKey,
|
|
68
|
-
"Content-Type": "application/json"
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return response.data;
|
|
72
|
-
}
|
|
73
|
-
async setTemperature(host, port, apiKey, component, temperature) {
|
|
74
|
-
let url = `http://${host}:${port}/api/printer/tool`;
|
|
75
|
-
const data = {};
|
|
76
|
-
if (component === "bed") {
|
|
77
|
-
data.command = "target";
|
|
78
|
-
data.target = temperature;
|
|
79
|
-
url = `http://${host}:${port}/api/printer/bed`;
|
|
80
|
-
}
|
|
81
|
-
else if (component.startsWith("extruder")) {
|
|
82
|
-
data.command = "target";
|
|
83
|
-
data.targets = {};
|
|
84
|
-
data.targets[component] = temperature;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
throw new Error(`Unsupported component: ${component}`);
|
|
88
|
-
}
|
|
89
|
-
const response = await this.apiClient.post(url, data, {
|
|
90
|
-
headers: {
|
|
91
|
-
"X-Api-Key": apiKey,
|
|
92
|
-
"Content-Type": "application/json"
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
return response.data;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class PrinterFactory {
|
|
3
|
-
private implementations;
|
|
4
|
-
private bambuPrinterStore;
|
|
5
|
-
private apiClient;
|
|
6
|
-
constructor();
|
|
7
|
-
getImplementation(type: string): PrinterImplementation;
|
|
8
|
-
disconnectAll(): Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BambuPrinterStore } from "../types.js";
|
|
2
|
-
import { OctoPrintImplementation } from "./octoprint.js";
|
|
3
|
-
import { KlipperImplementation } from "./klipper.js";
|
|
4
|
-
import { DuetImplementation } from "./duet.js";
|
|
5
|
-
import { RepetierImplementation } from "./repetier.js";
|
|
6
|
-
import { BambuImplementation } from "./bambu.js";
|
|
7
|
-
import { PrusaImplementation } from "./prusa.js";
|
|
8
|
-
import { CrealityImplementation } from "./creality.js";
|
|
9
|
-
import axios from "axios";
|
|
10
|
-
export class PrinterFactory {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.implementations = new Map();
|
|
13
|
-
this.bambuPrinterStore = new BambuPrinterStore();
|
|
14
|
-
this.apiClient = axios.create({ timeout: 10000 });
|
|
15
|
-
this.implementations.set("octoprint", new OctoPrintImplementation(this.apiClient));
|
|
16
|
-
this.implementations.set("klipper", new KlipperImplementation(this.apiClient));
|
|
17
|
-
this.implementations.set("duet", new DuetImplementation(this.apiClient));
|
|
18
|
-
this.implementations.set("repetier", new RepetierImplementation(this.apiClient));
|
|
19
|
-
this.implementations.set("bambu", new BambuImplementation(this.apiClient, this.bambuPrinterStore));
|
|
20
|
-
this.implementations.set("prusa", new PrusaImplementation(this.apiClient));
|
|
21
|
-
this.implementations.set("creality", new CrealityImplementation(this.apiClient));
|
|
22
|
-
}
|
|
23
|
-
getImplementation(type) {
|
|
24
|
-
const implementation = this.implementations.get(type.toLowerCase());
|
|
25
|
-
if (!implementation) {
|
|
26
|
-
throw new Error(`Unsupported printer type: ${type}`);
|
|
27
|
-
}
|
|
28
|
-
return implementation;
|
|
29
|
-
}
|
|
30
|
-
async disconnectAll() {
|
|
31
|
-
await this.bambuPrinterStore.disconnectAll();
|
|
32
|
-
}
|
|
33
|
-
}
|
package/dist/printers/prusa.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PrinterImplementation } from "../types.js";
|
|
2
|
-
export declare class PrusaImplementation extends PrinterImplementation {
|
|
3
|
-
getStatus(host: string, port: string, apiKey: string): Promise<any>;
|
|
4
|
-
getFiles(host: string, port: string, apiKey: string): Promise<any>;
|
|
5
|
-
getFile(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
6
|
-
uploadFile(host: string, port: string, apiKey: string, filePath: string, filename: string, print: boolean): Promise<any>;
|
|
7
|
-
startJob(host: string, port: string, apiKey: string, filename: string): Promise<any>;
|
|
8
|
-
cancelJob(host: string, port: string, apiKey: string): Promise<any>;
|
|
9
|
-
setTemperature(host: string, port: string, apiKey: string, component: string, temperature: number): Promise<any>;
|
|
10
|
-
}
|