node-hp-scan-to 1.3.1 → 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.
Files changed (211) hide show
  1. package/README.md +76 -15
  2. package/dist/Destination.js.map +1 -1
  3. package/dist/DeviceCapabilities.d.ts +4 -0
  4. package/dist/DeviceCapabilities.js.map +1 -1
  5. package/dist/DiscoveryTree.js.map +1 -1
  6. package/dist/Event.js +2 -2
  7. package/dist/Event.js.map +1 -1
  8. package/dist/EventTable.js.map +1 -1
  9. package/dist/HPApi.js.map +1 -1
  10. package/dist/InputSource.d.ts +4 -0
  11. package/dist/InputSource.js +9 -0
  12. package/dist/InputSource.js.map +1 -0
  13. package/dist/Job.d.ts +2 -0
  14. package/dist/Job.js +2 -2
  15. package/dist/Job.js.map +1 -1
  16. package/dist/JpegUtil.js +1 -1
  17. package/dist/JpegUtil.js.map +1 -1
  18. package/dist/PathHelper.d.ts +4 -3
  19. package/dist/PathHelper.js +28 -13
  20. package/dist/PathHelper.js.map +1 -1
  21. package/dist/ScanCaps.d.ts +18 -0
  22. package/dist/ScanCaps.js +22 -0
  23. package/dist/ScanCaps.js.map +1 -1
  24. package/dist/ScanContent.js.map +1 -1
  25. package/dist/ScanJobManifest.js.map +1 -1
  26. package/dist/ScanJobSettings.d.ts +4 -1
  27. package/dist/ScanJobSettings.js +19 -8
  28. package/dist/ScanJobSettings.js.map +1 -1
  29. package/dist/ScanStatus.d.ts +2 -1
  30. package/dist/ScanStatus.js +3 -2
  31. package/dist/ScanStatus.js.map +1 -1
  32. package/dist/WalkupScanDestination.js +2 -2
  33. package/dist/WalkupScanDestination.js.map +1 -1
  34. package/dist/WalkupScanDestinations.js +1 -1
  35. package/dist/WalkupScanDestinations.js.map +1 -1
  36. package/dist/WalkupScanManifest.js.map +1 -1
  37. package/dist/WalkupScanToCompCaps.js.map +1 -1
  38. package/dist/WalkupScanToCompDestination.js +2 -2
  39. package/dist/WalkupScanToCompDestination.js.map +1 -1
  40. package/dist/WalkupScanToCompDestinations.js +1 -1
  41. package/dist/WalkupScanToCompDestinations.js.map +1 -1
  42. package/dist/WalkupScanToCompEvent.js.map +1 -1
  43. package/dist/WalkupScanToCompManifest.js.map +1 -1
  44. package/dist/index.js +26 -5
  45. package/dist/index.js.map +1 -1
  46. package/dist/listening.js.map +1 -1
  47. package/dist/readDeviceCapabilities.js +6 -1
  48. package/dist/readDeviceCapabilities.js.map +1 -1
  49. package/dist/scanProcessing.d.ts +6 -1
  50. package/dist/scanProcessing.js +61 -21
  51. package/dist/scanProcessing.js.map +1 -1
  52. package/dist/test/JpegUtil.test.js +10 -8
  53. package/dist/test/JpegUtil.test.js.map +1 -1
  54. package/dist/test/PathHelper.test.js +10 -11
  55. package/dist/test/PathHelper.test.js.map +1 -1
  56. package/dist/test/ScanCaps.test.d.ts +1 -0
  57. package/dist/test/ScanCaps.test.js +76 -0
  58. package/dist/test/ScanCaps.test.js.map +1 -0
  59. package/dist/test/ScanJobSettings.test.js +9 -3
  60. package/dist/test/ScanJobSettings.test.js.map +1 -1
  61. package/dist/test/scanProcessing.test.d.ts +1 -0
  62. package/dist/test/scanProcessing.test.js +103 -0
  63. package/dist/test/scanProcessing.test.js.map +1 -0
  64. package/package.json +7 -7
  65. package/src/Destination.ts +1 -1
  66. package/src/DeviceCapabilities.ts +4 -0
  67. package/src/DiscoveryTree.ts +1 -1
  68. package/src/Event.ts +4 -4
  69. package/src/EventTable.ts +1 -1
  70. package/src/HPApi.ts +19 -19
  71. package/src/InputSource.ts +4 -0
  72. package/src/Job.ts +19 -7
  73. package/src/JpegUtil.ts +18 -14
  74. package/src/PathHelper.ts +48 -20
  75. package/src/ScanCaps.ts +53 -1
  76. package/src/ScanContent.ts +1 -1
  77. package/src/ScanJobManifest.ts +3 -2
  78. package/src/ScanJobSettings.ts +23 -9
  79. package/src/ScanStatus.ts +6 -3
  80. package/src/WalkupScanDestination.ts +9 -5
  81. package/src/WalkupScanDestinations.ts +9 -4
  82. package/src/WalkupScanManifest.ts +3 -3
  83. package/src/WalkupScanToCompCaps.ts +2 -2
  84. package/src/WalkupScanToCompDestination.ts +15 -5
  85. package/src/WalkupScanToCompDestinations.ts +5 -4
  86. package/src/WalkupScanToCompEvent.ts +1 -1
  87. package/src/WalkupScanToCompManifest.ts +3 -3
  88. package/src/index.ts +90 -33
  89. package/src/listening.ts +14 -15
  90. package/src/readDeviceCapabilities.ts +12 -6
  91. package/src/scanProcessing.ts +129 -52
  92. package/dist/fixJpegSize.d.ts +0 -19
  93. package/dist/fixJpegSize.js +0 -292
  94. package/dist/fixJpegSize.js.map +0 -1
  95. package/dist/models/Destination.d.ts +0 -8
  96. package/dist/models/Destination.js +0 -68
  97. package/dist/models/Destination.js.map +0 -1
  98. package/dist/models/DiscoveryTree.d.ts +0 -16
  99. package/dist/models/DiscoveryTree.js +0 -38
  100. package/dist/models/DiscoveryTree.js.map +0 -1
  101. package/dist/models/Event.d.ts +0 -21
  102. package/dist/models/Event.js +0 -32
  103. package/dist/models/Event.js.map +0 -1
  104. package/dist/models/EventTable.d.ts +0 -16
  105. package/dist/models/EventTable.js +0 -33
  106. package/dist/models/EventTable.js.map +0 -1
  107. package/dist/models/Job.d.ts +0 -37
  108. package/dist/models/Job.js +0 -78
  109. package/dist/models/Job.js.map +0 -1
  110. package/dist/models/ScanCaps.d.ts +0 -7
  111. package/dist/models/ScanCaps.js +0 -17
  112. package/dist/models/ScanCaps.js.map +0 -1
  113. package/dist/models/ScanJobManifest.d.ts +0 -23
  114. package/dist/models/ScanJobManifest.js +0 -24
  115. package/dist/models/ScanJobManifest.js.map +0 -1
  116. package/dist/models/ScanJobSettings.d.ts +0 -8
  117. package/dist/models/ScanJobSettings.js +0 -56
  118. package/dist/models/ScanJobSettings.js.map +0 -1
  119. package/dist/models/WalkupScanDestination.d.ts +0 -22
  120. package/dist/models/WalkupScanDestination.js +0 -38
  121. package/dist/models/WalkupScanDestination.js.map +0 -1
  122. package/dist/models/WalkupScanDestinations.d.ts +0 -12
  123. package/dist/models/WalkupScanDestinations.js +0 -30
  124. package/dist/models/WalkupScanDestinations.js.map +0 -1
  125. package/dist/models/WalkupScanManifest.d.ts +0 -23
  126. package/dist/models/WalkupScanManifest.js +0 -25
  127. package/dist/models/WalkupScanManifest.js.map +0 -1
  128. package/dist/models/WalkupScanToCompCaps.d.ts +0 -12
  129. package/dist/models/WalkupScanToCompCaps.js +0 -20
  130. package/dist/models/WalkupScanToCompCaps.js.map +0 -1
  131. package/dist/models/WalkupScanToCompDestination.d.ts +0 -22
  132. package/dist/models/WalkupScanToCompDestination.js +0 -38
  133. package/dist/models/WalkupScanToCompDestination.js.map +0 -1
  134. package/dist/models/WalkupScanToCompDestinations.d.ts +0 -12
  135. package/dist/models/WalkupScanToCompDestinations.js +0 -30
  136. package/dist/models/WalkupScanToCompDestinations.js.map +0 -1
  137. package/dist/models/WalkupScanToCompEvent.d.ts +0 -11
  138. package/dist/models/WalkupScanToCompEvent.js +0 -20
  139. package/dist/models/WalkupScanToCompEvent.js.map +0 -1
  140. package/dist/models/WalkupScanToCompManifest.d.ts +0 -23
  141. package/dist/models/WalkupScanToCompManifest.js +0 -25
  142. package/dist/models/WalkupScanToCompManifest.js.map +0 -1
  143. package/dist/scanProcess.d.ts +0 -19
  144. package/dist/scanProcess.js +0 -292
  145. package/dist/scanProcess.js.map +0 -1
  146. package/dist/src/Destination.d.ts +0 -8
  147. package/dist/src/Destination.js +0 -68
  148. package/dist/src/Destination.js.map +0 -1
  149. package/dist/src/DiscoveryTree.d.ts +0 -16
  150. package/dist/src/DiscoveryTree.js +0 -38
  151. package/dist/src/DiscoveryTree.js.map +0 -1
  152. package/dist/src/Event.d.ts +0 -21
  153. package/dist/src/Event.js +0 -32
  154. package/dist/src/Event.js.map +0 -1
  155. package/dist/src/EventTable.d.ts +0 -16
  156. package/dist/src/EventTable.js +0 -33
  157. package/dist/src/EventTable.js.map +0 -1
  158. package/dist/src/HPApi.d.ts +0 -50
  159. package/dist/src/HPApi.js +0 -454
  160. package/dist/src/HPApi.js.map +0 -1
  161. package/dist/src/Job.d.ts +0 -37
  162. package/dist/src/Job.js +0 -78
  163. package/dist/src/Job.js.map +0 -1
  164. package/dist/src/JpegUtil.d.ts +0 -26
  165. package/dist/src/JpegUtil.js +0 -229
  166. package/dist/src/JpegUtil.js.map +0 -1
  167. package/dist/src/KnownShortcut.d.ts +0 -1
  168. package/dist/src/KnownShortcut.js +0 -3
  169. package/dist/src/KnownShortcut.js.map +0 -1
  170. package/dist/src/PathHelper.d.ts +0 -6
  171. package/dist/src/PathHelper.js +0 -52
  172. package/dist/src/PathHelper.js.map +0 -1
  173. package/dist/src/ScanCaps.d.ts +0 -7
  174. package/dist/src/ScanCaps.js +0 -17
  175. package/dist/src/ScanCaps.js.map +0 -1
  176. package/dist/src/ScanJobManifest.d.ts +0 -23
  177. package/dist/src/ScanJobManifest.js +0 -24
  178. package/dist/src/ScanJobManifest.js.map +0 -1
  179. package/dist/src/ScanJobSettings.d.ts +0 -8
  180. package/dist/src/ScanJobSettings.js +0 -56
  181. package/dist/src/ScanJobSettings.js.map +0 -1
  182. package/dist/src/ScanStatus.d.ts +0 -19
  183. package/dist/src/ScanStatus.js +0 -35
  184. package/dist/src/ScanStatus.js.map +0 -1
  185. package/dist/src/WalkupScanDestination.d.ts +0 -22
  186. package/dist/src/WalkupScanDestination.js +0 -38
  187. package/dist/src/WalkupScanDestination.js.map +0 -1
  188. package/dist/src/WalkupScanDestinations.d.ts +0 -12
  189. package/dist/src/WalkupScanDestinations.js +0 -30
  190. package/dist/src/WalkupScanDestinations.js.map +0 -1
  191. package/dist/src/WalkupScanManifest.d.ts +0 -23
  192. package/dist/src/WalkupScanManifest.js +0 -25
  193. package/dist/src/WalkupScanManifest.js.map +0 -1
  194. package/dist/src/WalkupScanToCompCaps.d.ts +0 -12
  195. package/dist/src/WalkupScanToCompCaps.js +0 -20
  196. package/dist/src/WalkupScanToCompCaps.js.map +0 -1
  197. package/dist/src/WalkupScanToCompDestination.d.ts +0 -22
  198. package/dist/src/WalkupScanToCompDestination.js +0 -38
  199. package/dist/src/WalkupScanToCompDestination.js.map +0 -1
  200. package/dist/src/WalkupScanToCompDestinations.d.ts +0 -12
  201. package/dist/src/WalkupScanToCompDestinations.js +0 -30
  202. package/dist/src/WalkupScanToCompDestinations.js.map +0 -1
  203. package/dist/src/WalkupScanToCompEvent.d.ts +0 -11
  204. package/dist/src/WalkupScanToCompEvent.js +0 -20
  205. package/dist/src/WalkupScanToCompEvent.js.map +0 -1
  206. package/dist/src/WalkupScanToCompManifest.d.ts +0 -23
  207. package/dist/src/WalkupScanToCompManifest.js +0 -25
  208. package/dist/src/WalkupScanToCompManifest.js.map +0 -1
  209. package/dist/src/delay.d.ts +0 -1
  210. package/dist/src/delay.js +0 -10
  211. package/dist/src/delay.js.map +0 -1
