node-hp-scan-to 1.4.0 → 1.4.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/dist/ScanCaps.d.ts +8 -8
- package/dist/ScanCaps.js +18 -10
- package/dist/ScanCaps.js.map +1 -1
- package/dist/readDeviceCapabilities.js +4 -4
- package/dist/readDeviceCapabilities.js.map +1 -1
- package/dist/scanProcessing.d.ts +3 -2
- package/dist/scanProcessing.js +4 -4
- package/dist/scanProcessing.js.map +1 -1
- 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 +53 -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 +98 -0
- package/dist/test/PathHelper.test.js.map +1 -0
- package/dist/test/ScanCaps.test.d.ts +1 -0
- package/dist/test/ScanCaps.test.js +76 -0
- package/dist/test/ScanCaps.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 +59 -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/dist/test/scanProcessing.test.d.ts +1 -0
- package/dist/test/scanProcessing.test.js +103 -0
- package/dist/test/scanProcessing.test.js.map +1 -0
- package/package.json +1 -1
- package/src/ScanCaps.ts +30 -20
- package/src/readDeviceCapabilities.ts +4 -4
- package/src/scanProcessing.ts +6 -6
package/dist/ScanCaps.d.ts
CHANGED
|
@@ -2,14 +2,14 @@ export interface ScanCapsData {
|
|
|
2
2
|
ScanCaps: {
|
|
3
3
|
Platen: {
|
|
4
4
|
InputSourceCaps: {
|
|
5
|
-
MaxWidth:
|
|
6
|
-
MaxHeight:
|
|
5
|
+
MaxWidth: string[];
|
|
6
|
+
MaxHeight: string[];
|
|
7
7
|
}[];
|
|
8
8
|
}[];
|
|
9
9
|
Adf: {
|
|
10
10
|
InputSourceCaps: {
|
|
11
|
-
MaxWidth:
|
|
12
|
-
MaxHeight:
|
|
11
|
+
MaxWidth: string[];
|
|
12
|
+
MaxHeight: string[];
|
|
13
13
|
}[];
|
|
14
14
|
}[];
|
|
15
15
|
};
|
|
@@ -18,8 +18,8 @@ export default class ScanCaps {
|
|
|
18
18
|
private readonly data;
|
|
19
19
|
constructor(data: ScanCapsData);
|
|
20
20
|
static createScanCaps(content: string): Promise<ScanCaps>;
|
|
21
|
-
get
|
|
22
|
-
get
|
|
23
|
-
get
|
|
24
|
-
get
|
|
21
|
+
get platenMaxWidth(): number | null;
|
|
22
|
+
get platenMaxHeight(): number | null;
|
|
23
|
+
get adfMaxWidth(): number | null;
|
|
24
|
+
get adfMaxHeight(): number | null;
|
|
25
25
|
}
|
package/dist/ScanCaps.js
CHANGED
|
@@ -12,19 +12,27 @@ class ScanCaps {
|
|
|
12
12
|
const parsed = await parseString(content);
|
|
13
13
|
return new ScanCaps(parsed);
|
|
14
14
|
}
|
|
15
|
-
get
|
|
16
|
-
return (this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxWidth"]
|
|
17
|
-
null);
|
|
15
|
+
get platenMaxWidth() {
|
|
16
|
+
return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxWidth"][0], 10);
|
|
18
17
|
}
|
|
19
|
-
get
|
|
20
|
-
return (this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxHeight"]
|
|
21
|
-
null);
|
|
18
|
+
get platenMaxHeight() {
|
|
19
|
+
return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxHeight"][0], 10);
|
|
22
20
|
}
|
|
23
|
-
get
|
|
24
|
-
|
|
21
|
+
get adfMaxWidth() {
|
|
22
|
+
if (Object.prototype.hasOwnProperty.call(this.data["ScanCaps"], "Adf")) {
|
|
23
|
+
return Number.parseInt(this.data["ScanCaps"]["Adf"][0]["InputSourceCaps"][0]["MaxWidth"][0], 10);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
|
-
get
|
|
27
|
-
|
|
29
|
+
get adfMaxHeight() {
|
|
30
|
+
if (Object.prototype.hasOwnProperty.call(this.data["ScanCaps"], "Adf")) {
|
|
31
|
+
return Number.parseInt(this.data["ScanCaps"]["Adf"][0]["InputSourceCaps"][0]["MaxHeight"][0], 10);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
28
36
|
}
|
|
29
37
|
}
|
|
30
38
|
exports.default = ScanCaps;
|
package/dist/ScanCaps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScanCaps.js","sourceRoot":"","sources":["../src/ScanCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAuB,MAAM,CAAC,WAAW,CAAC,CAAC;AAmBxE,MAAqB,QAAQ;IAG3B,YAAY,IAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,
|
|
1
|
+
{"version":3,"file":"ScanCaps.js","sourceRoot":"","sources":["../src/ScanCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAuB,MAAM,CAAC,WAAW,CAAC,CAAC;AAmBxE,MAAqB,QAAQ;IAG3B,YAAY,IAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACxE,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE;YACtE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACpE,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAI,YAAY;QACd,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE;YACtE,OAAO,MAAM,CAAC,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACrE,EAAE,CACH,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;CACF;AA/CD,2BA+CC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanCapsData>(parser.parseString);\n\nexport interface ScanCapsData {\n ScanCaps: {\n Platen: {\n InputSourceCaps: {\n MaxWidth: string[];\n MaxHeight: string[];\n }[];\n }[];\n Adf: {\n InputSourceCaps: {\n MaxWidth: string[];\n MaxHeight: string[];\n }[];\n }[];\n };\n}\n\nexport default class ScanCaps {\n private readonly data: ScanCapsData;\n\n constructor(data: ScanCapsData) {\n this.data = data;\n }\n\n static async createScanCaps(content: string): Promise<ScanCaps> {\n const parsed = await parseString(content);\n return new ScanCaps(parsed);\n }\n\n get platenMaxWidth(): number | null {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Platen\"][0][\"InputSourceCaps\"][0][\"MaxWidth\"][0],\n 10,\n );\n }\n\n get platenMaxHeight(): number | null {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Platen\"][0][\"InputSourceCaps\"][0][\"MaxHeight\"][0],\n 10,\n );\n }\n\n get adfMaxWidth(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Adf\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Adf\"][0][\"InputSourceCaps\"][0][\"MaxWidth\"][0],\n 10,\n );\n } else {\n return null;\n }\n }\n\n get adfMaxHeight(): number | null {\n if (Object.prototype.hasOwnProperty.call(this.data[\"ScanCaps\"], \"Adf\")) {\n return Number.parseInt(\n this.data[\"ScanCaps\"][\"Adf\"][0][\"InputSourceCaps\"][0][\"MaxHeight\"][0],\n 10,\n );\n } else {\n return null;\n }\n }\n}\n"]}
|
|
@@ -36,10 +36,10 @@ async function readDeviceCapabilities() {
|
|
|
36
36
|
return {
|
|
37
37
|
supportsMultiItemScanFromPlaten,
|
|
38
38
|
useWalkupScanToComp: walkupScanToCompCaps != null,
|
|
39
|
-
platenMaxWidth: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.
|
|
40
|
-
platenMaxHeight: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.
|
|
41
|
-
adfMaxWidth: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.
|
|
42
|
-
adfMaxHeight: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.
|
|
39
|
+
platenMaxWidth: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.platenMaxWidth) || null,
|
|
40
|
+
platenMaxHeight: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.platenMaxHeight) || null,
|
|
41
|
+
adfMaxWidth: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.adfMaxWidth) || null,
|
|
42
|
+
adfMaxHeight: (scanCaps === null || scanCaps === void 0 ? void 0 : scanCaps.adfMaxHeight) || null,
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
exports.readDeviceCapabilities = readDeviceCapabilities;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readDeviceCapabilities.js","sourceRoot":"","sources":["../src/readDeviceCapabilities.ts"],"names":[],"mappings":";;;;;;AACA,oDAA4B;AAIrB,KAAK,UAAU,sBAAsB;IAC1C,IAAI,+BAA+B,GAAG,IAAI,CAAC;IAC3C,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,gBAAgB,EAAE,CAAC;IACrD,IAAI,oBAAoB,GAAgC,IAAI,CAAC;IAC7D,IAAI,aAAa,CAAC,2BAA2B,IAAI,IAAI,EAAE;QACrD,MAAM,wBAAwB,GAAG,MAAM,eAAK,CAAC,2BAA2B,CACtE,aAAa,CAAC,2BAA2B,CAC1C,CAAC;QACF,IAAI,wBAAwB,CAAC,uBAAuB,IAAI,IAAI,EAAE;YAC5D,oBAAoB,GAAG,MAAM,eAAK,CAAC,uBAAuB,CACxD,wBAAwB,CAAC,uBAAuB,CACjD,CAAC;YACF,+BAA+B;gBAC7B,oBAAoB,CAAC,+BAA+B,CAAC;SACxD;KACF;SAAM,IAAI,aAAa,CAAC,qBAAqB,IAAI,IAAI,EAAE;QACtD,MAAM,kBAAkB,GAAG,MAAM,eAAK,CAAC,qBAAqB,CAC1D,aAAa,CAAC,qBAAqB,CACpC,CAAC;QACF,IAAI,kBAAkB,CAAC,yBAAyB,IAAI,IAAI,EAAE;YACxD,MAAM,eAAK,CAAC,yBAAyB,CACnC,kBAAkB,CAAC,yBAAyB,CAC7C,CAAC;SACH;KACF;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAChC;IAED,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,aAAa,CAAC,kBAAkB,IAAI,IAAI,EAAE;QAC5C,MAAM,eAAe,GAAG,MAAM,eAAK,CAAC,kBAAkB,CACpD,aAAa,CAAC,kBAAkB,CACjC,CAAC;QACF,IAAI,eAAe,CAAC,WAAW,IAAI,IAAI,EAAE;YACvC,QAAQ,GAAG,MAAM,eAAK,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACjE;KACF;IAED,OAAO;QACL,+BAA+B;QAC/B,mBAAmB,EAAE,oBAAoB,IAAI,IAAI;QACjD,cAAc,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,KAAI,IAAI;QAChD,eAAe,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,IAAI;QAClD,WAAW,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,IAAI;QAC1C,YAAY,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,KAAI,IAAI;KAC7C,CAAC;AACJ,CAAC;AA9CD,wDA8CC","sourcesContent":["import { DeviceCapabilities } from \"./DeviceCapabilities\";\nimport HPApi from \"./HPApi\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport ScanCaps from \"./ScanCaps\";\n\nexport async function readDeviceCapabilities(): Promise<DeviceCapabilities> {\n let supportsMultiItemScanFromPlaten = true;\n const discoveryTree = await HPApi.getDiscoveryTree();\n let walkupScanToCompCaps: WalkupScanToCompCaps | null = null;\n if (discoveryTree.WalkupScanToCompManifestURI != null) {\n const walkupScanToCompManifest = await HPApi.getWalkupScanToCompManifest(\n discoveryTree.WalkupScanToCompManifestURI,\n );\n if (walkupScanToCompManifest.WalkupScanToCompCapsURI != null) {\n walkupScanToCompCaps = await HPApi.getWalkupScanToCompCaps(\n walkupScanToCompManifest.WalkupScanToCompCapsURI,\n );\n supportsMultiItemScanFromPlaten =\n walkupScanToCompCaps.supportsMultiItemScanFromPlaten;\n }\n } else if (discoveryTree.WalkupScanManifestURI != null) {\n const walkupScanManifest = await HPApi.getWalkupScanManifest(\n discoveryTree.WalkupScanManifestURI,\n );\n if (walkupScanManifest.walkupScanDestinationsURI != null) {\n await HPApi.getWalkupScanDestinations(\n walkupScanManifest.walkupScanDestinationsURI,\n );\n }\n } else {\n console.log(\"Unknown device!\");\n }\n\n let scanCaps: ScanCaps | null = null;\n if (discoveryTree.ScanJobManifestURI != null) {\n const scanJobManifest = await HPApi.getScanJobManifest(\n discoveryTree.ScanJobManifestURI,\n );\n if (scanJobManifest.ScanCapsURI != null) {\n scanCaps = await HPApi.getScanCaps(scanJobManifest.ScanCapsURI);\n }\n }\n\n return {\n supportsMultiItemScanFromPlaten,\n useWalkupScanToComp: walkupScanToCompCaps != null,\n platenMaxWidth: scanCaps?.
|
|
1
|
+
{"version":3,"file":"readDeviceCapabilities.js","sourceRoot":"","sources":["../src/readDeviceCapabilities.ts"],"names":[],"mappings":";;;;;;AACA,oDAA4B;AAIrB,KAAK,UAAU,sBAAsB;IAC1C,IAAI,+BAA+B,GAAG,IAAI,CAAC;IAC3C,MAAM,aAAa,GAAG,MAAM,eAAK,CAAC,gBAAgB,EAAE,CAAC;IACrD,IAAI,oBAAoB,GAAgC,IAAI,CAAC;IAC7D,IAAI,aAAa,CAAC,2BAA2B,IAAI,IAAI,EAAE;QACrD,MAAM,wBAAwB,GAAG,MAAM,eAAK,CAAC,2BAA2B,CACtE,aAAa,CAAC,2BAA2B,CAC1C,CAAC;QACF,IAAI,wBAAwB,CAAC,uBAAuB,IAAI,IAAI,EAAE;YAC5D,oBAAoB,GAAG,MAAM,eAAK,CAAC,uBAAuB,CACxD,wBAAwB,CAAC,uBAAuB,CACjD,CAAC;YACF,+BAA+B;gBAC7B,oBAAoB,CAAC,+BAA+B,CAAC;SACxD;KACF;SAAM,IAAI,aAAa,CAAC,qBAAqB,IAAI,IAAI,EAAE;QACtD,MAAM,kBAAkB,GAAG,MAAM,eAAK,CAAC,qBAAqB,CAC1D,aAAa,CAAC,qBAAqB,CACpC,CAAC;QACF,IAAI,kBAAkB,CAAC,yBAAyB,IAAI,IAAI,EAAE;YACxD,MAAM,eAAK,CAAC,yBAAyB,CACnC,kBAAkB,CAAC,yBAAyB,CAC7C,CAAC;SACH;KACF;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAChC;IAED,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,aAAa,CAAC,kBAAkB,IAAI,IAAI,EAAE;QAC5C,MAAM,eAAe,GAAG,MAAM,eAAK,CAAC,kBAAkB,CACpD,aAAa,CAAC,kBAAkB,CACjC,CAAC;QACF,IAAI,eAAe,CAAC,WAAW,IAAI,IAAI,EAAE;YACvC,QAAQ,GAAG,MAAM,eAAK,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACjE;KACF;IAED,OAAO;QACL,+BAA+B;QAC/B,mBAAmB,EAAE,oBAAoB,IAAI,IAAI;QACjD,cAAc,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,KAAI,IAAI;QAChD,eAAe,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,KAAI,IAAI;QAClD,WAAW,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,IAAI;QAC1C,YAAY,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,KAAI,IAAI;KAC7C,CAAC;AACJ,CAAC;AA9CD,wDA8CC","sourcesContent":["import { DeviceCapabilities } from \"./DeviceCapabilities\";\nimport HPApi from \"./HPApi\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport ScanCaps from \"./ScanCaps\";\n\nexport async function readDeviceCapabilities(): Promise<DeviceCapabilities> {\n let supportsMultiItemScanFromPlaten = true;\n const discoveryTree = await HPApi.getDiscoveryTree();\n let walkupScanToCompCaps: WalkupScanToCompCaps | null = null;\n if (discoveryTree.WalkupScanToCompManifestURI != null) {\n const walkupScanToCompManifest = await HPApi.getWalkupScanToCompManifest(\n discoveryTree.WalkupScanToCompManifestURI,\n );\n if (walkupScanToCompManifest.WalkupScanToCompCapsURI != null) {\n walkupScanToCompCaps = await HPApi.getWalkupScanToCompCaps(\n walkupScanToCompManifest.WalkupScanToCompCapsURI,\n );\n supportsMultiItemScanFromPlaten =\n walkupScanToCompCaps.supportsMultiItemScanFromPlaten;\n }\n } else if (discoveryTree.WalkupScanManifestURI != null) {\n const walkupScanManifest = await HPApi.getWalkupScanManifest(\n discoveryTree.WalkupScanManifestURI,\n );\n if (walkupScanManifest.walkupScanDestinationsURI != null) {\n await HPApi.getWalkupScanDestinations(\n walkupScanManifest.walkupScanDestinationsURI,\n );\n }\n } else {\n console.log(\"Unknown device!\");\n }\n\n let scanCaps: ScanCaps | null = null;\n if (discoveryTree.ScanJobManifestURI != null) {\n const scanJobManifest = await HPApi.getScanJobManifest(\n discoveryTree.ScanJobManifestURI,\n );\n if (scanJobManifest.ScanCapsURI != null) {\n scanCaps = await HPApi.getScanCaps(scanJobManifest.ScanCapsURI);\n }\n }\n\n return {\n supportsMultiItemScanFromPlaten,\n useWalkupScanToComp: walkupScanToCompCaps != null,\n platenMaxWidth: scanCaps?.platenMaxWidth || null,\n platenMaxHeight: scanCaps?.platenMaxHeight || null,\n adfMaxWidth: scanCaps?.adfMaxWidth || null,\n adfMaxHeight: scanCaps?.adfMaxHeight || null,\n };\n}\n"]}
|
package/dist/scanProcessing.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import Event from "./Event";
|
|
2
2
|
import { DeviceCapabilities } from "./DeviceCapabilities";
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
3
|
+
import { InputSource } from "./InputSource";
|
|
4
|
+
export declare function getScanWidth(scanConfig: ScanConfig, inputSource: InputSource, deviceCapabilities: DeviceCapabilities): number | null;
|
|
5
|
+
export declare function getScanHeight(scanConfig: ScanConfig, inputSource: InputSource, deviceCapabilities: DeviceCapabilities): number | null;
|
|
5
6
|
export declare function saveScan(event: Event, folder: string, tempFolder: string, scanCount: number, deviceCapabilities: DeviceCapabilities, scanConfig: ScanConfig): Promise<void>;
|
|
6
7
|
export type DirectoryConfig = {
|
|
7
8
|
directory: string | undefined;
|
package/dist/scanProcessing.js
CHANGED
|
@@ -222,7 +222,7 @@ function isPdf(destination) {
|
|
|
222
222
|
}
|
|
223
223
|
function getScanWidth(scanConfig, inputSource, deviceCapabilities) {
|
|
224
224
|
if (scanConfig.width && scanConfig.width > 0) {
|
|
225
|
-
const maxWidth = inputSource ===
|
|
225
|
+
const maxWidth = inputSource === InputSource_1.InputSource.Adf
|
|
226
226
|
? deviceCapabilities.adfMaxWidth
|
|
227
227
|
: deviceCapabilities.platenMaxWidth;
|
|
228
228
|
if (maxWidth && scanConfig.width > maxWidth) {
|
|
@@ -239,7 +239,7 @@ function getScanWidth(scanConfig, inputSource, deviceCapabilities) {
|
|
|
239
239
|
exports.getScanWidth = getScanWidth;
|
|
240
240
|
function getScanHeight(scanConfig, inputSource, deviceCapabilities) {
|
|
241
241
|
if (scanConfig.height && scanConfig.height > 0) {
|
|
242
|
-
const maxHeight = inputSource ===
|
|
242
|
+
const maxHeight = inputSource === InputSource_1.InputSource.Adf
|
|
243
243
|
? deviceCapabilities.adfMaxHeight
|
|
244
244
|
: deviceCapabilities.platenMaxHeight;
|
|
245
245
|
if (maxHeight && scanConfig.height > maxHeight) {
|
|
@@ -314,8 +314,8 @@ async function scanFromAdf(scanCount, folder, tempFolder, adfAutoScanConfig, dev
|
|
|
314
314
|
contentType = "Photo";
|
|
315
315
|
destinationFolder = folder;
|
|
316
316
|
}
|
|
317
|
-
const scanWidth = getScanWidth(adfAutoScanConfig,
|
|
318
|
-
const scanHeight = getScanHeight(adfAutoScanConfig,
|
|
317
|
+
const scanWidth = getScanWidth(adfAutoScanConfig, InputSource_1.InputSource.Adf, deviceCapabilities);
|
|
318
|
+
const scanHeight = getScanHeight(adfAutoScanConfig, InputSource_1.InputSource.Adf, deviceCapabilities);
|
|
319
319
|
const scanJobSettings = new ScanJobSettings_1.default(InputSource_1.InputSource.Adf, contentType, adfAutoScanConfig.resolution, scanWidth, scanHeight, adfAutoScanConfig.isDuplex);
|
|
320
320
|
const scanJobContent = { elements: [] };
|
|
321
321
|
await executeScanJob(scanJobSettings, InputSource_1.InputSource.Adf, destinationFolder, scanCount, scanJobContent, adfAutoScanConfig.directoryConfig.filePattern, date);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanProcessing.js","sourceRoot":"","sources":["../src/scanProcessing.ts"],"names":[],"mappings":"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","sourcesContent":["import Event from \"./Event\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport HPApi from \"./HPApi\";\nimport fs from \"fs/promises\";\nimport JpegUtil from \"./JpegUtil\";\nimport { DeviceCapabilities } from \"./DeviceCapabilities\";\nimport { waitForScanEvent, waitScanRequest } from \"./listening\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport { createPdfFrom, ScanContent, ScanPage } from \"./ScanContent\";\nimport Job from \"./Job\";\nimport { delay } from \"./delay\";\nimport PathHelper from \"./PathHelper\";\nimport ScanStatus from \"./ScanStatus\";\nimport { InputSource } from \"./InputSource\";\n\nasync function waitDeviceUntilItIsReadyToUploadOrCompleted(\n jobUrl: string,\n): Promise<Job> {\n let job = null;\n let isReadyToUpload = false;\n do {\n job = await HPApi.getJob(jobUrl);\n if (job.jobState === \"Canceled\") {\n return job;\n } else if (\n job.pageState === \"ReadyToUpload\" ||\n job.jobState === \"Completed\"\n ) {\n isReadyToUpload = true;\n } else if (job.jobState == \"Processing\") {\n isReadyToUpload = false;\n } else {\n console.log(`Unknown jobState: ${job.jobState}`);\n }\n await delay(300);\n } while (!isReadyToUpload);\n return job;\n}\n\nasync function TryGetDestination(\n event: Event,\n): Promise<WalkupScanDestination | WalkupScanToCompDestination | null> {\n //this code can in some cases be executed before the user actually chooses between Document or Photo\n //so lets fetch the contentType (Document or Photo) until we get a value\n let destination: WalkupScanDestination | WalkupScanToCompDestination | null =\n null;\n\n for (let i = 0; i < 20; i++) {\n const destinationURI = event.destinationURI;\n if (destinationURI) {\n destination = await HPApi.getDestination(destinationURI);\n\n const shortcut = destination.shortcut;\n if (shortcut != null) {\n return destination;\n }\n } else {\n console.log(`No destination URI found`);\n }\n\n console.log(`No shortcut yet available, attempt: ${i + 1}/20`);\n await new Promise((resolve) => setTimeout(resolve, 1000)); //wait 1s\n }\n\n console.log(\"Failing to detect destination shortcut\");\n console.log(JSON.stringify(destination));\n return null;\n}\n\nasync function scanProcessing(filePath: string): Promise<number | null> {\n const buffer: Buffer = await fs.readFile(filePath);\n\n let height = JpegUtil.fixSizeWithDNL(buffer);\n if (height != null) {\n // rewrite the fixed file\n await fs.writeFile(filePath, buffer);\n return height;\n }\n return null;\n}\n\nfunction createScanPage(\n job: Job,\n currentPageNumber: number,\n filePath: string,\n sizeFixed: number | null,\n): ScanPage {\n let height = sizeFixed ?? job.imageHeight;\n return {\n path: filePath,\n pageNumber: currentPageNumber,\n width: job.imageWidth ?? 0,\n height: height ?? 0,\n xResolution: job.xResolution ?? 200,\n yResolution: job.yResolution ?? 200,\n };\n}\n\nasync function handleProcessingState(\n job: Job,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n currentPageNumber: number,\n filePattern: string | undefined,\n date: Date,\n): Promise<ScanPage | null> {\n if (\n job.pageState == \"ReadyToUpload\" &&\n job.binaryURL != null &&\n job.currentPageNumber != null\n ) {\n console.log(\n `Ready to download page job page ${job.currentPageNumber} at:`,\n job.binaryURL,\n );\n\n const destinationFilePath = PathHelper.getFileForPage(\n folder,\n scanCount,\n currentPageNumber,\n filePattern,\n \"jpg\",\n date,\n );\n const filePath = await HPApi.downloadPage(\n job.binaryURL,\n destinationFilePath,\n );\n console.log(\"Page downloaded to:\", filePath);\n\n let sizeFixed: null | number = null;\n if (inputSource == InputSource.Adf) {\n sizeFixed = await scanProcessing(filePath);\n if (sizeFixed == null) {\n console.log(\n `File size has not been fixed, DNF may not have been found and approximate height is: ${job.imageHeight}`,\n );\n }\n }\n return createScanPage(job, currentPageNumber, filePath, sizeFixed);\n } else {\n console.log(`Unknown pageState: ${job.pageState}`);\n await delay(200);\n return null;\n }\n}\n\nasync function executeScanJob(\n scanJobSettings: ScanJobSettings,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n filePattern: string | undefined,\n date: Date,\n): Promise<\"Completed\" | \"Canceled\"> {\n const jobUrl = await HPApi.postJob(scanJobSettings);\n\n console.log(\"New job created:\", jobUrl);\n\n let job = await HPApi.getJob(jobUrl);\n while (job.jobState !== \"Completed\") {\n job = await waitDeviceUntilItIsReadyToUploadOrCompleted(jobUrl);\n\n if (job.jobState == \"Completed\") {\n continue;\n }\n\n if (job.jobState === \"Processing\") {\n const page = await handleProcessingState(\n job,\n inputSource,\n folder,\n scanCount,\n scanJobContent.elements.length + 1,\n filePattern,\n date,\n );\n job = await HPApi.getJob(jobUrl);\n if (page != null && job.jobState != \"Canceled\") {\n scanJobContent.elements.push(page);\n }\n } else if (job.jobState === \"Canceled\") {\n console.log(\"Job cancelled by device\");\n break;\n } else {\n console.log(`Unhandled jobState: ${job.jobState}`);\n await delay(200);\n }\n }\n console.log(\n `Job state: ${job.jobState}, totalPages: ${scanJobContent.elements.length}:`,\n );\n return job.jobState;\n}\n\nasync function waitScanNewPageRequest(compEventURI: string): Promise<boolean> {\n let startNewScanJob = false;\n let wait = true;\n while (wait) {\n await new Promise((resolve) => setTimeout(resolve, 1000)); //wait 1s\n\n let walkupScanToCompEvent =\n await HPApi.getWalkupScanToCompEvent(compEventURI);\n let message = walkupScanToCompEvent.eventType;\n\n if (message === \"ScanNewPageRequested\") {\n startNewScanJob = true;\n wait = false;\n } else if (message === \"ScanPagesComplete\") {\n wait = false;\n } else if (message === \"ScanRequested\") {\n // continue waiting\n } else {\n wait = false;\n console.log(`Unknown eventType: ${message}`);\n }\n }\n return startNewScanJob;\n}\n\nasync function executeScanJobs(\n scanJobSettings: ScanJobSettings,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n firstEvent: Event,\n deviceCapabilities: DeviceCapabilities,\n filePattern: string | undefined,\n date: Date,\n) {\n let jobState = await executeScanJob(\n scanJobSettings,\n inputSource,\n folder,\n scanCount,\n scanJobContent,\n filePattern,\n date,\n );\n let lastEvent = firstEvent;\n if (\n jobState === \"Completed\" &&\n lastEvent.compEventURI &&\n inputSource !== InputSource.Adf &&\n lastEvent.destinationURI &&\n deviceCapabilities.supportsMultiItemScanFromPlaten\n ) {\n lastEvent = await waitForScanEvent(\n lastEvent.destinationURI,\n lastEvent.agingStamp,\n );\n if (!lastEvent.compEventURI) {\n return;\n }\n let startNewScanJob = await waitScanNewPageRequest(lastEvent.compEventURI);\n while (startNewScanJob) {\n jobState = await executeScanJob(\n scanJobSettings,\n inputSource,\n folder,\n scanCount,\n scanJobContent,\n filePattern,\n new Date(),\n );\n if (jobState !== \"Completed\") {\n return;\n }\n if (!lastEvent.destinationURI) {\n break;\n }\n lastEvent = await waitForScanEvent(\n lastEvent.destinationURI,\n lastEvent.agingStamp,\n );\n if (!lastEvent.compEventURI) {\n return;\n }\n startNewScanJob = await waitScanNewPageRequest(lastEvent.compEventURI);\n }\n }\n}\n\nasync function mergeToPdf(\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n filePattern: string | undefined,\n date: Date,\n): Promise<string | null> {\n if (scanJobContent.elements.length > 0) {\n const pdfFilePath: string = PathHelper.getFileForScan(\n folder,\n scanCount,\n filePattern,\n \"pdf\",\n date,\n );\n await createPdfFrom(scanJobContent, pdfFilePath);\n scanJobContent.elements.forEach((e) => fs.unlink(e.path));\n return pdfFilePath;\n }\n console.log(`No page available to build a pdf file`);\n return null;\n}\n\nfunction displayPdfScan(\n pdfFilePath: string | null,\n scanJobContent: ScanContent,\n) {\n if (pdfFilePath === null) {\n console.log(`Pdf generated has not been generated`);\n return;\n }\n console.log(\n `The following page(s) have been rendered inside '${pdfFilePath}': `,\n );\n scanJobContent.elements.forEach((e) =>\n console.log(\n `\\t- page ${e.pageNumber.toString().padStart(3, \" \")} - ${e.width}x${\n e.height\n }`,\n ),\n );\n}\n\nfunction displayJpegScan(scanJobContent: ScanContent) {\n scanJobContent.elements.forEach((e) =>\n console.log(\n `\\t- page ${e.pageNumber.toString().padStart(3, \" \")} - ${e.width}x${\n e.height\n } - ${e.path}`,\n ),\n );\n}\n\nfunction isPdf(\n destination: WalkupScanDestination | WalkupScanToCompDestination,\n) {\n if (\n destination.shortcut === \"SavePDF\" ||\n destination.shortcut === \"EmailPDF\" ||\n destination.shortcut == \"SaveDocument1\"\n ) {\n return true;\n } else if (\n destination.shortcut === \"SaveJPEG\" ||\n destination.shortcut === \"SavePhoto1\"\n ) {\n return false;\n } else {\n console.log(\n `Unexpected shortcut received: ${destination.shortcut}, considering it as non pdf target!`,\n );\n return false;\n }\n}\n\nexport function getScanWidth(\n scanConfig: ScanConfig,\n inputSource: \"Adf\" | \"Platen\",\n deviceCapabilities: DeviceCapabilities,\n) {\n if (scanConfig.width && scanConfig.width > 0) {\n const maxWidth =\n inputSource === \"Adf\"\n ? deviceCapabilities.adfMaxWidth\n : deviceCapabilities.platenMaxWidth;\n\n if (maxWidth && scanConfig.width > maxWidth) {\n return maxWidth;\n } else {\n return scanConfig.width;\n }\n } else {\n return null;\n }\n}\n\nexport function getScanHeight(\n scanConfig: ScanConfig,\n inputSource: \"Adf\" | \"Platen\",\n deviceCapabilities: DeviceCapabilities,\n) {\n if (scanConfig.height && scanConfig.height > 0) {\n const maxHeight =\n inputSource === \"Adf\"\n ? deviceCapabilities.adfMaxHeight\n : deviceCapabilities.platenMaxHeight;\n\n if (maxHeight && scanConfig.height > maxHeight) {\n return maxHeight;\n } else {\n return scanConfig.height;\n }\n } else {\n return null;\n }\n}\n\nexport async function saveScan(\n event: Event,\n folder: string,\n tempFolder: string,\n scanCount: number,\n deviceCapabilities: DeviceCapabilities,\n scanConfig: ScanConfig,\n): Promise<void> {\n if (event.compEventURI) {\n const proceedToScan = await waitScanRequest(event.compEventURI);\n if (!proceedToScan) {\n return;\n }\n }\n\n const destination = await TryGetDestination(event);\n if (!destination) {\n console.log(\"No shortcut selected!\");\n return;\n }\n console.log(\"Selected shortcut: \" + destination.shortcut);\n\n let toPdf: boolean;\n let destinationFolder: string;\n let contentType: \"Document\" | \"Photo\";\n if (isPdf(destination)) {\n toPdf = true;\n contentType = \"Document\";\n destinationFolder = tempFolder;\n console.log(\n `Scan will be converted to pdf, using ${destinationFolder} as temp scan output directory for individual pages`,\n );\n } else {\n toPdf = false;\n contentType = \"Photo\";\n destinationFolder = folder;\n }\n\n const isDuplex =\n destination.scanPlexMode != null && destination.scanPlexMode != \"Simplex\";\n console.log(\"ScanPlexMode is : \" + destination.scanPlexMode);\n\n const scanStatus = await HPApi.getScanStatus();\n console.log(\"Afd is : \" + scanStatus.adfState);\n\n const inputSource = scanStatus.getInputSource();\n const scanWidth = getScanWidth(scanConfig, inputSource, deviceCapabilities);\n const scanHeight = getScanHeight(scanConfig, inputSource, deviceCapabilities);\n\n const scanJobSettings = new ScanJobSettings(\n inputSource,\n contentType,\n scanConfig.resolution,\n scanWidth,\n scanHeight,\n isDuplex,\n );\n\n const scanJobContent: ScanContent = { elements: [] };\n\n const scanDate = new Date();\n\n await executeScanJobs(\n scanJobSettings,\n inputSource,\n destinationFolder,\n scanCount,\n scanJobContent,\n event,\n deviceCapabilities,\n scanConfig.directoryConfig.filePattern,\n scanDate,\n );\n\n console.log(\n `Scan of page(s) completed totalPages: ${scanJobContent.elements.length}:`,\n );\n\n if (toPdf) {\n const pdfFilePath = await mergeToPdf(\n folder,\n scanCount,\n scanJobContent,\n scanConfig.directoryConfig.filePattern,\n scanDate,\n );\n displayPdfScan(pdfFilePath, scanJobContent);\n } else {\n displayJpegScan(scanJobContent);\n }\n}\n\nexport type DirectoryConfig = {\n directory: string | undefined;\n tempDirectory: string | undefined;\n filePattern: string | undefined;\n};\nexport type ScanConfig = {\n resolution: number;\n width: number | null;\n height: number | null;\n directoryConfig: DirectoryConfig;\n};\nexport type AdfAutoScanConfig = ScanConfig & {\n isDuplex: boolean;\n generatePdf: boolean;\n pollingInterval: number;\n startScanDelay: number;\n};\n\nexport async function scanFromAdf(\n scanCount: number,\n folder: string,\n tempFolder: string,\n adfAutoScanConfig: AdfAutoScanConfig,\n deviceCapabilities: DeviceCapabilities,\n date: Date,\n) {\n let destinationFolder: string;\n let contentType: \"Document\" | \"Photo\";\n if (adfAutoScanConfig.generatePdf) {\n contentType = \"Document\";\n destinationFolder = tempFolder;\n console.log(\n `Scan will be converted to pdf, using ${destinationFolder} as temp scan output directory for individual pages`,\n );\n } else {\n contentType = \"Photo\";\n destinationFolder = folder;\n }\n\n const scanWidth = getScanWidth(adfAutoScanConfig, \"Adf\", deviceCapabilities);\n const scanHeight = getScanHeight(\n adfAutoScanConfig,\n \"Adf\",\n deviceCapabilities,\n );\n\n const scanJobSettings = new ScanJobSettings(\n InputSource.Adf,\n contentType,\n adfAutoScanConfig.resolution,\n scanWidth,\n scanHeight,\n adfAutoScanConfig.isDuplex,\n );\n\n const scanJobContent: ScanContent = { elements: [] };\n\n await executeScanJob(\n scanJobSettings,\n InputSource.Adf,\n destinationFolder,\n scanCount,\n scanJobContent,\n adfAutoScanConfig.directoryConfig.filePattern,\n date,\n );\n\n console.log(\n `Scan of page(s) completed, total pages: ${scanJobContent.elements.length}:`,\n );\n\n if (adfAutoScanConfig.generatePdf) {\n const pdfFilePath = await mergeToPdf(\n folder,\n scanCount,\n scanJobContent,\n adfAutoScanConfig.directoryConfig.filePattern,\n date,\n );\n displayPdfScan(pdfFilePath, scanJobContent);\n } else {\n displayJpegScan(scanJobContent);\n }\n}\n\nexport async function waitAdfLoaded(\n pollingInterval: number,\n startScanDelay: number,\n) {\n let ready = false;\n while (!ready) {\n let scanStatus: ScanStatus = await HPApi.getScanStatus();\n while (!scanStatus.isLoaded()) {\n await delay(pollingInterval);\n scanStatus = await HPApi.getScanStatus();\n }\n console.log(`ADF load detected`);\n\n let loaded = true;\n let counter = 0;\n const shortPollingInterval = 500;\n while (loaded && counter < startScanDelay) {\n await delay(shortPollingInterval);\n scanStatus = await HPApi.getScanStatus();\n loaded = scanStatus.isLoaded();\n counter += shortPollingInterval;\n }\n\n if (loaded && counter >= startScanDelay) {\n ready = true;\n console.log(`ADF still loaded, proceeding`);\n } else {\n console.log(`ADF not loaded anymore, waiting...`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scanProcessing.js","sourceRoot":"","sources":["../src/scanProcessing.ts"],"names":[],"mappings":";;;;;;AAGA,oDAA4B;AAC5B,2DAA6B;AAC7B,0DAAkC;AAElC,2CAAgE;AAChE,wEAAgD;AAChD,+CAAqE;AAErE,mCAAgC;AAChC,8DAAsC;AAEtC,+CAA4C;AAE5C,KAAK,UAAU,2CAA2C,CACxD,MAAc;IAEd,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,GAAG;QACD,GAAG,GAAG,MAAM,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YAC/B,OAAO,GAAG,CAAC;SACZ;aAAM,IACL,GAAG,CAAC,SAAS,KAAK,eAAe;YACjC,GAAG,CAAC,QAAQ,KAAK,WAAW,EAC5B;YACA,eAAe,GAAG,IAAI,CAAC;SACxB;aAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,YAAY,EAAE;YACvC,eAAe,GAAG,KAAK,CAAC;SACzB;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAClD;QACD,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;KAClB,QAAQ,CAAC,eAAe,EAAE;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,KAAY;IAEZ,oGAAoG;IACpG,wEAAwE;IACxE,IAAI,WAAW,GACb,IAAI,CAAC;IAEP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC5C,IAAI,cAAc,EAAE;YAClB,WAAW,GAAG,MAAM,eAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YACtC,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,OAAO,WAAW,CAAC;aACpB;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;SACzC;QAED,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KACrE;IAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,MAAM,GAAW,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAG,kBAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,yBAAyB;QACzB,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,GAAQ,EACR,iBAAyB,EACzB,QAAgB,EAChB,SAAwB;;IAExB,IAAI,MAAM,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,GAAG,CAAC,WAAW,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,iBAAiB;QAC7B,KAAK,EAAE,MAAA,GAAG,CAAC,UAAU,mCAAI,CAAC;QAC1B,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC;QACnB,WAAW,EAAE,MAAA,GAAG,CAAC,WAAW,mCAAI,GAAG;QACnC,WAAW,EAAE,MAAA,GAAG,CAAC,WAAW,mCAAI,GAAG;KACpC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAQ,EACR,WAAwB,EACxB,MAAc,EACd,SAAiB,EACjB,iBAAyB,EACzB,WAA+B,EAC/B,IAAU;IAEV,IACE,GAAG,CAAC,SAAS,IAAI,eAAe;QAChC,GAAG,CAAC,SAAS,IAAI,IAAI;QACrB,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAC7B;QACA,OAAO,CAAC,GAAG,CACT,mCAAmC,GAAG,CAAC,iBAAiB,MAAM,EAC9D,GAAG,CAAC,SAAS,CACd,CAAC;QAEF,MAAM,mBAAmB,GAAG,oBAAU,CAAC,cAAc,CACnD,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,IAAI,CACL,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,YAAY,CACvC,GAAG,CAAC,SAAS,EACb,mBAAmB,CACpB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,WAAW,IAAI,yBAAW,CAAC,GAAG,EAAE;YAClC,SAAS,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,SAAS,IAAI,IAAI,EAAE;gBACrB,OAAO,CAAC,GAAG,CACT,wFAAwF,GAAG,CAAC,WAAW,EAAE,CAC1G,CAAC;aACH;SACF;QACD,OAAO,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACpE;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACnD,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,eAAgC,EAChC,WAAwB,EACxB,MAAc,EACd,SAAiB,EACjB,cAA2B,EAC3B,WAA+B,EAC/B,IAAU;IAEV,MAAM,MAAM,GAAG,MAAM,eAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,GAAG,GAAG,MAAM,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE;QACnC,GAAG,GAAG,MAAM,2CAA2C,CAAC,MAAM,CAAC,CAAC;QAEhE,IAAI,GAAG,CAAC,QAAQ,IAAI,WAAW,EAAE;YAC/B,SAAS;SACV;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CACtC,GAAG,EACH,WAAW,EACX,MAAM,EACN,SAAS,EACT,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAClC,WAAW,EACX,IAAI,CACL,CAAC;YACF,GAAG,GAAG,MAAM,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC9C,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;SACF;aAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM;SACP;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;SAClB;KACF;IACD,OAAO,CAAC,GAAG,CACT,cAAc,GAAG,CAAC,QAAQ,iBAAiB,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAC7E,CAAC;IACF,OAAO,GAAG,CAAC,QAAQ,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,YAAoB;IACxD,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,EAAE;QACX,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAEpE,IAAI,qBAAqB,GACvB,MAAM,eAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC;QAE9C,IAAI,OAAO,KAAK,sBAAsB,EAAE;YACtC,eAAe,GAAG,IAAI,CAAC;YACvB,IAAI,GAAG,KAAK,CAAC;SACd;aAAM,IAAI,OAAO,KAAK,mBAAmB,EAAE;YAC1C,IAAI,GAAG,KAAK,CAAC;SACd;aAAM,IAAI,OAAO,KAAK,eAAe,EAAE;YACtC,mBAAmB;SACpB;aAAM;YACL,IAAI,GAAG,KAAK,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;SAC9C;KACF;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,eAAgC,EAChC,WAAwB,EACxB,MAAc,EACd,SAAiB,EACjB,cAA2B,EAC3B,UAAiB,EACjB,kBAAsC,EACtC,WAA+B,EAC/B,IAAU;IAEV,IAAI,QAAQ,GAAG,MAAM,cAAc,CACjC,eAAe,EACf,WAAW,EACX,MAAM,EACN,SAAS,EACT,cAAc,EACd,WAAW,EACX,IAAI,CACL,CAAC;IACF,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IACE,QAAQ,KAAK,WAAW;QACxB,SAAS,CAAC,YAAY;QACtB,WAAW,KAAK,yBAAW,CAAC,GAAG;QAC/B,SAAS,CAAC,cAAc;QACxB,kBAAkB,CAAC,+BAA+B,EAClD;QACA,SAAS,GAAG,MAAM,IAAA,4BAAgB,EAChC,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,UAAU,CACrB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,eAAe,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3E,OAAO,eAAe,EAAE;YACtB,QAAQ,GAAG,MAAM,cAAc,CAC7B,eAAe,EACf,WAAW,EACX,MAAM,EACN,SAAS,EACT,cAAc,EACd,WAAW,EACX,IAAI,IAAI,EAAE,CACX,CAAC;YACF,IAAI,QAAQ,KAAK,WAAW,EAAE;gBAC5B,OAAO;aACR;YACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;gBAC7B,MAAM;aACP;YACD,SAAS,GAAG,MAAM,IAAA,4BAAgB,EAChC,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,UAAU,CACrB,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;gBAC3B,OAAO;aACR;YACD,eAAe,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;SACxE;KACF;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAc,EACd,SAAiB,EACjB,cAA2B,EAC3B,WAA+B,EAC/B,IAAU;IAEV,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACtC,MAAM,WAAW,GAAW,oBAAU,CAAC,cAAc,CACnD,MAAM,EACN,SAAS,EACT,WAAW,EACX,KAAK,EACL,IAAI,CACL,CAAC;QACF,MAAM,IAAA,2BAAa,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACjD,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,WAA0B,EAC1B,cAA2B;IAE3B,IAAI,WAAW,KAAK,IAAI,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO;KACR;IACD,OAAO,CAAC,GAAG,CACT,oDAAoD,WAAW,KAAK,CACrE,CAAC;IACF,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAC/D,CAAC,CAAC,MACJ,EAAE,CACH,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,cAA2B;IAClD,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAC/D,CAAC,CAAC,MACJ,MAAM,CAAC,CAAC,IAAI,EAAE,CACf,CACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CACZ,WAAgE;IAEhE,IACE,WAAW,CAAC,QAAQ,KAAK,SAAS;QAClC,WAAW,CAAC,QAAQ,KAAK,UAAU;QACnC,WAAW,CAAC,QAAQ,IAAI,eAAe,EACvC;QACA,OAAO,IAAI,CAAC;KACb;SAAM,IACL,WAAW,CAAC,QAAQ,KAAK,UAAU;QACnC,WAAW,CAAC,QAAQ,KAAK,YAAY,EACrC;QACA,OAAO,KAAK,CAAC;KACd;SAAM;QACL,OAAO,CAAC,GAAG,CACT,iCAAiC,WAAW,CAAC,QAAQ,qCAAqC,CAC3F,CAAC;QACF,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,SAAgB,YAAY,CAC1B,UAAsB,EACtB,WAAwB,EACxB,kBAAsC;IAEtC,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;QAC5C,MAAM,QAAQ,GACZ,WAAW,KAAK,yBAAW,CAAC,GAAG;YAC7B,CAAC,CAAC,kBAAkB,CAAC,WAAW;YAChC,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC;QAExC,IAAI,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,QAAQ,EAAE;YAC3C,OAAO,QAAQ,CAAC;SACjB;aAAM;YACL,OAAO,UAAU,CAAC,KAAK,CAAC;SACzB;KACF;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAnBD,oCAmBC;AAED,SAAgB,aAAa,CAC3B,UAAsB,EACtB,WAAwB,EACxB,kBAAsC;IAEtC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9C,MAAM,SAAS,GACb,WAAW,KAAK,yBAAW,CAAC,GAAG;YAC7B,CAAC,CAAC,kBAAkB,CAAC,YAAY;YACjC,CAAC,CAAC,kBAAkB,CAAC,eAAe,CAAC;QAEzC,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,EAAE;YAC9C,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,OAAO,UAAU,CAAC,MAAM,CAAC;SAC1B;KACF;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAnBD,sCAmBC;AAEM,KAAK,UAAU,QAAQ,CAC5B,KAAY,EACZ,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,kBAAsC,EACtC,UAAsB;IAEtB,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,IAAA,2BAAe,EAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;KACF;IAED,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO;KACR;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1D,IAAI,KAAc,CAAC;IACnB,IAAI,iBAAyB,CAAC;IAC9B,IAAI,WAAiC,CAAC;IACtC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;QACtB,KAAK,GAAG,IAAI,CAAC;QACb,WAAW,GAAG,UAAU,CAAC;QACzB,iBAAiB,GAAG,UAAU,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,wCAAwC,iBAAiB,qDAAqD,CAC/G,CAAC;KACH;SAAM;QACL,KAAK,GAAG,KAAK,CAAC;QACd,WAAW,GAAG,OAAO,CAAC;QACtB,iBAAiB,GAAG,MAAM,CAAC;KAC5B;IAED,MAAM,QAAQ,GACZ,WAAW,CAAC,YAAY,IAAI,IAAI,IAAI,WAAW,CAAC,YAAY,IAAI,SAAS,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,MAAM,eAAK,CAAC,aAAa,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE9E,MAAM,eAAe,GAAG,IAAI,yBAAe,CACzC,WAAW,EACX,WAAW,EACX,UAAU,CAAC,UAAU,EACrB,SAAS,EACT,UAAU,EACV,QAAQ,CACT,CAAC;IAEF,MAAM,cAAc,GAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IAE5B,MAAM,eAAe,CACnB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,KAAK,EACL,kBAAkB,EAClB,UAAU,CAAC,eAAe,CAAC,WAAW,EACtC,QAAQ,CACT,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,yCAAyC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAC3E,CAAC;IAEF,IAAI,KAAK,EAAE;QACT,MAAM,WAAW,GAAG,MAAM,UAAU,CAClC,MAAM,EACN,SAAS,EACT,cAAc,EACd,UAAU,CAAC,eAAe,CAAC,WAAW,EACtC,QAAQ,CACT,CAAC;QACF,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KAC7C;SAAM;QACL,eAAe,CAAC,cAAc,CAAC,CAAC;KACjC;AACH,CAAC;AA1FD,4BA0FC;AAoBM,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,iBAAoC,EACpC,kBAAsC,EACtC,IAAU;IAEV,IAAI,iBAAyB,CAAC;IAC9B,IAAI,WAAiC,CAAC;IACtC,IAAI,iBAAiB,CAAC,WAAW,EAAE;QACjC,WAAW,GAAG,UAAU,CAAC;QACzB,iBAAiB,GAAG,UAAU,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,wCAAwC,iBAAiB,qDAAqD,CAC/G,CAAC;KACH;SAAM;QACL,WAAW,GAAG,OAAO,CAAC;QACtB,iBAAiB,GAAG,MAAM,CAAC;KAC5B;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,EAAE,yBAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,aAAa,CAC9B,iBAAiB,EACjB,yBAAW,CAAC,GAAG,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,yBAAe,CACzC,yBAAW,CAAC,GAAG,EACf,WAAW,EACX,iBAAiB,CAAC,UAAU,EAC5B,SAAS,EACT,UAAU,EACV,iBAAiB,CAAC,QAAQ,CAC3B,CAAC;IAEF,MAAM,cAAc,GAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAErD,MAAM,cAAc,CAClB,eAAe,EACf,yBAAW,CAAC,GAAG,EACf,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,iBAAiB,CAAC,eAAe,CAAC,WAAW,EAC7C,IAAI,CACL,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,2CAA2C,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAC7E,CAAC;IAEF,IAAI,iBAAiB,CAAC,WAAW,EAAE;QACjC,MAAM,WAAW,GAAG,MAAM,UAAU,CAClC,MAAM,EACN,SAAS,EACT,cAAc,EACd,iBAAiB,CAAC,eAAe,CAAC,WAAW,EAC7C,IAAI,CACL,CAAC;QACF,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KAC7C;SAAM;QACL,eAAe,CAAC,cAAc,CAAC,CAAC;KACjC;AACH,CAAC;AAjED,kCAiEC;AAEM,KAAK,UAAU,aAAa,CACjC,eAAuB,EACvB,cAAsB;IAEtB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,CAAC,KAAK,EAAE;QACb,IAAI,UAAU,GAAe,MAAM,eAAK,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YAC7B,MAAM,IAAA,aAAK,EAAC,eAAe,CAAC,CAAC;YAC7B,UAAU,GAAG,MAAM,eAAK,CAAC,aAAa,EAAE,CAAC;SAC1C;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEjC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,oBAAoB,GAAG,GAAG,CAAC;QACjC,OAAO,MAAM,IAAI,OAAO,GAAG,cAAc,EAAE;YACzC,MAAM,IAAA,aAAK,EAAC,oBAAoB,CAAC,CAAC;YAClC,UAAU,GAAG,MAAM,eAAK,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,oBAAoB,CAAC;SACjC;QAED,IAAI,MAAM,IAAI,OAAO,IAAI,cAAc,EAAE;YACvC,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;SACnD;KACF;AACH,CAAC;AA9BD,sCA8BC","sourcesContent":["import Event from \"./Event\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport HPApi from \"./HPApi\";\nimport fs from \"fs/promises\";\nimport JpegUtil from \"./JpegUtil\";\nimport { DeviceCapabilities } from \"./DeviceCapabilities\";\nimport { waitForScanEvent, waitScanRequest } from \"./listening\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport { createPdfFrom, ScanContent, ScanPage } from \"./ScanContent\";\nimport Job from \"./Job\";\nimport { delay } from \"./delay\";\nimport PathHelper from \"./PathHelper\";\nimport ScanStatus from \"./ScanStatus\";\nimport { InputSource } from \"./InputSource\";\n\nasync function waitDeviceUntilItIsReadyToUploadOrCompleted(\n jobUrl: string,\n): Promise<Job> {\n let job = null;\n let isReadyToUpload = false;\n do {\n job = await HPApi.getJob(jobUrl);\n if (job.jobState === \"Canceled\") {\n return job;\n } else if (\n job.pageState === \"ReadyToUpload\" ||\n job.jobState === \"Completed\"\n ) {\n isReadyToUpload = true;\n } else if (job.jobState == \"Processing\") {\n isReadyToUpload = false;\n } else {\n console.log(`Unknown jobState: ${job.jobState}`);\n }\n await delay(300);\n } while (!isReadyToUpload);\n return job;\n}\n\nasync function TryGetDestination(\n event: Event,\n): Promise<WalkupScanDestination | WalkupScanToCompDestination | null> {\n //this code can in some cases be executed before the user actually chooses between Document or Photo\n //so lets fetch the contentType (Document or Photo) until we get a value\n let destination: WalkupScanDestination | WalkupScanToCompDestination | null =\n null;\n\n for (let i = 0; i < 20; i++) {\n const destinationURI = event.destinationURI;\n if (destinationURI) {\n destination = await HPApi.getDestination(destinationURI);\n\n const shortcut = destination.shortcut;\n if (shortcut != null) {\n return destination;\n }\n } else {\n console.log(`No destination URI found`);\n }\n\n console.log(`No shortcut yet available, attempt: ${i + 1}/20`);\n await new Promise((resolve) => setTimeout(resolve, 1000)); //wait 1s\n }\n\n console.log(\"Failing to detect destination shortcut\");\n console.log(JSON.stringify(destination));\n return null;\n}\n\nasync function scanProcessing(filePath: string): Promise<number | null> {\n const buffer: Buffer = await fs.readFile(filePath);\n\n let height = JpegUtil.fixSizeWithDNL(buffer);\n if (height != null) {\n // rewrite the fixed file\n await fs.writeFile(filePath, buffer);\n return height;\n }\n return null;\n}\n\nfunction createScanPage(\n job: Job,\n currentPageNumber: number,\n filePath: string,\n sizeFixed: number | null,\n): ScanPage {\n let height = sizeFixed ?? job.imageHeight;\n return {\n path: filePath,\n pageNumber: currentPageNumber,\n width: job.imageWidth ?? 0,\n height: height ?? 0,\n xResolution: job.xResolution ?? 200,\n yResolution: job.yResolution ?? 200,\n };\n}\n\nasync function handleProcessingState(\n job: Job,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n currentPageNumber: number,\n filePattern: string | undefined,\n date: Date,\n): Promise<ScanPage | null> {\n if (\n job.pageState == \"ReadyToUpload\" &&\n job.binaryURL != null &&\n job.currentPageNumber != null\n ) {\n console.log(\n `Ready to download page job page ${job.currentPageNumber} at:`,\n job.binaryURL,\n );\n\n const destinationFilePath = PathHelper.getFileForPage(\n folder,\n scanCount,\n currentPageNumber,\n filePattern,\n \"jpg\",\n date,\n );\n const filePath = await HPApi.downloadPage(\n job.binaryURL,\n destinationFilePath,\n );\n console.log(\"Page downloaded to:\", filePath);\n\n let sizeFixed: null | number = null;\n if (inputSource == InputSource.Adf) {\n sizeFixed = await scanProcessing(filePath);\n if (sizeFixed == null) {\n console.log(\n `File size has not been fixed, DNF may not have been found and approximate height is: ${job.imageHeight}`,\n );\n }\n }\n return createScanPage(job, currentPageNumber, filePath, sizeFixed);\n } else {\n console.log(`Unknown pageState: ${job.pageState}`);\n await delay(200);\n return null;\n }\n}\n\nasync function executeScanJob(\n scanJobSettings: ScanJobSettings,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n filePattern: string | undefined,\n date: Date,\n): Promise<\"Completed\" | \"Canceled\"> {\n const jobUrl = await HPApi.postJob(scanJobSettings);\n\n console.log(\"New job created:\", jobUrl);\n\n let job = await HPApi.getJob(jobUrl);\n while (job.jobState !== \"Completed\") {\n job = await waitDeviceUntilItIsReadyToUploadOrCompleted(jobUrl);\n\n if (job.jobState == \"Completed\") {\n continue;\n }\n\n if (job.jobState === \"Processing\") {\n const page = await handleProcessingState(\n job,\n inputSource,\n folder,\n scanCount,\n scanJobContent.elements.length + 1,\n filePattern,\n date,\n );\n job = await HPApi.getJob(jobUrl);\n if (page != null && job.jobState != \"Canceled\") {\n scanJobContent.elements.push(page);\n }\n } else if (job.jobState === \"Canceled\") {\n console.log(\"Job cancelled by device\");\n break;\n } else {\n console.log(`Unhandled jobState: ${job.jobState}`);\n await delay(200);\n }\n }\n console.log(\n `Job state: ${job.jobState}, totalPages: ${scanJobContent.elements.length}:`,\n );\n return job.jobState;\n}\n\nasync function waitScanNewPageRequest(compEventURI: string): Promise<boolean> {\n let startNewScanJob = false;\n let wait = true;\n while (wait) {\n await new Promise((resolve) => setTimeout(resolve, 1000)); //wait 1s\n\n let walkupScanToCompEvent =\n await HPApi.getWalkupScanToCompEvent(compEventURI);\n let message = walkupScanToCompEvent.eventType;\n\n if (message === \"ScanNewPageRequested\") {\n startNewScanJob = true;\n wait = false;\n } else if (message === \"ScanPagesComplete\") {\n wait = false;\n } else if (message === \"ScanRequested\") {\n // continue waiting\n } else {\n wait = false;\n console.log(`Unknown eventType: ${message}`);\n }\n }\n return startNewScanJob;\n}\n\nasync function executeScanJobs(\n scanJobSettings: ScanJobSettings,\n inputSource: InputSource,\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n firstEvent: Event,\n deviceCapabilities: DeviceCapabilities,\n filePattern: string | undefined,\n date: Date,\n) {\n let jobState = await executeScanJob(\n scanJobSettings,\n inputSource,\n folder,\n scanCount,\n scanJobContent,\n filePattern,\n date,\n );\n let lastEvent = firstEvent;\n if (\n jobState === \"Completed\" &&\n lastEvent.compEventURI &&\n inputSource !== InputSource.Adf &&\n lastEvent.destinationURI &&\n deviceCapabilities.supportsMultiItemScanFromPlaten\n ) {\n lastEvent = await waitForScanEvent(\n lastEvent.destinationURI,\n lastEvent.agingStamp,\n );\n if (!lastEvent.compEventURI) {\n return;\n }\n let startNewScanJob = await waitScanNewPageRequest(lastEvent.compEventURI);\n while (startNewScanJob) {\n jobState = await executeScanJob(\n scanJobSettings,\n inputSource,\n folder,\n scanCount,\n scanJobContent,\n filePattern,\n new Date(),\n );\n if (jobState !== \"Completed\") {\n return;\n }\n if (!lastEvent.destinationURI) {\n break;\n }\n lastEvent = await waitForScanEvent(\n lastEvent.destinationURI,\n lastEvent.agingStamp,\n );\n if (!lastEvent.compEventURI) {\n return;\n }\n startNewScanJob = await waitScanNewPageRequest(lastEvent.compEventURI);\n }\n }\n}\n\nasync function mergeToPdf(\n folder: string,\n scanCount: number,\n scanJobContent: ScanContent,\n filePattern: string | undefined,\n date: Date,\n): Promise<string | null> {\n if (scanJobContent.elements.length > 0) {\n const pdfFilePath: string = PathHelper.getFileForScan(\n folder,\n scanCount,\n filePattern,\n \"pdf\",\n date,\n );\n await createPdfFrom(scanJobContent, pdfFilePath);\n scanJobContent.elements.forEach((e) => fs.unlink(e.path));\n return pdfFilePath;\n }\n console.log(`No page available to build a pdf file`);\n return null;\n}\n\nfunction displayPdfScan(\n pdfFilePath: string | null,\n scanJobContent: ScanContent,\n) {\n if (pdfFilePath === null) {\n console.log(`Pdf generated has not been generated`);\n return;\n }\n console.log(\n `The following page(s) have been rendered inside '${pdfFilePath}': `,\n );\n scanJobContent.elements.forEach((e) =>\n console.log(\n `\\t- page ${e.pageNumber.toString().padStart(3, \" \")} - ${e.width}x${\n e.height\n }`,\n ),\n );\n}\n\nfunction displayJpegScan(scanJobContent: ScanContent) {\n scanJobContent.elements.forEach((e) =>\n console.log(\n `\\t- page ${e.pageNumber.toString().padStart(3, \" \")} - ${e.width}x${\n e.height\n } - ${e.path}`,\n ),\n );\n}\n\nfunction isPdf(\n destination: WalkupScanDestination | WalkupScanToCompDestination,\n) {\n if (\n destination.shortcut === \"SavePDF\" ||\n destination.shortcut === \"EmailPDF\" ||\n destination.shortcut == \"SaveDocument1\"\n ) {\n return true;\n } else if (\n destination.shortcut === \"SaveJPEG\" ||\n destination.shortcut === \"SavePhoto1\"\n ) {\n return false;\n } else {\n console.log(\n `Unexpected shortcut received: ${destination.shortcut}, considering it as non pdf target!`,\n );\n return false;\n }\n}\n\nexport function getScanWidth(\n scanConfig: ScanConfig,\n inputSource: InputSource,\n deviceCapabilities: DeviceCapabilities,\n) {\n if (scanConfig.width && scanConfig.width > 0) {\n const maxWidth =\n inputSource === InputSource.Adf\n ? deviceCapabilities.adfMaxWidth\n : deviceCapabilities.platenMaxWidth;\n\n if (maxWidth && scanConfig.width > maxWidth) {\n return maxWidth;\n } else {\n return scanConfig.width;\n }\n } else {\n return null;\n }\n}\n\nexport function getScanHeight(\n scanConfig: ScanConfig,\n inputSource: InputSource,\n deviceCapabilities: DeviceCapabilities,\n) {\n if (scanConfig.height && scanConfig.height > 0) {\n const maxHeight =\n inputSource === InputSource.Adf\n ? deviceCapabilities.adfMaxHeight\n : deviceCapabilities.platenMaxHeight;\n\n if (maxHeight && scanConfig.height > maxHeight) {\n return maxHeight;\n } else {\n return scanConfig.height;\n }\n } else {\n return null;\n }\n}\n\nexport async function saveScan(\n event: Event,\n folder: string,\n tempFolder: string,\n scanCount: number,\n deviceCapabilities: DeviceCapabilities,\n scanConfig: ScanConfig,\n): Promise<void> {\n if (event.compEventURI) {\n const proceedToScan = await waitScanRequest(event.compEventURI);\n if (!proceedToScan) {\n return;\n }\n }\n\n const destination = await TryGetDestination(event);\n if (!destination) {\n console.log(\"No shortcut selected!\");\n return;\n }\n console.log(\"Selected shortcut: \" + destination.shortcut);\n\n let toPdf: boolean;\n let destinationFolder: string;\n let contentType: \"Document\" | \"Photo\";\n if (isPdf(destination)) {\n toPdf = true;\n contentType = \"Document\";\n destinationFolder = tempFolder;\n console.log(\n `Scan will be converted to pdf, using ${destinationFolder} as temp scan output directory for individual pages`,\n );\n } else {\n toPdf = false;\n contentType = \"Photo\";\n destinationFolder = folder;\n }\n\n const isDuplex =\n destination.scanPlexMode != null && destination.scanPlexMode != \"Simplex\";\n console.log(\"ScanPlexMode is : \" + destination.scanPlexMode);\n\n const scanStatus = await HPApi.getScanStatus();\n console.log(\"Afd is : \" + scanStatus.adfState);\n\n const inputSource = scanStatus.getInputSource();\n const scanWidth = getScanWidth(scanConfig, inputSource, deviceCapabilities);\n const scanHeight = getScanHeight(scanConfig, inputSource, deviceCapabilities);\n\n const scanJobSettings = new ScanJobSettings(\n inputSource,\n contentType,\n scanConfig.resolution,\n scanWidth,\n scanHeight,\n isDuplex,\n );\n\n const scanJobContent: ScanContent = { elements: [] };\n\n const scanDate = new Date();\n\n await executeScanJobs(\n scanJobSettings,\n inputSource,\n destinationFolder,\n scanCount,\n scanJobContent,\n event,\n deviceCapabilities,\n scanConfig.directoryConfig.filePattern,\n scanDate,\n );\n\n console.log(\n `Scan of page(s) completed totalPages: ${scanJobContent.elements.length}:`,\n );\n\n if (toPdf) {\n const pdfFilePath = await mergeToPdf(\n folder,\n scanCount,\n scanJobContent,\n scanConfig.directoryConfig.filePattern,\n scanDate,\n );\n displayPdfScan(pdfFilePath, scanJobContent);\n } else {\n displayJpegScan(scanJobContent);\n }\n}\n\nexport type DirectoryConfig = {\n directory: string | undefined;\n tempDirectory: string | undefined;\n filePattern: string | undefined;\n};\nexport type ScanConfig = {\n resolution: number;\n width: number | null;\n height: number | null;\n directoryConfig: DirectoryConfig;\n};\nexport type AdfAutoScanConfig = ScanConfig & {\n isDuplex: boolean;\n generatePdf: boolean;\n pollingInterval: number;\n startScanDelay: number;\n};\n\nexport async function scanFromAdf(\n scanCount: number,\n folder: string,\n tempFolder: string,\n adfAutoScanConfig: AdfAutoScanConfig,\n deviceCapabilities: DeviceCapabilities,\n date: Date,\n) {\n let destinationFolder: string;\n let contentType: \"Document\" | \"Photo\";\n if (adfAutoScanConfig.generatePdf) {\n contentType = \"Document\";\n destinationFolder = tempFolder;\n console.log(\n `Scan will be converted to pdf, using ${destinationFolder} as temp scan output directory for individual pages`,\n );\n } else {\n contentType = \"Photo\";\n destinationFolder = folder;\n }\n\n const scanWidth = getScanWidth(adfAutoScanConfig, InputSource.Adf, deviceCapabilities);\n const scanHeight = getScanHeight(\n adfAutoScanConfig,\n InputSource.Adf,\n deviceCapabilities,\n );\n\n const scanJobSettings = new ScanJobSettings(\n InputSource.Adf,\n contentType,\n adfAutoScanConfig.resolution,\n scanWidth,\n scanHeight,\n adfAutoScanConfig.isDuplex,\n );\n\n const scanJobContent: ScanContent = { elements: [] };\n\n await executeScanJob(\n scanJobSettings,\n InputSource.Adf,\n destinationFolder,\n scanCount,\n scanJobContent,\n adfAutoScanConfig.directoryConfig.filePattern,\n date,\n );\n\n console.log(\n `Scan of page(s) completed, total pages: ${scanJobContent.elements.length}:`,\n );\n\n if (adfAutoScanConfig.generatePdf) {\n const pdfFilePath = await mergeToPdf(\n folder,\n scanCount,\n scanJobContent,\n adfAutoScanConfig.directoryConfig.filePattern,\n date,\n );\n displayPdfScan(pdfFilePath, scanJobContent);\n } else {\n displayJpegScan(scanJobContent);\n }\n}\n\nexport async function waitAdfLoaded(\n pollingInterval: number,\n startScanDelay: number,\n) {\n let ready = false;\n while (!ready) {\n let scanStatus: ScanStatus = await HPApi.getScanStatus();\n while (!scanStatus.isLoaded()) {\n await delay(pollingInterval);\n scanStatus = await HPApi.getScanStatus();\n }\n console.log(`ADF load detected`);\n\n let loaded = true;\n let counter = 0;\n const shortPollingInterval = 500;\n while (loaded && counter < startScanDelay) {\n await delay(shortPollingInterval);\n scanStatus = await HPApi.getScanStatus();\n loaded = scanStatus.isLoaded();\n counter += shortPollingInterval;\n }\n\n if (loaded && counter >= startScanDelay) {\n ready = true;\n console.log(`ADF still loaded, proceeding`);\n } else {\n console.log(`ADF not loaded anymore, waiting...`);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const mocha_1 = require("mocha");
|
|
30
|
+
const chai_1 = require("chai");
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const fs = __importStar(require("fs/promises"));
|
|
33
|
+
const DiscoveryTree_1 = __importDefault(require("../src/DiscoveryTree"));
|
|
34
|
+
(0, mocha_1.describe)("DiscoveryTree", () => {
|
|
35
|
+
(0, mocha_1.describe)("Parsing discoveryTree.xml", async () => {
|
|
36
|
+
let discoveryTree;
|
|
37
|
+
before(async () => {
|
|
38
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/discoveryTree.xml"), { encoding: "utf8" });
|
|
39
|
+
discoveryTree = await DiscoveryTree_1.default.createDiscoveryTree(content);
|
|
40
|
+
});
|
|
41
|
+
it("Parse WalkupScanToCompManifest uri", async () => {
|
|
42
|
+
(0, chai_1.expect)(discoveryTree.WalkupScanToCompManifestURI).to.be.eq("/WalkupScanToComp/WalkupScanToCompManifest.xml");
|
|
43
|
+
});
|
|
44
|
+
it("Parse WalkupScanManifest uri", async () => {
|
|
45
|
+
(0, chai_1.expect)(discoveryTree.WalkupScanManifestURI).to.be.eq(null);
|
|
46
|
+
});
|
|
47
|
+
it("Parse ScanJobManifest uri", async () => {
|
|
48
|
+
(0, chai_1.expect)(discoveryTree.ScanJobManifestURI).to.be.eq("/Scan/ScanJobManifest.xml");
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
(0, mocha_1.describe)("Parsing discoveryTree2.xml", async () => {
|
|
52
|
+
let discoveryTree;
|
|
53
|
+
before(async () => {
|
|
54
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/discoveryTree2.xml"), { encoding: "utf8" });
|
|
55
|
+
discoveryTree = await DiscoveryTree_1.default.createDiscoveryTree(content);
|
|
56
|
+
});
|
|
57
|
+
it("Parse WalkupScanToCompManifest uri", async () => {
|
|
58
|
+
(0, chai_1.expect)(discoveryTree.WalkupScanToCompManifestURI).to.be.eq(null);
|
|
59
|
+
});
|
|
60
|
+
it("Parse WalkupScanManifest uri", async () => {
|
|
61
|
+
(0, chai_1.expect)(discoveryTree.WalkupScanManifestURI).to.be.eq("/WalkupScan/WalkupScanManifest.xml");
|
|
62
|
+
});
|
|
63
|
+
it("Parse ScanJobManifest uri", async () => {
|
|
64
|
+
(0, chai_1.expect)(discoveryTree.ScanJobManifestURI).to.be.eq("/Scan/ScanJobManifest.xml");
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=DiscoveryTree.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryTree.test.js","sourceRoot":"","sources":["../../test/DiscoveryTree.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,+BAA8B;AAC9B,gDAAwB;AACxB,gDAAkC;AAClC,yEAAiD;AAEjD,IAAA,gBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,gBAAQ,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC/C,IAAI,aAA4B,CAAC;QAEjC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,OAAO,GAAW,MAAM,EAAE,CAAC,QAAQ,CACvC,cAAI,CAAC,OAAO,CACV,SAAS,EACT,2BAA2B,CAC5B,EACD,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;YACF,aAAa,GAAG,MAAM,uBAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,IAAA,aAAM,EAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gDAAgD,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,IAAA,aAAM,EAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,IAAA,aAAM,EAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAA,gBAAQ,EAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAChD,IAAI,aAA4B,CAAC;QAEjC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,OAAO,GAAW,MAAM,EAAE,CAAC,QAAQ,CACvC,cAAI,CAAC,OAAO,CACV,SAAS,EACT,4BAA4B,CAC7B,EACD,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;YACF,aAAa,GAAG,MAAM,uBAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,IAAA,aAAM,EAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,IAAA,aAAM,EAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,oCAAoC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,IAAA,aAAM,EAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe } from \"mocha\";\nimport { expect } from \"chai\";\nimport path from \"path\";\nimport * as fs from \"fs/promises\";\nimport DiscoveryTree from \"../src/DiscoveryTree\";\n\ndescribe(\"DiscoveryTree\", () => {\n describe(\"Parsing discoveryTree.xml\", async () => {\n let discoveryTree: DiscoveryTree;\n\n before(async () => {\n const content: string = await fs.readFile(\n path.resolve(\n __dirname,\n \"./asset/discoveryTree.xml\"\n ),\n { encoding: \"utf8\" }\n );\n discoveryTree = await DiscoveryTree.createDiscoveryTree(content);\n });\n\n it(\"Parse WalkupScanToCompManifest uri\", async () => {\n expect(discoveryTree.WalkupScanToCompManifestURI).to.be.eq(\"/WalkupScanToComp/WalkupScanToCompManifest.xml\");\n });\n it(\"Parse WalkupScanManifest uri\", async () => {\n expect(discoveryTree.WalkupScanManifestURI).to.be.eq(null);\n });\n it(\"Parse ScanJobManifest uri\", async () => {\n expect(discoveryTree.ScanJobManifestURI).to.be.eq(\"/Scan/ScanJobManifest.xml\");\n });\n });\n describe(\"Parsing discoveryTree2.xml\", async () => {\n let discoveryTree: DiscoveryTree;\n\n before(async () => {\n const content: string = await fs.readFile(\n path.resolve(\n __dirname,\n \"./asset/discoveryTree2.xml\"\n ),\n { encoding: \"utf8\" }\n );\n discoveryTree = await DiscoveryTree.createDiscoveryTree(content);\n });\n\n it(\"Parse WalkupScanToCompManifest uri\", async () => {\n expect(discoveryTree.WalkupScanToCompManifestURI).to.be.eq(null);\n });\n it(\"Parse WalkupScanManifest uri\", async () => {\n expect(discoveryTree.WalkupScanManifestURI).to.be.eq(\"/WalkupScan/WalkupScanManifest.xml\");\n });\n it(\"Parse ScanJobManifest uri\", async () => {\n expect(discoveryTree.ScanJobManifestURI).to.be.eq(\"/Scan/ScanJobManifest.xml\");\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const mocha_1 = require("mocha");
|
|
30
|
+
const chai_1 = require("chai");
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const fs = __importStar(require("fs/promises"));
|
|
33
|
+
const EventTable_1 = __importDefault(require("../src/EventTable"));
|
|
34
|
+
(0, mocha_1.describe)("EtagEventTable", () => {
|
|
35
|
+
(0, mocha_1.describe)("Parsing eventTable.xml", async () => {
|
|
36
|
+
let etagEventTable;
|
|
37
|
+
before(async () => {
|
|
38
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/eventTable.xml"), { encoding: "utf8" });
|
|
39
|
+
etagEventTable = await EventTable_1.default.createEtagEventTable(content, "tag1");
|
|
40
|
+
});
|
|
41
|
+
it("tag", async () => {
|
|
42
|
+
(0, chai_1.expect)(etagEventTable.etag).to.be.eq("tag1");
|
|
43
|
+
});
|
|
44
|
+
it("Parse event compEventURI", async () => {
|
|
45
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].compEventURI).to.be.eq(undefined);
|
|
46
|
+
});
|
|
47
|
+
it("Parse event destinationURI", async () => {
|
|
48
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].destinationURI).to.be.eq(undefined);
|
|
49
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[4].destinationURI).to.be.eq("http://192.168.1.7:8080/WalkupScan/WalkupScanDestinations/1cb3125d-7bde-1f09-8da2-2c768ab21113");
|
|
50
|
+
});
|
|
51
|
+
it("Parse event isScanEvent", async () => {
|
|
52
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].isScanEvent).to.be.eq(false);
|
|
53
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[4].isScanEvent).to.be.eq(true);
|
|
54
|
+
});
|
|
55
|
+
it("Parse event unqualifiedEventCategory", async () => {
|
|
56
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].unqualifiedEventCategory).to.be.eq("DeviceCapabilitiesChanged");
|
|
57
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[4].unqualifiedEventCategory).to.be.eq("ScanEvent");
|
|
58
|
+
});
|
|
59
|
+
it("Parse event agingStamp", async () => {
|
|
60
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].agingStamp).to.be.eq("139-1");
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
(0, mocha_1.describe)("Parsing eventTableComp.xml", async () => {
|
|
64
|
+
let etagEventTable;
|
|
65
|
+
before(async () => {
|
|
66
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/eventTableComp.xml"), { encoding: "utf8" });
|
|
67
|
+
etagEventTable = await EventTable_1.default.createEtagEventTable(content, "tag1");
|
|
68
|
+
});
|
|
69
|
+
it("tag", async () => {
|
|
70
|
+
(0, chai_1.expect)(etagEventTable.etag).to.be.eq("tag1");
|
|
71
|
+
});
|
|
72
|
+
it("Parse event compEventURI", async () => {
|
|
73
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].compEventURI).to.be.eq(undefined);
|
|
74
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[3].compEventURI).to.be.eq("/WalkupScanToComp/WalkupScanToCompEvent");
|
|
75
|
+
});
|
|
76
|
+
it("Parse event destinationURI", async () => {
|
|
77
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].destinationURI).to.be.eq(undefined);
|
|
78
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[3].destinationURI).to.be.eq("/WalkupScanToComp/WalkupScanToCompDestinations/ab60a563-5a97-4386-bd36-ec63cbbff933");
|
|
79
|
+
});
|
|
80
|
+
it("Parse event isScanEvent", async () => {
|
|
81
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].isScanEvent).to.be.eq(false);
|
|
82
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[3].isScanEvent).to.be.eq(true);
|
|
83
|
+
});
|
|
84
|
+
it("Parse event unqualifiedEventCategory", async () => {
|
|
85
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].unqualifiedEventCategory).to.be.eq("DeviceCapabilitiesChanged");
|
|
86
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[3].unqualifiedEventCategory).to.be.eq("ScanEvent");
|
|
87
|
+
});
|
|
88
|
+
it("Parse event agingStamp", async () => {
|
|
89
|
+
(0, chai_1.expect)(etagEventTable.eventTable.events[0].agingStamp).to.be.eq("1-16");
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=EtagEventTable.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EtagEventTable.test.js","sourceRoot":"","sources":["../../test/EtagEventTable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe } from \"mocha\";\nimport { expect } from \"chai\";\nimport path from \"path\";\nimport * as fs from \"fs/promises\";\nimport EventTable from \"../src/EventTable\";\nimport { EtagEventTable } from \"../src/EventTable\";\n\ndescribe(\"EtagEventTable\", () => {\n describe(\"Parsing eventTable.xml\", async () => {\n let etagEventTable: EtagEventTable;\n\n before(async () => {\n const content: string = await fs.readFile(\n path.resolve(\n __dirname,\n \"./asset/eventTable.xml\"\n ),\n { encoding: \"utf8\" }\n );\n etagEventTable = await EventTable.createEtagEventTable( content, \"tag1\");\n });\n\n it(\"tag\", async () => {\n expect(etagEventTable.etag).to.be.eq(\"tag1\");\n });\n\n it(\"Parse event compEventURI\", async () => {\n expect(etagEventTable.eventTable.events[0].compEventURI).to.be.eq(undefined);\n });\n\n it(\"Parse event destinationURI\", async () => {\n expect(etagEventTable.eventTable.events[0].destinationURI).to.be.eq(undefined);\n expect(etagEventTable.eventTable.events[4].destinationURI).to.be.eq(\"http://192.168.1.7:8080/WalkupScan/WalkupScanDestinations/1cb3125d-7bde-1f09-8da2-2c768ab21113\");\n });\n\n it(\"Parse event isScanEvent\", async () => {\n expect(etagEventTable.eventTable.events[0].isScanEvent).to.be.eq(false);\n expect(etagEventTable.eventTable.events[4].isScanEvent).to.be.eq(true);\n });\n it(\"Parse event unqualifiedEventCategory\", async () => {\n expect(etagEventTable.eventTable.events[0].unqualifiedEventCategory).to.be.eq(\"DeviceCapabilitiesChanged\");\n expect(etagEventTable.eventTable.events[4].unqualifiedEventCategory).to.be.eq(\"ScanEvent\");\n });\n it(\"Parse event agingStamp\", async () => {\n expect(etagEventTable.eventTable.events[0].agingStamp).to.be.eq(\"139-1\");\n });\n });\n describe(\"Parsing eventTableComp.xml\", async () => {\n let etagEventTable: EtagEventTable;\n\n before(async () => {\n const content: string = await fs.readFile(\n path.resolve(\n __dirname,\n \"./asset/eventTableComp.xml\"\n ),\n { encoding: \"utf8\" }\n );\n etagEventTable = await EventTable.createEtagEventTable( content, \"tag1\");\n });\n\n it(\"tag\", async () => {\n expect(etagEventTable.etag).to.be.eq(\"tag1\");\n });\n\n it(\"Parse event compEventURI\", async () => {\n expect(etagEventTable.eventTable.events[0].compEventURI).to.be.eq(undefined);\n expect(etagEventTable.eventTable.events[3].compEventURI).to.be.eq(\"/WalkupScanToComp/WalkupScanToCompEvent\");\n });\n\n it(\"Parse event destinationURI\", async () => {\n expect(etagEventTable.eventTable.events[0].destinationURI).to.be.eq(undefined);\n expect(etagEventTable.eventTable.events[3].destinationURI).to.be.eq(\"/WalkupScanToComp/WalkupScanToCompDestinations/ab60a563-5a97-4386-bd36-ec63cbbff933\");\n });\n\n it(\"Parse event isScanEvent\", async () => {\n expect(etagEventTable.eventTable.events[0].isScanEvent).to.be.eq(false);\n expect(etagEventTable.eventTable.events[3].isScanEvent).to.be.eq(true);\n });\n it(\"Parse event unqualifiedEventCategory\", async () => {\n expect(etagEventTable.eventTable.events[0].unqualifiedEventCategory).to.be.eq(\"DeviceCapabilitiesChanged\");\n expect(etagEventTable.eventTable.events[3].unqualifiedEventCategory).to.be.eq(\"ScanEvent\");\n });\n it(\"Parse event agingStamp\", async () => {\n expect(etagEventTable.eventTable.events[0].agingStamp).to.be.eq(\"1-16\");\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const mocha_1 = require("mocha");
|
|
30
|
+
const chai_1 = require("chai");
|
|
31
|
+
const path_1 = __importDefault(require("path"));
|
|
32
|
+
const fs = __importStar(require("fs/promises"));
|
|
33
|
+
const Job_1 = __importDefault(require("../src/Job"));
|
|
34
|
+
(0, mocha_1.describe)("Job", () => {
|
|
35
|
+
(0, mocha_1.describe)("Parsing job_processing.xml", async () => {
|
|
36
|
+
let job;
|
|
37
|
+
before(async () => {
|
|
38
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/job_processing.xml"), { encoding: "utf8" });
|
|
39
|
+
job = await Job_1.default.createJob(content);
|
|
40
|
+
});
|
|
41
|
+
it("Parse jobState", async () => {
|
|
42
|
+
(0, chai_1.expect)(job.jobState).to.be.eq("Processing");
|
|
43
|
+
});
|
|
44
|
+
it("Parse xResolution", async () => {
|
|
45
|
+
(0, chai_1.expect)(job.xResolution).to.be.eq(200);
|
|
46
|
+
});
|
|
47
|
+
it("Parse yResolution", async () => {
|
|
48
|
+
(0, chai_1.expect)(job.yResolution).to.be.eq(200);
|
|
49
|
+
});
|
|
50
|
+
it("Parse imageHeight", async () => {
|
|
51
|
+
(0, chai_1.expect)(job.imageHeight).to.be.eq(2338);
|
|
52
|
+
});
|
|
53
|
+
it("Parse imageWidth", async () => {
|
|
54
|
+
(0, chai_1.expect)(job.imageWidth).to.be.eq(1654);
|
|
55
|
+
});
|
|
56
|
+
it("Parse currentPageNumber", async () => {
|
|
57
|
+
(0, chai_1.expect)(job.currentPageNumber).to.be.eq("1");
|
|
58
|
+
});
|
|
59
|
+
it("Parse binaryURL", async () => {
|
|
60
|
+
(0, chai_1.expect)(job.binaryURL).to.be.eq("/Scan/Jobs/2/Pages/1");
|
|
61
|
+
});
|
|
62
|
+
it("Parse pageState", async () => {
|
|
63
|
+
(0, chai_1.expect)(job.pageState).to.be.eq("PreparingScan");
|
|
64
|
+
});
|
|
65
|
+
it("Parse totalPageNumber", async () => {
|
|
66
|
+
(0, chai_1.expect)(job.totalPageNumber).to.be.eq(null);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
(0, mocha_1.describe)("Parsing job_completed.xml", async () => {
|
|
70
|
+
let job;
|
|
71
|
+
before(async () => {
|
|
72
|
+
const content = await fs.readFile(path_1.default.resolve(__dirname, "./asset/job_completed.xml"), { encoding: "utf8" });
|
|
73
|
+
job = await Job_1.default.createJob(content);
|
|
74
|
+
});
|
|
75
|
+
it("Parse jobState", async () => {
|
|
76
|
+
(0, chai_1.expect)(job.jobState).to.be.eq("Completed");
|
|
77
|
+
});
|
|
78
|
+
it("Parse xResolution", async () => {
|
|
79
|
+
(0, chai_1.expect)(job.xResolution).to.be.eq(null);
|
|
80
|
+
});
|
|
81
|
+
it("Parse yResolution", async () => {
|
|
82
|
+
(0, chai_1.expect)(job.yResolution).to.be.eq(null);
|
|
83
|
+
});
|
|
84
|
+
it("Parse imageHeight", async () => {
|
|
85
|
+
(0, chai_1.expect)(job.imageHeight).to.be.eq(null);
|
|
86
|
+
});
|
|
87
|
+
it("Parse imageWidth", async () => {
|
|
88
|
+
(0, chai_1.expect)(job.imageWidth).to.be.eq(null);
|
|
89
|
+
});
|
|
90
|
+
it("Parse currentPageNumber", async () => {
|
|
91
|
+
(0, chai_1.expect)(job.currentPageNumber).to.be.eq(null);
|
|
92
|
+
});
|
|
93
|
+
it("Parse binaryURL", async () => {
|
|
94
|
+
(0, chai_1.expect)(job.binaryURL).to.be.eq(null);
|
|
95
|
+
});
|
|
96
|
+
it("Parse pageState", async () => {
|
|
97
|
+
(0, chai_1.expect)(job.pageState).to.be.eq(null);
|
|
98
|
+
});
|
|
99
|
+
it("Parse totalPageNumber", async () => {
|
|
100
|
+
(0, chai_1.expect)(job.totalPageNumber).to.be.eq(1);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=Job.test.js.map
|