@fdm-monster/server 2.0.7 → 2.0.8

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.
Files changed (64) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/RELEASE_NOTES.MD +23 -0
  3. package/dist/controllers/print-job.controller.js +12 -151
  4. package/dist/controllers/print-job.controller.js.map +1 -1
  5. package/dist/controllers/print-queue.controller.js +82 -17
  6. package/dist/controllers/print-queue.controller.js.map +1 -1
  7. package/dist/controllers/printer-files.controller.js +8 -2
  8. package/dist/controllers/printer-files.controller.js.map +1 -1
  9. package/dist/controllers/printer.controller.js +3 -3
  10. package/dist/controllers/printer.controller.js.map +1 -1
  11. package/dist/entities/print-job.entity.js.map +1 -1
  12. package/dist/server.constants.js +1 -1
  13. package/dist/services/bambu/bambu-ftp.adapter.js +3 -13
  14. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  15. package/dist/services/bambu.api.js +7 -18
  16. package/dist/services/bambu.api.js.map +1 -1
  17. package/dist/services/file-storage.service.js +11 -2
  18. package/dist/services/file-storage.service.js.map +1 -1
  19. package/dist/services/moonraker/moonraker.client.js +5 -17
  20. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  21. package/dist/services/moonraker.api.js +3 -2
  22. package/dist/services/moonraker.api.js.map +1 -1
  23. package/dist/services/octoprint/octoprint.client.js +5 -17
  24. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  25. package/dist/services/octoprint.api.js +3 -2
  26. package/dist/services/octoprint.api.js.map +1 -1
  27. package/dist/services/orm/print-job.service.js +55 -47
  28. package/dist/services/orm/print-job.service.js.map +1 -1
  29. package/dist/services/print-queue.service.js +90 -30
  30. package/dist/services/print-queue.service.js.map +1 -1
  31. package/dist/services/printer-api.interface.js +13 -0
  32. package/dist/services/printer-api.interface.js.map +1 -1
  33. package/dist/services/prusa-link/prusa-link.api.js +12 -22
  34. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  35. package/dist/tasks/print-job-analysis.task.js.map +1 -1
  36. package/dist/utils/bgcode/bgcode-thumbnail.parser.js +50 -0
  37. package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -0
  38. package/dist/utils/bgcode/bgcode.constants.js +57 -0
  39. package/dist/utils/bgcode/bgcode.constants.js.map +1 -0
  40. package/dist/utils/bgcode/bgcode.types.js +132 -0
  41. package/dist/utils/bgcode/bgcode.types.js.map +1 -0
  42. package/dist/utils/bgcode/bgcode.utils.js +288 -0
  43. package/dist/utils/bgcode/bgcode.utils.js.map +1 -0
  44. package/dist/utils/bgcode/heatshrink-decoder.js +172 -0
  45. package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -0
  46. package/dist/utils/bgcode/png-encoder.js +76 -0
  47. package/dist/utils/bgcode/png-encoder.js.map +1 -0
  48. package/dist/utils/bgcode/qoi-decoder.js +141 -0
  49. package/dist/utils/bgcode/qoi-decoder.js.map +1 -0
  50. package/dist/utils/image-dimensions.js +62 -0
  51. package/dist/utils/image-dimensions.js.map +1 -0
  52. package/dist/utils/job-stats.util.js +79 -0
  53. package/dist/utils/job-stats.util.js.map +1 -0
  54. package/dist/utils/parsers/3mf.parser.js +39 -9
  55. package/dist/utils/parsers/3mf.parser.js.map +1 -1
  56. package/dist/utils/parsers/bgcode.parser.js +125 -144
  57. package/dist/utils/parsers/bgcode.parser.js.map +1 -1
  58. package/dist/utils/parsers/gcode.parser.js +13 -2
  59. package/dist/utils/parsers/gcode.parser.js.map +1 -1
  60. package/dist/utils/parsers/parser.types.js +6 -0
  61. package/dist/utils/parsers/parser.types.js.map +1 -0
  62. package/dist/utils/thumbnail.util.js +24 -0
  63. package/dist/utils/thumbnail.util.js.map +1 -0
  64. package/package.json +5 -5
@@ -8,8 +8,16 @@ Object.defineProperty(exports, "BGCodeParser", {
8
8
  return BGCodeParser;
9
9
  }
10
10
  });
11
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
11
12
  const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