@@ -5,45 +5,60 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const path_1 = __importDefault(require("path"));
7
7
  const dateformat_1 = __importDefault(require("dateformat"));
8
- const { promises: Fs } = require("fs");
9
- const fs = require("fs");
10
8
  const os_1 = __importDefault(require("os"));
9
+ const fs_1 = require("fs");
10
+ const fs_2 = __importDefault(require("fs"));
11
11
  class PathHelper {
12
- static getFileForPage(folder, scanCount, currentPageNumber, filePattern, extension) {
12
+ static getFileForPage(folder, scanCount, currentPageNumber, filePattern, extension, date) {
13
13
  if (filePattern) {
14
- return path_1.default.join(folder, `${(0, dateformat_1.default)(new Date(), filePattern)}.${extension}`);
14
+ return path_1.default.join(folder, `${(0, dateformat_1.default)(date, filePattern)}.${extension}`);
15
15
  }
16
- return path_1.default.join(folder, `scan${scanCount}_page${currentPageNumber}.${extension}`);
16
+ return this.makeUnique(path_1.default.join(folder, `scan${scanCount}_page${currentPageNumber}.${extension}`), date);
17
17
  }
18
- static makeUnique(filePath) {
19
- if (!fs.existsSync(filePath)) {
18
+ static async getNextScanNumber(folder, currentScanCount, filePattern) {
19
+ if (filePattern) {
20
+ return currentScanCount++;
21
+ }
22
+ const files = await fs_1.promises.readdir(folder);
23
+ for (let i = currentScanCount + 1; i < Number.MAX_SAFE_INTEGER; i++) {
24
+ const currentScanCountProbe = `scan${i}`;
25
+ if (!(files.some((x) => x.startsWith(currentScanCountProbe)) &&
26
+ files.some((x) => x.startsWith(currentScanCountProbe + "_") ||
27
+ files.some((x) => x.startsWith(currentScanCountProbe + "."))))) {
28
+ return i;
29
+ }
30
+ }
31
+ return Promise.reject(`Unable to find the valid scan number in folder ${folder}`);
32
+ }
33
+ static makeUnique(filePath, date) {
34
+ if (!fs_2.default.existsSync(filePath)) {
20
35
  return filePath;
21
36
  }
22
37
  let parsed = path_1.default.parse(filePath);
23
- let tryName = `${parsed.dir}${path_1.default.sep}${parsed.name}${(0, dateformat_1.default)(new Date(), "yyyymmdd")}${parsed.ext}`;
24
- if (!fs.existsSync(tryName)) {
38
+ let tryName = `${parsed.dir}${path_1.default.sep}${parsed.name}_${(0, dateformat_1.default)(date, "yyyymmdd")}${parsed.ext}`;
39
+ if (!fs_2.default.existsSync(tryName)) {
25
40
  return tryName;
26
41
  }
27
42
  parsed = path_1.default.parse(tryName);
28
43
  let i = "a";
29
44
  while (i <= "z") {
30
45
  tryName = `${parsed.dir}${path_1.default.sep}${parsed.name}_${i}${parsed.ext}`;
31
- if (!fs.existsSync(tryName)) {
46
+ if (!fs_2.default.existsSync(tryName)) {
32
47
  return tryName;
33
48
  }
34
49
  i = String.fromCharCode(i.charCodeAt(0) + 1);
35
50
  }
36
51
  throw new Error(`Can not create unique file: ${filePath} iterated until: ${tryName}`);
37
52
  }
38
- static getFileForScan(folder, scanCount, filePattern, extension) {
53
+ static getFileForScan(folder, scanCount, filePattern, extension, date) {
39
54
  if (filePattern) {
40
- return path_1.default.join(folder, `${(0, dateformat_1.default)(new Date(), filePattern)}.${extension}`);
55
+ return path_1.default.join(folder, `${(0, dateformat_1.default)(date, filePattern)}.${extension}`);
41
56
  }
42
57
  return path_1.default.join(folder, `scan${scanCount}.${extension}`);
43
58
  }
44
59
  static async getOutputFolder(folder) {
45
60
  if (typeof folder !== "string") {
46
- return Fs.mkdtemp(path_1.default.join(os_1.default.tmpdir(), "scan-to-pc"));
61
+ return fs_1.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), "scan-to-pc"));
47
62
  }
48
63
  return folder;
49
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PathHelper.js","sourceRoot":"","sources":["../src/PathHelper.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4DAAoC;AACpC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,4CAAoB;AAEpB,MAAqB,UAAU;IAC7B,MAAM,CAAC,cAAc,CACnB,MAAc,EACd,SAAiB,EACjB,iBAAyB,EACzB,WAA+B,EAC/B,SAAiB;QAEjB,IAAI,WAAW,EAAE;YACf,OAAO,cAAI,CAAC,IAAI,CACd,MAAM,EACN,GAAG,IAAA,oBAAU,EAAC,IAAI,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CACtD,CAAC;SACH;QAED,OAAO,cAAI,CAAC,IAAI,CACd,MAAM,EACN,OAAO,SAAS,QAAQ,iBAAiB,IAAI,SAAS,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAgB;QAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,QAAQ,CAAC;SACjB;QAED,IAAI,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,IAAA,oBAAU,EAC/D,IAAI,IAAI,EAAE,EACV,UAAU,CACX,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,GAAG,EAAE;YACf,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC3B,OAAO,OAAO,CAAC;aAChB;YACD,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,oBAAoB,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,MAAc,EACd,SAAiB,EACjB,WAA+B,EAC/B,SAAiB;QAEjB,IAAI,WAAW,EAAE;YACf,OAAO,cAAI,CAAC,IAAI,CACd,MAAM,EACN,GAAG,IAAA,oBAAU,EAAC,IAAI,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CACtD,CAAC;SACH;QAED,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAA2B;QACtD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAvED,6BAuEC","sourcesContent":["import path from \"path\";\nimport dateformat from \"dateformat\";\nconst { promises: Fs } = require(\"fs\");\nconst fs = require(\"fs\");\nimport os from \"os\";\n\nexport default class PathHelper {\n static getFileForPage(\n folder: string,\n scanCount: number,\n currentPageNumber: number,\n filePattern: string | undefined,\n extension: string\n ): string {\n if (filePattern) {\n return path.join(\n folder,\n `${dateformat(new Date(), filePattern)}.${extension}`\n );\n }\n\n return path.join(\n folder,\n `scan${scanCount}_page${currentPageNumber}.${extension}`\n );\n }\n\n static makeUnique(filePath: string): string {\n if (!fs.existsSync(filePath)) {\n return filePath;\n }\n\n let parsed = path.parse(filePath);\n let tryName = `${parsed.dir}${path.sep}${parsed.name}${dateformat(\n new Date(),\n \"yyyymmdd\"\n )}${parsed.ext}`;\n if (!fs.existsSync(tryName)) {\n return tryName;\n }\n\n parsed = path.parse(tryName);\n let i = \"a\";\n while (i <= \"z\") {\n tryName = `${parsed.dir}${path.sep}${parsed.name}_${i}${parsed.ext}`;\n if (!fs.existsSync(tryName)) {\n return tryName;\n }\n i = String.fromCharCode(i.charCodeAt(0) + 1);\n }\n throw new Error(\n `Can not create unique file: ${filePath} iterated until: ${tryName}`\n );\n }\n\n static getFileForScan(\n folder: string,\n scanCount: number,\n filePattern: string | undefined,\n extension: string\n ): string {\n if (filePattern) {\n return path.join(\n folder,\n `${dateformat(new Date(), filePattern)}.${extension}`\n );\n }\n\n return path.join(folder, `scan${scanCount}.${extension}`);\n }\n\n static async getOutputFolder(folder?: string | undefined): Promise<string> {\n if (typeof folder !== \"string\") {\n return Fs.mkdtemp(path.join(os.tmpdir(), \"scan-to-pc\"));\n }\n return folder;\n }\n}\n"]}
1
+ {"version":3,"file":"PathHelper.js","sourceRoot":"","sources":["../src/PathHelper.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4DAAoC;AACpC,4CAAoB;AACpB,2BAAoC;AACpC,4CAAoB;AAEpB,MAAqB,UAAU;IAC7B,MAAM,CAAC,cAAc,CACnB,MAAc,EACd,SAAiB,EACjB,iBAAyB,EACzB,WAA+B,EAC/B,SAAiB,EACjB,IAAU;QAEV,IAAI,WAAW,EAAE;YACf,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAA,oBAAU,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;SAC3E;QAED,OAAO,IAAI,CAAC,UAAU,CACpB,cAAI,CAAC,IAAI,CACP,MAAM,EACN,OAAO,SAAS,QAAQ,iBAAiB,IAAI,SAAS,EAAE,CACzD,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAC5B,MAAc,EACd,gBAAwB,EACxB,WAA+B;QAE/B,IAAI,WAAW,EAAE;YACf,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QACD,MAAM,KAAK,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,gBAAgB,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE;YACnE,MAAM,qBAAqB,GAAG,OAAO,CAAC,EAAE,CAAC;YACzC,IACE,CAAC,CACC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBACtD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,qBAAqB,GAAG,GAAG,CAAC;oBACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAC/D,CACF,EACD;gBACA,OAAO,CAAC,CAAC;aACV;SACF;QACD,OAAO,OAAO,CAAC,MAAM,CACnB,kDAAkD,MAAM,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAgB,EAAE,IAAU;QAC5C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,QAAQ,CAAC;SACjB;QAED,IAAI,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,IAAA,oBAAU,EAChE,IAAI,EACJ,UAAU,CACX,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,GAAG,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,OAAO,CAAC,IAAI,GAAG,EAAE;YACf,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,cAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACrE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC3B,OAAO,OAAO,CAAC;aAChB;YACD,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,oBAAoB,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,MAAc,EACd,SAAiB,EACjB,WAA+B,EAC/B,SAAiB,EACjB,IAAU;QAEV,IAAI,WAAW,EAAE;YACf,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAA,oBAAU,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;SAC3E;QAED,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAA2B;QACtD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,aAAE,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnGD,6BAmGC","sourcesContent":["import path from \"path\";\nimport dateformat from \"dateformat\";\nimport os from \"os\";\nimport { promises as Fs } from \"fs\";\nimport fs from \"fs\";\n\nexport default class PathHelper {\n static getFileForPage(\n folder: string,\n scanCount: number,\n currentPageNumber: number,\n filePattern: string | undefined,\n extension: string,\n date: Date,\n ): string {\n if (filePattern) {\n return path.join(folder, `${dateformat(date, filePattern)}.${extension}`);\n }\n\n return this.makeUnique(\n path.join(\n folder,\n `scan${scanCount}_page${currentPageNumber}.${extension}`,\n ),\n date,\n );\n }\n\n static async getNextScanNumber(\n folder: string,\n currentScanCount: number,\n filePattern: string | undefined,\n ): Promise<number> {\n if (filePattern) {\n return currentScanCount++;\n }\n const files = await Fs.readdir(folder);\n for (let i = currentScanCount + 1; i < Number.MAX_SAFE_INTEGER; i++) {\n const currentScanCountProbe = `scan${i}`;\n if (\n !(\n files.some((x) => x.startsWith(currentScanCountProbe)) &&\n files.some(\n (x) =>\n x.startsWith(currentScanCountProbe + \"_\") ||\n files.some((x) => x.startsWith(currentScanCountProbe + \".\")),\n )\n )\n ) {\n return i;\n }\n }\n return Promise.reject(\n `Unable to find the valid scan number in folder ${folder}`,\n );\n }\n\n static makeUnique(filePath: string, date: Date): string {\n if (!fs.existsSync(filePath)) {\n return filePath;\n }\n\n let parsed = path.parse(filePath);\n let tryName = `${parsed.dir}${path.sep}${parsed.name}_${dateformat(\n date,\n \"yyyymmdd\",\n )}${parsed.ext}`;\n if (!fs.existsSync(tryName)) {\n return tryName;\n }\n\n parsed = path.parse(tryName);\n let i = \"a\";\n while (i <= \"z\") {\n tryName = `${parsed.dir}${path.sep}${parsed.name}_${i}${parsed.ext}`;\n if (!fs.existsSync(tryName)) {\n return tryName;\n }\n i = String.fromCharCode(i.charCodeAt(0) + 1);\n }\n throw new Error(\n `Can not create unique file: ${filePath} iterated until: ${tryName}`,\n );\n }\n\n static getFileForScan(\n folder: string,\n scanCount: number,\n filePattern: string | undefined,\n extension: string,\n date: Date,\n ): string {\n if (filePattern) {\n return path.join(folder, `${dateformat(date, filePattern)}.${extension}`);\n }\n\n return path.join(folder, `scan${scanCount}.${extension}`);\n }\n\n static async getOutputFolder(folder?: string | undefined): Promise<string> {\n if (typeof folder !== \"string\") {\n return Fs.mkdtemp(path.join(os.tmpdir(), \"scan-to-pc\"));\n }\n return folder;\n }\n}\n"]}
@@ -1,7 +1,25 @@
1
1
  export interface ScanCapsData {
2
+ ScanCaps: {
3
+ Platen: {
4
+ InputSourceCaps: {
5
+ MaxWidth: string[];
6
+ MaxHeight: string[];
7
+ }[];
8
+ }[];
9
+ Adf: {
10
+ InputSourceCaps: {
11
+ MaxWidth: string[];
12
+ MaxHeight: string[];
13
+ }[];
14
+ }[];
15
+ };
2
16
  }
3
17
  export default class ScanCaps {
4
18
  private readonly data;
5
19
  constructor(data: ScanCapsData);
6
20
  static createScanCaps(content: string): Promise<ScanCaps>;
21
+ get platenMaxWidth(): number | null;
22
+ get platenMaxHeight(): number | null;
23
+ get adfMaxWidth(): number | null;
24
+ get adfMaxHeight(): number | null;
7
25
  }
package/dist/ScanCaps.js CHANGED
@@ -12,6 +12,28 @@ class ScanCaps {
12
12
  const parsed = await parseString(content);
13
13
  return new ScanCaps(parsed);
14
14
  }
15
+ get platenMaxWidth() {
16
+ return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxWidth"][0], 10);
17
+ }
18
+ get platenMaxHeight() {
19
+ return Number.parseInt(this.data["ScanCaps"]["Platen"][0]["InputSourceCaps"][0]["MaxHeight"][0], 10);
20
+ }
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
+ }
28
+ }
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
+ }
36
+ }
15
37
  }
