@ecobridge.xyz/devicemanager 3.1.0 → 3.2.0

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 (78) hide show
  1. package/.gitea/workflows/default_tags.yaml +0 -21
  2. package/.smartconfig.json +69 -0
  3. package/changelog.md +38 -1
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/device/device.classes.device.d.ts +2 -2
  6. package/dist_ts/device/device.classes.device.js +3 -3
  7. package/dist_ts/devicemanager.classes.devicemanager.d.ts +17 -4
  8. package/dist_ts/devicemanager.classes.devicemanager.js +99 -11
  9. package/dist_ts/discovery/discovery.classes.mdns.js +46 -11
  10. package/dist_ts/discovery/discovery.classes.networkscanner.d.ts +5 -1
  11. package/dist_ts/discovery/discovery.classes.networkscanner.js +44 -3
  12. package/dist_ts/discovery/discovery.classes.ssdp.d.ts +52 -21
  13. package/dist_ts/discovery/discovery.classes.ssdp.js +407 -117
  14. package/dist_ts/events/events.observable.d.ts +15 -0
  15. package/dist_ts/events/events.observable.js +22 -0
  16. package/dist_ts/events/index.d.ts +1 -0
  17. package/dist_ts/events/index.js +2 -0
  18. package/dist_ts/factories/index.js +7 -5
  19. package/dist_ts/features/feature.abstract.d.ts +2 -2
  20. package/dist_ts/features/feature.abstract.js +3 -3
  21. package/dist_ts/features/feature.print.d.ts +3 -0
  22. package/dist_ts/features/feature.print.js +17 -2
  23. package/dist_ts/features/feature.scan.d.ts +5 -2
  24. package/dist_ts/features/feature.scan.js +98 -27
  25. package/dist_ts/index.d.ts +4 -2
  26. package/dist_ts/index.js +4 -2
  27. package/dist_ts/interfaces/feature.interfaces.d.ts +22 -2
  28. package/dist_ts/interfaces/index.d.ts +22 -4
  29. package/dist_ts/interfaces/index.js +1 -1
  30. package/dist_ts/plugins.d.ts +6 -15
  31. package/dist_ts/plugins.js +7 -19
  32. package/dist_ts/protocols/index.d.ts +2 -1
  33. package/dist_ts/protocols/index.js +4 -2
  34. package/dist_ts/protocols/protocol.brother.d.ts +67 -0
  35. package/dist_ts/protocols/protocol.brother.js +560 -0
  36. package/dist_ts/protocols/protocol.escl.d.ts +13 -4
  37. package/dist_ts/protocols/protocol.escl.js +345 -178
  38. package/dist_ts/protocols/protocol.ipp.d.ts +2 -0
  39. package/dist_ts/protocols/protocol.ipp.js +22 -2
  40. package/dist_ts/providers/index.d.ts +1 -0
  41. package/dist_ts/providers/index.js +2 -0
  42. package/dist_ts/providers/provider.smb.d.ts +60 -0
  43. package/dist_ts/providers/provider.smb.js +224 -0
  44. package/license.md +21 -0
  45. package/package.json +15 -20
  46. package/pnpm-workspace.yaml +6 -0
  47. package/readme.md +157 -78
  48. package/test/test.brother.node.ts +306 -0
  49. package/test/test.escl.node.ts +233 -0
  50. package/test/test.ipp.node.ts +75 -0
  51. package/test/{test.ts → test.node.ts} +37 -45
  52. package/test/test.smb.node.ts +123 -0
  53. package/test/test.ssdp.node.ts +978 -0
  54. package/ts/00_commitinfo_data.ts +1 -1
  55. package/ts/device/device.classes.device.ts +2 -2
  56. package/ts/devicemanager.classes.devicemanager.ts +125 -12
  57. package/ts/discovery/discovery.classes.mdns.ts +40 -11
  58. package/ts/discovery/discovery.classes.networkscanner.ts +51 -2
  59. package/ts/discovery/discovery.classes.ssdp.ts +493 -130
  60. package/ts/events/events.observable.ts +31 -0
  61. package/ts/events/index.ts +4 -0
  62. package/ts/factories/index.ts +7 -5
  63. package/ts/features/feature.abstract.ts +2 -2
  64. package/ts/features/feature.print.ts +16 -1
  65. package/ts/features/feature.scan.ts +93 -27
  66. package/ts/index.ts +21 -0
  67. package/ts/interfaces/feature.interfaces.ts +23 -2
  68. package/ts/interfaces/index.ts +23 -4
  69. package/ts/plugins.ts +6 -25
  70. package/ts/protocols/index.ts +11 -1
  71. package/ts/protocols/protocol.brother.ts +648 -0
  72. package/ts/protocols/protocol.escl.ts +348 -191
  73. package/ts/protocols/protocol.ipp.ts +24 -1
  74. package/ts/providers/index.ts +7 -0
  75. package/ts/providers/provider.smb.ts +326 -0
  76. package/dist_ts/protocols/protocol.ipp.old.d.ts +0 -45
  77. package/dist_ts/protocols/protocol.ipp.old.js +0 -284
  78. package/npmextra.json +0 -24
