node-hp-scan-to 1.2.2 → 1.3.1
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/LICENSE +21 -0
- package/README.md +47 -10
- package/dist/Destination.js +36 -84
- package/dist/Destination.js.map +1 -1
- package/dist/DeviceCapabilities.d.ts +4 -0
- package/dist/DeviceCapabilities.js +3 -0
- package/dist/DeviceCapabilities.js.map +1 -0
- package/dist/DiscoveryTree.d.ts +16 -0
- package/dist/DiscoveryTree.js +38 -0
- package/dist/DiscoveryTree.js.map +1 -0
- package/dist/Event.d.ts +1 -1
- package/dist/Event.js +24 -39
- package/dist/Event.js.map +1 -1
- package/dist/EventTable.d.ts +5 -0
- package/dist/EventTable.js +24 -18
- package/dist/EventTable.js.map +1 -1
- package/dist/HPApi.d.ts +26 -18
- package/dist/HPApi.js +386 -461
- package/dist/HPApi.js.map +1 -1
- package/dist/Job.d.ts +8 -7
- package/dist/Job.js +69 -86
- package/dist/Job.js.map +1 -1
- package/dist/JpegUtil.js +73 -82
- package/dist/JpegUtil.js.map +1 -1
- package/dist/KnownShortcut.d.ts +1 -0
- package/dist/KnownShortcut.js +3 -0
- package/dist/KnownShortcut.js.map +1 -0
- package/dist/PathHelper.d.ts +2 -1
- package/dist/PathHelper.js +41 -68
- package/dist/PathHelper.js.map +1 -1
- package/dist/ScanCaps.d.ts +7 -0
- package/dist/ScanCaps.js +17 -0
- package/dist/ScanCaps.js.map +1 -0
- package/dist/ScanContent.js +18 -73
- package/dist/ScanContent.js.map +1 -1
- package/dist/ScanJobManifest.d.ts +23 -0
- package/dist/ScanJobManifest.js +24 -0
- package/dist/ScanJobManifest.js.map +1 -0
- package/dist/ScanJobSettings.d.ts +3 -1
- package/dist/ScanJobSettings.js +48 -88
- package/dist/ScanJobSettings.js.map +1 -1
- package/dist/ScanStatus.d.ts +1 -0
- package/dist/ScanStatus.js +27 -28
- package/dist/ScanStatus.js.map +1 -1
- package/dist/WalkupScanDestination.d.ts +11 -13
- package/dist/WalkupScanDestination.js +32 -35
- package/dist/WalkupScanDestination.js.map +1 -1
- package/dist/WalkupScanDestinations.d.ts +1 -0
- package/dist/WalkupScanDestinations.js +21 -18
- package/dist/WalkupScanDestinations.js.map +1 -1
- package/dist/WalkupScanManifest.d.ts +23 -0
- package/dist/WalkupScanManifest.js +25 -0
- package/dist/WalkupScanManifest.js.map +1 -0
- package/dist/WalkupScanToCompCaps.d.ts +12 -0
- package/dist/WalkupScanToCompCaps.js +20 -0
- package/dist/WalkupScanToCompCaps.js.map +1 -0
- package/dist/WalkupScanToCompDestination.d.ts +10 -14
- package/dist/WalkupScanToCompDestination.js +32 -38
- package/dist/WalkupScanToCompDestination.js.map +1 -1
- package/dist/WalkupScanToCompDestinations.d.ts +1 -0
- package/dist/WalkupScanToCompDestinations.js +21 -18
- package/dist/WalkupScanToCompDestinations.js.map +1 -1
- package/dist/WalkupScanToCompEvent.d.ts +2 -1
- package/dist/WalkupScanToCompEvent.js +14 -11
- package/dist/WalkupScanToCompEvent.js.map +1 -1
- package/dist/WalkupScanToCompManifest.d.ts +23 -0
- package/dist/WalkupScanToCompManifest.js +25 -0
- package/dist/WalkupScanToCompManifest.js.map +1 -0
- package/dist/delay.d.ts +1 -0
- package/dist/delay.js +10 -0
- package/dist/delay.js.map +1 -0
- package/dist/fixJpegSize.d.ts +19 -0
- package/dist/fixJpegSize.js +292 -0
- package/dist/fixJpegSize.js.map +1 -0
- package/dist/index.js +209 -607
- package/dist/index.js.map +1 -1
- package/dist/listening.d.ts +9 -0
- package/dist/listening.js +108 -0
- package/dist/listening.js.map +1 -0
- package/dist/models/Destination.d.ts +8 -0
- package/dist/models/Destination.js +68 -0
- package/dist/models/Destination.js.map +1 -0
- package/dist/models/DiscoveryTree.d.ts +16 -0
- package/dist/models/DiscoveryTree.js +38 -0
- package/dist/models/DiscoveryTree.js.map +1 -0
- package/dist/models/Event.d.ts +21 -0
- package/dist/models/Event.js +32 -0
- package/dist/models/Event.js.map +1 -0
- package/dist/models/EventTable.d.ts +16 -0
- package/dist/models/EventTable.js +33 -0
- package/dist/models/EventTable.js.map +1 -0
- package/dist/models/Job.d.ts +37 -0
- package/dist/models/Job.js +78 -0
- package/dist/models/Job.js.map +1 -0
- package/dist/models/ScanCaps.d.ts +7 -0
- package/dist/models/ScanCaps.js +17 -0
- package/dist/models/ScanCaps.js.map +1 -0
- package/dist/models/ScanJobManifest.d.ts +23 -0
- package/dist/models/ScanJobManifest.js +24 -0
- package/dist/models/ScanJobManifest.js.map +1 -0
- package/dist/models/ScanJobSettings.d.ts +8 -0
- package/dist/models/ScanJobSettings.js +56 -0
- package/dist/models/ScanJobSettings.js.map +1 -0
- package/dist/models/WalkupScanDestination.d.ts +22 -0
- package/dist/models/WalkupScanDestination.js +38 -0
- package/dist/models/WalkupScanDestination.js.map +1 -0
- package/dist/models/WalkupScanDestinations.d.ts +12 -0
- package/dist/models/WalkupScanDestinations.js +30 -0
- package/dist/models/WalkupScanDestinations.js.map +1 -0
- package/dist/models/WalkupScanManifest.d.ts +23 -0
- package/dist/models/WalkupScanManifest.js +25 -0
- package/dist/models/WalkupScanManifest.js.map +1 -0
- package/dist/models/WalkupScanToCompCaps.d.ts +12 -0
- package/dist/models/WalkupScanToCompCaps.js +20 -0
- package/dist/models/WalkupScanToCompCaps.js.map +1 -0
- package/dist/models/WalkupScanToCompDestination.d.ts +22 -0
- package/dist/models/WalkupScanToCompDestination.js +38 -0
- package/dist/models/WalkupScanToCompDestination.js.map +1 -0
- package/dist/models/WalkupScanToCompDestinations.d.ts +12 -0
- package/dist/models/WalkupScanToCompDestinations.js +30 -0
- package/dist/models/WalkupScanToCompDestinations.js.map +1 -0
- package/dist/models/WalkupScanToCompEvent.d.ts +11 -0
- package/dist/models/WalkupScanToCompEvent.js +20 -0
- package/dist/models/WalkupScanToCompEvent.js.map +1 -0
- package/dist/models/WalkupScanToCompManifest.d.ts +23 -0
- package/dist/models/WalkupScanToCompManifest.js +25 -0
- package/dist/models/WalkupScanToCompManifest.js.map +1 -0
- package/dist/readDeviceCapabilities.d.ts +2 -0
- package/dist/readDeviceCapabilities.js +41 -0
- package/dist/readDeviceCapabilities.js.map +1 -0
- package/dist/scanProcess.d.ts +19 -0
- package/dist/scanProcess.js +292 -0
- package/dist/scanProcess.js.map +1 -0
- package/dist/scanProcessing.d.ts +20 -0
- package/dist/scanProcessing.js +320 -0
- package/dist/scanProcessing.js.map +1 -0
- package/dist/src/Destination.d.ts +8 -0
- package/dist/src/Destination.js +68 -0
- package/dist/src/Destination.js.map +1 -0
- package/dist/src/DiscoveryTree.d.ts +16 -0
- package/dist/src/DiscoveryTree.js +38 -0
- package/dist/src/DiscoveryTree.js.map +1 -0
- package/dist/src/Event.d.ts +21 -0
- package/dist/src/Event.js +32 -0
- package/dist/src/Event.js.map +1 -0
- package/dist/src/EventTable.d.ts +16 -0
- package/dist/src/EventTable.js +33 -0
- package/dist/src/EventTable.js.map +1 -0
- package/dist/src/HPApi.d.ts +50 -0
- package/dist/src/HPApi.js +454 -0
- package/dist/src/HPApi.js.map +1 -0
- package/dist/src/Job.d.ts +37 -0
- package/dist/src/Job.js +78 -0
- package/dist/src/Job.js.map +1 -0
- package/dist/src/JpegUtil.d.ts +26 -0
- package/dist/src/JpegUtil.js +229 -0
- package/dist/src/JpegUtil.js.map +1 -0
- package/dist/src/KnownShortcut.d.ts +1 -0
- package/dist/src/KnownShortcut.js +3 -0
- package/dist/src/KnownShortcut.js.map +1 -0
- package/dist/src/PathHelper.d.ts +6 -0
- package/dist/src/PathHelper.js +52 -0
- package/dist/src/PathHelper.js.map +1 -0
- package/dist/src/ScanCaps.d.ts +7 -0
- package/dist/src/ScanCaps.js +17 -0
- package/dist/src/ScanCaps.js.map +1 -0
- package/dist/src/ScanJobManifest.d.ts +23 -0
- package/dist/src/ScanJobManifest.js +24 -0
- package/dist/src/ScanJobManifest.js.map +1 -0
- package/dist/src/ScanJobSettings.d.ts +8 -0
- package/dist/src/ScanJobSettings.js +56 -0
- package/dist/src/ScanJobSettings.js.map +1 -0
- package/dist/src/ScanStatus.d.ts +19 -0
- package/dist/src/ScanStatus.js +35 -0
- package/dist/src/ScanStatus.js.map +1 -0
- package/dist/src/WalkupScanDestination.d.ts +22 -0
- package/dist/src/WalkupScanDestination.js +38 -0
- package/dist/src/WalkupScanDestination.js.map +1 -0
- package/dist/src/WalkupScanDestinations.d.ts +12 -0
- package/dist/src/WalkupScanDestinations.js +30 -0
- package/dist/src/WalkupScanDestinations.js.map +1 -0
- package/dist/src/WalkupScanManifest.d.ts +23 -0
- package/dist/src/WalkupScanManifest.js +25 -0
- package/dist/src/WalkupScanManifest.js.map +1 -0
- package/dist/src/WalkupScanToCompCaps.d.ts +12 -0
- package/dist/src/WalkupScanToCompCaps.js +20 -0
- package/dist/src/WalkupScanToCompCaps.js.map +1 -0
- package/dist/src/WalkupScanToCompDestination.d.ts +22 -0
- package/dist/src/WalkupScanToCompDestination.js +38 -0
- package/dist/src/WalkupScanToCompDestination.js.map +1 -0
- package/dist/src/WalkupScanToCompDestinations.d.ts +12 -0
- package/dist/src/WalkupScanToCompDestinations.js +30 -0
- package/dist/src/WalkupScanToCompDestinations.js.map +1 -0
- package/dist/src/WalkupScanToCompEvent.d.ts +11 -0
- package/dist/src/WalkupScanToCompEvent.js +20 -0
- package/dist/src/WalkupScanToCompEvent.js.map +1 -0
- package/dist/src/WalkupScanToCompManifest.d.ts +23 -0
- package/dist/src/WalkupScanToCompManifest.js +25 -0
- package/dist/src/WalkupScanToCompManifest.js.map +1 -0
- package/dist/src/delay.d.ts +1 -0
- package/dist/src/delay.js +10 -0
- package/dist/src/delay.js.map +1 -0
- package/dist/test/DiscoveryTree.test.d.ts +1 -0
- package/dist/test/DiscoveryTree.test.js +68 -0
- package/dist/test/DiscoveryTree.test.js.map +1 -0
- package/dist/test/EtagEventTable.test.d.ts +1 -0
- package/dist/test/EtagEventTable.test.js +93 -0
- package/dist/test/EtagEventTable.test.js.map +1 -0
- package/dist/test/Job.test.d.ts +1 -0
- package/dist/test/Job.test.js +104 -0
- package/dist/test/Job.test.js.map +1 -0
- package/dist/test/JpegUtil.test.d.ts +1 -0
- package/dist/test/JpegUtil.test.js +51 -0
- package/dist/test/JpegUtil.test.js.map +1 -0
- package/dist/test/PathHelper.test.d.ts +1 -0
- package/dist/test/PathHelper.test.js +99 -0
- package/dist/test/PathHelper.test.js.map +1 -0
- package/dist/test/ScanJobManifest.test.d.ts +1 -0
- package/dist/test/ScanJobManifest.test.js +56 -0
- package/dist/test/ScanJobManifest.test.js.map +1 -0
- package/dist/test/ScanJobSettings.test.d.ts +1 -0
- package/dist/test/ScanJobSettings.test.js +53 -0
- package/dist/test/ScanJobSettings.test.js.map +1 -0
- package/dist/test/ScanStatus.test.d.ts +1 -0
- package/dist/test/ScanStatus.test.js +75 -0
- package/dist/test/ScanStatus.test.js.map +1 -0
- package/dist/test/WalkupScanDestination.test.d.ts +1 -0
- package/dist/test/WalkupScanDestination.test.js +80 -0
- package/dist/test/WalkupScanDestination.test.js.map +1 -0
- package/dist/test/WalkupScanDestinations.test.d.ts +1 -0
- package/dist/test/WalkupScanDestinations.test.js +68 -0
- package/dist/test/WalkupScanDestinations.test.js.map +1 -0
- package/dist/test/WalkupScanManifest.test.d.ts +1 -0
- package/dist/test/WalkupScanManifest.test.js +46 -0
- package/dist/test/WalkupScanManifest.test.js.map +1 -0
- package/dist/test/WalkupScanToCompCaps.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompCaps.test.js +56 -0
- package/dist/test/WalkupScanToCompCaps.test.js.map +1 -0
- package/dist/test/WalkupScanToCompDestination.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompDestination.test.js +58 -0
- package/dist/test/WalkupScanToCompDestination.test.js.map +1 -0
- package/dist/test/WalkupScanToCompDestinations.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompDestinations.test.js +58 -0
- package/dist/test/WalkupScanToCompDestinations.test.js.map +1 -0
- package/dist/test/WalkupScanToCompEvent.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompEvent.test.js +46 -0
- package/dist/test/WalkupScanToCompEvent.test.js.map +1 -0
- package/dist/test/WalkupScanToCompManifest.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompManifest.test.js +46 -0
- package/dist/test/WalkupScanToCompManifest.test.js.map +1 -0
- package/dist/test/clean.d.ts +1 -0
- package/dist/test/clean.js +21 -0
- package/dist/test/clean.js.map +1 -0
- package/package.json +27 -18
- package/src/Destination.ts +1 -1
- package/src/DeviceCapabilities.ts +4 -0
- package/src/DiscoveryTree.ts +56 -0
- package/src/Event.ts +17 -7
- package/src/EventTable.ts +20 -0
- package/src/HPApi.ts +245 -103
- package/src/Job.ts +51 -29
- package/src/JpegUtil.ts +8 -4
- package/src/KnownShortcut.ts +6 -0
- package/src/PathHelper.ts +47 -13
- package/src/ScanCaps.ts +19 -0
- package/src/ScanContent.ts +4 -1
- package/src/ScanJobManifest.ts +55 -0
- package/src/ScanJobSettings.ts +18 -3
- package/src/ScanStatus.ts +9 -0
- package/src/WalkupScanDestination.ts +42 -18
- package/src/WalkupScanDestinations.ts +12 -0
- package/src/WalkupScanManifest.ts +59 -0
- package/src/WalkupScanToCompCaps.ts +36 -0
- package/src/WalkupScanToCompDestination.ts +38 -24
- package/src/WalkupScanToCompDestinations.ts +12 -0
- package/src/WalkupScanToCompEvent.ts +15 -3
- package/src/WalkupScanToCompManifest.ts +59 -0
- package/src/delay.ts +5 -0
- package/src/index.ts +267 -465
- package/src/listening.ts +145 -0
- package/src/readDeviceCapabilities.ts +46 -0
- package/src/scanProcessing.ts +535 -0
- package/tsconfig.json +1 -1
package/src/HPApi.ts
CHANGED
|
@@ -1,54 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import WalkupScanDestination, {
|
|
4
|
-
WalkupScanDestinationData,
|
|
5
|
-
} from "./WalkupScanDestination";
|
|
6
|
-
import WalkupScanToCompDestination, {
|
|
7
|
-
WalkupScanToCompDestinationData,
|
|
8
|
-
} from "./WalkupScanToCompDestination";
|
|
9
3
|
import { promisify } from "util";
|
|
10
4
|
import fs from "fs";
|
|
11
5
|
import axios, {
|
|
12
6
|
AxiosError,
|
|
13
7
|
AxiosRequestConfig,
|
|
14
|
-
AxiosRequestHeaders,
|
|
15
8
|
AxiosResponse,
|
|
9
|
+
RawAxiosRequestHeaders,
|
|
16
10
|
} from "axios";
|
|
17
11
|
import { URL } from "url";
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import EventTable, {
|
|
21
|
-
import Job
|
|
22
|
-
import ScanStatus
|
|
23
|
-
import
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import WalkupScanToCompDestinations
|
|
27
|
-
WalkupScanToCompDestinationsData,
|
|
28
|
-
} from "./WalkupScanToCompDestinations";
|
|
12
|
+
import * as stream from "stream";
|
|
13
|
+
import { Stream } from "stream";
|
|
14
|
+
import EventTable, { EtagEventTable } from "./EventTable";
|
|
15
|
+
import Job from "./Job";
|
|
16
|
+
import ScanStatus from "./ScanStatus";
|
|
17
|
+
import WalkupScanDestination from "./WalkupScanDestination";
|
|
18
|
+
import WalkupScanToCompDestination from "./WalkupScanToCompDestination";
|
|
19
|
+
import WalkupScanDestinations from "./WalkupScanDestinations";
|
|
20
|
+
import WalkupScanToCompDestinations from "./WalkupScanToCompDestinations";
|
|
29
21
|
import ScanJobSettings from "./ScanJobSettings";
|
|
30
22
|
import Destination from "./Destination";
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
|
|
34
|
-
|
|
23
|
+
import WalkupScanToCompEvent from "./WalkupScanToCompEvent";
|
|
24
|
+
import DiscoveryTree from "./DiscoveryTree";
|
|
25
|
+
import WalkupScanToCompManifest from "./WalkupScanToCompManifest";
|
|
26
|
+
import WalkupScanToCompCaps from "./WalkupScanToCompCaps";
|
|
27
|
+
import WalkupScanManifest from "./WalkupScanManifest";
|
|
28
|
+
import ScanJobManifest from "./ScanJobManifest";
|
|
29
|
+
import ScanCaps from "./ScanCaps";
|
|
30
|
+
import { delay } from "./delay";
|
|
31
|
+
import * as net from "net";
|
|
35
32
|
|
|
36
|
-
const parser = new Parser();
|
|
37
|
-
const parseString = promisify<string, any>(parser.parseString);
|
|
38
33
|
let printerIP = "192.168.1.11";
|
|
39
34
|
let debug = false;
|
|
40
35
|
let callCount = 0;
|
|
41
36
|
|
|
42
37
|
export default class HPApi {
|
|
43
|
-
static
|
|
38
|
+
static setDeviceIP(ip: string): void {
|
|
44
39
|
printerIP = ip;
|
|
45
40
|
}
|
|
46
41
|
|
|
47
|
-
static setDebug(dbg: boolean) {
|
|
42
|
+
static setDebug(dbg: boolean): void {
|
|
48
43
|
debug = dbg;
|
|
49
44
|
}
|
|
50
45
|
|
|
51
|
-
private static logDebug(
|
|
46
|
+
private static logDebug(
|
|
47
|
+
callId: number,
|
|
48
|
+
isRequest: boolean,
|
|
49
|
+
msg: object | string
|
|
50
|
+
): void {
|
|
52
51
|
if (debug) {
|
|
53
52
|
const id = String(callId).padStart(4, "0");
|
|
54
53
|
const content = typeof msg === "string" ? msg : JSON.stringify(msg);
|
|
@@ -56,11 +55,16 @@ export default class HPApi {
|
|
|
56
55
|
}
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
private static async callAxios(
|
|
58
|
+
private static async callAxios(
|
|
59
|
+
request: AxiosRequestConfig
|
|
60
|
+
): Promise<AxiosResponse<string>> {
|
|
60
61
|
callCount++;
|
|
62
|
+
if (request.timeout === 0) {
|
|
63
|
+
request.timeout = 100_000;
|
|
64
|
+
}
|
|
61
65
|
HPApi.logDebug(callCount, true, request);
|
|
62
66
|
try {
|
|
63
|
-
const response =
|
|
67
|
+
const response = await axios(request);
|
|
64
68
|
HPApi.logDebug(callCount, false, {
|
|
65
69
|
status: response.status,
|
|
66
70
|
data: response.data,
|
|
@@ -83,10 +87,47 @@ export default class HPApi {
|
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
|
|
86
|
-
static async
|
|
90
|
+
static async isAlive(timeout: number | null = null): Promise<boolean> {
|
|
91
|
+
const definedTimeout = timeout || 10000; // default of 10 seconds
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
const socket = net.createConnection(80, printerIP, () => {
|
|
94
|
+
clearTimeout(timer);
|
|
95
|
+
resolve(true);
|
|
96
|
+
socket.end();
|
|
97
|
+
});
|
|
98
|
+
const timer = setTimeout(() => {
|
|
99
|
+
resolve(false);
|
|
100
|
+
socket.end();
|
|
101
|
+
}, definedTimeout);
|
|
102
|
+
socket.on("error", () => {
|
|
103
|
+
clearTimeout(timer);
|
|
104
|
+
resolve(false);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static async waitDeviceUp(deviceUpPollingInterval: number): Promise<void> {
|
|
110
|
+
let first = true;
|
|
111
|
+
while (!(await HPApi.isAlive())) {
|
|
112
|
+
if (first) {
|
|
113
|
+
console.log(
|
|
114
|
+
`Device ip: ${printerIP} is down! [${new Date().toISOString()}]`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
first = false;
|
|
118
|
+
await delay(deviceUpPollingInterval);
|
|
119
|
+
}
|
|
120
|
+
if (!first) {
|
|
121
|
+
console.log(
|
|
122
|
+
`Device ip: ${printerIP} is up again! [${new Date().toISOString()}]`
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
static async getDiscoveryTree(): Promise<DiscoveryTree> {
|
|
87
128
|
const response = await HPApi.callAxios({
|
|
88
129
|
baseURL: `http://${printerIP}`,
|
|
89
|
-
url: "/
|
|
130
|
+
url: "/DevMgmt/DiscoveryTree.xml",
|
|
90
131
|
method: "GET",
|
|
91
132
|
responseType: "text",
|
|
92
133
|
});
|
|
@@ -94,10 +135,24 @@ export default class HPApi {
|
|
|
94
135
|
if (response.status !== 200) {
|
|
95
136
|
throw new Error(response.statusText);
|
|
96
137
|
} else {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
138
|
+
return DiscoveryTree.createDiscoveryTree(response.data);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
static async getWalkupScanDestinations(
|
|
143
|
+
uri: string = "/WalkupScan/WalkupScanDestinations"
|
|
144
|
+
): Promise<WalkupScanDestinations> {
|
|
145
|
+
const response = await HPApi.callAxios({
|
|
146
|
+
baseURL: `http://${printerIP}`,
|
|
147
|
+
url: uri,
|
|
148
|
+
method: "GET",
|
|
149
|
+
responseType: "text",
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
if (response.status !== 200) {
|
|
153
|
+
throw new Error(response.statusText);
|
|
154
|
+
} else {
|
|
155
|
+
return WalkupScanDestinations.createWalkupScanDestinations(response.data);
|
|
101
156
|
}
|
|
102
157
|
}
|
|
103
158
|
|
|
@@ -112,26 +167,95 @@ export default class HPApi {
|
|
|
112
167
|
if (response.status !== 200) {
|
|
113
168
|
throw new Error(response.statusText);
|
|
114
169
|
} else {
|
|
115
|
-
|
|
170
|
+
return WalkupScanToCompDestinations.createWalkupScanToCompDestinations(
|
|
116
171
|
response.data
|
|
117
|
-
)
|
|
118
|
-
return new WalkupScanToCompDestinations(parsed);
|
|
172
|
+
);
|
|
119
173
|
}
|
|
120
174
|
}
|
|
121
175
|
|
|
122
|
-
static async
|
|
123
|
-
|
|
176
|
+
static async getWalkupScanManifest(uri: string): Promise<WalkupScanManifest> {
|
|
177
|
+
const response = await HPApi.callAxios({
|
|
124
178
|
baseURL: `http://${printerIP}`,
|
|
125
|
-
url:
|
|
179
|
+
url: uri,
|
|
126
180
|
method: "GET",
|
|
127
181
|
responseType: "text",
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
if (response.status !== 200) {
|
|
185
|
+
throw new Error(response.statusText);
|
|
186
|
+
} else {
|
|
187
|
+
return WalkupScanManifest.createWalkupScanManifest(response.data);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
static async getWalkupScanToCompManifest(
|
|
191
|
+
uri: string
|
|
192
|
+
): Promise<WalkupScanToCompManifest> {
|
|
193
|
+
const response = await HPApi.callAxios({
|
|
194
|
+
baseURL: `http://${printerIP}`,
|
|
195
|
+
url: uri,
|
|
196
|
+
method: "GET",
|
|
197
|
+
responseType: "text",
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
if (response.status !== 200) {
|
|
201
|
+
throw new Error(response.statusText);
|
|
202
|
+
} else {
|
|
203
|
+
return WalkupScanToCompManifest.createWalkupScanToCompManifest(
|
|
204
|
+
response.data
|
|
205
|
+
);
|
|
206
|
+
}
|
|
132
207
|
}
|
|
133
208
|
|
|
134
|
-
static async
|
|
209
|
+
static async getScanJobManifest(uri: string): Promise<ScanJobManifest> {
|
|
210
|
+
const response = await HPApi.callAxios({
|
|
211
|
+
baseURL: `http://${printerIP}`,
|
|
212
|
+
url: uri,
|
|
213
|
+
method: "GET",
|
|
214
|
+
responseType: "text",
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
if (response.status !== 200) {
|
|
218
|
+
throw new Error(response.statusText);
|
|
219
|
+
} else {
|
|
220
|
+
return ScanJobManifest.createScanJobManifest(response.data);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
static async getScanCaps(uri: string): Promise<ScanCaps> {
|
|
225
|
+
const response = await HPApi.callAxios({
|
|
226
|
+
baseURL: `http://${printerIP}`,
|
|
227
|
+
url: uri,
|
|
228
|
+
method: "GET",
|
|
229
|
+
responseType: "text",
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
if (response.status !== 200) {
|
|
233
|
+
throw new Error(response.statusText);
|
|
234
|
+
} else {
|
|
235
|
+
return ScanCaps.createScanCaps(response.data);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
static async getWalkupScanToCompCaps(
|
|
240
|
+
uri: string
|
|
241
|
+
): Promise<WalkupScanToCompCaps> {
|
|
242
|
+
const response = await HPApi.callAxios({
|
|
243
|
+
baseURL: `http://${printerIP}`,
|
|
244
|
+
url: uri,
|
|
245
|
+
method: "GET",
|
|
246
|
+
responseType: "text",
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
if (response.status !== 200) {
|
|
250
|
+
throw new Error(response.statusText);
|
|
251
|
+
} else {
|
|
252
|
+
return WalkupScanToCompCaps.createWalkupScanToCompCaps(response.data);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
static async getWalkupScanToCompEvent(
|
|
257
|
+
compEventURI: string
|
|
258
|
+
): Promise<WalkupScanToCompEvent> {
|
|
135
259
|
const response = await HPApi.callAxios({
|
|
136
260
|
baseURL: `http://${printerIP}`,
|
|
137
261
|
url: compEventURI,
|
|
@@ -142,38 +266,65 @@ export default class HPApi {
|
|
|
142
266
|
if (response.status !== 200) {
|
|
143
267
|
throw response;
|
|
144
268
|
} else {
|
|
145
|
-
return
|
|
269
|
+
return WalkupScanToCompEvent.createWalkupScanToCompEvent(response.data);
|
|
146
270
|
}
|
|
147
271
|
}
|
|
148
272
|
|
|
149
|
-
static async removeDestination(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
);
|
|
273
|
+
static async removeDestination(
|
|
274
|
+
walkupScanDestination: WalkupScanDestination | WalkupScanToCompDestination
|
|
275
|
+
): Promise<boolean> {
|
|
276
|
+
let path: string;
|
|
277
|
+
|
|
278
|
+
if (walkupScanDestination.resourceURI.startsWith("http")) {
|
|
279
|
+
let urlInfo = new URL(walkupScanDestination.resourceURI);
|
|
280
|
+
if (urlInfo.pathname === null) {
|
|
281
|
+
throw new Error(
|
|
282
|
+
`invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
path = urlInfo.pathname;
|
|
286
|
+
} else {
|
|
287
|
+
path = walkupScanDestination.resourceURI;
|
|
156
288
|
}
|
|
157
289
|
|
|
158
290
|
const response = await HPApi.callAxios({
|
|
159
291
|
baseURL: `http://${printerIP}`,
|
|
160
|
-
url:
|
|
292
|
+
url: path,
|
|
161
293
|
method: "DELETE",
|
|
162
294
|
responseType: "text",
|
|
163
295
|
});
|
|
164
|
-
if (response.status === 204) {
|
|
296
|
+
if (response.status === 204 || response.status == 200) {
|
|
165
297
|
return true;
|
|
166
298
|
} else {
|
|
167
299
|
throw response;
|
|
168
300
|
}
|
|
169
301
|
}
|
|
170
302
|
|
|
171
|
-
static async
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
303
|
+
static async registerWalkupScanDestination(
|
|
304
|
+
destination: Destination
|
|
305
|
+
): Promise<string> {
|
|
306
|
+
const xml = await destination.toXML();
|
|
307
|
+
const url = "/WalkupScan/WalkupScanDestinations";
|
|
308
|
+
const response = await HPApi.callAxios({
|
|
309
|
+
baseURL: `http://${printerIP}`,
|
|
310
|
+
url: url,
|
|
311
|
+
method: "POST",
|
|
312
|
+
headers: { "Content-Type": "text/xml" },
|
|
313
|
+
data: xml,
|
|
314
|
+
responseType: "text",
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
if (response.status === 201 && response.headers.location != null) {
|
|
318
|
+
return new URL(response.headers.location).pathname;
|
|
319
|
+
} else {
|
|
320
|
+
throw response;
|
|
176
321
|
}
|
|
322
|
+
}
|
|
323
|
+
static async registerWalkupScanToCompDestination(
|
|
324
|
+
destination: Destination
|
|
325
|
+
): Promise<string> {
|
|
326
|
+
const xml = await destination.toXML();
|
|
327
|
+
const url = "/WalkupScanToComp/WalkupScanToCompDestinations";
|
|
177
328
|
const response = await HPApi.callAxios({
|
|
178
329
|
baseURL: `http://${printerIP}`,
|
|
179
330
|
url: url,
|
|
@@ -183,7 +334,7 @@ export default class HPApi {
|
|
|
183
334
|
responseType: "text",
|
|
184
335
|
});
|
|
185
336
|
|
|
186
|
-
if (response.status === 201) {
|
|
337
|
+
if (response.status === 201 && response.headers.location != null) {
|
|
187
338
|
return new URL(response.headers.location).pathname;
|
|
188
339
|
} else {
|
|
189
340
|
throw response;
|
|
@@ -192,9 +343,9 @@ export default class HPApi {
|
|
|
192
343
|
|
|
193
344
|
static async getEvents(
|
|
194
345
|
etag = "",
|
|
195
|
-
|
|
196
|
-
): Promise<
|
|
197
|
-
let url = this.appendTimeout("/EventMgmt/EventTable",
|
|
346
|
+
decisecondTimeout = 0
|
|
347
|
+
): Promise<EtagEventTable> {
|
|
348
|
+
let url = this.appendTimeout("/EventMgmt/EventTable", decisecondTimeout);
|
|
198
349
|
|
|
199
350
|
let headers = this.placeETagHeader(etag, {});
|
|
200
351
|
|
|
@@ -206,6 +357,7 @@ export default class HPApi {
|
|
|
206
357
|
method: "GET",
|
|
207
358
|
responseType: "text",
|
|
208
359
|
headers: headers,
|
|
360
|
+
timeout: decisecondTimeout * 100 * 1.1,
|
|
209
361
|
});
|
|
210
362
|
} catch (error) {
|
|
211
363
|
const axiosError = error as AxiosError;
|
|
@@ -221,18 +373,21 @@ export default class HPApi {
|
|
|
221
373
|
throw error;
|
|
222
374
|
}
|
|
223
375
|
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
376
|
+
const etagReceived = response.headers["etag"];
|
|
377
|
+
if (etagReceived == null) {
|
|
378
|
+
throw response;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const content = response.data;
|
|
382
|
+
return EventTable.createEtagEventTable(content, etagReceived);
|
|
229
383
|
}
|
|
230
384
|
|
|
231
|
-
static placeETagHeader(
|
|
385
|
+
static placeETagHeader(
|
|
386
|
+
etag: string,
|
|
387
|
+
headers: RawAxiosRequestHeaders
|
|
388
|
+
): RawAxiosRequestHeaders {
|
|
232
389
|
if (etag !== "") {
|
|
233
|
-
headers =
|
|
234
|
-
"If-None-Match": etag,
|
|
235
|
-
};
|
|
390
|
+
headers["If-None-Match"] = etag;
|
|
236
391
|
}
|
|
237
392
|
return headers;
|
|
238
393
|
}
|
|
@@ -247,7 +402,9 @@ export default class HPApi {
|
|
|
247
402
|
return url;
|
|
248
403
|
}
|
|
249
404
|
|
|
250
|
-
static async getDestination(
|
|
405
|
+
static async getDestination(
|
|
406
|
+
destinationURL: string
|
|
407
|
+
): Promise<WalkupScanDestination | WalkupScanToCompDestination> {
|
|
251
408
|
const response = await HPApi.callAxios({
|
|
252
409
|
baseURL: `http://${printerIP}`,
|
|
253
410
|
url: destinationURL,
|
|
@@ -260,31 +417,16 @@ export default class HPApi {
|
|
|
260
417
|
} else {
|
|
261
418
|
const content = response.data;
|
|
262
419
|
if (destinationURL.includes("WalkupScanToComp")) {
|
|
263
|
-
return
|
|
420
|
+
return WalkupScanToCompDestination.createWalkupScanToCompDestination(
|
|
421
|
+
content
|
|
422
|
+
);
|
|
264
423
|
} else {
|
|
265
|
-
return
|
|
424
|
+
return WalkupScanDestination.createWalkupScanDestination(content);
|
|
266
425
|
}
|
|
267
426
|
}
|
|
268
427
|
}
|
|
269
428
|
|
|
270
|
-
static async
|
|
271
|
-
const parsed = (await parseString(content)) as WalkupScanDestinationData;
|
|
272
|
-
return new WalkupScanDestination(parsed);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
static async createWalkupScanToCompDestination(content: string) {
|
|
276
|
-
const parsed = (await parseString(
|
|
277
|
-
content
|
|
278
|
-
)) as WalkupScanToCompDestinationData;
|
|
279
|
-
return new WalkupScanToCompDestination(parsed);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
static async createWalkupScanToCompEvent(content: string) {
|
|
283
|
-
const parsed = (await parseString(content)) as WalkupScanToCompEventData;
|
|
284
|
-
return new WalkupScanToCompEvent(parsed);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
static async getScanStatus() {
|
|
429
|
+
static async getScanStatus(): Promise<ScanStatus> {
|
|
288
430
|
const response = await HPApi.callAxios({
|
|
289
431
|
baseURL: `http://${printerIP}`,
|
|
290
432
|
url: "/Scan/Status",
|
|
@@ -295,18 +437,18 @@ export default class HPApi {
|
|
|
295
437
|
if (response.status !== 200) {
|
|
296
438
|
throw response;
|
|
297
439
|
} else {
|
|
298
|
-
|
|
299
|
-
return
|
|
440
|
+
let content = response.data;
|
|
441
|
+
return ScanStatus.createScanStatus(content);
|
|
300
442
|
}
|
|
301
443
|
}
|
|
302
444
|
|
|
303
|
-
static delay(t: number) {
|
|
445
|
+
static delay(t: number): Promise<void> {
|
|
304
446
|
return new Promise(function (resolve) {
|
|
305
447
|
setTimeout(resolve, t);
|
|
306
448
|
});
|
|
307
449
|
}
|
|
308
450
|
|
|
309
|
-
static async postJob(job: ScanJobSettings) {
|
|
451
|
+
static async postJob(job: ScanJobSettings): Promise<string> {
|
|
310
452
|
await HPApi.delay(500);
|
|
311
453
|
const xml = await job.toXML();
|
|
312
454
|
const response = await HPApi.callAxios({
|
|
@@ -318,7 +460,7 @@ export default class HPApi {
|
|
|
318
460
|
responseType: "text",
|
|
319
461
|
});
|
|
320
462
|
|
|
321
|
-
if (response.status === 201) {
|
|
463
|
+
if (response.status === 201 && response.headers.location != null) {
|
|
322
464
|
return response.headers.location;
|
|
323
465
|
} else {
|
|
324
466
|
throw response;
|
|
@@ -339,8 +481,8 @@ export default class HPApi {
|
|
|
339
481
|
if (response.status !== 200) {
|
|
340
482
|
throw response;
|
|
341
483
|
} else {
|
|
342
|
-
const
|
|
343
|
-
return
|
|
484
|
+
const content = response.data;
|
|
485
|
+
return Job.createJob(content);
|
|
344
486
|
}
|
|
345
487
|
}
|
|
346
488
|
|
|
@@ -358,7 +500,7 @@ export default class HPApi {
|
|
|
358
500
|
const destinationFileStream = fs.createWriteStream(destination);
|
|
359
501
|
data.pipe(destinationFileStream);
|
|
360
502
|
|
|
361
|
-
await stream.finished(destinationFileStream);
|
|
503
|
+
await promisify(stream.finished)(destinationFileStream);
|
|
362
504
|
|
|
363
505
|
return destination;
|
|
364
506
|
}
|
package/src/Job.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
import { Parser } from "xml2js";
|
|
3
|
+
const parser = new Parser();
|
|
4
|
+
import { promisify } from "util";
|
|
5
|
+
const parseString = promisify<string, JobData>(parser.parseString);
|
|
2
6
|
|
|
3
7
|
export interface JobData {
|
|
4
8
|
"j:Job": {
|
|
@@ -16,7 +20,7 @@ export interface JobData {
|
|
|
16
20
|
}[];
|
|
17
21
|
}[];
|
|
18
22
|
}[];
|
|
19
|
-
PostScanPage
|
|
23
|
+
PostScanPage?: {
|
|
20
24
|
PageNumber: string[];
|
|
21
25
|
}[];
|
|
22
26
|
}[];
|
|
@@ -30,6 +34,11 @@ export default class Job {
|
|
|
30
34
|
this.data = data;
|
|
31
35
|
}
|
|
32
36
|
|
|
37
|
+
static async createJob(content: string): Promise<Job> {
|
|
38
|
+
const parsed = await parseString(content);
|
|
39
|
+
return new Job(parsed);
|
|
40
|
+
}
|
|
41
|
+
|
|
33
42
|
get currentPageNumber(): string | null {
|
|
34
43
|
let preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
35
44
|
if (preScanPage) {
|
|
@@ -39,11 +48,14 @@ export default class Job {
|
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
50
|
|
|
42
|
-
get totalPageNumber(): number {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
get totalPageNumber(): number | null {
|
|
52
|
+
if (this.data["j:Job"].ScanJob[0].PostScanPage) {
|
|
53
|
+
return parseInt(
|
|
54
|
+
this.data["j:Job"].ScanJob[0].PostScanPage[0].PageNumber[0],
|
|
55
|
+
10
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
47
59
|
}
|
|
48
60
|
|
|
49
61
|
get jobState():
|
|
@@ -55,46 +67,56 @@ export default class Job {
|
|
|
55
67
|
return this.data["j:Job"]["j:JobState"][0];
|
|
56
68
|
}
|
|
57
69
|
|
|
58
|
-
get pageState(): string {
|
|
70
|
+
get pageState(): string | null {
|
|
59
71
|
let preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
60
72
|
if (preScanPage) {
|
|
61
73
|
return preScanPage[0].PageState[0];
|
|
62
74
|
} else {
|
|
63
|
-
return
|
|
75
|
+
return null;
|
|
64
76
|
}
|
|
65
77
|
}
|
|
66
78
|
|
|
67
79
|
get binaryURL(): string | null {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return preScanPage[0].BinaryURL[0];
|
|
71
|
-
} else {
|
|
72
|
-
return null;
|
|
80
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
81
|
+
return this.data["j:Job"].ScanJob[0].PreScanPage[0].BinaryURL[0];
|
|
73
82
|
}
|
|
83
|
+
return null;
|
|
74
84
|
}
|
|
75
85
|
|
|
76
|
-
get imageWidth(): number {
|
|
86
|
+
get imageWidth(): number | null {
|
|
87
|
+
if (!this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
77
90
|
return parseInt(
|
|
78
91
|
this.data["j:Job"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]
|
|
79
92
|
?.ImageWidth[0] ?? ""
|
|
80
93
|
);
|
|
81
94
|
}
|
|
82
|
-
get imageHeight(): number {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
95
|
+
get imageHeight(): number | null {
|
|
96
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
97
|
+
return parseInt(
|
|
98
|
+
this.data["j:Job"].ScanJob[0].PreScanPage[0].BufferInfo[0]
|
|
99
|
+
.ImageHeight[0]
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
87
103
|
}
|
|
88
|
-
get xResolution(): number {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
?.
|
|
92
|
-
|
|
104
|
+
get xResolution(): number | null {
|
|
105
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
106
|
+
return parseInt(
|
|
107
|
+
this.data["j:Job"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]
|
|
108
|
+
?.ScanSettings?.[0]?.XResolution[0] ?? ""
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
93
112
|
}
|
|
94
|
-
get yResolution(): number {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
?.
|
|
98
|
-
|
|
113
|
+
get yResolution(): number | null {
|
|
114
|
+
if (this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
|
|
115
|
+
return parseInt(
|
|
116
|
+
this.data["j:Job"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]
|
|
117
|
+
?.ScanSettings?.[0]?.YResolution[0] ?? ""
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
99
121
|
}
|
|
100
122
|
}
|
package/src/JpegUtil.ts
CHANGED
|
@@ -8,7 +8,7 @@ export default class JpegUtil {
|
|
|
8
8
|
debug = dbg;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
private static logDebug(msg:
|
|
11
|
+
private static logDebug(msg: string | object) {
|
|
12
12
|
if (debug) {
|
|
13
13
|
console.log(msg);
|
|
14
14
|
}
|
|
@@ -145,7 +145,7 @@ export default class JpegUtil {
|
|
|
145
145
|
startOfStartOfFrame: number,
|
|
146
146
|
lengthOfStartOfFrame: number,
|
|
147
147
|
numberOfLine: number
|
|
148
|
-
)
|
|
148
|
+
): boolean {
|
|
149
149
|
// write the picture height
|
|
150
150
|
if (6 < lengthOfStartOfFrame) {
|
|
151
151
|
const heightBuffer = Buffer.from([0x00, 0x00]);
|
|
@@ -267,7 +267,11 @@ export default class JpegUtil {
|
|
|
267
267
|
return null;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
private static parseMarker(
|
|
270
|
+
private static parseMarker(
|
|
271
|
+
buffer: Buffer,
|
|
272
|
+
i: number,
|
|
273
|
+
markerHandler: { [key: string]: (start: number, length: number) => boolean }
|
|
274
|
+
): boolean {
|
|
271
275
|
let marker = "";
|
|
272
276
|
|
|
273
277
|
//Retrieve the block length of the first block since the first block will not contain the size of file
|
|
@@ -279,7 +283,7 @@ export default class JpegUtil {
|
|
|
279
283
|
if (buffer[i] != 0xff) {
|
|
280
284
|
this.logDebug(
|
|
281
285
|
"We should be at the begining of the next block, but got: " +
|
|
282
|
-
|
|
286
|
+
buffer[i]
|
|
283
287
|
);
|
|
284
288
|
return false;
|
|
285
289
|
}
|