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
package/README.md CHANGED
@@ -9,17 +9,16 @@
9
9
  [![CodeFactor](https://www.codefactor.io/repository/github/manuc66/node-hp-scan-to/badge)](https://www.codefactor.io/repository/github/manuc66/node-hp-scan-to)
10
10
  [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmanuc66%2Fnode-hp-scan-to.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fmanuc66%2Fnode-hp-scan-to?ref=badge_shield)
11
11
 
12
- Little command line program that allow to send scan from device to computer.
12
+ The `node-hp-scan-to` is a Node.js application that replicates the functionality of the "Scan to Computer" from HP. For this purpose, the original HP Windows application's interaction with the device has been [reverse engineered](protocol_doc/HP%20Officejet%206500%20E710n-z.md)
13
13
 
14
- Can be run with npx : `npx node-hp-scan-to` or with Docker (see below)
15
-
16
- Developed and tested for the following HP All-in-One Printers:
14
+ Its primary purpose is to enable users to scan documents directly from an HP device and seamlessly transfer them to a computer. Unlike the original program, this program is designed to be compatible with Linux (including Docker), and is expected to work on Windows and macOS, making it accessible to a wider range of users and usages. It has been developed and tested with the following HP All-in-One Printers:
17
15
  - HP Officejet 6500A Plus
18
16
  - HP Deskjet 3520
19
17
  - HP Smart Tank Plus 570 series
20
18
 
21
- The following printer are also working:
19
+ Additionally, it has been reported to work on several other HP printer models.
22
20
  - HP Deskjet 3050 All-in-One Printer - J610a
21
+ - HP Officejet 3830
23
22
  - HP Officejet 5230
24
23
  - HP Officejet 6700 premium
25
24
  - HP Officejet 5740
@@ -27,9 +26,8 @@ The following printer are also working:
27
26
  - HP OfficeJet Pro 8025e
28
27
 
29
28
  There are good chances it also works on your HP All-in-One Printer.
30
- For this purpose, the original HP Windows application's interaction with the device has been [reverse engineered](protocol_doc/HP%20Officejet%206500%20E710n-z.md).
31
29
 
32
- This project is not endorsed by nor affiliated with HP.
30
+ Please note that the `node-hp-scan-to` project is not endorsed by nor affiliated with HP. The reverse engineering of the original HP Windows application's interaction with the device has been done independently.
33
31
 
34
32
  ## Supported features
35
33
  - ✔️ JPG scan output
@@ -43,6 +41,7 @@ This project is not endorsed by nor affiliated with HP.
43
41
  - ✔️ Customizable file names
44
42
  - ✔️ Customizable resolution
45
43
  - ✔️ Customizable label on the device
44
+ - ✔️ Multi platform: Linux, Windows and most probably macOS
46
45
 
47
46
  ## Usage
48
47
 
@@ -69,6 +68,10 @@ node dist/index.js -ip 192.168.1.4 # or -n "Officejet 6500 E710n-z"
69
68
  ```
70
69
 
71
70
  ### Run with docker
71
+
72
+ Public Pre-built Docker image:
73
+ - https://hub.docker.com/repository/docker/manuc66/node-hp-scan-to (take master: `docker pull manuc66/node-hp-scan-to:master`)
74
+
72
75
  Be aware that with docker you have to specify the ip address of the printer via the `IP` environment variable, because
73
76
  bonjour service discovery uses multicast network traffic which by default doesn't work in docker.
74
77
  You could however use docker's macvlan networking, this way you can use service discovery and the `NAME` environment variable.
@@ -76,11 +79,23 @@ You could however use docker's macvlan networking, this way you can use service
76
79
  All scanned files are written to the volume `/scan`, the filename can be changed with the `PATTERN` environment variable.
77
80
  For the correct permissions to the volume set the environment variables `PUID` and `PGID`.
78
81
 
79
- __To enable debug logs set the environment variable `CMDLINE` to `-D`.__ Can also be used for any other command line parameters.
82
+ Exhaustive list of supported environment variables and their meaning, or correspondence with [command-line flags](#command-line):
83
+ - `PUID`: id of user that will run the program
84
+ - `PGID`: id of group that will run the program
85
+ - `IP`: command-line flag `-ip`/`--address`
86
+ - `PATTERN`: command-line flag `-p`/`--pattern`
87
+ - `LABEL`: command-line flag `-l`/`--label`
88
+ - `NAME`: command-line flag `-n`/`--name`
89
+ - `DIR`: command-line flag `-d`/`--directory`
90
+ - `TEMP_DIR`: command-line flag `-t`/`--temp-directory`
91
+ - `RESOLUTION`: command-line flag `-r`/`--resolution`
92
+ - `CMDLINE`: additional command-line flags that will be put at the end of the command.
80
93
 
81
- The name shown on the printer's display is the hostname of the docker container, which defaults to a random value, so you may want to specify it via the `-hostname` argument.
94
+ __To enable debug logs set the environment variable `CMDLINE` to `-D`.__
82
95
 
83
- Example for docker:
96
+ The name shown on the printer's display is the hostname of the docker container, which defaults to a random value, so you may want to override it by enforcing the `hostname`, or using the `LABEL` environment variable.
97
+
98
+ #### Example for docker:
84
99
  ```sh
85
100
  git clone ...
86
101
  cd node-hp-scan-to
@@ -88,7 +103,7 @@ docker build . -t node-hp-scan-to
88
103
  docker run -e IP=192.168.0.5 -e PGID=1000 -e PUID=1000 --hostname scan node-hp-scan-to
89
104
  ```
90
105
 
91
- Example for docker-compose:
106
+ #### Example for docker-compose:
92
107
  Write the following `docker-compose.yml` file into this directory:
93
108
  ```yml
94
109
  version: "3"
@@ -99,9 +114,9 @@ services:
99
114
  context: .
100
115
  dockerfile: Dockerfile
101
116
  container_name: node-hp-scan-to
102
- hostname: scan
103
117
  environment:
104
118
  - IP=192.168.0.5
119
+ - LABEL=scan
105
120
  - PATTERN="scan"_dd.mm.yyyy_hh:MM:ss
106
121
  - PGID=1000
107
122
  - PUID=1000
@@ -111,10 +126,56 @@ services:
111
126
  restart: always
112
127
  ```
113
128
  Then run `docker-compose up -d --build`.
114
- To
115
129
 
116
- Public Pre-built Docker image:
117
- - https://hub.docker.com/repository/docker/manuc66/node-hp-scan-to (take master: `docker pull manuc66/node-hp-scan-to:master`)
130
+ #### Example for Kubernetes:
131
+ Apply the following manifest (the PersistentVolumeClaim must also be deployed beforehand):
132
+ ```yml
133
+ apiVersion: apps/v1
134
+ kind: Deployment
135
+ name: hp-scan-to
136
+ spec:
137
+ replicas: 1
138
+ selector:
139
+ matchLabels:
140
+ app.kubernetes.io/name: hp-scan-to
141
+ template:
142
+ metadata:
143
+ labels:
144
+ app.kubernetes.io/name: hp-scan-to
145
+ spec:
146
+ containers:
147
+ - image: manuc66/node-hp-scan-to:master
148
+ name: hp-scan-to
149
+ env:
150
+ - name: IP
151
+ value: 192.168.0.5
152
+ - name: PATTERN
153
+ value: '"scan"_dd.mm.yyyy_hh:MM:ss'
154
+ - name: PGID
155
+ value: "1000"
156
+ - name: PUID
157
+ value: "1000"
158
+ - name: LABEL
159
+ value: scan
160
+ - name: DIR
161
+ value: /scans
162
+ - name: TZ
163
+ value: Europe/London
164
+ resources:
165
+ limits:
166
+ memory: 256Mi
167
+ requests:
168
+ cpu: "0"
169
+ memory: 64Mi
170
+ volumeMounts:
171
+ - mountPath: /scans
172
+ name: incoming-scans
173
+ restartPolicy: Always
174
+ volumes:
175
+ - name: incoming-scans
176
+ persistentVolumeClaim:
177
+ claimName: incoming-scans
178
+ ```
118
179
 
119
180
  ## Debugging
120
181
  I'm using Visual Studio Code to debug this application, so instead of running ts-node just enter `code .` and press F5 to start debugging.
@@ -1 +1 @@
1
- {"version":3,"file":"Destination.js","sourceRoot":"","sources":["../src/Destination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,mCAAyC;AACzC,2CAA6B;AAE7B,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAU5B,MAAqB,WAAW;IAM9B,YAAY,IAAY,EAAE,QAAgB,EAAE,MAAe;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,cAAc,GAAW,0CAA0C,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,cAAc;gBACZ,wJAAwJ;oBACxJ,yGAAyG,CAAC;SAC7G;aAAM;YACL,cAAc;gBACZ,0JAA0J;oBAC1J,qHAAqH,CAAC;SACzH;QAED,cAAc;YACZ,iGAAiG;gBACjG,mFAAmF;gBACnF,kCAAkC;gBAClC,0BAA0B,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,MAAM,CAAC,WAAW,CACnB,CAAC,cAAc,CAAC,CAAC;QAElB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzD,IAAI,OAAO,GAAG,IAAI,gBAAO,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;SACvD;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;CACF;AA/CD,8BA+CC","sourcesContent":["\"use strict\";\n\nimport { Parser, Builder } from \"xml2js\";\nimport * as util from \"util\";\n\nconst parser = new Parser();\n\ntype WalkupScanDestinationData = {\n WalkupScanDestination: {\n Hostname: { _: string }[];\n Name: { _: string }[];\n LinkType: string[];\n };\n};\n\nexport default class Destination {\n private readonly name: string;\n private readonly hostname: string;\n private readonly linkType: string;\n private readonly toComp: boolean;\n\n constructor(name: string, hostname: string, toComp: boolean) {\n this.name = name;\n this.hostname = hostname;\n this.linkType = \"Network\";\n this.toComp = toComp;\n }\n\n async toXML() {\n let rawDestination: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n if (this.toComp) {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28 WalkupScan.xsd\">\\n';\n } else {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \\n' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21 WalkupScanDestinations.xsd\">\\n';\n }\n\n rawDestination +=\n '\\t<Hostname xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/2009/04/06\"></Hostname>\\n' +\n '\\t<Name xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\"></Name>\\n' +\n \"\\t<LinkType>Network</LinkType>\\n\" +\n \"</WalkupScanDestination>\";\n\n const parsed = await util.promisify<string, WalkupScanDestinationData>(\n parser.parseString\n )(rawDestination);\n\n parsed.WalkupScanDestination.Hostname[0]._ = this.hostname;\n parsed.WalkupScanDestination.Name[0]._ = this.name;\n parsed.WalkupScanDestination.LinkType[0] = this.linkType;\n\n let builder = new Builder();\n let xml = builder.buildObject(parsed);\n if (this.toComp) {\n return xml.replace(/WalkupScan/g, \"WalkupScanToComp\");\n } else {\n return xml;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Destination.js","sourceRoot":"","sources":["../src/Destination.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,mCAAyC;AACzC,2CAA6B;AAE7B,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAU5B,MAAqB,WAAW;IAM9B,YAAY,IAAY,EAAE,QAAgB,EAAE,MAAe;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,cAAc,GAAW,0CAA0C,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,cAAc;gBACZ,wJAAwJ;oBACxJ,yGAAyG,CAAC;SAC7G;aAAM;YACL,cAAc;gBACZ,0JAA0J;oBAC1J,qHAAqH,CAAC;SACzH;QAED,cAAc;YACZ,iGAAiG;gBACjG,mFAAmF;gBACnF,kCAAkC;gBAClC,0BAA0B,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,MAAM,CAAC,WAAW,CACnB,CAAC,cAAc,CAAC,CAAC;QAElB,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzD,IAAI,OAAO,GAAG,IAAI,gBAAO,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;SACvD;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;CACF;AA/CD,8BA+CC","sourcesContent":["\"use strict\";\n\nimport { Parser, Builder } from \"xml2js\";\nimport * as util from \"util\";\n\nconst parser = new Parser();\n\ntype WalkupScanDestinationData = {\n WalkupScanDestination: {\n Hostname: { _: string }[];\n Name: { _: string }[];\n LinkType: string[];\n };\n};\n\nexport default class Destination {\n private readonly name: string;\n private readonly hostname: string;\n private readonly linkType: string;\n private readonly toComp: boolean;\n\n constructor(name: string, hostname: string, toComp: boolean) {\n this.name = name;\n this.hostname = hostname;\n this.linkType = \"Network\";\n this.toComp = toComp;\n }\n\n async toXML() {\n let rawDestination: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n if (this.toComp) {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/ledm/walkupscan/2010/09/28 WalkupScan.xsd\">\\n';\n } else {\n rawDestination +=\n '<WalkupScanDestination xmlns=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \\n' +\n 'xsi:schemaLocation=\"http://www.hp.com/schemas/imaging/con/rest/walkupscan/2009/09/21 WalkupScanDestinations.xsd\">\\n';\n }\n\n rawDestination +=\n '\\t<Hostname xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/2009/04/06\"></Hostname>\\n' +\n '\\t<Name xmlns=\"http://www.hp.com/schemas/imaging/con/dictionaries/1.0/\"></Name>\\n' +\n \"\\t<LinkType>Network</LinkType>\\n\" +\n \"</WalkupScanDestination>\";\n\n const parsed = await util.promisify<string, WalkupScanDestinationData>(\n parser.parseString,\n )(rawDestination);\n\n parsed.WalkupScanDestination.Hostname[0]._ = this.hostname;\n parsed.WalkupScanDestination.Name[0]._ = this.name;\n parsed.WalkupScanDestination.LinkType[0] = this.linkType;\n\n let builder = new Builder();\n let xml = builder.buildObject(parsed);\n if (this.toComp) {\n return xml.replace(/WalkupScan/g, \"WalkupScanToComp\");\n } else {\n return xml;\n }\n }\n}\n"]}
@@ -1,4 +1,8 @@
1
1
  export interface DeviceCapabilities {
2
2
  supportsMultiItemScanFromPlaten: boolean;
3
3
  useWalkupScanToComp: boolean;
4
+ platenMaxWidth: number | null;
5
+ platenMaxHeight: number | null;
6
+ adfMaxWidth: number | null;
7
+ adfMaxHeight: number | null;
4
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceCapabilities.js","sourceRoot":"","sources":["../src/DeviceCapabilities.ts"],"names":[],"mappings":"","sourcesContent":["export interface DeviceCapabilities {\n supportsMultiItemScanFromPlaten: boolean;\n useWalkupScanToComp: boolean;\n}\n"]}
1
+ {"version":3,"file":"DeviceCapabilities.js","sourceRoot":"","sources":["../src/DeviceCapabilities.ts"],"names":[],"mappings":"","sourcesContent":["export interface DeviceCapabilities {\n supportsMultiItemScanFromPlaten: boolean;\n useWalkupScanToComp: boolean;\n platenMaxWidth: number | null;\n platenMaxHeight: number | null;\n adfMaxWidth: number | null;\n adfMaxHeight: number | null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DiscoveryTree.js","sourceRoot":"","sources":["../src/DiscoveryTree.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAA4B,MAAM,CAAC,WAAW,CAAC,CAAC;AAW7E,MAAqB,aAAa;IAGhC,YAAY,IAAuB;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,2BAA2B;QAC7B,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,qCAAqC,CACzE,CAAC;QACF,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,qBAAqB;QACvB,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAAC,CAAC;QACrE,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,kBAAkB;QACpB,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,4BAA4B,CAAC,CAAC;QACxE,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AAxCD,gCAwCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, DiscoveryTreeData>(parser.parseString);\n\nexport interface DiscoveryTreeData {\n \"ledm:DiscoveryTree\": {\n \"ledm:SupportedIfc\": {\n \"ledm:ManifestURI\": string[];\n \"dd:ResourceType\": string[];\n }[];\n };\n}\n\nexport default class DiscoveryTree {\n private readonly data: DiscoveryTreeData;\n\n constructor(data: DiscoveryTreeData) {\n this.data = data;\n }\n static async createDiscoveryTree(content: string): Promise<DiscoveryTree> {\n const parsed = await parseString(content);\n return new DiscoveryTree(parsed);\n }\n\n get WalkupScanToCompManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find(\n (x) => x[\"dd:ResourceType\"][0] === \"ledm:hpLedmWalkupScanToCompManifest\"\n );\n if (hpLedmWalkupScanToCompManifest !== undefined) {\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n return null;\n }\n get WalkupScanManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find((x) => x[\"dd:ResourceType\"][0] === \"hpCnxWalkupScanManifest\");\n if (hpLedmWalkupScanToCompManifest === undefined) {\n return null;\n }\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n get ScanJobManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find((x) => x[\"dd:ResourceType\"][0] === \"ledm:hpLedmScanJobManifest\");\n if (hpLedmWalkupScanToCompManifest === undefined) {\n return null;\n }\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n}\n"]}
1
+ {"version":3,"file":"DiscoveryTree.js","sourceRoot":"","sources":["../src/DiscoveryTree.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAA4B,MAAM,CAAC,WAAW,CAAC,CAAC;AAW7E,MAAqB,aAAa;IAGhC,YAAY,IAAuB;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,2BAA2B;QAC7B,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,qCAAqC,CACzE,CAAC;QACF,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,qBAAqB;QACvB,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,yBAAyB,CAAC,CAAC;QACrE,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,kBAAkB;QACpB,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,mBAAmB,CACpB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,4BAA4B,CAAC,CAAC;QACxE,IAAI,8BAA8B,KAAK,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF;AAxCD,gCAwCC","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, DiscoveryTreeData>(parser.parseString);\n\nexport interface DiscoveryTreeData {\n \"ledm:DiscoveryTree\": {\n \"ledm:SupportedIfc\": {\n \"ledm:ManifestURI\": string[];\n \"dd:ResourceType\": string[];\n }[];\n };\n}\n\nexport default class DiscoveryTree {\n private readonly data: DiscoveryTreeData;\n\n constructor(data: DiscoveryTreeData) {\n this.data = data;\n }\n static async createDiscoveryTree(content: string): Promise<DiscoveryTree> {\n const parsed = await parseString(content);\n return new DiscoveryTree(parsed);\n }\n\n get WalkupScanToCompManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find(\n (x) => x[\"dd:ResourceType\"][0] === \"ledm:hpLedmWalkupScanToCompManifest\",\n );\n if (hpLedmWalkupScanToCompManifest !== undefined) {\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n return null;\n }\n get WalkupScanManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find((x) => x[\"dd:ResourceType\"][0] === \"hpCnxWalkupScanManifest\");\n if (hpLedmWalkupScanToCompManifest === undefined) {\n return null;\n }\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n get ScanJobManifestURI(): string | null {\n const hpLedmWalkupScanToCompManifest = this.data[\"ledm:DiscoveryTree\"][\n \"ledm:SupportedIfc\"\n ].find((x) => x[\"dd:ResourceType\"][0] === \"ledm:hpLedmScanJobManifest\");\n if (hpLedmWalkupScanToCompManifest === undefined) {\n return null;\n }\n return hpLedmWalkupScanToCompManifest[\"ledm:ManifestURI\"][0];\n }\n}\n"]}
package/dist/Event.js CHANGED
@@ -11,14 +11,14 @@ class Event {
11
11
  return this.data["dd:AgingStamp"][0];
12
12
  }
13
13
  get destinationURI() {
14
- if (this.data.hasOwnProperty("ev:Payload")) {
14
+ if (Object.prototype.hasOwnProperty.call(this.data, "ev:Payload")) {
15
15
  const destination = this.data["ev:Payload"].find((v) => v["dd:ResourceType"]["0"].includes("Destination"));
16
16
  return destination ? destination["dd:ResourceURI"]["0"] : undefined;
17
17
  }
18
18
  return undefined;
19
19
  }
20
20
  get compEventURI() {
21
- if (this.data.hasOwnProperty("ev:Payload")) {
21
+ if (Object.prototype.hasOwnProperty.call(this.data, "ev:Payload")) {
22
22
  const compEvent = this.data["ev:Payload"].find((v) => v["dd:ResourceType"]["0"].includes("CompEvent"));
23
23
  return compEvent ? compEvent["dd:ResourceURI"]["0"] : undefined;
24
24
  }
package/dist/Event.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Event.js","sourceRoot":"","sources":["../src/Event.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAeb,MAAqB,KAAK;IAExB,YAAY,IAAe;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAClD,CAAC;YAEF,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAChD,CAAC;YAEF,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACjE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,wBAAwB,KAAK,WAAW,CAAC;IACvD,CAAC;CACF;AAvCD,wBAuCC","sourcesContent":["\"use strict\";\n\nexport type EventData = {\n \"dd:UnqualifiedEventCategory\": string[];\n \"dd:AgingStamp\": string[];\n \"ev:Payload\": {\n \"dd:ResourceURI\": {\n \"0\": string;\n };\n \"dd:ResourceType\": {\n \"0\": string;\n };\n }[];\n};\n\nexport default class Event {\n private readonly data: EventData;\n constructor(data: EventData) {\n this.data = data;\n }\n\n get unqualifiedEventCategory(): string {\n return this.data[\"dd:UnqualifiedEventCategory\"][0];\n }\n\n get agingStamp(): string {\n return this.data[\"dd:AgingStamp\"][0];\n }\n\n get destinationURI(): string | undefined {\n if (this.data.hasOwnProperty(\"ev:Payload\")) {\n const destination = this.data[\"ev:Payload\"].find((v) =>\n v[\"dd:ResourceType\"][\"0\"].includes(\"Destination\")\n );\n\n return destination ? destination[\"dd:ResourceURI\"][\"0\"] : undefined;\n }\n return undefined;\n }\n\n get compEventURI(): string | undefined {\n if (this.data.hasOwnProperty(\"ev:Payload\")) {\n const compEvent = this.data[\"ev:Payload\"].find((v) =>\n v[\"dd:ResourceType\"][\"0\"].includes(\"CompEvent\")\n );\n\n return compEvent ? compEvent[\"dd:ResourceURI\"][\"0\"] : undefined;\n }\n return undefined;\n }\n\n get isScanEvent(): boolean {\n return this.unqualifiedEventCategory === \"ScanEvent\";\n }\n}\n"]}
1
+ {"version":3,"file":"Event.js","sourceRoot":"","sources":["../src/Event.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAeb,MAAqB,KAAK;IAExB,YAAY,IAAe;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAClD,CAAC;YAEF,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACrE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY;QACd,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAChD,CAAC;YAEF,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACjE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,wBAAwB,KAAK,WAAW,CAAC;IACvD,CAAC;CACF;AAvCD,wBAuCC","sourcesContent":["\"use strict\";\n\nexport type EventData = {\n \"dd:UnqualifiedEventCategory\": string[];\n \"dd:AgingStamp\": string[];\n \"ev:Payload\": {\n \"dd:ResourceURI\": {\n \"0\": string;\n };\n \"dd:ResourceType\": {\n \"0\": string;\n };\n }[];\n};\n\nexport default class Event {\n private readonly data: EventData;\n constructor(data: EventData) {\n this.data = data;\n }\n\n get unqualifiedEventCategory(): string {\n return this.data[\"dd:UnqualifiedEventCategory\"][0];\n }\n\n get agingStamp(): string {\n return this.data[\"dd:AgingStamp\"][0];\n }\n\n get destinationURI(): string | undefined {\n if (Object.prototype.hasOwnProperty.call(this.data, \"ev:Payload\")) {\n const destination = this.data[\"ev:Payload\"].find((v) =>\n v[\"dd:ResourceType\"][\"0\"].includes(\"Destination\"),\n );\n\n return destination ? destination[\"dd:ResourceURI\"][\"0\"] : undefined;\n }\n return undefined;\n }\n\n get compEventURI(): string | undefined {\n if (Object.prototype.hasOwnProperty.call(this.data, \"ev:Payload\")) {\n const compEvent = this.data[\"ev:Payload\"].find((v) =>\n v[\"dd:ResourceType\"][\"0\"].includes(\"CompEvent\"),\n );\n\n return compEvent ? compEvent[\"dd:ResourceURI\"][\"0\"] : undefined;\n }\n return undefined;\n }\n\n get isScanEvent(): boolean {\n return this.unqualifiedEventCategory === \"ScanEvent\";\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EventTable.js","sourceRoot":"","sources":["../src/EventTable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,oDAA2C;AAC3C,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAa1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,OAAe,EACf,YAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;YACxD,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,eAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,6BAyBC","sourcesContent":["\"use strict\";\n\nimport Event, { EventData } from \"./Event\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, EventTableData>(parser.parseString);\n\nexport interface EtagEventTable {\n etag: string;\n eventTable: EventTable;\n}\n\nexport interface EventTableData {\n \"ev:EventTable\"?: {\n \"ev:Event\"?: EventData[];\n };\n}\n\nexport default class EventTable {\n private readonly data: EventTableData;\n constructor(data: EventTableData) {\n this.data = data;\n }\n\n static async createEtagEventTable(\n content: string,\n etagReceived: string\n ): Promise<EtagEventTable> {\n const parsed = await parseString(content);\n return {\n etag: etagReceived,\n eventTable: new EventTable(parsed),\n };\n }\n\n get events() {\n let eventTable = this.data[\"ev:EventTable\"];\n if (eventTable != null && eventTable[\"ev:Event\"] != null) {\n return eventTable[\"ev:Event\"].map((x) => new Event(x));\n } else {\n return [];\n }\n }\n}\n"]}
1
+ {"version":3,"file":"EventTable.js","sourceRoot":"","sources":["../src/EventTable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,oDAA2C;AAC3C,mCAAgC;AAChC,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;AAC5B,+BAAiC;AACjC,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAyB,MAAM,CAAC,WAAW,CAAC,CAAC;AAa1E,MAAqB,UAAU;IAE7B,YAAY,IAAoB;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,OAAe,EACf,YAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;YACxD,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,eAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;CACF;AAzBD,6BAyBC","sourcesContent":["\"use strict\";\n\nimport Event, { EventData } from \"./Event\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, EventTableData>(parser.parseString);\n\nexport interface EtagEventTable {\n etag: string;\n eventTable: EventTable;\n}\n\nexport interface EventTableData {\n \"ev:EventTable\"?: {\n \"ev:Event\"?: EventData[];\n };\n}\n\nexport default class EventTable {\n private readonly data: EventTableData;\n constructor(data: EventTableData) {\n this.data = data;\n }\n\n static async createEtagEventTable(\n content: string,\n etagReceived: string,\n ): Promise<EtagEventTable> {\n const parsed = await parseString(content);\n return {\n etag: etagReceived,\n eventTable: new EventTable(parsed),\n };\n }\n\n get events() {\n let eventTable = this.data[\"ev:EventTable\"];\n if (eventTable != null && eventTable[\"ev:Event\"] != null) {\n return eventTable[\"ev:Event\"].map((x) => new Event(x));\n } else {\n return [];\n }\n }\n}\n"]}
package/dist/HPApi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"HPApi.js","sourceRoot":"","sources":["../src/HPApi.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\n\nimport { promisify } from \"util\";\nimport fs from \"fs\";\nimport axios, {\n AxiosError,\n AxiosRequestConfig,\n AxiosResponse,\n RawAxiosRequestHeaders,\n} from \"axios\";\nimport { URL } from \"url\";\nimport * as stream from \"stream\";\nimport { Stream } from \"stream\";\nimport EventTable, { EtagEventTable } from \"./EventTable\";\nimport Job from \"./Job\";\nimport ScanStatus from \"./ScanStatus\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport WalkupScanDestinations from \"./WalkupScanDestinations\";\nimport WalkupScanToCompDestinations from \"./WalkupScanToCompDestinations\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport Destination from \"./Destination\";\nimport WalkupScanToCompEvent from \"./WalkupScanToCompEvent\";\nimport DiscoveryTree from \"./DiscoveryTree\";\nimport WalkupScanToCompManifest from \"./WalkupScanToCompManifest\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport WalkupScanManifest from \"./WalkupScanManifest\";\nimport ScanJobManifest from \"./ScanJobManifest\";\nimport ScanCaps from \"./ScanCaps\";\nimport { delay } from \"./delay\";\nimport * as net from \"net\";\n\nlet printerIP = \"192.168.1.11\";\nlet debug = false;\nlet callCount = 0;\n\nexport default class HPApi {\n static setDeviceIP(ip: string): void {\n printerIP = ip;\n }\n\n static setDebug(dbg: boolean): void {\n debug = dbg;\n }\n\n private static logDebug(\n callId: number,\n isRequest: boolean,\n msg: object | string\n ): void {\n if (debug) {\n const id = String(callId).padStart(4, \"0\");\n const content = typeof msg === \"string\" ? msg : JSON.stringify(msg);\n console.log(id + (isRequest ? \" -> \" : \" <- \") + content);\n }\n }\n\n private static async callAxios(\n request: AxiosRequestConfig\n ): Promise<AxiosResponse<string>> {\n callCount++;\n if (request.timeout === 0) {\n request.timeout = 100_000;\n }\n HPApi.logDebug(callCount, true, request);\n try {\n const response = await axios(request);\n HPApi.logDebug(callCount, false, {\n status: response.status,\n data: response.data,\n headers: response.headers,\n statusText: response.statusText,\n });\n return response;\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (axiosError.isAxiosError) {\n HPApi.logDebug(callCount, false, {\n status: axiosError.response?.status,\n data: axiosError.response?.data,\n headers: axiosError.response?.headers,\n statusText: axiosError.response?.statusText,\n });\n }\n throw error;\n }\n }\n\n static async isAlive(timeout: number | null = null): Promise<boolean> {\n const definedTimeout = timeout || 10000; // default of 10 seconds\n return new Promise((resolve) => {\n const socket = net.createConnection(80, printerIP, () => {\n clearTimeout(timer);\n resolve(true);\n socket.end();\n });\n const timer = setTimeout(() => {\n resolve(false);\n socket.end();\n }, definedTimeout);\n socket.on(\"error\", () => {\n clearTimeout(timer);\n resolve(false);\n });\n });\n }\n\n static async waitDeviceUp(deviceUpPollingInterval: number): Promise<void> {\n let first = true;\n while (!(await HPApi.isAlive())) {\n if (first) {\n console.log(\n `Device ip: ${printerIP} is down! [${new Date().toISOString()}]`\n );\n }\n first = false;\n await delay(deviceUpPollingInterval);\n }\n if (!first) {\n console.log(\n `Device ip: ${printerIP} is up again! [${new Date().toISOString()}]`\n );\n }\n }\n\n static async getDiscoveryTree(): Promise<DiscoveryTree> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/DevMgmt/DiscoveryTree.xml\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return DiscoveryTree.createDiscoveryTree(response.data);\n }\n }\n\n static async getWalkupScanDestinations(\n uri: string = \"/WalkupScan/WalkupScanDestinations\"\n ): Promise<WalkupScanDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanDestinations.createWalkupScanDestinations(response.data);\n }\n }\n\n static async getWalkupScanToCompDestinations(): Promise<WalkupScanToCompDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScanToComp/WalkupScanToCompDestinations\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompDestinations.createWalkupScanToCompDestinations(\n response.data\n );\n }\n }\n\n static async getWalkupScanManifest(uri: string): Promise<WalkupScanManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanManifest.createWalkupScanManifest(response.data);\n }\n }\n static async getWalkupScanToCompManifest(\n uri: string\n ): Promise<WalkupScanToCompManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompManifest.createWalkupScanToCompManifest(\n response.data\n );\n }\n }\n\n static async getScanJobManifest(uri: string): Promise<ScanJobManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanJobManifest.createScanJobManifest(response.data);\n }\n }\n\n static async getScanCaps(uri: string): Promise<ScanCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanCaps.createScanCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompCaps(\n uri: string\n ): Promise<WalkupScanToCompCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompCaps.createWalkupScanToCompCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompEvent(\n compEventURI: string\n ): Promise<WalkupScanToCompEvent> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: compEventURI,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n return WalkupScanToCompEvent.createWalkupScanToCompEvent(response.data);\n }\n }\n\n static async removeDestination(\n walkupScanDestination: WalkupScanDestination | WalkupScanToCompDestination\n ): Promise<boolean> {\n let path: string;\n\n if (walkupScanDestination.resourceURI.startsWith(\"http\")) {\n let urlInfo = new URL(walkupScanDestination.resourceURI);\n if (urlInfo.pathname === null) {\n throw new Error(\n `invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`\n );\n }\n path = urlInfo.pathname;\n } else {\n path = walkupScanDestination.resourceURI;\n }\n\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: path,\n method: \"DELETE\",\n responseType: \"text\",\n });\n if (response.status === 204 || response.status == 200) {\n return true;\n } else {\n throw response;\n }\n }\n\n static async registerWalkupScanDestination(\n destination: Destination\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScan/WalkupScanDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n static async registerWalkupScanToCompDestination(\n destination: Destination\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScanToComp/WalkupScanToCompDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n\n static async getEvents(\n etag = \"\",\n decisecondTimeout = 0\n ): Promise<EtagEventTable> {\n let url = this.appendTimeout(\"/EventMgmt/EventTable\", decisecondTimeout);\n\n let headers = this.placeETagHeader(etag, {});\n\n let response: AxiosResponse<string>;\n try {\n response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"GET\",\n responseType: \"text\",\n headers: headers,\n timeout: decisecondTimeout * 100 * 1.1,\n });\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (!axiosError.isAxiosError) throw error;\n\n if (axiosError.response?.status === 304) {\n return {\n etag: etag,\n eventTable: new EventTable({}),\n };\n }\n throw error;\n }\n\n const etagReceived = response.headers[\"etag\"];\n if (etagReceived == null) {\n throw response;\n }\n\n const content = response.data;\n return EventTable.createEtagEventTable(content, etagReceived);\n }\n\n static placeETagHeader(\n etag: string,\n headers: RawAxiosRequestHeaders\n ): RawAxiosRequestHeaders {\n if (etag !== \"\") {\n headers[\"If-None-Match\"] = etag;\n }\n return headers;\n }\n\n static appendTimeout(url: string, timeout: number | null = null): string {\n if (timeout == null) {\n timeout = 1200;\n }\n if (timeout > 0) {\n url += \"?timeout=\" + timeout;\n }\n return url;\n }\n\n static async getDestination(\n destinationURL: string\n ): Promise<WalkupScanDestination | WalkupScanToCompDestination> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: destinationURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n if (destinationURL.includes(\"WalkupScanToComp\")) {\n return WalkupScanToCompDestination.createWalkupScanToCompDestination(\n content\n );\n } else {\n return WalkupScanDestination.createWalkupScanDestination(content);\n }\n }\n }\n\n static async getScanStatus(): Promise<ScanStatus> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/Scan/Status\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n let content = response.data;\n return ScanStatus.createScanStatus(content);\n }\n }\n\n static delay(t: number): Promise<void> {\n return new Promise(function (resolve) {\n setTimeout(resolve, t);\n });\n }\n\n static async postJob(job: ScanJobSettings): Promise<string> {\n await HPApi.delay(500);\n const xml = await job.toXML();\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}:8080`,\n url: \"/Scan/Jobs\",\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return response.headers.location;\n } else {\n throw response;\n }\n }\n\n /**\n * @param jobURL\n * @return {Promise<Job|*>}\n */\n static async getJob(jobURL: string) {\n const response = await HPApi.callAxios({\n url: jobURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n return Job.createJob(content);\n }\n }\n\n static async downloadPage(\n binaryURL: string,\n destination: string\n ): Promise<string> {\n const { data }: AxiosResponse<Stream> = await axios.request<Stream>({\n baseURL: `http://${printerIP}:8080`,\n url: binaryURL,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n const destinationFileStream = fs.createWriteStream(destination);\n data.pipe(destinationFileStream);\n\n await promisify(stream.finished)(destinationFileStream);\n\n return destination;\n }\n}\n"]}
1
+ {"version":3,"file":"HPApi.js","sourceRoot":"","sources":["../src/HPApi.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\n\nimport { promisify } from \"util\";\nimport fs from \"fs\";\nimport axios, {\n AxiosError,\n AxiosRequestConfig,\n AxiosResponse,\n RawAxiosRequestHeaders,\n} from \"axios\";\nimport { URL } from \"url\";\nimport * as stream from \"stream\";\nimport { Stream } from \"stream\";\nimport EventTable, { EtagEventTable } from \"./EventTable\";\nimport Job from \"./Job\";\nimport ScanStatus from \"./ScanStatus\";\nimport WalkupScanDestination from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination from \"./WalkupScanToCompDestination\";\nimport WalkupScanDestinations from \"./WalkupScanDestinations\";\nimport WalkupScanToCompDestinations from \"./WalkupScanToCompDestinations\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport Destination from \"./Destination\";\nimport WalkupScanToCompEvent from \"./WalkupScanToCompEvent\";\nimport DiscoveryTree from \"./DiscoveryTree\";\nimport WalkupScanToCompManifest from \"./WalkupScanToCompManifest\";\nimport WalkupScanToCompCaps from \"./WalkupScanToCompCaps\";\nimport WalkupScanManifest from \"./WalkupScanManifest\";\nimport ScanJobManifest from \"./ScanJobManifest\";\nimport ScanCaps from \"./ScanCaps\";\nimport { delay } from \"./delay\";\nimport * as net from \"net\";\n\nlet printerIP = \"192.168.1.11\";\nlet debug = false;\nlet callCount = 0;\n\nexport default class HPApi {\n static setDeviceIP(ip: string): void {\n printerIP = ip;\n }\n\n static setDebug(dbg: boolean): void {\n debug = dbg;\n }\n\n private static logDebug(\n callId: number,\n isRequest: boolean,\n msg: object | string,\n ): void {\n if (debug) {\n const id = String(callId).padStart(4, \"0\");\n const content = typeof msg === \"string\" ? msg : JSON.stringify(msg);\n console.log(id + (isRequest ? \" -> \" : \" <- \") + content);\n }\n }\n\n private static async callAxios(\n request: AxiosRequestConfig,\n ): Promise<AxiosResponse<string>> {\n callCount++;\n if (request.timeout === 0) {\n request.timeout = 100_000;\n }\n HPApi.logDebug(callCount, true, request);\n try {\n const response = await axios(request);\n HPApi.logDebug(callCount, false, {\n status: response.status,\n data: response.data,\n headers: response.headers,\n statusText: response.statusText,\n });\n return response;\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (axiosError.isAxiosError) {\n HPApi.logDebug(callCount, false, {\n status: axiosError.response?.status,\n data: axiosError.response?.data,\n headers: axiosError.response?.headers,\n statusText: axiosError.response?.statusText,\n });\n }\n throw error;\n }\n }\n\n static async isAlive(timeout: number | null = null): Promise<boolean> {\n const definedTimeout = timeout || 10000; // default of 10 seconds\n return new Promise((resolve) => {\n const socket = net.createConnection(80, printerIP, () => {\n clearTimeout(timer);\n resolve(true);\n socket.end();\n });\n const timer = setTimeout(() => {\n resolve(false);\n socket.end();\n }, definedTimeout);\n socket.on(\"error\", () => {\n clearTimeout(timer);\n resolve(false);\n });\n });\n }\n\n static async waitDeviceUp(deviceUpPollingInterval: number): Promise<void> {\n let first = true;\n while (!(await HPApi.isAlive())) {\n if (first) {\n console.log(\n `Device ip: ${printerIP} is down! [${new Date().toISOString()}]`,\n );\n }\n first = false;\n await delay(deviceUpPollingInterval);\n }\n if (!first) {\n console.log(\n `Device ip: ${printerIP} is up again! [${new Date().toISOString()}]`,\n );\n }\n }\n\n static async getDiscoveryTree(): Promise<DiscoveryTree> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/DevMgmt/DiscoveryTree.xml\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return DiscoveryTree.createDiscoveryTree(response.data);\n }\n }\n\n static async getWalkupScanDestinations(\n uri: string = \"/WalkupScan/WalkupScanDestinations\",\n ): Promise<WalkupScanDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanDestinations.createWalkupScanDestinations(response.data);\n }\n }\n\n static async getWalkupScanToCompDestinations(): Promise<WalkupScanToCompDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScanToComp/WalkupScanToCompDestinations\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompDestinations.createWalkupScanToCompDestinations(\n response.data,\n );\n }\n }\n\n static async getWalkupScanManifest(uri: string): Promise<WalkupScanManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanManifest.createWalkupScanManifest(response.data);\n }\n }\n static async getWalkupScanToCompManifest(\n uri: string,\n ): Promise<WalkupScanToCompManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompManifest.createWalkupScanToCompManifest(\n response.data,\n );\n }\n }\n\n static async getScanJobManifest(uri: string): Promise<ScanJobManifest> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanJobManifest.createScanJobManifest(response.data);\n }\n }\n\n static async getScanCaps(uri: string): Promise<ScanCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return ScanCaps.createScanCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompCaps(\n uri: string,\n ): Promise<WalkupScanToCompCaps> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: uri,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n return WalkupScanToCompCaps.createWalkupScanToCompCaps(response.data);\n }\n }\n\n static async getWalkupScanToCompEvent(\n compEventURI: string,\n ): Promise<WalkupScanToCompEvent> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: compEventURI,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n return WalkupScanToCompEvent.createWalkupScanToCompEvent(response.data);\n }\n }\n\n static async removeDestination(\n walkupScanDestination: WalkupScanDestination | WalkupScanToCompDestination,\n ): Promise<boolean> {\n let path: string;\n\n if (walkupScanDestination.resourceURI.startsWith(\"http\")) {\n let urlInfo = new URL(walkupScanDestination.resourceURI);\n if (urlInfo.pathname === null) {\n throw new Error(\n `invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`,\n );\n }\n path = urlInfo.pathname;\n } else {\n path = walkupScanDestination.resourceURI;\n }\n\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: path,\n method: \"DELETE\",\n responseType: \"text\",\n });\n if (response.status === 204 || response.status == 200) {\n return true;\n } else {\n throw response;\n }\n }\n\n static async registerWalkupScanDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScan/WalkupScanDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n static async registerWalkupScanToCompDestination(\n destination: Destination,\n ): Promise<string> {\n const xml = await destination.toXML();\n const url = \"/WalkupScanToComp/WalkupScanToCompDestinations\";\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n\n static async getEvents(\n etag = \"\",\n decisecondTimeout = 0,\n ): Promise<EtagEventTable> {\n let url = this.appendTimeout(\"/EventMgmt/EventTable\", decisecondTimeout);\n\n let headers = this.placeETagHeader(etag, {});\n\n let response: AxiosResponse<string>;\n try {\n response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: url,\n method: \"GET\",\n responseType: \"text\",\n headers: headers,\n timeout: decisecondTimeout * 100 * 1.1,\n });\n } catch (error) {\n const axiosError = error as AxiosError;\n\n if (!axiosError.isAxiosError) throw error;\n\n if (axiosError.response?.status === 304) {\n return {\n etag: etag,\n eventTable: new EventTable({}),\n };\n }\n throw error;\n }\n\n const etagReceived = response.headers[\"etag\"];\n if (etagReceived == null) {\n throw response;\n }\n\n const content = response.data;\n return EventTable.createEtagEventTable(content, etagReceived);\n }\n\n static placeETagHeader(\n etag: string,\n headers: RawAxiosRequestHeaders,\n ): RawAxiosRequestHeaders {\n if (etag !== \"\") {\n headers[\"If-None-Match\"] = etag;\n }\n return headers;\n }\n\n static appendTimeout(url: string, timeout: number | null = null): string {\n if (timeout == null) {\n timeout = 1200;\n }\n if (timeout > 0) {\n url += \"?timeout=\" + timeout;\n }\n return url;\n }\n\n static async getDestination(\n destinationURL: string,\n ): Promise<WalkupScanDestination | WalkupScanToCompDestination> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: destinationURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n if (destinationURL.includes(\"WalkupScanToComp\")) {\n return WalkupScanToCompDestination.createWalkupScanToCompDestination(\n content,\n );\n } else {\n return WalkupScanDestination.createWalkupScanDestination(content);\n }\n }\n }\n\n static async getScanStatus(): Promise<ScanStatus> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/Scan/Status\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n let content = response.data;\n return ScanStatus.createScanStatus(content);\n }\n }\n\n static delay(t: number): Promise<void> {\n return new Promise(function (resolve) {\n setTimeout(resolve, t);\n });\n }\n\n static async postJob(job: ScanJobSettings): Promise<string> {\n await HPApi.delay(500);\n const xml = await job.toXML();\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}:8080`,\n url: \"/Scan/Jobs\",\n method: \"POST\",\n headers: { \"Content-Type\": \"text/xml\" },\n data: xml,\n responseType: \"text\",\n });\n\n if (response.status === 201 && response.headers.location != null) {\n return response.headers.location;\n } else {\n throw response;\n }\n }\n\n /**\n * @param jobURL\n * @return {Promise<Job|*>}\n */\n static async getJob(jobURL: string) {\n const response = await HPApi.callAxios({\n url: jobURL,\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw response;\n } else {\n const content = response.data;\n return Job.createJob(content);\n }\n }\n\n static async downloadPage(\n binaryURL: string,\n destination: string,\n ): Promise<string> {\n const { data }: AxiosResponse<Stream> = await axios.request<Stream>({\n baseURL: `http://${printerIP}:8080`,\n url: binaryURL,\n method: \"GET\",\n responseType: \"stream\",\n });\n\n const destinationFileStream = fs.createWriteStream(destination);\n data.pipe(destinationFileStream);\n\n await promisify(stream.finished)(destinationFileStream);\n\n return destination;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare enum InputSource {
2
+ Adf = "Adf",
3
+ Platen = "Platen"
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputSource = void 0;
4
+ var InputSource;
5
+ (function (InputSource) {
6
+ InputSource["Adf"] = "Adf";
7
+ InputSource["Platen"] = "Platen";
8
+ })(InputSource = exports.InputSource || (exports.InputSource = {}));
9
+ //# sourceMappingURL=InputSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputSource.js","sourceRoot":"","sources":["../src/InputSource.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,gCAAiB,CAAA;AACnB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB","sourcesContent":["export enum InputSource {\n Adf = \"Adf\",\n Platen = \"Platen\",\n}\n"]}
package/dist/Job.d.ts CHANGED
@@ -9,6 +9,8 @@ export interface JobData {
9
9
  ImageWidth: string[];
10
10
  ImageHeight: string[];
11
11
  ScanSettings: {
12
+ InputSource: string[];
13
+ ContentType: string[];
12
14
  XResolution: string[];
13
15
  YResolution: string[];
14
16
  }[];
package/dist/Job.js CHANGED
@@ -47,7 +47,7 @@ class Job {
47
47
  }
48
48
  get imageWidth() {
49
49
  var _a, _b, _c, _d, _e;
50
- if (!this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
50
+ if (!Object.prototype.hasOwnProperty.call(this.data["j:Job"].ScanJob[0], "PreScanPage")) {
51
51
  return null;
52
52
  }
53
53
  return parseInt((_e = (_d = (_c = (_b = (_a = this.data["j:Job"].ScanJob[0].PreScanPage) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.BufferInfo) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.ImageWidth[0]) !== null && _e !== void 0 ? _e : "");
@@ -68,7 +68,7 @@ class Job {
68
68
  }
69
69
  get yResolution() {
70
70
  var _a, _b, _c, _d, _e, _f, _g;
71
- if (this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
71
+ if (Object.prototype.hasOwnProperty.call(this.data["j:Job"].ScanJob[0], "PreScanPage")) {
72
72
  return parseInt((_g = (_f = (_e = (_d = (_c = (_b = (_a = this.data["j:Job"].ScanJob[0].PreScanPage) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.BufferInfo) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.ScanSettings) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.YResolution[0]) !== null && _g !== void 0 ? _g : "");
73
73
  }
74
74
  return null;
package/dist/Job.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, JobData>(parser.parseString);\n\nexport interface JobData {\n \"j:Job\": {\n ScanJob: {\n PreScanPage?: {\n PageState: string[];\n BinaryURL: string[];\n PageNumber: string[];\n BufferInfo: {\n ImageWidth: string[];\n ImageHeight: string[];\n ScanSettings: {\n XResolution: string[];\n YResolution: string[];\n }[];\n }[];\n }[];\n PostScanPage?: {\n PageNumber: string[];\n }[];\n }[];\n \"j:JobState\": string[];\n };\n}\n\nexport default class Job {\n private readonly data: JobData;\n constructor(data: JobData) {\n this.data = data;\n }\n\n static async createJob(content: string): Promise<Job> {\n const parsed = await parseString(content);\n return new Job(parsed);\n }\n\n get currentPageNumber(): string | null {\n let preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageNumber[0];\n } else {\n return null;\n }\n }\n\n get totalPageNumber(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PostScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PostScanPage[0].PageNumber[0],\n 10\n );\n }\n return null;\n }\n\n get jobState():\n | \"Completed\"\n | \"Processing\"\n | \"ReadyToUpload\"\n | \"Canceled\"\n | string {\n return this.data[\"j:Job\"][\"j:JobState\"][0];\n }\n\n get pageState(): string | null {\n let preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageState[0];\n } else {\n return null;\n }\n }\n\n get binaryURL(): string | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BinaryURL[0];\n }\n return null;\n }\n\n get imageWidth(): number | null {\n if (!this.data[\"j:Job\"].ScanJob[0].hasOwnProperty(\"PreScanPage\")) {\n return null;\n }\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ImageWidth[0] ?? \"\"\n );\n }\n get imageHeight(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BufferInfo[0]\n .ImageHeight[0]\n );\n }\n return null;\n }\n get xResolution(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.XResolution[0] ?? \"\"\n );\n }\n return null;\n }\n get yResolution(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].hasOwnProperty(\"PreScanPage\")) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.YResolution[0] ?? \"\"\n );\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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","sourcesContent":["\"use strict\";\nimport { Parser } from \"xml2js\";\nconst parser = new Parser();\nimport { promisify } from \"util\";\nconst parseString = promisify<string, JobData>(parser.parseString);\n\nexport interface JobData {\n \"j:Job\": {\n ScanJob: {\n PreScanPage?: {\n PageState: string[];\n BinaryURL: string[];\n PageNumber: string[];\n BufferInfo: {\n ImageWidth: string[];\n ImageHeight: string[];\n ScanSettings: {\n InputSource: string[];\n ContentType: string[];\n XResolution: string[];\n YResolution: string[];\n }[];\n }[];\n }[];\n PostScanPage?: {\n PageNumber: string[];\n }[];\n }[];\n \"j:JobState\": string[];\n };\n}\n\nexport default class Job {\n private readonly data: JobData;\n constructor(data: JobData) {\n this.data = data;\n }\n\n static async createJob(content: string): Promise<Job> {\n const parsed = await parseString(content);\n return new Job(parsed);\n }\n\n get currentPageNumber(): string | null {\n let preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageNumber[0];\n } else {\n return null;\n }\n }\n\n get totalPageNumber(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PostScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PostScanPage[0].PageNumber[0],\n 10,\n );\n }\n return null;\n }\n\n get jobState():\n | \"Completed\"\n | \"Processing\"\n | \"ReadyToUpload\"\n | \"Canceled\"\n | string {\n return this.data[\"j:Job\"][\"j:JobState\"][0];\n }\n\n get pageState(): string | null {\n let preScanPage = this.data[\"j:Job\"].ScanJob[0].PreScanPage;\n if (preScanPage) {\n return preScanPage[0].PageState[0];\n } else {\n return null;\n }\n }\n\n get binaryURL(): string | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BinaryURL[0];\n }\n return null;\n }\n\n get imageWidth(): number | null {\n if (\n !Object.prototype.hasOwnProperty.call(\n this.data[\"j:Job\"].ScanJob[0],\n \"PreScanPage\",\n )\n ) {\n return null;\n }\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ImageWidth[0] ?? \"\",\n );\n }\n get imageHeight(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage[0].BufferInfo[0]\n .ImageHeight[0],\n );\n }\n return null;\n }\n get xResolution(): number | null {\n if (this.data[\"j:Job\"].ScanJob[0].PreScanPage) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.XResolution[0] ?? \"\",\n );\n }\n return null;\n }\n get yResolution(): number | null {\n if (\n Object.prototype.hasOwnProperty.call(\n this.data[\"j:Job\"].ScanJob[0],\n \"PreScanPage\",\n )\n ) {\n return parseInt(\n this.data[\"j:Job\"].ScanJob[0].PreScanPage?.[0]?.BufferInfo?.[0]\n ?.ScanSettings?.[0]?.YResolution[0] ?? \"\",\n );\n }\n return null;\n }\n}\n"]}
package/dist/JpegUtil.js CHANGED
@@ -61,7 +61,7 @@ class JpegUtil {
61
61
  let heightWritten = false;
62
62
  const parsingSucceed = this.parse(buffer, {
63
63
  [start_of_Frame_0]: (start, length) => {
64
- // read the the "Start of frame" marker which contains the file size
64
+ // read the "Start of frame" marker which contains the file size
65
65
  // write the picture size
66
66
  heightWritten = this.writeHeightInStartOfFrame(buffer, start, length, height);
67
67
  // stop processing
@@ -1 +1 @@
1
- {"version":3,"file":"JpegUtil.js","sourceRoot":"","sources":["../src/JpegUtil.ts"],"names":[],"mappings":"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","sourcesContent":["let debug = false;\n\nconst start_of_Frame_0 = \"FFC0\";\nconst define_number_of_lines = \"FFDC\";\n\nexport default class JpegUtil {\n static setDebug(dbg: boolean) {\n debug = dbg;\n }\n\n private static logDebug(msg: string | object) {\n if (debug) {\n console.log(msg);\n }\n }\n\n private static numToHex(s: number) {\n return s.toString(16).padStart(2, \"0\").toUpperCase();\n }\n\n static GetJpgSize(buffer: Buffer): { height: number; width: number } | null {\n let size: { height: number; width: number } | null = null;\n this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the the \"Start of frame\" marker which contains the file size\n if (6 < length) {\n const pHeight = buffer[start + 3] * 256 + buffer[start + 4];\n const pWidth = buffer[start + 5] * 256 + buffer[start + 6];\n\n size = { height: pHeight, width: pWidth };\n }\n\n // stop processing\n return true;\n },\n });\n return size;\n }\n\n static setJpgSize(\n buffer: Buffer,\n size: { height: number; width: number }\n ): boolean {\n let sizeWritten = false;\n const parsingSucceed = this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the the \"Start of frame\" marker which contains the file size\n\n // write the picture size\n if (6 < length) {\n const height = Buffer.from([0x00, 0x00]);\n height.writeInt16BE(size.height);\n buffer[start + 3] = height[0];\n buffer[start + 4] = height[1];\n\n const width = Buffer.from([0x00, 0x00]);\n width.writeInt16BE(size.width);\n buffer[start + 5] = width[0];\n buffer[start + 6] = width[1];\n\n sizeWritten = true;\n }\n\n // stop processing\n return true;\n },\n });\n\n if (!parsingSucceed) {\n return false;\n }\n\n return sizeWritten;\n }\n\n static setJpgHeight(buffer: Buffer, height: number): boolean {\n let heightWritten = false;\n const parsingSucceed = this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the the \"Start of frame\" marker which contains the file size\n\n // write the picture size\n heightWritten = this.writeHeightInStartOfFrame(\n buffer,\n start,\n length,\n height\n );\n\n // stop processing\n return true;\n },\n });\n\n if (!parsingSucceed) {\n return false;\n }\n\n return heightWritten;\n }\n\n static fixSizeWithDNL(buffer: Buffer): number | null {\n let numberOfLine: number | null = null;\n let startOfStartOfFrame: number | null = null;\n let lengthOfStartOfFrame: number | null = null;\n this.parse(buffer, {\n [define_number_of_lines]: (start: number, length: number) => {\n numberOfLine = this.readNumberOfLineFromDNL(buffer, start, length);\n return false; // don't stop\n },\n [start_of_Frame_0]: (start: number, length: number) => {\n startOfStartOfFrame = start;\n lengthOfStartOfFrame = length;\n return false; // don't stop\n },\n });\n\n if (numberOfLine == null) {\n this.logDebug(\"DNL marker not found impossible to fix height\");\n return null;\n }\n\n if (startOfStartOfFrame == null || lengthOfStartOfFrame == null) {\n this.logDebug(\n \"Start of frame 0 not found, either jpeg parsing is broken either the stream is corrupted\"\n );\n return null;\n }\n\n if (\n this.writeHeightInStartOfFrame(\n buffer,\n startOfStartOfFrame,\n lengthOfStartOfFrame,\n numberOfLine\n )\n ) {\n return numberOfLine;\n }\n return null;\n }\n\n private static writeHeightInStartOfFrame(\n buffer: Buffer,\n startOfStartOfFrame: number,\n lengthOfStartOfFrame: number,\n numberOfLine: number\n ): boolean {\n // write the picture height\n if (6 < lengthOfStartOfFrame) {\n const heightBuffer = Buffer.from([0x00, 0x00]);\n heightBuffer.writeInt16BE(numberOfLine);\n buffer[startOfStartOfFrame + 3] = heightBuffer[0];\n buffer[startOfStartOfFrame + 4] = heightBuffer[1];\n\n return true;\n }\n\n return false;\n }\n\n static readNumberOfLineFromDNL(\n buffer: Buffer,\n start: number,\n length: number\n ): number | null {\n let numberOfLine: number | null = null;\n\n // read the number of line\n if (3 < length) {\n numberOfLine = buffer[start + 2] * 256 + buffer[start + 3];\n }\n\n return numberOfLine;\n }\n static parse(\n buffer: Buffer,\n markerHandler: { [key: string]: (start: number, length: number) => boolean }\n ): boolean {\n let i: number = 0;\n\n if (!this.isSOIHeader(i, buffer)) {\n this.logDebug(\"Not a valid SOI header\");\n return false;\n }\n\n i += 4;\n\n // Check for valid JPEG header (null terminated JFIF)\n if (!this.isValidJpegHeader(i, buffer)) {\n this.logDebug(\"Not a valid JFIF string\");\n return false;\n }\n\n return this.parseMarker(buffer, i, markerHandler);\n }\n\n private static isValidJpegHeader(i: number, buffer: Buffer) {\n return (\n i + 6 < buffer.length &&\n buffer[i + 2] == \"J\".charCodeAt(0) &&\n buffer[i + 3] == \"F\".charCodeAt(0) &&\n buffer[i + 4] == \"I\".charCodeAt(0) &&\n buffer[i + 5] == \"F\".charCodeAt(0) &&\n buffer[i + 6] == 0x00\n );\n }\n\n private static isSOIHeader(i: number, buffer: Buffer) {\n return (\n i + 3 < buffer.length &&\n buffer[i] == 0xff &&\n buffer[i + 1] == 0xd8 &&\n buffer[i + 2] == 0xff &&\n buffer[i + 3] == 0xe0\n );\n }\n\n private static getBlockLength(\n buffer: Buffer,\n i: number,\n marker: string\n ): number | null {\n if (\n marker === \"FFDA\" ||\n marker === \"FFD0\" ||\n marker === \"FFD1\" ||\n marker === \"FFD2\" ||\n marker === \"FFD3\" ||\n marker === \"FFD4\" ||\n marker === \"FFD5\" ||\n marker === \"FFD6\" ||\n marker === \"FFD7\"\n ) {\n return JpegUtil.findCurrentBlockSize(buffer, i + 2, marker);\n } else {\n // read the new block length\n const blockLength = buffer[i + 2] * 256 + buffer[i + 3];\n\n this.logDebug(`block size for ${marker} is ${blockLength}`);\n return blockLength;\n }\n }\n\n private static findCurrentBlockSize(\n buffer: Buffer,\n i: number,\n current_marker: string\n ): number | null {\n for (let j = 0; i + j < buffer.length; j++) {\n if (buffer[i + j] === 0xff) {\n if (i + j + 1 < buffer.length) {\n if (buffer[i + j + 1] == 0x00) {\n // it's ok just continue\n } else {\n // we've just found the end of the Start of Scan\n return j;\n }\n } else {\n this.logDebug(\n `Premature end of stream reach while searching for the block size inside marker ${current_marker}`\n );\n return null;\n }\n }\n }\n return null;\n }\n\n private static parseMarker(\n buffer: Buffer,\n i: number,\n markerHandler: { [key: string]: (start: number, length: number) => boolean }\n ): boolean {\n let marker = \"\";\n\n //Retrieve the block length of the first block since the first block will not contain the size of file\n let blockLength = buffer[i] * 256 + buffer[i + 1];\n\n //Increase the file index to get to the next block\n i += blockLength;\n while (i < buffer.length) {\n if (buffer[i] != 0xff) {\n this.logDebug(\n \"We should be at the begining of the next block, but got: \" +\n buffer[i]\n );\n return false;\n }\n\n if (i + 1 >= buffer.length) {\n this.logDebug(\"End of stream prematurely found in marker: \" + marker);\n return false;\n }\n\n if (buffer[i + 1] == 0x00) {\n this.logDebug(`Bad marker at ${i} 0x00 just after marker ${marker}`);\n return false;\n }\n\n marker = this.numToHex(buffer[i]) + this.numToHex(buffer[i + 1]);\n\n const foundBlockLength = this.getBlockLength(buffer, i, marker);\n if (foundBlockLength == null) {\n this.logDebug(\n `Was not able to determine block size for marker ${marker}`\n );\n return false;\n }\n blockLength = foundBlockLength;\n\n const handler = markerHandler[marker];\n if (handler != null && handler(i + 2, blockLength)) {\n return true;\n }\n\n i = i + 2 + blockLength;\n }\n\n this.logDebug(\"End of payload reached\");\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"JpegUtil.js","sourceRoot":"","sources":["../src/JpegUtil.ts"],"names":[],"mappings":"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","sourcesContent":["let debug = false;\n\nconst start_of_Frame_0 = \"FFC0\";\nconst define_number_of_lines = \"FFDC\";\n\nexport default class JpegUtil {\n static setDebug(dbg: boolean) {\n debug = dbg;\n }\n\n private static logDebug(msg: string | object) {\n if (debug) {\n console.log(msg);\n }\n }\n\n private static numToHex(s: number) {\n return s.toString(16).padStart(2, \"0\").toUpperCase();\n }\n\n static GetJpgSize(buffer: Buffer): { height: number; width: number } | null {\n let size: { height: number; width: number } | null = null;\n this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the the \"Start of frame\" marker which contains the file size\n if (6 < length) {\n const pHeight = buffer[start + 3] * 256 + buffer[start + 4];\n const pWidth = buffer[start + 5] * 256 + buffer[start + 6];\n\n size = { height: pHeight, width: pWidth };\n }\n\n // stop processing\n return true;\n },\n });\n return size;\n }\n\n static setJpgSize(\n buffer: Buffer,\n size: { height: number; width: number },\n ): boolean {\n let sizeWritten = false;\n const parsingSucceed = this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the the \"Start of frame\" marker which contains the file size\n\n // write the picture size\n if (6 < length) {\n const height = Buffer.from([0x00, 0x00]);\n height.writeInt16BE(size.height);\n buffer[start + 3] = height[0];\n buffer[start + 4] = height[1];\n\n const width = Buffer.from([0x00, 0x00]);\n width.writeInt16BE(size.width);\n buffer[start + 5] = width[0];\n buffer[start + 6] = width[1];\n\n sizeWritten = true;\n }\n\n // stop processing\n return true;\n },\n });\n\n if (!parsingSucceed) {\n return false;\n }\n\n return sizeWritten;\n }\n\n static setJpgHeight(buffer: Buffer, height: number): boolean {\n let heightWritten = false;\n const parsingSucceed = this.parse(buffer, {\n [start_of_Frame_0]: (start: number, length: number) => {\n // read the \"Start of frame\" marker which contains the file size\n\n // write the picture size\n heightWritten = this.writeHeightInStartOfFrame(\n buffer,\n start,\n length,\n height,\n );\n\n // stop processing\n return true;\n },\n });\n\n if (!parsingSucceed) {\n return false;\n }\n\n return heightWritten;\n }\n\n static fixSizeWithDNL(buffer: Buffer): number | null {\n let numberOfLine: number | null = null;\n let startOfStartOfFrame: number | null = null;\n let lengthOfStartOfFrame: number | null = null;\n this.parse(buffer, {\n [define_number_of_lines]: (start: number, length: number) => {\n numberOfLine = this.readNumberOfLineFromDNL(buffer, start, length);\n return false; // don't stop\n },\n [start_of_Frame_0]: (start: number, length: number) => {\n startOfStartOfFrame = start;\n lengthOfStartOfFrame = length;\n return false; // don't stop\n },\n });\n\n if (numberOfLine == null) {\n this.logDebug(\"DNL marker not found impossible to fix height\");\n return null;\n }\n\n if (startOfStartOfFrame == null || lengthOfStartOfFrame == null) {\n this.logDebug(\n \"Start of frame 0 not found, either jpeg parsing is broken either the stream is corrupted\",\n );\n return null;\n }\n\n if (\n this.writeHeightInStartOfFrame(\n buffer,\n startOfStartOfFrame,\n lengthOfStartOfFrame,\n numberOfLine,\n )\n ) {\n return numberOfLine;\n }\n return null;\n }\n\n private static writeHeightInStartOfFrame(\n buffer: Buffer,\n startOfStartOfFrame: number,\n lengthOfStartOfFrame: number,\n numberOfLine: number,\n ): boolean {\n // write the picture height\n if (6 < lengthOfStartOfFrame) {\n const heightBuffer = Buffer.from([0x00, 0x00]);\n heightBuffer.writeInt16BE(numberOfLine);\n buffer[startOfStartOfFrame + 3] = heightBuffer[0];\n buffer[startOfStartOfFrame + 4] = heightBuffer[1];\n\n return true;\n }\n\n return false;\n }\n\n static readNumberOfLineFromDNL(\n buffer: Buffer,\n start: number,\n length: number,\n ): number | null {\n let numberOfLine: number | null = null;\n\n // read the number of line\n if (3 < length) {\n numberOfLine = buffer[start + 2] * 256 + buffer[start + 3];\n }\n\n return numberOfLine;\n }\n static parse(\n buffer: Buffer,\n markerHandler: {\n [key: string]: (start: number, length: number) => boolean;\n },\n ): boolean {\n let i: number = 0;\n\n if (!this.isSOIHeader(i, buffer)) {\n this.logDebug(\"Not a valid SOI header\");\n return false;\n }\n\n i += 4;\n\n // Check for valid JPEG header (null terminated JFIF)\n if (!this.isValidJpegHeader(i, buffer)) {\n this.logDebug(\"Not a valid JFIF string\");\n return false;\n }\n\n return this.parseMarker(buffer, i, markerHandler);\n }\n\n private static isValidJpegHeader(i: number, buffer: Buffer) {\n return (\n i + 6 < buffer.length &&\n buffer[i + 2] == \"J\".charCodeAt(0) &&\n buffer[i + 3] == \"F\".charCodeAt(0) &&\n buffer[i + 4] == \"I\".charCodeAt(0) &&\n buffer[i + 5] == \"F\".charCodeAt(0) &&\n buffer[i + 6] == 0x00\n );\n }\n\n private static isSOIHeader(i: number, buffer: Buffer) {\n return (\n i + 3 < buffer.length &&\n buffer[i] == 0xff &&\n buffer[i + 1] == 0xd8 &&\n buffer[i + 2] == 0xff &&\n buffer[i + 3] == 0xe0\n );\n }\n\n private static getBlockLength(\n buffer: Buffer,\n i: number,\n marker: string,\n ): number | null {\n if (\n marker === \"FFDA\" ||\n marker === \"FFD0\" ||\n marker === \"FFD1\" ||\n marker === \"FFD2\" ||\n marker === \"FFD3\" ||\n marker === \"FFD4\" ||\n marker === \"FFD5\" ||\n marker === \"FFD6\" ||\n marker === \"FFD7\"\n ) {\n return JpegUtil.findCurrentBlockSize(buffer, i + 2, marker);\n } else {\n // read the new block length\n const blockLength = buffer[i + 2] * 256 + buffer[i + 3];\n\n this.logDebug(`block size for ${marker} is ${blockLength}`);\n return blockLength;\n }\n }\n\n private static findCurrentBlockSize(\n buffer: Buffer,\n i: number,\n current_marker: string,\n ): number | null {\n for (let j = 0; i + j < buffer.length; j++) {\n if (buffer[i + j] === 0xff) {\n if (i + j + 1 < buffer.length) {\n if (buffer[i + j + 1] == 0x00) {\n // it's ok just continue\n } else {\n // we've just found the end of the Start of Scan\n return j;\n }\n } else {\n this.logDebug(\n `Premature end of stream reach while searching for the block size inside marker ${current_marker}`,\n );\n return null;\n }\n }\n }\n return null;\n }\n\n private static parseMarker(\n buffer: Buffer,\n i: number,\n markerHandler: {\n [key: string]: (start: number, length: number) => boolean;\n },\n ): boolean {\n let marker = \"\";\n\n //Retrieve the block length of the first block since the first block will not contain the size of file\n let blockLength = buffer[i] * 256 + buffer[i + 1];\n\n //Increase the file index to get to the next block\n i += blockLength;\n while (i < buffer.length) {\n if (buffer[i] != 0xff) {\n this.logDebug(\n \"We should be at the begining of the next block, but got: \" +\n buffer[i],\n );\n return false;\n }\n\n if (i + 1 >= buffer.length) {\n this.logDebug(\"End of stream prematurely found in marker: \" + marker);\n return false;\n }\n\n if (buffer[i + 1] == 0x00) {\n this.logDebug(`Bad marker at ${i} 0x00 just after marker ${marker}`);\n return false;\n }\n\n marker = this.numToHex(buffer[i]) + this.numToHex(buffer[i + 1]);\n\n const foundBlockLength = this.getBlockLength(buffer, i, marker);\n if (foundBlockLength == null) {\n this.logDebug(\n `Was not able to determine block size for marker ${marker}`,\n );\n return false;\n }\n blockLength = foundBlockLength;\n\n const handler = markerHandler[marker];\n if (handler != null && handler(i + 2, blockLength)) {\n return true;\n }\n\n i = i + 2 + blockLength;\n }\n\n this.logDebug(\"End of payload reached\");\n return true;\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  export default class PathHelper {
2
- static getFileForPage(folder: string, scanCount: number, currentPageNumber: number, filePattern: string | undefined, extension: string): string;
3
- static makeUnique(filePath: string): string;
4
- static getFileForScan(folder: string, scanCount: number, filePattern: string | undefined, extension: string): string;
2
+ static getFileForPage(folder: string, scanCount: number, currentPageNumber: number, filePattern: string | undefined, extension: string, date: Date): string;
3
+ static getNextScanNumber(folder: string, currentScanCount: number, filePattern: string | undefined): Promise<number>;
4
+ static makeUnique(filePath: string, date: Date): string;
5
+ static getFileForScan(folder: string, scanCount: number, filePattern: string | undefined, extension: string, date: Date): string;
5
6
  static getOutputFolder(folder?: string | undefined): Promise<string>;
6
7
  }