12
- const _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
13
+ const _bgcodeutils = require("../bgcode/bgcode.utils");
14
+ const _bgcodetypes = require("../bgcode/bgcode.types");
15
+ const _bgcodethumbnailparser = require("../bgcode/bgcode-thumbnail.parser");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
13
21
  function _getRequireWildcardCache(nodeInterop) {
14
22
  if (typeof WeakMap !== "function") return null;
15
23
  var cacheBabelInterop = new WeakMap();
@@ -53,170 +61,143 @@ function _interop_require_wildcard(obj, nodeInterop) {
53
61
  }
54
62
  class BGCodeParser {
55
63
  async parse(filePath) {
56
- const stats = await _promises.stat(filePath);
57
- const fileName = _path.basename(filePath);
58
- const buffer = await this.readFileHeader(filePath, 4096);
59
- const metadata = this.parseHeader(buffer);
60
- const blocks = this.parseBlocks(buffer);
61
- const thumbnails = this.extractThumbnails(buffer);
62
- const normalized = {
63
- fileName,
64
- fileFormat: "bgcode",
65
- fileSize: stats.size,
66
- producer: metadata.producer,
67
- producedOn: metadata.produced_on,
68
- checksumType: metadata.checksum_type,
69
- gcodePrintTimeSeconds: this.parseTime(metadata.estimated_printing_time_normal_mode || metadata.estimated_printing_time || metadata.print_time),
70
- nozzleDiameterMm: this.parseFirstValue(metadata.nozzle_diameter),
71
- filamentDiameterMm: this.parseFirstValue(metadata.filament_diameter) || 1.75,
72
- filamentDensityGramsCm3: this.parseFirstValue(metadata.filament_density),
73
- filamentUsedMm: this.parseFirstValue(metadata.filament_used_mm),
74
- filamentUsedCm3: this.parseFirstValue(metadata.filament_used_cm3),
75
- filamentUsedGrams: this.parseFirstValue(metadata.filament_used_g),
76
- totalFilamentUsedGrams: this.parseFirstValue(metadata.filament_used_g),
77
- layerHeight: this.parseFloat(metadata.layer_height),
78
- firstLayerHeight: this.parseFloat(metadata.first_layer_height || metadata.initial_layer_height),
79
- bedTemperature: this.parseFirstValue(metadata.bed_temperature),
80
- nozzleTemperature: this.parseFirstValue(metadata.temperature),
81
- fillDensity: metadata.fill_density || null,
82
- filamentType: this.parseFirstCsvValue(metadata.filament_type),
83
- printerModel: metadata.printer_model || null,
84
- slicerVersion: metadata.producer || null,
85
- maxLayerZ: this.parseFloat(metadata.max_layer_z),
86
- totalLayers: this.parseInt(metadata.total_layers || metadata.layer_count),
87
- thumbnails: thumbnails.length > 0 ? thumbnails : undefined,
88
- blocks: blocks.length > 0 ? blocks : undefined
89
- };
90
- return {
91
- raw: {
92
- _thumbnails: thumbnails,
93
- blocks
94
- },
95
- normalized
96
- };
97
- }
98
- async readFileHeader(filePath, bytes) {
99
- const fileHandle = await _promises.open(filePath, "r");
64
+ const stats = await _promises.default.stat(filePath);
65
+ const fileName = _nodepath.default.basename(filePath);
66
+ const fileHandle = await (0, _promises.open)(filePath, "r");
100
67
  try {
101
- const buffer = Buffer.alloc(bytes);
102
- await fileHandle.read(buffer, 0, bytes, 0);
103
- return buffer;
68
+ const { version, checksumType } = await (0, _bgcodeutils.parseFileHeader)(fileHandle);
69
+ if (version !== 1) {
70
+ throw new Error(`Unsupported BGCode version: ${version}`);
71
+ }
72
+ const blockHeaders = await (0, _bgcodeutils.parseBlockHeaders)(fileHandle, stats.size, checksumType, true);
73
+ const metadata = await (0, _bgcodeutils.extractMetadataFromBlocks)(fileHandle, blockHeaders);
74
+ const thumbnails = await this.extractThumbnailsFromBlocks(fileHandle, blockHeaders);
75
+ const isMmu = this.isMmuData(metadata.nozzle_diameter) || this.isMmuData(metadata.temperature) || this.isMmuData(metadata.filament_used_mm) || this.isMmuData(metadata.bed_temperature) || this.isMmuData(metadata.filament_type, ';');
76
+ const normalized = {
77
+ fileName,
78
+ fileFormat: "bgcode",
79
+ fileSize: stats.size,
80
+ producer: metadata.producer,
81
+ producedOn: metadata.produced_on,
82
+ checksumType: checksumType === 1 ? "CRC32" : "None",
83
+ isMmu: isMmu || undefined,
84
+ gcodePrintTimeSeconds: this.parseTime(metadata.estimated_printing_time_normal_mode || metadata.print_time),
85
+ gcodePrintTimeSecondsSilent: this.parseTime(metadata.estimated_printing_time_silent_mode),
86
+ nozzleDiameterMm: isMmu ? this.parseNumberArray(metadata.nozzle_diameter) : this.parseFirstValue(metadata.nozzle_diameter),
87
+ filamentDiameterMm: isMmu ? this.parseNumberArray(metadata.filament_diameter) : this.parseFirstValue(metadata.filament_diameter) || 1.75,
88
+ filamentDensityGramsCm3: isMmu ? this.parseNumberArray(metadata.filament_density) : this.parseFirstValue(metadata.filament_density),
89
+ filamentUsedMm: isMmu ? this.parseNumberArray(metadata.filament_used_mm) : this.parseFirstValue(metadata.filament_used_mm),
90
+ filamentUsedCm3: isMmu ? this.parseNumberArray(metadata.filament_used_cm3) : this.parseFirstValue(metadata.filament_used_cm3),
91
+ filamentUsedGrams: isMmu ? this.parseNumberArray(metadata.filament_used_g) : this.parseFirstValue(metadata.filament_used_g),
92
+ totalFilamentUsedGrams: isMmu ? this.sumNumberArray(this.parseNumberArray(metadata.filament_used_g)) : this.parseFirstValue(metadata.filament_used_g),
93
+ layerHeight: this.parseFloat(metadata.layer_height),
94
+ firstLayerHeight: this.parseFloat(metadata.first_layer_height || metadata.initial_layer_height),
95
+ bedTemperature: isMmu ? this.parseNumberArray(metadata.bed_temperature) : this.parseFirstValue(metadata.bed_temperature),
96
+ nozzleTemperature: isMmu ? this.parseNumberArray(metadata.temperature) : this.parseFirstValue(metadata.temperature),
97
+ fillDensity: metadata.fill_density || null,
98
+ filamentType: isMmu ? this.parseStringArray(metadata.filament_type, ';') : this.parseFirstCsvValue(metadata.filament_type),
99
+ printerModel: metadata.printer_model || null,
100
+ slicerVersion: metadata.producer || null,
101
+ maxLayerZ: this.parseFloat(metadata.max_layer_z),
102
+ totalLayers: this.parseInt(metadata.total_layers || metadata.layer_count),
103
+ thumbnails: thumbnails.length > 0 ? thumbnails.map((t)=>({
104
+ width: t.width,
105
+ height: t.height,
106
+ format: t.format,
107
+ dataLength: t.data?.length || 0
108
+ })) : undefined,
109
+ blocks: blockHeaders.map((b)=>({
110
+ type: _bgcodetypes.BgCodeBlockTypeName[b.type] || `Unknown(${b.type})`,
111
+ compressedSize: b.compressedSize,
112
+ uncompressedSize: b.uncompressedSize,
113
+ compression: _bgcodetypes.BgCodeCompressionName[b.compression] || `Unknown(${b.compression})`
114
+ }))
115
+ };
116
+ return {
117
+ raw: {
118
+ _thumbnails: thumbnails,
119
+ blocks: blockHeaders.map((b)=>({
120
+ type: _bgcodetypes.BgCodeBlockTypeName[b.type] || `Unknown(${b.type})`,
121
+ compressedSize: b.compressedSize,
122
+ uncompressedSize: b.uncompressedSize,
123
+ compression: _bgcodetypes.BgCodeCompressionName[b.compression] || `Unknown(${b.compression})`
124
+ }))
125
+ },
126
+ normalized
127
+ };
104
128
  } finally{
105
129
  await fileHandle.close();
106
130
  }
107
131
  }
108
- parseHeader(buffer) {
109
- const metadata = {};
110
- const magic = buffer.toString("ascii", 0, 4);
111
- if (magic !== "GCDE" && magic !== "BGCD") {
112
- throw new Error(`Invalid BGCode file: magic number not found (got "${magic}", expected "GCDE" or "BGCD")`);
113
- }
114
- const version = buffer.readUInt32LE(4);
115
- metadata.version = version.toString();
116
- const headerText = buffer.toString("utf8", 0, Math.min(buffer.length, 2048));
117
- this.extractMetadataFromText(headerText, metadata);
118
- return metadata;
119
- }
120
- extractMetadataFromText(text, metadata) {
121
- const lines = text.split('\n');
122
- const producerMatch = text.match(/Producer=([^\n\r\0]+)/);
123
- if (producerMatch) {
124
- metadata.producer = producerMatch[1].trim();
125
- }
126
- for (const line of lines){
127
- const match = line.match(/^([a-z_\s]+(?:\[[^\]]+\])?(?:\([^)]+\))?)\s*=\s*(.+)/i);
128
- if (match) {
129
- let key = match[1].trim().toLowerCase().replace(/\s+/g, '_');
130
- let value = match[2].trim();
131
- key = key.replace(/\(([^)]+)\)/g, (_, content)=>'_' + content.replace(/\s+/g, '_'));
132
- key = key.replace(/\[([^\]]+)\]/g, (_, unit)=>'_' + unit.replace(/\^/g, ''));
133
- key = key.replace(/_+/g, '_');
134
- metadata[key] = value;
135
- }
136
- }
137
- const patterns = [
138
- /producer[=:]\s*([^\n\r]+)/i,
139
- /produced[\s_]on[=:]\s*([^\n\r]+)/i,
140
- /print[\s_]time[=:]\s*([^\n\r]+)/i,
141
- /layer[\s_]height[=:]\s*([^\n\r]+)/i,
142
- /nozzle_diameter[=:]\s*([^\n\r]+)/i,
143
- /bed_temperature[=:]\s*([^\n\r]+)/i,
144
- /nozzle_temperature[=:]\s*([^\n\r]+)/i
145
- ];
146
- for (const pattern of patterns){
147
- const match = text.match(pattern);
148
- if (match) {
149
- const key = pattern.source.match(/^(\w+)/)?.[1] || "";
150
- metadata[key] = match[1].trim();
151
- }
152
- }
153
- }
154
- parseBlocks(buffer) {
155
- const blocks = [];
156
- try {
157
- let offset = 8;
158
- const blockCount = Math.min(buffer.readUInt16LE(offset), 10);
159
- for(let i = 0; i < blockCount; i++){
160
- blocks.push({
161
- type: `Block${i}`,
162
- compressedSize: 0,
163
- uncompressedSize: 0,
164
- compression: "unknown"
165
- });
166
- }
167
- } catch (error) {}
168
- return blocks;
169
- }
170
- extractThumbnails(buffer) {
132
+ async extractThumbnailsFromBlocks(fileHandle, blockHeaders) {
171
133
  const thumbnails = [];
172
- try {
173
- for(let i = 0; i < buffer.length - 8; i++){
174
- if (buffer[i] === 0x89 && buffer[i + 1] === 0x50 && buffer[i + 2] === 0x4E && buffer[i + 3] === 0x47) {
175
- thumbnails.push({
176
- width: 0,
177
- height: 0,
178
- format: "PNG",
179
- size: 0
180
- });
181
- break;
182
- }
183
- }
184
- } catch (error) {}
134
+ const thumbnailBlocks = blockHeaders.filter((b)=>b.type === _bgcodetypes.BgCodeBlockTypes.Thumbnail);
135
+ for (const header of thumbnailBlocks){
136
+ const parameters = header.parameters;
137
+ const blockData = await (0, _bgcodeutils.getBlockData)(fileHandle, header);
138
+ const imageData = (0, _bgcodeutils.decompressBlock)(header.compression, blockData);
139
+ const processed = (0, _bgcodethumbnailparser.processThumbnail)(imageData, parameters);
140
+ thumbnails.push({
141
+ width: parameters.width,
142
+ height: parameters.height,
143
+ format: processed.extension,
144
+ data: processed.data.toString('base64')
145
+ });
146
+ }
185
147
  return thumbnails;
186
148
  }
187
- parseFloat(value) {
149
+ parseNumber(value, parser) {
188
150
  if (!value) return null;
189
- const num = parseFloat(value);
190
- return isNaN(num) ? null : num;
151
+ const num = parser(value);
152
+ return Number.isNaN(num) ? null : num;
153
+ }
154
+ parseFloat(value) {
155
+ return this.parseNumber(value, Number.parseFloat);
191
156
  }
192
157
  parseInt(value) {
193
- if (!value) return null;
194
- const num = parseInt(value, 10);
195
- return isNaN(num) ? null : num;
158
+ return this.parseNumber(value, (val)=>Number.parseInt(val, 10));
196
159
  }
197
160
  parseTime(value) {
198
161
  if (!value) return null;
199
- const match = value.match(/(?:(\d+)h)?(?:\s*(\d+)m)?(?:\s*(\d+)s)?/);
200
- if (match && (match[1] || match[2] || match[3])) {
201
- const hours = parseInt(match[1] || "0");
202
- const minutes = parseInt(match[2] || "0");
203
- const secs = parseInt(match[3] || "0");
204
- return hours * 3600 + minutes * 60 + secs;
205
- }
206
- const seconds = parseFloat(value);
207
- if (!isNaN(seconds)) return seconds;
208
- return null;
162
+ let totalSeconds = 0;
163
+ const hours = new RegExp(/(\d+)h/).exec(value);
164
+ const minutes = new RegExp(/(\d+)m/).exec(value);
165
+ const seconds = new RegExp(/(\d+)s/).exec(value);
166
+ if (hours) totalSeconds += Number.parseInt(hours[1]) * 3600;
167
+ if (minutes) totalSeconds += Number.parseInt(minutes[1]) * 60;
168
+ if (seconds) totalSeconds += Number.parseInt(seconds[1]);
169
+ if (hours || minutes || seconds) return totalSeconds;
170
+ const num = Number.parseFloat(value);
171
+ return Number.isNaN(num) ? null : num;
209
172
  }
210
173
  parseFirstValue(value) {
211
174
  if (!value) return null;
212
175
  const firstValue = value.split(',')[0].trim();
213
- const num = parseFloat(firstValue);
214
- return isNaN(num) ? null : num;
176
+ const num = Number.parseFloat(firstValue);
177
+ return Number.isNaN(num) ? null : num;
215
178
  }
216
179
  parseFirstCsvValue(value) {
217
180
  if (!value) return null;
218
- const firstValue = value.split(/[;,]/)[0].trim();
219
- return firstValue || null;
181
+ return value.trim();
182
+ }
183
+ parseNumberArray(value) {
184
+ if (!value) return null;
185
+ const values = value.split(',').map((v)=>Number.parseFloat(v.trim())).filter((n)=>!Number.isNaN(n));
186
+ return values.length > 0 ? values : null;
187
+ }
188
+ parseStringArray(value, separator = ';') {
189
+ if (!value) return null;
190
+ const values = value.split(separator).map((v)=>v.trim()).filter((v)=>v.length > 0);
191
+ return values.length > 0 ? values : null;
192
+ }
193
+ isMmuData(value, separator = ',') {
194
+ if (!value) return false;
195
+ const parts = value.split(separator).map((v)=>v.trim()).filter((v)=>v.length > 0);
196
+ return parts.length > 1;
197
+ }
198
+ sumNumberArray(values) {
199
+ if (!values || values.length === 0) return null;
200
+ return values.reduce((sum, val)=>sum + val, 0);
220
201
  }
221
202
  }
222
203
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/parsers/bgcode.parser.ts"],"names":["BGCodeParser","parse","filePath","stats","fs","stat","fileName","path","basename","buffer","readFileHeader","metadata","parseHeader","blocks","parseBlocks","thumbnails","extractThumbnails","normalized","fileFormat","fileSize","size","producer","producedOn","produced_on","checksumType","checksum_type","gcodePrintTimeSeconds","parseTime","estimated_printing_time_normal_mode","estimated_printing_time","print_time","nozzleDiameterMm","parseFirstValue","nozzle_diameter","filamentDiameterMm","filament_diameter","filamentDensityGramsCm3","filament_density","filamentUsedMm","filament_used_mm","filamentUsedCm3","filament_used_cm3","filamentUsedGrams","filament_used_g","totalFilamentUsedGrams","layerHeight","parseFloat","layer_height","firstLayerHeight","first_layer_height","initial_layer_height","bedTemperature","bed_temperature","nozzleTemperature","temperature","fillDensity","fill_density","filamentType","parseFirstCsvValue","filament_type","printerModel","printer_model","slicerVersion","maxLayerZ","max_layer_z","totalLayers","parseInt","total_layers","layer_count","length","undefined","raw","_thumbnails","bytes","fileHandle","open","Buffer","alloc","read","close","magic","toString","Error","version","readUInt32LE","headerText","Math","min","extractMetadataFromText","text","lines","split","producerMatch","match","trim","line","key","toLowerCase","replace","value","_","content","unit","patterns","pattern","source","offset","blockCount","readUInt16LE","i","push","type","compressedSize","uncompressedSize","compression","error","width","height","format","num","isNaN","hours","minutes","secs","seconds","firstValue"],"mappings":";;;;+BA0BaA;;;eAAAA;;;kEA1BO;8DACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBf,MAAMA;IACX,MAAMC,MAAMC,QAAgB,EAA8B;QACxD,MAAMC,QAAQ,MAAMC,UAAGC,IAAI,CAACH;QAC5B,MAAMI,WAAWC,MAAKC,QAAQ,CAACN;QAG/B,MAAMO,SAAS,MAAM,IAAI,CAACC,cAAc,CAACR,UAAU;QAGnD,MAAMS,WAAW,IAAI,CAACC,WAAW,CAACH;QAClC,MAAMI,SAAS,IAAI,CAACC,WAAW,CAACL;QAChC,MAAMM,aAAa,IAAI,CAACC,iBAAiB,CAACP;QAE1C,MAAMQ,aAA6B;YACjCX;YACAY,YAAY;YACZC,UAAUhB,MAAMiB,IAAI;YACpBC,UAAUV,SAASU,QAAQ;YAC3BC,YAAYX,SAASY,WAAW;YAChCC,cAAcb,SAASc,aAAa;YACpCC,uBAAuB,IAAI,CAACC,SAAS,CACnChB,SAASiB,mCAAmC,IAC5CjB,SAASkB,uBAAuB,IAChClB,SAASmB,UAAU;YAErBC,kBAAkB,IAAI,CAACC,eAAe,CAACrB,SAASsB,eAAe;YAC/DC,oBAAoB,IAAI,CAACF,eAAe,CAACrB,SAASwB,iBAAiB,KAAK;YACxEC,yBAAyB,IAAI,CAACJ,eAAe,CAACrB,SAAS0B,gBAAgB;YACvEC,gBAAgB,IAAI,CAACN,eAAe,CAACrB,SAAS4B,gBAAgB;YAC9DC,iBAAiB,IAAI,CAACR,eAAe,CAACrB,SAAS8B,iBAAiB;YAChEC,mBAAmB,IAAI,CAACV,eAAe,CAACrB,SAASgC,eAAe;YAChEC,wBAAwB,IAAI,CAACZ,eAAe,CAACrB,SAASgC,eAAe;YACrEE,aAAa,IAAI,CAACC,UAAU,CAACnC,SAASoC,YAAY;YAClDC,kBAAkB,IAAI,CAACF,UAAU,CAACnC,SAASsC,kBAAkB,IAAItC,SAASuC,oBAAoB;YAC9FC,gBAAgB,IAAI,CAACnB,eAAe,CAACrB,SAASyC,eAAe;YAC7DC,mBAAmB,IAAI,CAACrB,eAAe,CAACrB,SAAS2C,WAAW;YAC5DC,aAAa5C,SAAS6C,YAAY,IAAI;YACtCC,cAAc,IAAI,CAACC,kBAAkB,CAAC/C,SAASgD,aAAa;YAC5DC,cAAcjD,SAASkD,aAAa,IAAI;YACxCC,eAAenD,SAASU,QAAQ,IAAI;YACpC0C,WAAW,IAAI,CAACjB,UAAU,CAACnC,SAASqD,WAAW;YAC/CC,aAAa,IAAI,CAACC,QAAQ,CAACvD,SAASwD,YAAY,IAAIxD,SAASyD,WAAW;YACxErD,YAAYA,WAAWsD,MAAM,GAAG,IAAItD,aAAauD;YACjDzD,QAAQA,OAAOwD,MAAM,GAAG,IAAIxD,SAASyD;QACvC;QAEA,OAAO;YACLC,KAAK;gBACHC,aAAazD;gBACbF;YACF;YACAI;QACF;IACF;IAEA,MAAcP,eAAeR,QAAgB,EAAEuE,KAAa,EAAmB;QAC7E,MAAMC,aAAa,MAAMtE,UAAGuE,IAAI,CAACzE,UAAU;QAC3C,IAAI;YACF,MAAMO,SAASmE,OAAOC,KAAK,CAACJ;YAC5B,MAAMC,WAAWI,IAAI,CAACrE,QAAQ,GAAGgE,OAAO;YACxC,OAAOhE;QACT,SAAU;YACR,MAAMiE,WAAWK,KAAK;QACxB;IACF;IAEQnE,YAAYH,MAAc,EAA0B;QAC1D,MAAME,WAAmC,CAAC;QAG1C,MAAMqE,QAAQvE,OAAOwE,QAAQ,CAAC,SAAS,GAAG;QAC1C,IAAID,UAAU,UAAUA,UAAU,QAAQ;YACxC,MAAM,IAAIE,MAAM,CAAC,kDAAkD,EAAEF,MAAM,6BAA6B,CAAC;QAC3G;QAGA,MAAMG,UAAU1E,OAAO2E,YAAY,CAAC;QACpCzE,SAASwE,OAAO,GAAGA,QAAQF,QAAQ;QAInC,MAAMI,aAAa5E,OAAOwE,QAAQ,CAAC,QAAQ,GAAGK,KAAKC,GAAG,CAAC9E,OAAO4D,MAAM,EAAE;QAGtE,IAAI,CAACmB,uBAAuB,CAACH,YAAY1E;QAEzC,OAAOA;IACT;IAEQ6E,wBAAwBC,IAAY,EAAE9E,QAAgC,EAAQ;QAEpF,MAAM+E,QAAQD,KAAKE,KAAK,CAAC;QAGzB,MAAMC,gBAAgBH,KAAKI,KAAK,CAAC;QACjC,IAAID,eAAe;YACjBjF,SAASU,QAAQ,GAAGuE,aAAa,CAAC,EAAE,CAACE,IAAI;QAC3C;QAEA,KAAK,MAAMC,QAAQL,MAAO;YAExB,MAAMG,QAAQE,KAAKF,KAAK,CAAC;YACzB,IAAIA,OAAO;gBACT,IAAIG,MAAMH,KAAK,CAAC,EAAE,CAACC,IAAI,GAAGG,WAAW,GAAGC,OAAO,CAAC,QAAQ;gBACxD,IAAIC,QAAQN,KAAK,CAAC,EAAE,CAACC,IAAI;gBAGzBE,MAAMA,IAAIE,OAAO,CAAC,gBAAgB,CAACE,GAAGC,UAAY,MAAMA,QAAQH,OAAO,CAAC,QAAQ;gBAGhFF,MAAMA,IAAIE,OAAO,CAAC,iBAAiB,CAACE,GAAGE,OAAS,MAAMA,KAAKJ,OAAO,CAAC,OAAO;gBAG1EF,MAAMA,IAAIE,OAAO,CAAC,OAAO;gBAGzBvF,QAAQ,CAACqF,IAAI,GAAGG;YAClB;QACF;QAGA,MAAMI,WAAW;YACf;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QAED,KAAK,MAAMC,WAAWD,SAAU;YAC9B,MAAMV,QAAQJ,KAAKI,KAAK,CAACW;YACzB,IAAIX,OAAO;gBACT,MAAMG,MAAMQ,QAAQC,MAAM,CAACZ,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI;gBACnDlF,QAAQ,CAACqF,IAAI,GAAGH,KAAK,CAAC,EAAE,CAACC,IAAI;YAC/B;QACF;IACF;IAEQhF,YAAYL,MAAc,EAK/B;QACD,MAAMI,SAAqB,EAAE;QAI7B,IAAI;YACF,IAAI6F,SAAS;YACb,MAAMC,aAAarB,KAAKC,GAAG,CAAC9E,OAAOmG,YAAY,CAACF,SAAS;YAEzD,IAAK,IAAIG,IAAI,GAAGA,IAAIF,YAAYE,IAAK;gBAEnChG,OAAOiG,IAAI,CAAC;oBACVC,MAAM,CAAC,KAAK,EAAEF,GAAG;oBACjBG,gBAAgB;oBAChBC,kBAAkB;oBAClBC,aAAa;gBACf;YACF;QACF,EAAE,OAAOC,OAAO,CAEhB;QAEA,OAAOtG;IACT;IAEQG,kBAAkBP,MAAc,EAKrC;QACD,MAAMM,aAAyB,EAAE;QAIjC,IAAI;YAEF,IAAK,IAAI8F,IAAI,GAAGA,IAAIpG,OAAO4D,MAAM,GAAG,GAAGwC,IAAK;gBAC1C,IAAIpG,MAAM,CAACoG,EAAE,KAAK,QAAQpG,MAAM,CAACoG,IAAI,EAAE,KAAK,QACxCpG,MAAM,CAACoG,IAAI,EAAE,KAAK,QAAQpG,MAAM,CAACoG,IAAI,EAAE,KAAK,MAAM;oBAEpD9F,WAAW+F,IAAI,CAAC;wBACdM,OAAO;wBACPC,QAAQ;wBACRC,QAAQ;wBACRlG,MAAM;oBACR;oBACA;gBACF;YACF;QACF,EAAE,OAAO+F,OAAO,CAEhB;QAEA,OAAOpG;IACT;IAEQ+B,WAAWqD,KAAyB,EAAiB;QAC3D,IAAI,CAACA,OAAO,OAAO;QACnB,MAAMoB,MAAMzE,WAAWqD;QACvB,OAAOqB,MAAMD,OAAO,OAAOA;IAC7B;IAEQrD,SAASiC,KAAyB,EAAiB;QACzD,IAAI,CAACA,OAAO,OAAO;QACnB,MAAMoB,MAAMrD,SAASiC,OAAO;QAC5B,OAAOqB,MAAMD,OAAO,OAAOA;IAC7B;IAEQ5F,UAAUwE,KAAyB,EAAiB;QAC1D,IAAI,CAACA,OAAO,OAAO;QAGnB,MAAMN,QAAQM,MAAMN,KAAK,CAAC;QAC1B,IAAIA,SAAUA,CAAAA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,AAAD,GAAI;YAC/C,MAAM4B,QAAQvD,SAAS2B,KAAK,CAAC,EAAE,IAAI;YACnC,MAAM6B,UAAUxD,SAAS2B,KAAK,CAAC,EAAE,IAAI;YACrC,MAAM8B,OAAOzD,SAAS2B,KAAK,CAAC,EAAE,IAAI;YAClC,OAAO4B,QAAQ,OAAOC,UAAU,KAAKC;QACvC;QAGA,MAAMC,UAAU9E,WAAWqD;QAC3B,IAAI,CAACqB,MAAMI,UAAU,OAAOA;QAE5B,OAAO;IACT;IAMQ5F,gBAAgBmE,KAAyB,EAAiB;QAChE,IAAI,CAACA,OAAO,OAAO;QAEnB,MAAM0B,aAAa1B,MAAMR,KAAK,CAAC,IAAI,CAAC,EAAE,CAACG,IAAI;QAC3C,MAAMyB,MAAMzE,WAAW+E;QACvB,OAAOL,MAAMD,OAAO,OAAOA;IAC7B;IAMQ7D,mBAAmByC,KAAyB,EAAiB;QACnE,IAAI,CAACA,OAAO,OAAO;QAEnB,MAAM0B,aAAa1B,MAAMR,KAAK,CAAC,OAAO,CAAC,EAAE,CAACG,IAAI;QAC9C,OAAO+B,cAAc;IACvB;AACF"}
1
+ {"version":3,"sources":["../../../src/utils/parsers/bgcode.parser.ts"],"names":["BGCodeParser","parse","filePath","stats","fs","stat","fileName","path","basename","fileHandle","open","version","checksumType","parseFileHeader","Error","blockHeaders","parseBlockHeaders","size","metadata","extractMetadataFromBlocks","thumbnails","extractThumbnailsFromBlocks","isMmu","isMmuData","nozzle_diameter","temperature","filament_used_mm","bed_temperature","filament_type","normalized","fileFormat","fileSize","producer","producedOn","produced_on","undefined","gcodePrintTimeSeconds","parseTime","estimated_printing_time_normal_mode","print_time","gcodePrintTimeSecondsSilent","estimated_printing_time_silent_mode","nozzleDiameterMm","parseNumberArray","parseFirstValue","filamentDiameterMm","filament_diameter","filamentDensityGramsCm3","filament_density","filamentUsedMm","filamentUsedCm3","filament_used_cm3","filamentUsedGrams","filament_used_g","totalFilamentUsedGrams","sumNumberArray","layerHeight","parseFloat","layer_height","firstLayerHeight","first_layer_height","initial_layer_height","bedTemperature","nozzleTemperature","fillDensity","fill_density","filamentType","parseStringArray","parseFirstCsvValue","printerModel","printer_model","slicerVersion","maxLayerZ","max_layer_z","totalLayers","parseInt","total_layers","layer_count","length","map","t","width","height","format","dataLength","data","blocks","b","type","BgCodeBlockTypeName","compressedSize","uncompressedSize","compression","BgCodeCompressionName","raw","_thumbnails","close","thumbnailBlocks","filter","BgCodeBlockTypes","Thumbnail","header","parameters","blockData","getBlockData","imageData","decompressBlock","processed","processThumbnail","push","extension","toString","parseNumber","value","parser","num","Number","isNaN","val","totalSeconds","hours","RegExp","exec","minutes","seconds","firstValue","split","trim","values","v","n","separator","parts","reduce","sum"],"mappings":"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"}
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "GCodeParser", {
11
11
  const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
12
12
  const _nodereadline = /*#__PURE__*/ _interop_require_wildcard(require("node:readline"));
13
13
  const _nodefs = require("node:fs");
14
+ const _bgcodethumbnailparser = require("../bgcode/bgcode-thumbnail.parser");
14
15
  function _getRequireWildcardCache(nodeInterop) {
15
16
  if (typeof WeakMap !== "function") return null;
16
17
  var cacheBabelInterop = new WeakMap();
@@ -206,11 +207,21 @@ class GCodeParser {
206
207
  }
207
208
  if (inThumbnail) {
208
209
  if (line.match(/;\s*thumbnail end/i)) {
210
+ let base64Data = thumbnailData.join("");
211
+ let format = currentFormat.toUpperCase();
212
+ if (format === "QOI") {
213
+ try {
214
+ const qoiBuffer = Buffer.from(base64Data, 'base64');
215
+ const pngBuffer = (0, _bgcodethumbnailparser.convertQoiToPng)(qoiBuffer);
216
+ base64Data = pngBuffer.toString('base64');
217
+ format = "PNG";
218
+ } catch {}
219
+ }
209
220
  thumbnails.push({
210
221
  width: currentWidth,
211
222
  height: currentHeight,
212
- format: currentFormat.toUpperCase(),
213
- data: thumbnailData.join("")
223
+ format,
224
+ data: base64Data
214
225
  });
215
226
  inThumbnail = false;
216
227
  thumbnailData = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/parsers/gcode.parser.ts"],"names":["GCodeParser","maxHeaderLinesToRead","maxFooterLinesToRead","parse","filePath","stats","fs","stat","fileName","split","pop","metadata","extractMetadata","thumbnails","extractThumbnails","normalized","fileFormat","fileSize","size","gcodePrintTimeSeconds","parseTime","estimated_printing_time_normal_mode","estimated_printing_time","print_time","nozzleDiameterMm","parseFloat","nozzle_diameter","filamentDiameterMm","filament_diameter","filamentDensityGramsCm3","filament_density","filamentUsedMm","filament_used_mm","filamentUsedCm3","filament_used_cm3","filamentUsedGrams","filament_used_g","totalFilamentUsedGrams","total_filament_used_g","layerHeight","layer_height","firstLayerHeight","first_layer_height","initial_layer_height","bedTemperature","bed_temperature","first_layer_bed_temperature","nozzleTemperature","temperature","first_layer_temperature","fillDensity","fill_density","filamentType","filament_type","printerModel","printer_model","printer_name","slicerVersion","generated_by","slicer_version","maxLayerZ","max_layer_z","totalLayers","parseInt","total_layers","layer_count","generatedBy","length","map","t","width","height","format","dataLength","data","undefined","raw","_thumbnails","extractMetadataFromStart","extractMetadataFromEnd","linesRead","fileStream","createReadStream","rl","readline","createInterface","input","crlfDelay","Infinity","line","parseMetadataLine","close","estimatedBytes","startPosition","Math","max","fileHandle","open","buffer","Buffer","alloc","bytesRead","read","text","toString","lines","startsWith","generatedByMatch","match","prusaMatch","key","trim","toLowerCase","replace","value","_","unit","content","curaMatch","normalizedKey","s3dMatch","inThumbnail","thumbnailData","currentWidth","currentHeight","currentFormat","thumbnailStart","thirdParam","test","toUpperCase","push","join","substring","num","isNaN","hours","minutes","secs","seconds"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utils/parsers/gcode.parser.ts"],"names":["GCodeParser","maxHeaderLinesToRead","maxFooterLinesToRead","parse","filePath","stats","fs","stat","fileName","split","pop","metadata","extractMetadata","thumbnails","extractThumbnails","normalized","fileFormat","fileSize","size","gcodePrintTimeSeconds","parseTime","estimated_printing_time_normal_mode","estimated_printing_time","print_time","nozzleDiameterMm","parseFloat","nozzle_diameter","filamentDiameterMm","filament_diameter","filamentDensityGramsCm3","filament_density","filamentUsedMm","filament_used_mm","filamentUsedCm3","filament_used_cm3","filamentUsedGrams","filament_used_g","totalFilamentUsedGrams","total_filament_used_g","layerHeight","layer_height","firstLayerHeight","first_layer_height","initial_layer_height","bedTemperature","bed_temperature","first_layer_bed_temperature","nozzleTemperature","temperature","first_layer_temperature","fillDensity","fill_density","filamentType","filament_type","printerModel","printer_model","printer_name","slicerVersion","generated_by","slicer_version","maxLayerZ","max_layer_z","totalLayers","parseInt","total_layers","layer_count","generatedBy","length","map","t","width","height","format","dataLength","data","undefined","raw","_thumbnails","extractMetadataFromStart","extractMetadataFromEnd","linesRead","fileStream","createReadStream","rl","readline","createInterface","input","crlfDelay","Infinity","line","parseMetadataLine","close","estimatedBytes","startPosition","Math","max","fileHandle","open","buffer","Buffer","alloc","bytesRead","read","text","toString","lines","startsWith","generatedByMatch","match","prusaMatch","key","trim","toLowerCase","replace","value","_","unit","content","curaMatch","normalizedKey","s3dMatch","inThumbnail","thumbnailData","currentWidth","currentHeight","currentFormat","thumbnailStart","thirdParam","test","toUpperCase","base64Data","join","qoiBuffer","from","pngBuffer","convertQoiToPng","push","substring","num","isNaN","hours","minutes","secs","seconds"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=parser.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/parsers/parser.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "extractThumbnailsFromMetadata", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return extractThumbnailsFromMetadata;
9
+ }
10
+ });
11
+ function extractThumbnailsFromMetadata(metadata) {
12
+ if (!metadata?._thumbnails) {
13
+ return [];
14
+ }
15
+ return (metadata._thumbnails || []).map((thumb)=>({
16
+ index: thumb.index,
17
+ width: thumb.width,
18
+ height: thumb.height,
19
+ format: thumb.format,
20
+ size: thumb.size
21
+ }));
22
+ }
23
+
24
+ //# sourceMappingURL=thumbnail.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/thumbnail.util.ts"],"names":["extractThumbnailsFromMetadata","metadata","_thumbnails","map","thumb","index","width","height","format","size"],"mappings":";;;;+BAQgBA;;;eAAAA;;;AAAT,SAASA,8BAA8BC,QAAa;IACzD,IAAI,CAACA,UAAUC,aAAa;QAC1B,OAAO,EAAE;IACX;IAEA,OAAO,AAACD,CAAAA,SAASC,WAAW,IAAI,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC,QAAgB,CAAA;YACvDC,OAAOD,MAAMC,KAAK;YAClBC,OAAOF,MAAME,KAAK;YAClBC,QAAQH,MAAMG,MAAM;YACpBC,QAAQJ,MAAMI,MAAM;YACpBC,MAAML,MAAMK,IAAI;QAClB,CAAA;AACF"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "author": "David Zwart",
8
8
  "license": "AGPL-3.0-or-later",
9
- "version": "2.0.7",
9
+ "version": "2.0.8",
10
10
  "bin": {
11
11
  "fdm-monster-server": "dist/index.js",
12
12
  "fdmm-server": "dist/index.js"
@@ -62,13 +62,13 @@
62
62
  "tr46": "6.0.0"
63
63
  },
64
64
  "dependencies": {
65
- "@fdm-monster/client-next": "2.2.7",
65
+ "@fdm-monster/client-next": "2.3.1",
66
66
  "@octokit/plugin-throttling": "8.2.0",
67
- "@sentry/node": "10.36.0",
67
+ "@sentry/node": "10.37.0",
68
68
  "adm-zip": "0.5.16",
69
69
  "awilix": "12.0.5",
70
70
  "awilix-express": "9.0.2",
71
- "axios": "1.13.3",
71
+ "axios": "1.13.4",
72
72
  "basic-ftp": "5.1.0",
73
73
  "bcryptjs": "3.0.3",
74
74
  "better-sqlite3": "12.6.2",
@@ -109,7 +109,7 @@
109
109
  "@lcov-viewer/cli": "1.3.0",
110
110
  "@lcov-viewer/istanbul-report": "1.4.0",
111
111
  "@swc/cli": "0.7.10",
112
- "@swc/core": "1.15.10",
112
+ "@swc/core": "1.15.11",
113
113
  "@swc/jest": "0.2.39",
114
114
  "@types/adm-zip": "0.5.7",
115
115
  "@types/connect-history-api-fallback": "1.5.4",