@@ -1,284 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- /**
3
- * IPP protocol wrapper using the ipp npm package
4
- */
5
- export class IppProtocol {
6
- printerUrl;
7
- printer;
8
- constructor(address, port, path = '/ipp/print') {
9
- this.printerUrl = `ipp://${address}:${port}${path}`;
10
- this.printer = plugins.ipp.Printer(this.printerUrl);
11
- }
12
- /**
13
- * Get printer attributes/capabilities
14
- */
15
- async getAttributes() {
16
- return new Promise((resolve, reject) => {
17
- this.printer.execute('Get-Printer-Attributes', null, (err, res) => {
18
- if (err) {
19
- reject(err);
20
- return;
21
- }
22
- try {
23
- const attrs = res['printer-attributes-tag'] || {};
24
- resolve(this.parseCapabilities(attrs));
25
- }
26
- catch (parseErr) {
27
- reject(parseErr);
28
- }
29
- });
30
- });
31
- }
32
- /**
33
- * Print a document
34
- */
35
- async print(data, options) {
36
- const msg = this.buildPrintMessage(options);
37
- return new Promise((resolve, reject) => {
38
- this.printer.execute('Print-Job', { ...msg, data }, (err, res) => {
39
- if (err) {
40
- reject(err);
41
- return;
42
- }
43
- try {
44
- const jobAttrs = res['job-attributes-tag'] || {};
45
- resolve(this.parseJobInfo(jobAttrs));
46
- }
47
- catch (parseErr) {
48
- reject(parseErr);
49
- }
50
- });
51
- });
52
- }
53
- /**
54
- * Get all jobs
55
- */
56
- async getJobs() {
57
- return new Promise((resolve, reject) => {
58
- this.printer.execute('Get-Jobs', {
59
- 'operation-attributes-tag': {
60
- 'requesting-user-name': 'devicemanager',
61
- 'which-jobs': 'not-completed',
62
- },
63
- }, (err, res) => {
64
- if (err) {
65
- reject(err);
66
- return;
67
- }
68
- try {
69
- const jobs = [];
70
- const jobTags = res['job-attributes-tag'];
71
- if (Array.isArray(jobTags)) {
72
- for (const jobAttrs of jobTags) {
73
- jobs.push(this.parseJobInfo(jobAttrs));
74
- }
75
- }
76
- else if (jobTags && typeof jobTags === 'object') {
77
- jobs.push(this.parseJobInfo(jobTags));
78
- }
79
- resolve(jobs);
80
- }
81
- catch (parseErr) {
82
- reject(parseErr);
83
- }
84
- });
85
- });
86
- }
87
- /**
88
- * Get specific job info
89
- */
90
- async getJobInfo(jobId) {
91
- return new Promise((resolve, reject) => {
92
- this.printer.execute('Get-Job-Attributes', {
93
- 'operation-attributes-tag': {
94
- 'job-id': jobId,
95
- },
96
- }, (err, res) => {
97
- if (err) {
98
- reject(err);
99
- return;
100
- }
101
- try {
102
- const jobAttrs = res['job-attributes-tag'] || {};
103
- resolve(this.parseJobInfo(jobAttrs));
104
- }
105
- catch (parseErr) {
106
- reject(parseErr);
107
- }
108
- });
109
- });
110
- }
111
- /**
112
- * Cancel a job
113
- */
114
- async cancelJob(jobId) {
115
- return new Promise((resolve, reject) => {
116
- this.printer.execute('Cancel-Job', {
117
- 'operation-attributes-tag': {
118
- 'job-id': jobId,
119
- },
120
- }, (err, _res) => {
121
- if (err) {
122
- reject(err);
123
- return;
124
- }
125
- resolve();
126
- });
127
- });
128
- }
129
- /**
130
- * Check if printer is available
131
- */
132
- async checkAvailability() {
133
- try {
134
- await this.getAttributes();
135
- return true;
136
- }
137
- catch {
138
- return false;
139
- }
140
- }
141
- /**
142
- * Build IPP print message from options
143
- */
144
- buildPrintMessage(options) {
145
- const operationAttrs = {
146
- 'requesting-user-name': 'devicemanager',
147
- 'job-name': options?.jobName ?? 'Print Job',
148
- 'document-format': 'application/octet-stream',
149
- };
150
- const jobAttrs = {};
151
- if (options?.copies && options.copies > 1) {
152
- jobAttrs['copies'] = options.copies;
153
- }
154
- if (options?.mediaSize) {
155
- jobAttrs['media'] = options.mediaSize;
156
- }
157
- if (options?.mediaType) {
158
- jobAttrs['media-type'] = options.mediaType;
159
- }
160
- if (options?.sides) {
161
- jobAttrs['sides'] = options.sides;
162
- }
163
- if (options?.quality) {
164
- const qualityMap = {
165
- draft: 3,
166
- normal: 4,
167
- high: 5,
168
- };
169
- jobAttrs['print-quality'] = qualityMap[options.quality] ?? 4;
170
- }
171
- if (options?.colorMode) {
172
- jobAttrs['print-color-mode'] = options.colorMode;
173
- }
174
- const msg = {
175
- 'operation-attributes-tag': operationAttrs,
176
- };
177
- if (Object.keys(jobAttrs).length > 0) {
178
- msg['job-attributes-tag'] = jobAttrs;
179
- }
180
- return msg;
181
- }
182
- /**
183
- * Parse printer capabilities from attributes
184
- */
185
- parseCapabilities(attrs) {
186
- const getArray = (key) => {
187
- const value = attrs[key];
188
- if (Array.isArray(value))
189
- return value.map(String);
190
- if (value !== undefined)
191
- return [String(value)];
192
- return [];
193
- };
194
- const getNumber = (key, defaultVal) => {
195
- const value = attrs[key];
196
- if (typeof value === 'number')
197
- return value;
198
- if (typeof value === 'string')
199
- return parseInt(value) || defaultVal;
200
- return defaultVal;
201
- };
202
- const getBool = (key, defaultVal) => {
203
- const value = attrs[key];
204
- if (typeof value === 'boolean')
205
- return value;
206
- if (value === 'true' || value === 1)
207
- return true;
208
- if (value === 'false' || value === 0)
209
- return false;
210
- return defaultVal;
211
- };
212
- // Parse resolutions
213
- const resolutions = [];
214
- const resSupported = attrs['printer-resolution-supported'];
215
- if (Array.isArray(resSupported)) {
216
- for (const res of resSupported) {
217
- if (typeof res === 'object' && res !== null && 'x' in res) {
218
- resolutions.push(res.x);
219
- }
220
- else if (typeof res === 'number') {
221
- resolutions.push(res);
222
- }
223
- }
224
- }
225
- if (resolutions.length === 0) {
226
- resolutions.push(300, 600);
227
- }
228
- return {
229
- colorSupported: getBool('color-supported', false),
230
- duplexSupported: getArray('sides-supported').some((s) => s.includes('two-sided')),
231
- mediaSizes: getArray('media-supported'),
232
- mediaTypes: getArray('media-type-supported'),
233
- resolutions: [...new Set(resolutions)],
234
- maxCopies: getNumber('copies-supported', 99),
235
- sidesSupported: getArray('sides-supported'),
236
- qualitySupported: getArray('print-quality-supported').map(String),
237
- };
238
- }
239
- /**
240
- * Parse job info from attributes
241
- */
242
- parseJobInfo(attrs) {
243
- const getString = (key, defaultVal) => {
244
- const value = attrs[key];
245
- if (typeof value === 'string')
246
- return value;
247
- if (value !== undefined)
248
- return String(value);
249
- return defaultVal;
250
- };
251
- const getNumber = (key, defaultVal) => {
252
- const value = attrs[key];
253
- if (typeof value === 'number')
254
- return value;
255
- if (typeof value === 'string')
256
- return parseInt(value) || defaultVal;
257
- return defaultVal;
258
- };
259
- // Map IPP job state to our state
260
- const ippState = getNumber('job-state', 3);
261
- const stateMap = {
262
- 3: 'pending', // pending
263
- 4: 'pending', // pending-held
264
- 5: 'processing', // processing
265
- 6: 'processing', // processing-stopped
266
- 7: 'canceled', // canceled
267
- 8: 'aborted', // aborted
268
- 9: 'completed', // completed
269
- };
270
- const createdTime = attrs['time-at-creation'];
271
- const completedTime = attrs['time-at-completed'];
272
- return {
273
- id: getNumber('job-id', 0),
274
- name: getString('job-name', 'Unknown Job'),
275
- state: stateMap[ippState] ?? 'pending',
276
- stateReason: getString('job-state-reasons', undefined),
277
- createdAt: createdTime ? new Date(createdTime * 1000) : new Date(),
278
- completedAt: completedTime ? new Date(completedTime * 1000) : undefined,
279
- pagesPrinted: getNumber('job-media-sheets-completed', undefined),
280
- pagesTotal: getNumber('job-media-sheets', undefined),
281
- };
282
- }
283
- }
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wuaXBwLm9sZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3Byb3RvY29scy9wcm90b2NvbC5pcHAub2xkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBT3pDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDZCxVQUFVLENBQVM7SUFDbkIsT0FBTyxDQUF5QztJQUV4RCxZQUFZLE9BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZSxZQUFZO1FBQ3BFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2xCLHdCQUF3QixFQUN4QixJQUFJLEVBQ0osQ0FBQyxHQUFpQixFQUFFLEdBQTRCLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksQ0FBQztvQkFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsd0JBQXdCLENBQTRCLElBQUksRUFBRSxDQUFDO29CQUM3RSxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNu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
package/npmextra.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "@git.zone/cli": {
3
- "projectType": "npm",
4
- "module": {
5
- "githost": "code.foss.global",
6
- "gitscope": "ecobridge.xyz",
7
- "gitrepo": "devicemanager",
8
- "description": "a device manager for talking to devices on network and over usb",
9
- "npmPackagename": "@ecobridge.xyz/devicemanager",
10
- "license": "MIT",
11
- "projectDomain": "ecobridge.xyz"
12
- },
13
- "release": {
14
- "accessLevel": "public",
15
- "registries": [
16
- "https://verdaccio.lossless.digital",
17
- "https://registry.npmjs.org"
18
- ]
19
- }
20
- },
21
- "@ship.zone/szci": {
22
- "npmGlobalTools": []
23
- }
24
- }