16
38
  exports.default = ScanCaps;
17
39
  //# sourceMappingURL=ScanCaps.js.map
@@ -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;AAGxE,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;CACF;AAXD,2BAWC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanCapsData>(parser.parseString);\nexport interface ScanCapsData {}\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"]}
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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ScanContent.js","sourceRoot":"","sources":["../src/ScanContent.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAE7B,iCAA8B;AAcvB,KAAK,UAAU,aAAa,CACjC,WAAwB,EACxB,WAAmB;IAEnB,IAAI,GAAG,GAAiB,IAAI,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;QAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5D,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAE/C,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,IAAI,aAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5D;aAAM;YACL,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACrB;QAED,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;KAC5E;IACD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzB,CAAC;AApBD,sCAoBC","sourcesContent":["import fs from \"fs/promises\";\n\nimport { jsPDF } from \"jspdf\";\n\nexport interface ScanContent {\n elements: ScanPage[];\n}\nexport interface ScanPage {\n path: string;\n pageNumber: number;\n width: number;\n height: number;\n xResolution: number;\n yResolution: number;\n}\n\nexport async function createPdfFrom(\n scanContent: ScanContent,\n destination: string\n) {\n let doc: jsPDF | null = null;\n for (const element of scanContent.elements) {\n const widthInInches = element.width / element.xResolution;\n const heightInInches = element.height / element.yResolution;\n const format = [widthInInches, heightInInches];\n\n if (doc == null) {\n doc = new jsPDF({ unit: \"in\", floatPrecision: 3, format });\n } else {\n doc.addPage(format);\n }\n\n const imageByteBuffer = await fs.readFile(element.path);\n doc.addImage(imageByteBuffer, \"JPEG\", 0, 0, widthInInches, heightInInches);\n }\n doc?.save(destination);\n}\n"]}
1
+ {"version":3,"file":"ScanContent.js","sourceRoot":"","sources":["../src/ScanContent.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAE7B,iCAA8B;AAcvB,KAAK,UAAU,aAAa,CACjC,WAAwB,EACxB,WAAmB;IAEnB,IAAI,GAAG,GAAiB,IAAI,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE;QAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5D,MAAM,MAAM,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAE/C,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,IAAI,aAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5D;aAAM;YACL,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACrB;QAED,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;KAC5E;IACD,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzB,CAAC;AApBD,sCAoBC","sourcesContent":["import fs from \"fs/promises\";\n\nimport { jsPDF } from \"jspdf\";\n\nexport interface ScanContent {\n elements: ScanPage[];\n}\nexport interface ScanPage {\n path: string;\n pageNumber: number;\n width: number;\n height: number;\n xResolution: number;\n yResolution: number;\n}\n\nexport async function createPdfFrom(\n scanContent: ScanContent,\n destination: string,\n) {\n let doc: jsPDF | null = null;\n for (const element of scanContent.elements) {\n const widthInInches = element.width / element.xResolution;\n const heightInInches = element.height / element.yResolution;\n const format = [widthInInches, heightInInches];\n\n if (doc == null) {\n doc = new jsPDF({ unit: \"in\", floatPrecision: 3, format });\n } else {\n doc.addPage(format);\n }\n\n const imageByteBuffer = await fs.readFile(element.path);\n doc.addImage(imageByteBuffer, \"JPEG\", 0, 0, widthInInches, heightInInches);\n }\n doc?.save(destination);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ScanJobManifest.js","sourceRoot":"","sources":["../src/ScanJobManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAA8B,MAAM,CAAC,WAAW,CAAC,CAAC;AAoB/E,MAAqB,eAAe;IAGlC,YAAY,IAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAChC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAChE,kBAAkB,CACnB,CAAC,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAC3E,CAAC;QAEF,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;CACF;AA9BD,kCA8BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanJobManifestData>(parser.parseString);\n\nexport interface ScanJobManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"scan:ScanResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class ScanJobManifest {\n private readonly data: ScanJobManifestData;\n\n constructor(data: ScanJobManifestData) {\n this.data = data;\n }\n static async createScanJobManifest(\n content: string\n ): Promise<ScanJobManifest> {\n const parsed = await parseString(content);\n return new ScanJobManifest(parsed);\n }\n\n get ScanCapsURI(): string | null {\n const scanCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\n \"map:ResourceNode\"\n ].find(\n (x) => x[\"map:ResourceType\"][0][\"scan:ScanResourceType\"][0] === \"ScanCaps\"\n );\n\n if (scanCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + scanCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ScanJobManifest.js","sourceRoot":"","sources":["../src/ScanJobManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAA8B,MAAM,CAAC,WAAW,CAAC,CAAC;AAoB/E,MAAqB,eAAe;IAGlC,YAAY,IAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAChC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAChE,kBAAkB,CACnB,CAAC,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CACtE,CAAC;QAEF,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;CACF;AA/BD,kCA+BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanJobManifestData>(parser.parseString);\n\nexport interface ScanJobManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"scan:ScanResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class ScanJobManifest {\n private readonly data: ScanJobManifestData;\n\n constructor(data: ScanJobManifestData) {\n this.data = data;\n }\n static async createScanJobManifest(\n content: string,\n ): Promise<ScanJobManifest> {\n const parsed = await parseString(content);\n return new ScanJobManifest(parsed);\n }\n\n get ScanCapsURI(): string | null {\n const scanCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\n \"map:ResourceNode\"\n ].find(\n (x) =>\n x[\"map:ResourceType\"][0][\"scan:ScanResourceType\"][0] === \"ScanCaps\",\n );\n\n if (scanCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + scanCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}
@@ -1,8 +1,11 @@
1
+ import { InputSource } from "./InputSource";
1
2
  export default class ScanJobSettings {
2
3
  private readonly inputSource;
3
4
  private readonly contentType;
4
5
  private readonly resolution;
6
+ private readonly width;
7
+ private readonly height;
5
8
  private readonly isDuplex;
6
- constructor(inputSource: "Adf" | "Platen", contentType: "Document" | "Photo", resolution: number, isDuplex: boolean);
9
+ constructor(inputSource: InputSource, contentType: "Document" | "Photo", resolution: number, width: number | null, height: number | null, isDuplex: boolean);
7
10
  toXML(): Promise<string>;
8
11
  }
@@ -1,13 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const xml2js = require("xml2js");
4
- const parser = new xml2js.Parser();
5
- const util = require("util");
6
+ const xml2js_1 = __importDefault(require("xml2js"));
7
+ const InputSource_1 = require("./InputSource");
8
+ const parser = new xml2js_1.default.Parser();
6
9
  class ScanJobSettings {
7
- constructor(inputSource, contentType, resolution, isDuplex) {
10
+ constructor(inputSource, contentType, resolution, width, height, isDuplex) {
8
11
  this.inputSource = inputSource;
9
12
  this.contentType = contentType;
10
13
  this.resolution = resolution;
14
+ this.width = width;
15
+ this.height = height;
11
16
  this.isDuplex = isDuplex;
12
17
  }
13
18
  async toXML() {
@@ -15,7 +20,7 @@ class ScanJobSettings {
15
20
  '<ScanSettings xmlns="http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19 Scan Schema - 0.26.xsd">\n' +
16
21
  "\t<XResolution>200</XResolution>\n" +
17
22
  "\t<YResolution>200</YResolution>\n" +
18
- "\t<XStart>33</XStart>\n" +
23
+ "\t<XStart>0</XStart>\n" +
19
24
  "\t<YStart>0</YStart>\n" +
20
25
  "\t<Width>2481</Width>\n" +
21
26
  "\t<Height>3507</Height>\n" +
@@ -37,15 +42,21 @@ class ScanJobSettings {
37
42
  "\t<NoiseRemoval>0</NoiseRemoval>\n" +
38
43
  "\t<ContentType>Document</ContentType>\n" +
39
44
  "</ScanSettings>";
40
- const parsed = await util.promisify(parser.parseString)(rawJob);
45
+ const parsed = await parser.parseStringPromise(rawJob);
41
46
  parsed.ScanSettings.XResolution[0] = this.resolution;
42
47
  parsed.ScanSettings.YResolution[0] = this.resolution;
48
+ if (this.width !== null) {
49
+ parsed.ScanSettings.Width = this.width;
50
+ }
51
+ if (this.height !== null) {
52
+ parsed.ScanSettings.Height = this.height;
53
+ }
43
54
  parsed.ScanSettings.InputSource[0] = this.inputSource;
44
- if (this.inputSource === "Adf" && this.isDuplex) {
55
+ if (this.inputSource === InputSource_1.InputSource.Adf && this.isDuplex) {
45
56
  parsed.ScanSettings["AdfOptions"] = [{ AdfOption: ["Duplex"] }];
46
57
  }
47
58
  parsed.ScanSettings.ContentType[0] = this.contentType;
48
- let builder = new xml2js.Builder({
59
+ let builder = new xml2js_1.default.Builder({
49
60
  xmldec: { version: "1.0", encoding: "UTF-8", standalone: false },
50
61
  renderOpts: { pretty: true, indent: "\t", newline: "\n" },
51
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ScanJobSettings.js","sourceRoot":"","sources":["../src/ScanJobSettings.ts"],"names":[],"mappings":";;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACnC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAqB,eAAe;IAMlC,YACE,WAA6B,EAC7B,WAAiC,EACjC,UAAkB,EAClB,QAAiB;QAEjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,MAAM,GACR,0CAA0C;YAC1C,gPAAgP;YAChP,oCAAoC;YACpC,oCAAoC;YACpC,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,2BAA2B;YAC3B,2BAA2B;YAC3B,gDAAgD;YAChD,oCAAoC;YACpC,4BAA4B;YAC5B,oCAAoC;YACpC,yCAAyC;YACzC,eAAe;YACf,2BAA2B;YAC3B,qCAAqC;YACrC,iCAAiC;YACjC,gCAAgC;YAChC,2BAA2B;YAC3B,gCAAgC;YAChC,gBAAgB;YAChB,4CAA4C;YAC5C,oCAAoC;YACpC,yCAAyC;YACzC,iBAAiB,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAErD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACtD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAEtD,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;YAChE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC1D,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACF;AAjED,kCAiEC","sourcesContent":["const xml2js = require(\"xml2js\");\nconst parser = new xml2js.Parser();\nconst util = require(\"util\");\n\nexport default class ScanJobSettings {\n private readonly inputSource: \"Adf\" | \"Platen\";\n private readonly contentType: \"Document\" | \"Photo\";\n private readonly resolution: number;\n private readonly isDuplex: boolean;\n\n constructor(\n inputSource: \"Adf\" | \"Platen\",\n contentType: \"Document\" | \"Photo\",\n resolution: number,\n isDuplex: boolean\n ) {\n this.inputSource = inputSource;\n this.contentType = contentType;\n this.resolution = resolution;\n this.isDuplex = isDuplex;\n }\n\n async toXML(): Promise<string> {\n let rawJob =\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n '<ScanSettings xmlns=\"http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19 Scan Schema - 0.26.xsd\">\\n' +\n \"\\t<XResolution>200</XResolution>\\n\" +\n \"\\t<YResolution>200</YResolution>\\n\" +\n \"\\t<XStart>33</XStart>\\n\" +\n \"\\t<YStart>0</YStart>\\n\" +\n \"\\t<Width>2481</Width>\\n\" +\n \"\\t<Height>3507</Height>\\n\" +\n \"\\t<Format>Jpeg</Format>\\n\" +\n \"\\t<CompressionQFactor>0</CompressionQFactor>\\n\" +\n \"\\t<ColorSpace>Color</ColorSpace>\\n\" +\n \"\\t<BitDepth>8</BitDepth>\\n\" +\n \"\\t<InputSource>Adf</InputSource>\\n\" +\n \"\\t<GrayRendering>NTSC</GrayRendering>\\n\" +\n \"\\t<ToneMap>\\n\" +\n \"\\t\\t<Gamma>1000</Gamma>\\n\" +\n \"\\t\\t<Brightness>1000</Brightness>\\n\" +\n \"\\t\\t<Contrast>1000</Contrast>\\n\" +\n \"\\t\\t<Highlite>179</Highlite>\\n\" +\n \"\\t\\t<Shadow>25</Shadow>\\n\" +\n \"\\t\\t<Threshold>0</Threshold>\\n\" +\n \"\\t</ToneMap>\\n\" +\n \"\\t<SharpeningLevel>128</SharpeningLevel>\\n\" +\n \"\\t<NoiseRemoval>0</NoiseRemoval>\\n\" +\n \"\\t<ContentType>Document</ContentType>\\n\" +\n \"</ScanSettings>\";\n\n const parsed = await util.promisify(parser.parseString)(rawJob);\n\n parsed.ScanSettings.XResolution[0] = this.resolution;\n parsed.ScanSettings.YResolution[0] = this.resolution;\n\n parsed.ScanSettings.InputSource[0] = this.inputSource;\n if (this.inputSource === \"Adf\" && this.isDuplex) {\n parsed.ScanSettings[\"AdfOptions\"] = [{ AdfOption: [\"Duplex\"] }];\n }\n parsed.ScanSettings.ContentType[0] = this.contentType;\n\n let builder = new xml2js.Builder({\n xmldec: { version: \"1.0\", encoding: \"UTF-8\", standalone: false },\n renderOpts: { pretty: true, indent: \"\\t\", newline: \"\\n\" },\n });\n\n return builder.buildObject(parsed);\n }\n}\n"]}
1
+ {"version":3,"file":"ScanJobSettings.js","sourceRoot":"","sources":["../src/ScanJobSettings.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,+CAA4C;AAE5C,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,MAAM,EAAE,CAAC;AACnC,MAAqB,eAAe;IAQlC,YACE,WAAwB,EACxB,WAAiC,EACjC,UAAkB,EAClB,KAAoB,EACpB,MAAqB,EACrB,QAAiB;QAEjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,MAAM,GACR,0CAA0C;YAC1C,gPAAgP;YAChP,oCAAoC;YACpC,oCAAoC;YACpC,wBAAwB;YACxB,wBAAwB;YACxB,yBAAyB;YACzB,2BAA2B;YAC3B,2BAA2B;YAC3B,gDAAgD;YAChD,oCAAoC;YACpC,4BAA4B;YAC5B,oCAAoC;YACpC,yCAAyC;YACzC,eAAe;YACf,2BAA2B;YAC3B,qCAAqC;YACrC,iCAAiC;YACjC,gCAAgC;YAChC,2BAA2B;YAC3B,gCAAgC;YAChC,gBAAgB;YAChB,4CAA4C;YAC5C,oCAAoC;YACpC,yCAAyC;YACzC,iBAAiB,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAErD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACvB,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACxB,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC1C;QAED,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACtD,IAAI,IAAI,CAAC,WAAW,KAAK,yBAAW,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzD,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAEtD,IAAI,OAAO,GAAG,IAAI,gBAAM,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;YAChE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC1D,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACF;AA/ED,kCA+EC","sourcesContent":["import xml2js from \"xml2js\";\nimport { InputSource } from \"./InputSource\";\n\nconst parser = new xml2js.Parser();\nexport default class ScanJobSettings {\n private readonly inputSource: InputSource;\n private readonly contentType: \"Document\" | \"Photo\";\n private readonly resolution: number;\n private readonly width: number | null;\n private readonly height: number | null;\n private readonly isDuplex: boolean;\n\n constructor(\n inputSource: InputSource,\n contentType: \"Document\" | \"Photo\",\n resolution: number,\n width: number | null,\n height: number | null,\n isDuplex: boolean,\n ) {\n this.inputSource = inputSource;\n this.contentType = contentType;\n this.resolution = resolution;\n this.width = width;\n this.height = height;\n this.isDuplex = isDuplex;\n }\n\n async toXML(): Promise<string> {\n let rawJob =\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n '<ScanSettings xmlns=\"http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/cnx/scan/2008/08/19 Scan Schema - 0.26.xsd\">\\n' +\n \"\\t<XResolution>200</XResolution>\\n\" +\n \"\\t<YResolution>200</YResolution>\\n\" +\n \"\\t<XStart>0</XStart>\\n\" +\n \"\\t<YStart>0</YStart>\\n\" +\n \"\\t<Width>2481</Width>\\n\" +\n \"\\t<Height>3507</Height>\\n\" +\n \"\\t<Format>Jpeg</Format>\\n\" +\n \"\\t<CompressionQFactor>0</CompressionQFactor>\\n\" +\n \"\\t<ColorSpace>Color</ColorSpace>\\n\" +\n \"\\t<BitDepth>8</BitDepth>\\n\" +\n \"\\t<InputSource>Adf</InputSource>\\n\" +\n \"\\t<GrayRendering>NTSC</GrayRendering>\\n\" +\n \"\\t<ToneMap>\\n\" +\n \"\\t\\t<Gamma>1000</Gamma>\\n\" +\n \"\\t\\t<Brightness>1000</Brightness>\\n\" +\n \"\\t\\t<Contrast>1000</Contrast>\\n\" +\n \"\\t\\t<Highlite>179</Highlite>\\n\" +\n \"\\t\\t<Shadow>25</Shadow>\\n\" +\n \"\\t\\t<Threshold>0</Threshold>\\n\" +\n \"\\t</ToneMap>\\n\" +\n \"\\t<SharpeningLevel>128</SharpeningLevel>\\n\" +\n \"\\t<NoiseRemoval>0</NoiseRemoval>\\n\" +\n \"\\t<ContentType>Document</ContentType>\\n\" +\n \"</ScanSettings>\";\n\n const parsed = await parser.parseStringPromise(rawJob);\n\n parsed.ScanSettings.XResolution[0] = this.resolution;\n parsed.ScanSettings.YResolution[0] = this.resolution;\n\n if (this.width !== null) {\n parsed.ScanSettings.Width = this.width;\n }\n\n if (this.height !== null) {\n parsed.ScanSettings.Height = this.height;\n }\n\n parsed.ScanSettings.InputSource[0] = this.inputSource;\n if (this.inputSource === InputSource.Adf && this.isDuplex) {\n parsed.ScanSettings[\"AdfOptions\"] = [{ AdfOption: [\"Duplex\"] }];\n }\n parsed.ScanSettings.ContentType[0] = this.contentType;\n\n let builder = new xml2js.Builder({\n xmldec: { version: \"1.0\", encoding: \"UTF-8\", standalone: false },\n renderOpts: { pretty: true, indent: \"\\t\", newline: \"\\n\" },\n });\n\n return builder.buildObject(parsed);\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { InputSource } from "./InputSource";
1
2
  export interface ScanStatusData {
2
3
  ScanStatus: {
3
4
  ScannerState: {
@@ -15,5 +16,5 @@ export default class ScanStatus {
15
16
  get scannerState(): string;
16
17
  get adfState(): string;
17
18
  isLoaded(): boolean;
18
- getInputSource(): "Adf" | "Platen";
19
+ getInputSource(): InputSource;
19
20
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const xml2js_1 = require("xml2js");
4
4
  const parser = new xml2js_1.Parser();
5
5
  const util_1 = require("util");
6
+ const InputSource_1 = require("./InputSource");
6
7
  const parseString = (0, util_1.promisify)(parser.parseString);
7
8
  class ScanStatus {
8
9
  constructor(data) {
@@ -16,7 +17,7 @@ class ScanStatus {
16
17
  return this.data["ScanStatus"].ScannerState["0"];
17
18
  }
18
19
  get adfState() {
19
- if (this.data["ScanStatus"].hasOwnProperty("AdfState")) {
20
+ if (Object.prototype.hasOwnProperty.call(this.data["ScanStatus"], "AdfState")) {
20
21
  //not all printers have an automatic document feeder
21
22
  return this.data["ScanStatus"].AdfState["0"];
22
23
  }
@@ -28,7 +29,7 @@ class ScanStatus {
28
29
  return this.adfState === "Loaded";
29
30
  }
30
31
  getInputSource() {
31
- return this.isLoaded() ? "Adf" : "Platen";
32
+ return this.isLoaded() ? InputSource_1.InputSource.Adf : InputSource_1.InputSource.Platen;
32
33
  }
33
34
  }
34
35
  exports.default = ScanStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"ScanStatus.js","sourceRoot":"","sources":["../src/ScanStatus.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAS1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACtD,oDAAoD;YACpD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9C;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACpC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5C,CAAC;CACF;AA/BD,6BA+BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, ScanStatusData>(parser.parseString);\n\nexport interface ScanStatusData {\n ScanStatus: {\n ScannerState: { \"0\": string };\n AdfState: { \"0\": string };\n };\n}\n\nexport default class ScanStatus {\n private readonly data: ScanStatusData;\n constructor(data: ScanStatusData) {\n this.data = data;\n }\n\n static async createScanStatus(content: string): Promise<ScanStatus> {\n const parsed = await parseString(content);\n return new ScanStatus(parsed);\n }\n\n get scannerState(): string {\n return this.data[\"ScanStatus\"].ScannerState[\"0\"];\n }\n\n get adfState(): string {\n if (this.data[\"ScanStatus\"].hasOwnProperty(\"AdfState\")) {\n //not all printers have an automatic document feeder\n return this.data[\"ScanStatus\"].AdfState[\"0\"];\n } else {\n return \"\";\n }\n }\n\n isLoaded(): boolean {\n return this.adfState === \"Loaded\";\n }\n\n getInputSource(): \"Adf\" | \"Platen\" {\n return this.isLoaded() ? \"Adf\" : \"Platen\";\n }\n}\n"]}
1
+ {"version":3,"file":"ScanStatus.js","sourceRoot":"","sources":["../src/ScanStatus.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,+CAA4C;AAC5C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAS1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACV,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,EACzE;YACA,oDAAoD;YACpD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9C;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACpC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,yBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAW,CAAC,MAAM,CAAC;IAChE,CAAC;CACF;AAjCD,6BAiCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nimport { InputSource } from \"./InputSource\";\nconst parseString = promisify<string, ScanStatusData>(parser.parseString);\n\nexport interface ScanStatusData {\n ScanStatus: {\n ScannerState: { \"0\": string };\n AdfState: { \"0\": string };\n };\n}\n\nexport default class ScanStatus {\n private readonly data: ScanStatusData;\n constructor(data: ScanStatusData) {\n this.data = data;\n }\n\n static async createScanStatus(content: string): Promise<ScanStatus> {\n const parsed = await parseString(content);\n return new ScanStatus(parsed);\n }\n\n get scannerState(): string {\n return this.data[\"ScanStatus\"].ScannerState[\"0\"];\n }\n\n get adfState(): string {\n if (\n Object.prototype.hasOwnProperty.call(this.data[\"ScanStatus\"], \"AdfState\")\n ) {\n //not all printers have an automatic document feeder\n return this.data[\"ScanStatus\"].AdfState[\"0\"];\n } else {\n return \"\";\n }\n }\n\n isLoaded(): boolean {\n return this.adfState === \"Loaded\";\n }\n\n getInputSource(): InputSource {\n return this.isLoaded() ? InputSource.Adf : InputSource.Platen;\n }\n}\n"]}
@@ -22,13 +22,13 @@ class WalkupScanDestination {
22
22
  return this.data["dd:ResourceURI"][0];
23
23
  }
24
24
  get shortcut() {
25
- if (this.data.hasOwnProperty("wus:WalkupScanSettings")) {
25
+ if (Object.prototype.hasOwnProperty.call(this.data, "wus:WalkupScanSettings")) {
26
26
  return this.data["wus:WalkupScanSettings"]["0"]["wus:Shortcut"][0];
27
27
  }
28
28
  return null;
29
29
  }
30
30
  get scanPlexMode() {
31
- if (this.data.hasOwnProperty("wus:WalkupScanSettings")) {
31
+ if (Object.prototype.hasOwnProperty.call(this.data, "wus:WalkupScanSettings")) {
32
32
  return this.data["wus:WalkupScanSettings"]["0"]["scantype:ScanSettings"][0]["dd:ScanPlexMode"][0];
33
33
  }
34
34
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanDestination.js","sourceRoot":"","sources":["../src/WalkupScanDestination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,+BAAiC;AAGjC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,qBAAqB;IAExC,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,2BAA2B,CACtC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,qBAAqB,CAC9B,MAAM,CAAC,4BAA4B,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAC7C,uBAAuB,CACxB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzCD,wCAyCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nimport { promisify } from \"util\";\nimport { KnownShortcut } from \"./KnownShortcut\";\n\nconst parser = new Parser();\nconst parseString = promisify<string, WalkupScanDestinationsData>(\n parser.parseString\n);\n\ninterface WalkupScanDestinationsData {\n \"wus:WalkupScanDestinations\": {\n \"wus:WalkupScanDestination\": WalkupScanDestinationData[];\n };\n}\n\nexport interface WalkupScanDestinationData {\n \"dd:Name\": string[];\n \"dd3:Hostname\": string[];\n \"dd:ResourceURI\": string[];\n \"wus:WalkupScanSettings\": {\n \"scantype:ScanSettings\": {\n \"dd:ScanPlexMode\": string[];\n }[];\n \"wus:Shortcut\": KnownShortcut[];\n }[];\n}\n\nexport default class WalkupScanDestination {\n private readonly data: WalkupScanDestinationData;\n constructor(data: WalkupScanDestinationData) {\n this.data = data;\n }\n static async createWalkupScanDestination(\n content: string\n ): Promise<WalkupScanDestination> {\n const parsed = await parseString(content);\n return new WalkupScanDestination(\n parsed[\"wus:WalkupScanDestinations\"][\"wus:WalkupScanDestination\"][0]\n );\n }\n\n get name(): string {\n return this.data[\"dd:Name\"][0];\n }\n\n get hostname(): string {\n return this.data[\"dd3:Hostname\"][0];\n }\n\n get resourceURI(): string {\n return this.data[\"dd:ResourceURI\"][0];\n }\n\n get shortcut(): null | KnownShortcut {\n if (this.data.hasOwnProperty(\"wus:WalkupScanSettings\")) {\n return this.data[\"wus:WalkupScanSettings\"][\"0\"][\"wus:Shortcut\"][0];\n }\n return null;\n }\n\n get scanPlexMode(): string | null {\n if (this.data.hasOwnProperty(\"wus:WalkupScanSettings\")) {\n return this.data[\"wus:WalkupScanSettings\"][\"0\"][\n \"scantype:ScanSettings\"\n ][0][\"dd:ScanPlexMode\"][0];\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanDestination.js","sourceRoot":"","sources":["../src/WalkupScanDestination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,+BAAiC;AAGjC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,qBAAqB;IAExC,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,2BAA2B,CACtC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,qBAAqB,CAC9B,MAAM,CAAC,4BAA4B,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,EACzE;YACA,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,EACzE;YACA,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAC7C,uBAAuB,CACxB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA7CD,wCA6CC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nimport { promisify } from \"util\";\nimport { KnownShortcut } from \"./KnownShortcut\";\n\nconst parser = new Parser();\nconst parseString = promisify<string, WalkupScanDestinationsData>(\n parser.parseString,\n);\n\ninterface WalkupScanDestinationsData {\n \"wus:WalkupScanDestinations\": {\n \"wus:WalkupScanDestination\": WalkupScanDestinationData[];\n };\n}\n\nexport interface WalkupScanDestinationData {\n \"dd:Name\": string[];\n \"dd3:Hostname\": string[];\n \"dd:ResourceURI\": string[];\n \"wus:WalkupScanSettings\": {\n \"scantype:ScanSettings\": {\n \"dd:ScanPlexMode\": string[];\n }[];\n \"wus:Shortcut\": KnownShortcut[];\n }[];\n}\n\nexport default class WalkupScanDestination {\n private readonly data: WalkupScanDestinationData;\n constructor(data: WalkupScanDestinationData) {\n this.data = data;\n }\n static async createWalkupScanDestination(\n content: string,\n ): Promise<WalkupScanDestination> {\n const parsed = await parseString(content);\n return new WalkupScanDestination(\n parsed[\"wus:WalkupScanDestinations\"][\"wus:WalkupScanDestination\"][0],\n );\n }\n\n get name(): string {\n return this.data[\"dd:Name\"][0];\n }\n\n get hostname(): string {\n return this.data[\"dd3:Hostname\"][0];\n }\n\n get resourceURI(): string {\n return this.data[\"dd:ResourceURI\"][0];\n }\n\n get shortcut(): null | KnownShortcut {\n if (\n Object.prototype.hasOwnProperty.call(this.data, \"wus:WalkupScanSettings\")\n ) {\n return this.data[\"wus:WalkupScanSettings\"][\"0\"][\"wus:Shortcut\"][0];\n }\n return null;\n }\n\n get scanPlexMode(): string | null {\n if (\n Object.prototype.hasOwnProperty.call(this.data, \"wus:WalkupScanSettings\")\n ) {\n return this.data[\"wus:WalkupScanSettings\"][\"0\"][\n \"scantype:ScanSettings\"\n ][0][\"dd:ScanPlexMode\"][0];\n }\n return null;\n }\n}\n"]}
@@ -18,7 +18,7 @@ class WalkupScanDestinations {
18
18
  }
19
19
  get destinations() {
20
20
  let walkupScanDestinations = this.data["wus:WalkupScanDestinations"];
21
- if (walkupScanDestinations.hasOwnProperty("wus:WalkupScanDestination")) {
21
+ if (Object.prototype.hasOwnProperty.call(walkupScanDestinations, "wus:WalkupScanDestination")) {
22
22
  return walkupScanDestinations["wus:WalkupScanDestination"].map((x) => new WalkupScanDestination_1.default(x));
23
23
  }
24
24
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanDestinations.js","sourceRoot":"","sources":["../src/WalkupScanDestinations.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAEF,oFAEiC;AAQjC,MAAqB,sBAAsB;IAEzC,YAAY,IAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,4BAA4B,CACvC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,YAAY;QACd,IAAI,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrE,IAAI,sBAAsB,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE;YACtE,OAAO,sBAAsB,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,+BAAqB,CAAC,CAAC,CAAC,CACpC,CAAC;SACH;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAtBD,yCAsBC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanDestinationsData>(\n parser.parseString\n);\n\nimport WalkupScanDestination, {\n WalkupScanDestinationData,\n} from \"./WalkupScanDestination\";\n\nexport interface WalkupScanDestinationsData {\n \"wus:WalkupScanDestinations\": {\n \"wus:WalkupScanDestination\": WalkupScanDestinationData[];\n };\n}\n\nexport default class WalkupScanDestinations {\n private readonly data: WalkupScanDestinationsData;\n constructor(data: WalkupScanDestinationsData) {\n this.data = data;\n }\n static async createWalkupScanDestinations(\n content: string\n ): Promise<WalkupScanDestinations> {\n const parsed = await parseString(content);\n return new WalkupScanDestinations(parsed);\n }\n\n get destinations(): WalkupScanDestination[] {\n let walkupScanDestinations = this.data[\"wus:WalkupScanDestinations\"];\n if (walkupScanDestinations.hasOwnProperty(\"wus:WalkupScanDestination\")) {\n return walkupScanDestinations[\"wus:WalkupScanDestination\"].map(\n (x) => new WalkupScanDestination(x)\n );\n } else {\n return [];\n }\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanDestinations.js","sourceRoot":"","sources":["../src/WalkupScanDestinations.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAEF,oFAEiC;AAQjC,MAAqB,sBAAsB;IAEzC,YAAY,IAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,4BAA4B,CACvC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,YAAY;QACd,IAAI,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrE,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAClC,sBAAsB,EACtB,2BAA2B,CAC5B,EACD;YACA,OAAO,sBAAsB,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,+BAAqB,CAAC,CAAC,CAAC,CACpC,CAAC;SACH;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AA3BD,yCA2BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanDestinationsData>(\n parser.parseString,\n);\n\nimport WalkupScanDestination, {\n WalkupScanDestinationData,\n} from \"./WalkupScanDestination\";\n\nexport interface WalkupScanDestinationsData {\n \"wus:WalkupScanDestinations\": {\n \"wus:WalkupScanDestination\": WalkupScanDestinationData[];\n };\n}\n\nexport default class WalkupScanDestinations {\n private readonly data: WalkupScanDestinationsData;\n constructor(data: WalkupScanDestinationsData) {\n this.data = data;\n }\n static async createWalkupScanDestinations(\n content: string,\n ): Promise<WalkupScanDestinations> {\n const parsed = await parseString(content);\n return new WalkupScanDestinations(parsed);\n }\n\n get destinations(): WalkupScanDestination[] {\n let walkupScanDestinations = this.data[\"wus:WalkupScanDestinations\"];\n if (\n Object.prototype.hasOwnProperty.call(\n walkupScanDestinations,\n \"wus:WalkupScanDestination\",\n )\n ) {\n return walkupScanDestinations[\"wus:WalkupScanDestination\"].map(\n (x) => new WalkupScanDestination(x),\n );\n } else {\n return [];\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanManifest.js","sourceRoot":"","sources":["../src/WalkupScanManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,kBAAkB;IAGrC,YAAY,IAA4B;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,wBAAwB,CACnC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,yBAAyB;QAC3B,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CACvE,GAAG,CACJ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;YACzD,wBAAwB,CAC3B,CAAC;QAEF,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AAhCD,qCAgCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanManifestData>(\n parser.parseString\n);\n\nexport interface WalkupScanManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"wus:WalkupScanResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class WalkupScanManifest {\n private readonly data: WalkupScanManifestData;\n\n constructor(data: WalkupScanManifestData) {\n this.data = data;\n }\n static async createWalkupScanManifest(\n content: string\n ): Promise<WalkupScanManifest> {\n const parsed = await parseString(content);\n return new WalkupScanManifest(parsed);\n }\n\n get walkupScanDestinationsURI(): string | null {\n const walkupScanToCompCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\n \"0\"\n ][\"map:ResourceNode\"].find(\n (x) =>\n x[\"map:ResourceType\"][0][\"wus:WalkupScanResourceType\"][0] ===\n \"WalkupScanDestinations\"\n );\n\n if (walkupScanToCompCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + walkupScanToCompCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanManifest.js","sourceRoot":"","sources":["../src/WalkupScanManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,kBAAkB;IAGrC,YAAY,IAA4B;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,wBAAwB,CACnC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,yBAAyB;QAC3B,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CACvE,GAAG,CACJ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;YACzD,wBAAwB,CAC3B,CAAC;QAEF,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AAhCD,qCAgCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanManifestData>(\n parser.parseString,\n);\n\nexport interface WalkupScanManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"wus:WalkupScanResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class WalkupScanManifest {\n private readonly data: WalkupScanManifestData;\n\n constructor(data: WalkupScanManifestData) {\n this.data = data;\n }\n static async createWalkupScanManifest(\n content: string,\n ): Promise<WalkupScanManifest> {\n const parsed = await parseString(content);\n return new WalkupScanManifest(parsed);\n }\n\n get walkupScanDestinationsURI(): string | null {\n const walkupScanToCompCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\n \"0\"\n ][\"map:ResourceNode\"].find(\n (x) =>\n x[\"map:ResourceType\"][0][\"wus:WalkupScanResourceType\"][0] ===\n \"WalkupScanDestinations\",\n );\n\n if (walkupScanToCompCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + walkupScanToCompCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanToCompCaps.js","sourceRoot":"","sources":["../src/WalkupScanToCompCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAQF,MAAqB,oBAAoB;IAGvC,YAAY,IAA8B;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,CACrC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,+BAA+B;QACjC,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CACnC,qCAAqC,CACtC,CAAC,GAAG,CAAC,KAAK,MAAM,CAClB,CAAC;IACJ,CAAC;CACF;AArBD,uCAqBC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompCapsData>(\n parser.parseString\n);\nexport interface WalkupScanToCompCapsData {\n \"wus:WalkupScanToCompCaps\": {\n \"wus:MaxNetworkDestinations\": string[];\n \"wus:SupportsMultiItemScanFromPlaten\": string[];\n };\n}\n\nexport default class WalkupScanToCompCaps {\n private readonly data: WalkupScanToCompCapsData;\n\n constructor(data: WalkupScanToCompCapsData) {\n this.data = data;\n }\n\n static async createWalkupScanToCompCaps(\n content: string\n ): Promise<WalkupScanToCompCaps> {\n const parsed = await parseString(content);\n return new WalkupScanToCompCaps(parsed);\n }\n\n get supportsMultiItemScanFromPlaten(): boolean {\n return (\n this.data[\"wus:WalkupScanToCompCaps\"][\n \"wus:SupportsMultiItemScanFromPlaten\"\n ][\"0\"] === \"true\"\n );\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanToCompCaps.js","sourceRoot":"","sources":["../src/WalkupScanToCompCaps.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAQF,MAAqB,oBAAoB;IAGvC,YAAY,IAA8B;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,CACrC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,+BAA+B;QACjC,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CACnC,qCAAqC,CACtC,CAAC,GAAG,CAAC,KAAK,MAAM,CAClB,CAAC;IACJ,CAAC;CACF;AArBD,uCAqBC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompCapsData>(\n parser.parseString,\n);\nexport interface WalkupScanToCompCapsData {\n \"wus:WalkupScanToCompCaps\": {\n \"wus:MaxNetworkDestinations\": string[];\n \"wus:SupportsMultiItemScanFromPlaten\": string[];\n };\n}\n\nexport default class WalkupScanToCompCaps {\n private readonly data: WalkupScanToCompCapsData;\n\n constructor(data: WalkupScanToCompCapsData) {\n this.data = data;\n }\n\n static async createWalkupScanToCompCaps(\n content: string,\n ): Promise<WalkupScanToCompCaps> {\n const parsed = await parseString(content);\n return new WalkupScanToCompCaps(parsed);\n }\n\n get supportsMultiItemScanFromPlaten(): boolean {\n return (\n this.data[\"wus:WalkupScanToCompCaps\"][\n \"wus:SupportsMultiItemScanFromPlaten\"\n ][\"0\"] === \"true\"\n );\n }\n}\n"]}
@@ -22,13 +22,13 @@ class WalkupScanToCompDestination {
22
22
  return this.data["dd:ResourceURI"][0];
23
23
  }
24
24
  get shortcut() {
25
- if (this.data.hasOwnProperty("wus:WalkupScanToCompSettings")) {
25
+ if (Object.prototype.hasOwnProperty.call(this.data, "wus:WalkupScanToCompSettings")) {
26
26
  return this.data["wus:WalkupScanToCompSettings"]["0"]["wus:Shortcut"][0];
27
27
  }
28
28
  return null;
29
29
  }
30
30
  get scanPlexMode() {
31
- if (this.data.hasOwnProperty("wus:WalkupScanToCompSettings")) {
31
+ if (Object.prototype.hasOwnProperty.call(this.data, "wus:WalkupScanToCompSettings")) {
32
32
  return (this.data["wus:WalkupScanToCompSettings"]["0"]["scantype:ScanSettings"]["0"]["dd:ScanPlexMode"][0] || null);
33
33
  }
34
34
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanToCompDestination.js","sourceRoot":"","sources":["../src/WalkupScanToCompDestination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AAEjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAkBF,MAAqB,2BAA2B;IAE9C,YAAY,IAAqC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAC5C,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,2BAA2B,CACpC,MAAM,CAAC,iCAAiC,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC,EAAE;YAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC,EAAE;YAC5D,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,CACrE,GAAG,CACJ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAChC,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3CD,8CA2CC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nimport { KnownShortcut } from \"./KnownShortcut\";\nconst parseString = promisify<string, WalkupScanToCompDestinationRoot>(\n parser.parseString\n);\n\ninterface WalkupScanToCompDestinationRoot {\n \"wus:WalkupScanToCompDestination\": WalkupScanToCompDestinationData;\n}\n\nexport interface WalkupScanToCompDestinationData {\n \"dd:Name\": string[];\n \"dd:ResourceURI\": string[];\n \"dd3:Hostname\": string[];\n \"wus:WalkupScanToCompSettings\": {\n \"scantype:ScanSettings\": {\n \"dd:ScanPlexMode\": string[];\n }[];\n \"wus:Shortcut\": KnownShortcut[];\n }[];\n}\n\nexport default class WalkupScanToCompDestination {\n private readonly data: WalkupScanToCompDestinationData;\n constructor(data: WalkupScanToCompDestinationData) {\n this.data = data;\n }\n static async createWalkupScanToCompDestination(\n content: string\n ): Promise<WalkupScanToCompDestination> {\n const parsed = await parseString(content);\n return new WalkupScanToCompDestination(\n parsed[\"wus:WalkupScanToCompDestination\"]\n );\n }\n\n get name(): string {\n return this.data[\"dd:Name\"][0];\n }\n\n get hostname(): string {\n return this.data[\"dd3:Hostname\"][0];\n }\n\n get resourceURI(): string {\n return this.data[\"dd:ResourceURI\"][0];\n }\n\n get shortcut(): null | KnownShortcut {\n if (this.data.hasOwnProperty(\"wus:WalkupScanToCompSettings\")) {\n return this.data[\"wus:WalkupScanToCompSettings\"][\"0\"][\"wus:Shortcut\"][0];\n }\n return null;\n }\n\n get scanPlexMode(): string | null {\n if (this.data.hasOwnProperty(\"wus:WalkupScanToCompSettings\")) {\n return (\n this.data[\"wus:WalkupScanToCompSettings\"][\"0\"][\"scantype:ScanSettings\"][\n \"0\"\n ][\"dd:ScanPlexMode\"][0] || null\n );\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanToCompDestination.js","sourceRoot":"","sources":["../src/WalkupScanToCompDestination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AAEjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAkBF,MAAqB,2BAA2B;IAE9C,YAAY,IAAqC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAC5C,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,2BAA2B,CACpC,MAAM,CAAC,iCAAiC,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACV,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAClC,IAAI,CAAC,IAAI,EACT,8BAA8B,CAC/B,EACD;YACA,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAClC,IAAI,CAAC,IAAI,EACT,8BAA8B,CAC/B,EACD;YACA,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,CACrE,GAAG,CACJ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAChC,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArDD,8CAqDC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nimport { KnownShortcut } from \"./KnownShortcut\";\nconst parseString = promisify<string, WalkupScanToCompDestinationRoot>(\n parser.parseString,\n);\n\ninterface WalkupScanToCompDestinationRoot {\n \"wus:WalkupScanToCompDestination\": WalkupScanToCompDestinationData;\n}\n\nexport interface WalkupScanToCompDestinationData {\n \"dd:Name\": string[];\n \"dd:ResourceURI\": string[];\n \"dd3:Hostname\": string[];\n \"wus:WalkupScanToCompSettings\": {\n \"scantype:ScanSettings\": {\n \"dd:ScanPlexMode\": string[];\n }[];\n \"wus:Shortcut\": KnownShortcut[];\n }[];\n}\n\nexport default class WalkupScanToCompDestination {\n private readonly data: WalkupScanToCompDestinationData;\n constructor(data: WalkupScanToCompDestinationData) {\n this.data = data;\n }\n static async createWalkupScanToCompDestination(\n content: string,\n ): Promise<WalkupScanToCompDestination> {\n const parsed = await parseString(content);\n return new WalkupScanToCompDestination(\n parsed[\"wus:WalkupScanToCompDestination\"],\n );\n }\n\n get name(): string {\n return this.data[\"dd:Name\"][0];\n }\n\n get hostname(): string {\n return this.data[\"dd3:Hostname\"][0];\n }\n\n get resourceURI(): string {\n return this.data[\"dd:ResourceURI\"][0];\n }\n\n get shortcut(): null | KnownShortcut {\n if (\n Object.prototype.hasOwnProperty.call(\n this.data,\n \"wus:WalkupScanToCompSettings\",\n )\n ) {\n return this.data[\"wus:WalkupScanToCompSettings\"][\"0\"][\"wus:Shortcut\"][0];\n }\n return null;\n }\n\n get scanPlexMode(): string | null {\n if (\n Object.prototype.hasOwnProperty.call(\n this.data,\n \"wus:WalkupScanToCompSettings\",\n )\n ) {\n return (\n this.data[\"wus:WalkupScanToCompSettings\"][\"0\"][\"scantype:ScanSettings\"][\n \"0\"\n ][\"dd:ScanPlexMode\"][0] || null\n );\n }\n return null;\n }\n}\n"]}
@@ -18,7 +18,7 @@ class WalkupScanToCompDestinations {
18
18
  }
19
19
  get destinations() {
20
20
  let walkupScanToCompDestinations = this.data["wus:WalkupScanToCompDestinations"];
21
- if (walkupScanToCompDestinations.hasOwnProperty("wus:WalkupScanToCompDestination")) {
21
+ if (Object.prototype.hasOwnProperty.call(walkupScanToCompDestinations, "wus:WalkupScanToCompDestination")) {
22
22
  return walkupScanToCompDestinations["wus:WalkupScanToCompDestination"].map((x) => new WalkupScanToCompDestination_1.default(x));
23
23
  }
24
24
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanToCompDestinations.js","sourceRoot":"","sources":["../src/WalkupScanToCompDestinations.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAEF,gGAEuC;AAQvC,MAAqB,4BAA4B;IAE/C,YAAY,IAAsC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAC7C,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACd,IAAI,4BAA4B,GAC9B,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,IACE,4BAA4B,CAAC,cAAc,CACzC,iCAAiC,CAClC,EACD;YACA,OAAO,4BAA4B,CACjC,iCAAiC,CAClC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,qCAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AA3BD,+CA2BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompDestinationsData>(\n parser.parseString\n);\n\nimport WalkupScanToCompDestination, {\n WalkupScanToCompDestinationData,\n} from \"./WalkupScanToCompDestination\";\n\nexport interface WalkupScanToCompDestinationsData {\n \"wus:WalkupScanToCompDestinations\": {\n \"wus:WalkupScanToCompDestination\": WalkupScanToCompDestinationData[];\n };\n}\n\nexport default class WalkupScanToCompDestinations {\n private readonly data: WalkupScanToCompDestinationsData;\n constructor(data: WalkupScanToCompDestinationsData) {\n this.data = data;\n }\n static async createWalkupScanToCompDestinations(\n content: string\n ): Promise<WalkupScanToCompDestinations> {\n const parsed = await parseString(content);\n return new WalkupScanToCompDestinations(parsed);\n }\n\n get destinations(): WalkupScanToCompDestination[] {\n let walkupScanToCompDestinations =\n this.data[\"wus:WalkupScanToCompDestinations\"];\n if (\n walkupScanToCompDestinations.hasOwnProperty(\n \"wus:WalkupScanToCompDestination\"\n )\n ) {\n return walkupScanToCompDestinations[\n \"wus:WalkupScanToCompDestination\"\n ].map((x) => new WalkupScanToCompDestination(x));\n } else {\n return [];\n }\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanToCompDestinations.js","sourceRoot":"","sources":["../src/WalkupScanToCompDestinations.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAEF,gGAEuC;AAQvC,MAAqB,4BAA4B;IAE/C,YAAY,IAAsC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAC7C,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACd,IAAI,4BAA4B,GAC9B,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAClC,4BAA4B,EAC5B,iCAAiC,CAClC,EACD;YACA,OAAO,4BAA4B,CACjC,iCAAiC,CAClC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,qCAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AA5BD,+CA4BC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompDestinationsData>(\n parser.parseString,\n);\n\nimport WalkupScanToCompDestination, {\n WalkupScanToCompDestinationData,\n} from \"./WalkupScanToCompDestination\";\n\nexport interface WalkupScanToCompDestinationsData {\n \"wus:WalkupScanToCompDestinations\": {\n \"wus:WalkupScanToCompDestination\": WalkupScanToCompDestinationData[];\n };\n}\n\nexport default class WalkupScanToCompDestinations {\n private readonly data: WalkupScanToCompDestinationsData;\n constructor(data: WalkupScanToCompDestinationsData) {\n this.data = data;\n }\n static async createWalkupScanToCompDestinations(\n content: string,\n ): Promise<WalkupScanToCompDestinations> {\n const parsed = await parseString(content);\n return new WalkupScanToCompDestinations(parsed);\n }\n\n get destinations(): WalkupScanToCompDestination[] {\n let walkupScanToCompDestinations =\n this.data[\"wus:WalkupScanToCompDestinations\"];\n if (\n Object.prototype.hasOwnProperty.call(\n walkupScanToCompDestinations,\n \"wus:WalkupScanToCompDestination\",\n )\n ) {\n return walkupScanToCompDestinations[\n \"wus:WalkupScanToCompDestination\"\n ].map((x) => new WalkupScanToCompDestination(x));\n } else {\n return [];\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanToCompEvent.js","sourceRoot":"","sources":["../src/WalkupScanToCompEvent.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAQF,MAAqB,qBAAqB;IAExC,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAe;QACtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAC3C,+BAA+B,CAChC,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AAfD,wCAeC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompEventData>(\n parser.parseString\n);\n\nexport interface WalkupScanToCompEventData {\n \"wus:WalkupScanToCompEvent\": {\n \"wus:WalkupScanToCompEventType\": string[];\n };\n}\n\nexport default class WalkupScanToCompEvent {\n private readonly data: WalkupScanToCompEventData;\n constructor(data: WalkupScanToCompEventData) {\n this.data = data;\n }\n static async createWalkupScanToCompEvent(content: string) {\n const parsed = await parseString(content);\n return new WalkupScanToCompEvent(parsed);\n }\n\n get eventType(): string {\n return this.data[\"wus:WalkupScanToCompEvent\"][\n \"wus:WalkupScanToCompEventType\"\n ][0];\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanToCompEvent.js","sourceRoot":"","sources":["../src/WalkupScanToCompEvent.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAQF,MAAqB,qBAAqB;IAExC,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAe;QACtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAC3C,+BAA+B,CAChC,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AAfD,wCAeC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompEventData>(\n parser.parseString,\n);\n\nexport interface WalkupScanToCompEventData {\n \"wus:WalkupScanToCompEvent\": {\n \"wus:WalkupScanToCompEventType\": string[];\n };\n}\n\nexport default class WalkupScanToCompEvent {\n private readonly data: WalkupScanToCompEventData;\n constructor(data: WalkupScanToCompEventData) {\n this.data = data;\n }\n static async createWalkupScanToCompEvent(content: string) {\n const parsed = await parseString(content);\n return new WalkupScanToCompEvent(parsed);\n }\n\n get eventType(): string {\n return this.data[\"wus:WalkupScanToCompEvent\"][\n \"wus:WalkupScanToCompEventType\"\n ][0];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WalkupScanToCompManifest.js","sourceRoot":"","sources":["../src/WalkupScanToCompManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,wBAAwB;IAG3C,YAAY,IAAkC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,8BAA8B,CACzC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,uBAAuB;QACzB,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CACvE,GAAG,CACJ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;YAC/D,sBAAsB,CACzB,CAAC;QAEF,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AAhCD,2CAgCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompManifestData>(\n parser.parseString\n);\n\nexport interface WalkupScanToCompManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"wus:WalkupScanToCompResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class WalkupScanToCompManifest {\n private readonly data: WalkupScanToCompManifestData;\n\n constructor(data: WalkupScanToCompManifestData) {\n this.data = data;\n }\n static async createWalkupScanToCompManifest(\n content: string\n ): Promise<WalkupScanToCompManifest> {\n const parsed = await parseString(content);\n return new WalkupScanToCompManifest(parsed);\n }\n\n get WalkupScanToCompCapsURI(): string | null {\n const walkupScanToCompCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\n \"0\"\n ][\"map:ResourceNode\"].find(\n (x) =>\n x[\"map:ResourceType\"][0][\"wus:WalkupScanToCompResourceType\"][0] ===\n \"WalkupScanToCompCaps\"\n );\n\n if (walkupScanToCompCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + walkupScanToCompCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}
1
+ {"version":3,"file":"WalkupScanToCompManifest.js","sourceRoot":"","sources":["../src/WalkupScanToCompManifest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAC3B,MAAM,CAAC,WAAW,CACnB,CAAC;AAoBF,MAAqB,wBAAwB;IAG3C,YAAY,IAAkC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,8BAA8B,CACzC,OAAe;QAEf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,uBAAuB;QACzB,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CACvE,GAAG,CACJ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;YAC/D,sBAAsB,CACzB,CAAC;QAEF,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CACtE,gBAAgB,CACjB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AAhCD,2CAgCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, WalkupScanToCompManifestData>(\n parser.parseString,\n);\n\nexport interface WalkupScanToCompManifestData {\n \"man:Manifest\": {\n \"map:ResourceMap\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceNode\": {\n \"map:ResourceLink\": {\n \"dd:ResourceURI\": string[];\n }[];\n \"map:ResourceType\": {\n \"wus:WalkupScanToCompResourceType\": string[];\n }[];\n }[];\n }[];\n };\n}\n\nexport default class WalkupScanToCompManifest {\n private readonly data: WalkupScanToCompManifestData;\n\n constructor(data: WalkupScanToCompManifestData) {\n this.data = data;\n }\n static async createWalkupScanToCompManifest(\n content: string,\n ): Promise<WalkupScanToCompManifest> {\n const parsed = await parseString(content);\n return new WalkupScanToCompManifest(parsed);\n }\n\n get WalkupScanToCompCapsURI(): string | null {\n const walkupScanToCompCaps = this.data[\"man:Manifest\"][\"map:ResourceMap\"][\n \"0\"\n ][\"map:ResourceNode\"].find(\n (x) =>\n x[\"map:ResourceType\"][0][\"wus:WalkupScanToCompResourceType\"][0] ===\n \"WalkupScanToCompCaps\",\n );\n\n if (walkupScanToCompCaps === undefined) {\n return null;\n }\n\n return (\n this.data[\"man:Manifest\"][\"map:ResourceMap\"][\"0\"][\"map:ResourceLink\"][0][\n \"dd:ResourceURI\"\n ][0] + walkupScanToCompCaps[\"map:ResourceLink\"][0][\"dd:ResourceURI\"][0]\n );\n }\n}\n"]}