node-hp-scan-to 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +49 -10
- package/dist/Destination.js +36 -84
- package/dist/Destination.js.map +1 -1
- package/dist/DeviceCapabilities.d.ts +4 -0
- package/dist/DeviceCapabilities.js +3 -0
- package/dist/DeviceCapabilities.js.map +1 -0
- package/dist/DiscoveryTree.d.ts +16 -0
- package/dist/DiscoveryTree.js +38 -0
- package/dist/DiscoveryTree.js.map +1 -0
- package/dist/Event.d.ts +1 -1
- package/dist/Event.js +24 -39
- package/dist/Event.js.map +1 -1
- package/dist/EventTable.d.ts +5 -0
- package/dist/EventTable.js +24 -18
- package/dist/EventTable.js.map +1 -1
- package/dist/HPApi.d.ts +26 -18
- package/dist/HPApi.js +386 -461
- package/dist/HPApi.js.map +1 -1
- package/dist/Job.d.ts +8 -7
- package/dist/Job.js +69 -86
- package/dist/Job.js.map +1 -1
- package/dist/JpegUtil.js +73 -82
- package/dist/JpegUtil.js.map +1 -1
- package/dist/KnownShortcut.d.ts +1 -0
- package/dist/KnownShortcut.js +3 -0
- package/dist/KnownShortcut.js.map +1 -0
- package/dist/PathHelper.d.ts +2 -1
- package/dist/PathHelper.js +41 -68
- package/dist/PathHelper.js.map +1 -1
- package/dist/ScanCaps.d.ts +7 -0
- package/dist/ScanCaps.js +17 -0
- package/dist/ScanCaps.js.map +1 -0
- package/dist/ScanContent.js +18 -73
- package/dist/ScanContent.js.map +1 -1
- package/dist/ScanJobManifest.d.ts +23 -0
- package/dist/ScanJobManifest.js +24 -0
- package/dist/ScanJobManifest.js.map +1 -0
- package/dist/ScanJobSettings.d.ts +3 -1
- package/dist/ScanJobSettings.js +48 -88
- package/dist/ScanJobSettings.js.map +1 -1
- package/dist/ScanStatus.d.ts +1 -0
- package/dist/ScanStatus.js +27 -28
- package/dist/ScanStatus.js.map +1 -1
- package/dist/WalkupScanDestination.d.ts +11 -13
- package/dist/WalkupScanDestination.js +32 -35
- package/dist/WalkupScanDestination.js.map +1 -1
- package/dist/WalkupScanDestinations.d.ts +1 -0
- package/dist/WalkupScanDestinations.js +21 -18
- package/dist/WalkupScanDestinations.js.map +1 -1
- package/dist/WalkupScanManifest.d.ts +23 -0
- package/dist/WalkupScanManifest.js +25 -0
- package/dist/WalkupScanManifest.js.map +1 -0
- package/dist/WalkupScanToCompCaps.d.ts +12 -0
- package/dist/WalkupScanToCompCaps.js +20 -0
- package/dist/WalkupScanToCompCaps.js.map +1 -0
- package/dist/WalkupScanToCompDestination.d.ts +10 -14
- package/dist/WalkupScanToCompDestination.js +32 -38
- package/dist/WalkupScanToCompDestination.js.map +1 -1
- package/dist/WalkupScanToCompDestinations.d.ts +1 -0
- package/dist/WalkupScanToCompDestinations.js +21 -18
- package/dist/WalkupScanToCompDestinations.js.map +1 -1
- package/dist/WalkupScanToCompEvent.d.ts +2 -1
- package/dist/WalkupScanToCompEvent.js +14 -11
- package/dist/WalkupScanToCompEvent.js.map +1 -1
- package/dist/WalkupScanToCompManifest.d.ts +23 -0
- package/dist/WalkupScanToCompManifest.js +25 -0
- package/dist/WalkupScanToCompManifest.js.map +1 -0
- package/dist/delay.d.ts +1 -0
- package/dist/delay.js +10 -0
- package/dist/delay.js.map +1 -0
- package/dist/fixJpegSize.d.ts +19 -0
- package/dist/fixJpegSize.js +292 -0
- package/dist/fixJpegSize.js.map +1 -0
- package/dist/index.js +209 -607
- package/dist/index.js.map +1 -1
- package/dist/listening.d.ts +9 -0
- package/dist/listening.js +108 -0
- package/dist/listening.js.map +1 -0
- package/dist/readDeviceCapabilities.d.ts +2 -0
- package/dist/readDeviceCapabilities.js +41 -0
- package/dist/readDeviceCapabilities.js.map +1 -0
- package/dist/scanProcess.d.ts +19 -0
- package/dist/scanProcess.js +292 -0
- package/dist/scanProcess.js.map +1 -0
- package/dist/scanProcessing.d.ts +20 -0
- package/dist/scanProcessing.js +320 -0
- package/dist/scanProcessing.js.map +1 -0
- package/dist/src/Destination.d.ts +8 -0
- package/dist/src/Destination.js +68 -0
- package/dist/src/Destination.js.map +1 -0
- package/dist/src/DiscoveryTree.d.ts +16 -0
- package/dist/src/DiscoveryTree.js +38 -0
- package/dist/src/DiscoveryTree.js.map +1 -0
- package/dist/src/Event.d.ts +21 -0
- package/dist/src/Event.js +32 -0
- package/dist/src/Event.js.map +1 -0
- package/dist/src/EventTable.d.ts +16 -0
- package/dist/src/EventTable.js +33 -0
- package/dist/src/EventTable.js.map +1 -0
- package/dist/src/HPApi.d.ts +50 -0
- package/dist/src/HPApi.js +454 -0
- package/dist/src/HPApi.js.map +1 -0
- package/dist/src/Job.d.ts +37 -0
- package/dist/src/Job.js +78 -0
- package/dist/src/Job.js.map +1 -0
- package/dist/src/JpegUtil.d.ts +26 -0
- package/dist/src/JpegUtil.js +229 -0
- package/dist/src/JpegUtil.js.map +1 -0
- package/dist/src/KnownShortcut.d.ts +1 -0
- package/dist/src/KnownShortcut.js +3 -0
- package/dist/src/KnownShortcut.js.map +1 -0
- package/dist/src/PathHelper.d.ts +6 -0
- package/dist/src/PathHelper.js +52 -0
- package/dist/src/PathHelper.js.map +1 -0
- package/dist/src/ScanCaps.d.ts +7 -0
- package/dist/src/ScanCaps.js +17 -0
- package/dist/src/ScanCaps.js.map +1 -0
- package/dist/src/ScanJobManifest.d.ts +23 -0
- package/dist/src/ScanJobManifest.js +24 -0
- package/dist/src/ScanJobManifest.js.map +1 -0
- package/dist/src/ScanJobSettings.d.ts +8 -0
- package/dist/src/ScanJobSettings.js +56 -0
- package/dist/src/ScanJobSettings.js.map +1 -0
- package/dist/src/ScanStatus.d.ts +19 -0
- package/dist/src/ScanStatus.js +35 -0
- package/dist/src/ScanStatus.js.map +1 -0
- package/dist/src/WalkupScanDestination.d.ts +22 -0
- package/dist/src/WalkupScanDestination.js +38 -0
- package/dist/src/WalkupScanDestination.js.map +1 -0
- package/dist/src/WalkupScanDestinations.d.ts +12 -0
- package/dist/src/WalkupScanDestinations.js +30 -0
- package/dist/src/WalkupScanDestinations.js.map +1 -0
- package/dist/src/WalkupScanManifest.d.ts +23 -0
- package/dist/src/WalkupScanManifest.js +25 -0
- package/dist/src/WalkupScanManifest.js.map +1 -0
- package/dist/src/WalkupScanToCompCaps.d.ts +12 -0
- package/dist/src/WalkupScanToCompCaps.js +20 -0
- package/dist/src/WalkupScanToCompCaps.js.map +1 -0
- package/dist/src/WalkupScanToCompDestination.d.ts +22 -0
- package/dist/src/WalkupScanToCompDestination.js +38 -0
- package/dist/src/WalkupScanToCompDestination.js.map +1 -0
- package/dist/src/WalkupScanToCompDestinations.d.ts +12 -0
- package/dist/src/WalkupScanToCompDestinations.js +30 -0
- package/dist/src/WalkupScanToCompDestinations.js.map +1 -0
- package/dist/src/WalkupScanToCompEvent.d.ts +11 -0
- package/dist/src/WalkupScanToCompEvent.js +20 -0
- package/dist/src/WalkupScanToCompEvent.js.map +1 -0
- package/dist/src/WalkupScanToCompManifest.d.ts +23 -0
- package/dist/src/WalkupScanToCompManifest.js +25 -0
- package/dist/src/WalkupScanToCompManifest.js.map +1 -0
- package/dist/src/delay.d.ts +1 -0
- package/dist/src/delay.js +10 -0
- package/dist/src/delay.js.map +1 -0
- package/dist/test/DiscoveryTree.test.d.ts +1 -0
- package/dist/test/DiscoveryTree.test.js +68 -0
- package/dist/test/DiscoveryTree.test.js.map +1 -0
- package/dist/test/EtagEventTable.test.d.ts +1 -0
- package/dist/test/EtagEventTable.test.js +93 -0
- package/dist/test/EtagEventTable.test.js.map +1 -0
- package/dist/test/Job.test.d.ts +1 -0
- package/dist/test/Job.test.js +104 -0
- package/dist/test/Job.test.js.map +1 -0
- package/dist/test/JpegUtil.test.d.ts +1 -0
- package/dist/test/JpegUtil.test.js +51 -0
- package/dist/test/JpegUtil.test.js.map +1 -0
- package/dist/test/PathHelper.test.d.ts +1 -0
- package/dist/test/PathHelper.test.js +99 -0
- package/dist/test/PathHelper.test.js.map +1 -0
- package/dist/test/ScanJobManifest.test.d.ts +1 -0
- package/dist/test/ScanJobManifest.test.js +56 -0
- package/dist/test/ScanJobManifest.test.js.map +1 -0
- package/dist/test/ScanJobSettings.test.d.ts +1 -0
- package/dist/test/ScanJobSettings.test.js +53 -0
- package/dist/test/ScanJobSettings.test.js.map +1 -0
- package/dist/test/ScanStatus.test.d.ts +1 -0
- package/dist/test/ScanStatus.test.js +75 -0
- package/dist/test/ScanStatus.test.js.map +1 -0
- package/dist/test/WalkupScanDestination.test.d.ts +1 -0
- package/dist/test/WalkupScanDestination.test.js +80 -0
- package/dist/test/WalkupScanDestination.test.js.map +1 -0
- package/dist/test/WalkupScanDestinations.test.d.ts +1 -0
- package/dist/test/WalkupScanDestinations.test.js +68 -0
- package/dist/test/WalkupScanDestinations.test.js.map +1 -0
- package/dist/test/WalkupScanManifest.test.d.ts +1 -0
- package/dist/test/WalkupScanManifest.test.js +46 -0
- package/dist/test/WalkupScanManifest.test.js.map +1 -0
- package/dist/test/WalkupScanToCompCaps.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompCaps.test.js +56 -0
- package/dist/test/WalkupScanToCompCaps.test.js.map +1 -0
- package/dist/test/WalkupScanToCompDestination.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompDestination.test.js +58 -0
- package/dist/test/WalkupScanToCompDestination.test.js.map +1 -0
- package/dist/test/WalkupScanToCompDestinations.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompDestinations.test.js +58 -0
- package/dist/test/WalkupScanToCompDestinations.test.js.map +1 -0
- package/dist/test/WalkupScanToCompEvent.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompEvent.test.js +46 -0
- package/dist/test/WalkupScanToCompEvent.test.js.map +1 -0
- package/dist/test/WalkupScanToCompManifest.test.d.ts +1 -0
- package/dist/test/WalkupScanToCompManifest.test.js +46 -0
- package/dist/test/WalkupScanToCompManifest.test.js.map +1 -0
- package/dist/test/clean.d.ts +1 -0
- package/dist/test/clean.js +21 -0
- package/dist/test/clean.js.map +1 -0
- package/package.json +27 -18
- package/src/Destination.ts +1 -1
- package/src/DeviceCapabilities.ts +4 -0
- package/src/DiscoveryTree.ts +56 -0
- package/src/Event.ts +17 -7
- package/src/EventTable.ts +20 -0
- package/src/HPApi.ts +245 -103
- package/src/Job.ts +51 -29
- package/src/JpegUtil.ts +8 -4
- package/src/KnownShortcut.ts +6 -0
- package/src/PathHelper.ts +47 -13
- package/src/ScanCaps.ts +19 -0
- package/src/ScanContent.ts +4 -1
- package/src/ScanJobManifest.ts +55 -0
- package/src/ScanJobSettings.ts +18 -3
- package/src/ScanStatus.ts +9 -0
- package/src/WalkupScanDestination.ts +42 -18
- package/src/WalkupScanDestinations.ts +12 -0
- package/src/WalkupScanManifest.ts +59 -0
- package/src/WalkupScanToCompCaps.ts +36 -0
- package/src/WalkupScanToCompDestination.ts +38 -24
- package/src/WalkupScanToCompDestinations.ts +12 -0
- package/src/WalkupScanToCompEvent.ts +15 -3
- package/src/WalkupScanToCompManifest.ts +59 -0
- package/src/delay.ts +5 -0
- package/src/index.ts +267 -465
- package/src/listening.ts +145 -0
- package/src/readDeviceCapabilities.ts +46 -0
- package/src/scanProcessing.ts +535 -0
- package/tsconfig.json +1 -1
package/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 WalkupScanDestination, {\n WalkupScanDestinationData,\n} from \"./WalkupScanDestination\";\nimport WalkupScanToCompDestination, {\n WalkupScanToCompDestinationData,\n} from \"./WalkupScanToCompDestination\";\nimport { promisify } from \"util\";\nimport fs from \"fs\";\nimport axios, {\n AxiosError,\n AxiosRequestConfig,\n AxiosRequestHeaders,\n AxiosResponse,\n} from \"axios\";\nimport { URL } from \"url\";\nimport { Parser } from \"xml2js\";\nimport * as stream from 'stream/promises';\nimport EventTable, { EventTableData } from \"./EventTable\";\nimport Job, { JobData } from \"./Job\";\nimport ScanStatus, { ScanStatusData } from \"./ScanStatus\";\nimport WalkupScanDestinations, {\n WalkupScanDestinationsData,\n} from \"./WalkupScanDestinations\";\nimport WalkupScanToCompDestinations, {\n WalkupScanToCompDestinationsData,\n} from \"./WalkupScanToCompDestinations\";\nimport ScanJobSettings from \"./ScanJobSettings\";\nimport Destination from \"./Destination\";\nimport { Stream } from \"stream\";\nimport WalkupScanToCompEvent, {\n WalkupScanToCompEventData,\n} from \"./WalkupScanToCompEvent\";\n\nconst parser = new Parser();\nconst parseString = promisify<string, any>(parser.parseString);\nlet printerIP = \"192.168.1.11\";\nlet debug = false;\nlet callCount = 0;\n\nexport default class HPApi {\n static setPrinterIP(ip: string) {\n printerIP = ip;\n }\n\n static setDebug(dbg: boolean) {\n debug = dbg;\n }\n\n private static logDebug(callId: number, isRequest: boolean, msg: any) {\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(request: AxiosRequestConfig) {\n callCount++;\n HPApi.logDebug(callCount, true, request);\n try {\n const response = (await axios(request)) as AxiosResponse<string>;\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 getWalkupScanDestinations(): Promise<WalkupScanDestinations> {\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScan/WalkupScanDestinations\",\n method: \"GET\",\n responseType: \"text\",\n });\n\n if (response.status !== 200) {\n throw new Error(response.statusText);\n } else {\n const parsed = (await parseString(\n response.data\n )) as WalkupScanDestinationsData;\n return new WalkupScanDestinations(parsed);\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 const parsed = (await parseString(\n response.data\n )) as WalkupScanToCompDestinationsData;\n return new WalkupScanToCompDestinations(parsed);\n }\n }\n\n static async getWalkupScanToCompCaps(): Promise<boolean> {\n return HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: \"/WalkupScanToComp/WalkupScanToCompCaps\",\n method: \"GET\",\n responseType: \"text\",\n }).then(\n (response) => response.status == 200,\n () => false\n );\n }\n\n static async getWalkupScanToCompEvent(compEventURI: string): 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 HPApi.createWalkupScanToCompEvent(response.data);\n }\n }\n\n static async removeDestination(walkupScanDestination: WalkupScanDestination) {\n let urlInfo = new URL(walkupScanDestination.resourceURI);\n\n if (urlInfo.pathname === null) {\n throw new Error(\n `invalid walkupScanDestination.resourceURI: ${walkupScanDestination.resourceURI}`\n );\n }\n\n const response = await HPApi.callAxios({\n baseURL: `http://${printerIP}`,\n url: urlInfo.pathname,\n method: \"DELETE\",\n responseType: \"text\",\n });\n if (response.status === 204) {\n return true;\n } else {\n throw response;\n }\n }\n\n static async registerDestination(destination: Destination, toComp: boolean) {\n let xml = await destination.toXML();\n let url = \"/WalkupScan/WalkupScanDestinations\";\n if (toComp) {\n url = \"/WalkupScanToComp/WalkupScanToCompDestinations\";\n }\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) {\n return new URL(response.headers.location).pathname;\n } else {\n throw response;\n }\n }\n\n static async getEvents(\n etag = \"\",\n timeout = 0\n ): Promise<{ etag: string; eventTable: EventTable }> {\n let url = this.appendTimeout(\"/EventMgmt/EventTable\", timeout);\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 });\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 parsed = await parseString(response.data);\n return {\n etag: response.headers[\"etag\"],\n eventTable: new EventTable(parsed as EventTableData),\n };\n }\n\n static placeETagHeader(etag: string, headers: AxiosRequestHeaders) {\n if (etag !== \"\") {\n headers = {\n \"If-None-Match\": etag,\n };\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(destinationURL: string) {\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 this.createWalkupScanToCompDestination(content);\n } else {\n return this.createWalkupScanDestination(content);\n }\n }\n }\n\n static async createWalkupScanDestination(content: string) {\n const parsed = (await parseString(content)) as WalkupScanDestinationData;\n return new WalkupScanDestination(parsed);\n }\n\n static async createWalkupScanToCompDestination(content: string) {\n const parsed = (await parseString(\n content\n )) as WalkupScanToCompDestinationData;\n return new WalkupScanToCompDestination(parsed);\n }\n\n static async createWalkupScanToCompEvent(content: string) {\n const parsed = (await parseString(content)) as WalkupScanToCompEventData;\n return new WalkupScanToCompEvent(parsed);\n }\n\n static async getScanStatus() {\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 const parsed = (await parseString(response.data)) as ScanStatusData;\n return new ScanStatus(parsed);\n }\n }\n\n static delay(t: number) {\n return new Promise(function (resolve) {\n setTimeout(resolve, t);\n });\n }\n\n static async postJob(job: ScanJobSettings) {\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) {\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 parsed = (await parseString(response.data)) as JobData;\n return new Job(parsed);\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 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"]}
|
package/dist/Job.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface JobData {
|
|
|
14
14
|
}[];
|
|
15
15
|
}[];
|
|
16
16
|
}[];
|
|
17
|
-
PostScanPage
|
|
17
|
+
PostScanPage?: {
|
|
18
18
|
PageNumber: string[];
|
|
19
19
|
}[];
|
|
20
20
|
}[];
|
|
@@ -24,13 +24,14 @@ export interface JobData {
|
|
|
24
24
|
export default class Job {
|
|
25
25
|
private readonly data;
|
|
26
26
|
constructor(data: JobData);
|
|
27
|
+
static createJob(content: string): Promise<Job>;
|
|
27
28
|
get currentPageNumber(): string | null;
|
|
28
|
-
get totalPageNumber(): number;
|
|
29
|
+
get totalPageNumber(): number | null;
|
|
29
30
|
get jobState(): "Completed" | "Processing" | "ReadyToUpload" | "Canceled" | string;
|
|
30
|
-
get pageState(): string;
|
|
31
|
+
get pageState(): string | null;
|
|
31
32
|
get binaryURL(): string | null;
|
|
32
|
-
get imageWidth(): number;
|
|
33
|
-
get imageHeight(): number;
|
|
34
|
-
get xResolution(): number;
|
|
35
|
-
get yResolution(): number;
|
|
33
|
+
get imageWidth(): number | null;
|
|
34
|
+
get imageHeight(): number | null;
|
|
35
|
+
get xResolution(): number | null;
|
|
36
|
+
get yResolution(): number | null;
|
|
36
37
|
}
|
package/dist/Job.js
CHANGED
|
@@ -1,95 +1,78 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const xml2js_1 = require("xml2js");
|
|
4
|
+
const parser = new xml2js_1.Parser();
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const parseString = (0, util_1.promisify)(parser.parseString);
|
|
7
|
+
class Job {
|
|
8
|
+
constructor(data) {
|
|
5
9
|
this.data = data;
|
|
6
10
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
static async createJob(content) {
|
|
12
|
+
const parsed = await parseString(content);
|
|
13
|
+
return new Job(parsed);
|
|
14
|
+
}
|
|
15
|
+
get currentPageNumber() {
|
|
16
|
+
let preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
17
|
+
if (preScanPage) {
|
|
18
|
+
return preScanPage[0].PageNumber[0];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get totalPageNumber() {
|
|
25
|
+
if (this.data["j:Job"].ScanJob[0].PostScanPage) {
|
|
22
26
|
return parseInt(this.data["j:Job"].ScanJob[0].PostScanPage[0].PageNumber[0], 10);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
get: function () {
|
|
62
|
-
var _a, _b, _c, _d, _e;
|
|
63
|
-
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 : "");
|
|
64
|
-
},
|
|
65
|
-
enumerable: false,
|
|
66
|
-
configurable: true
|
|
67
|
-
});
|
|
68
|
-
Object.defineProperty(Job.prototype, "imageHeight", {
|
|
69
|
-
get: function () {
|
|
70
|
-
var _a, _b, _c, _d, _e;
|
|
71
|
-
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.ImageHeight[0]) !== null && _e !== void 0 ? _e : "");
|
|
72
|
-
},
|
|
73
|
-
enumerable: false,
|
|
74
|
-
configurable: true
|
|
75
|
-
});
|
|
76
|
-
Object.defineProperty(Job.prototype, "xResolution", {
|
|
77
|
-
get: function () {
|
|
78
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
get jobState() {
|
|
31
|
+
return this.data["j:Job"]["j:JobState"][0];
|
|
32
|
+
}
|
|
33
|
+
get pageState() {
|
|
34
|
+
let preScanPage = this.data["j:Job"].ScanJob[0].PreScanPage;
|
|
35
|
+
if (preScanPage) {
|
|
36
|
+
return preScanPage[0].PageState[0];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
get binaryURL() {
|
|
43
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
44
|
+
return this.data["j:Job"].ScanJob[0].PreScanPage[0].BinaryURL[0];
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
get imageWidth() {
|
|
49
|
+
var _a, _b, _c, _d, _e;
|
|
50
|
+
if (!this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
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 : "");
|
|
54
|
+
}
|
|
55
|
+
get imageHeight() {
|
|
56
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
57
|
+
return parseInt(this.data["j:Job"].ScanJob[0].PreScanPage[0].BufferInfo[0]
|
|
58
|
+
.ImageHeight[0]);
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
get xResolution() {
|
|
63
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
64
|
+
if (this.data["j:Job"].ScanJob[0].PreScanPage) {
|
|
79
65
|
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.XResolution[0]) !== null && _g !== void 0 ? _g : "");
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
get yResolution() {
|
|
70
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
71
|
+
if (this.data["j:Job"].ScanJob[0].hasOwnProperty("PreScanPage")) {
|
|
87
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 : "");
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return Job;
|
|
93
|
-
}());
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
94
77
|
exports.default = Job;
|
|
95
78
|
//# sourceMappingURL=Job.js.map
|
package/dist/Job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
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"]}
|
package/dist/JpegUtil.js
CHANGED
|
@@ -1,52 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
JpegUtil.setDebug = function (dbg) {
|
|
3
|
+
let debug = false;
|
|
4
|
+
const start_of_Frame_0 = "FFC0";
|
|
5
|
+
const define_number_of_lines = "FFDC";
|
|
6
|
+
class JpegUtil {
|
|
7
|
+
static setDebug(dbg) {
|
|
10
8
|
debug = dbg;
|
|
11
|
-
}
|
|
12
|
-
|
|
9
|
+
}
|
|
10
|
+
static logDebug(msg) {
|
|
13
11
|
if (debug) {
|
|
14
12
|
console.log(msg);
|
|
15
13
|
}
|
|
16
|
-
}
|
|
17
|
-
|
|
14
|
+
}
|
|
15
|
+
static numToHex(s) {
|
|
18
16
|
return s.toString(16).padStart(2, "0").toUpperCase();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_a[start_of_Frame_0] = function (start, length) {
|
|
17
|
+
}
|
|
18
|
+
static GetJpgSize(buffer) {
|
|
19
|
+
let size = null;
|
|
20
|
+
this.parse(buffer, {
|
|
21
|
+
[start_of_Frame_0]: (start, length) => {
|
|
25
22
|
// read the the "Start of frame" marker which contains the file size
|
|
26
23
|
if (6 < length) {
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const pHeight = buffer[start + 3] * 256 + buffer[start + 4];
|
|
25
|
+
const pWidth = buffer[start + 5] * 256 + buffer[start + 6];
|
|
29
26
|
size = { height: pHeight, width: pWidth };
|
|
30
27
|
}
|
|
31
28
|
// stop processing
|
|
32
29
|
return true;
|
|
33
30
|
},
|
|
34
|
-
|
|
31
|
+
});
|
|
35
32
|
return size;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
_a[start_of_Frame_0] = function (start, length) {
|
|
33
|
+
}
|
|
34
|
+
static setJpgSize(buffer, size) {
|
|
35
|
+
let sizeWritten = false;
|
|
36
|
+
const parsingSucceed = this.parse(buffer, {
|
|
37
|
+
[start_of_Frame_0]: (start, length) => {
|
|
42
38
|
// read the the "Start of frame" marker which contains the file size
|
|
43
39
|
// write the picture size
|
|
44
40
|
if (6 < length) {
|
|
45
|
-
|
|
41
|
+
const height = Buffer.from([0x00, 0x00]);
|
|
46
42
|
height.writeInt16BE(size.height);
|
|
47
43
|
buffer[start + 3] = height[0];
|
|
48
44
|
buffer[start + 4] = height[1];
|
|
49
|
-
|
|
45
|
+
const width = Buffer.from([0x00, 0x00]);
|
|
50
46
|
width.writeInt16BE(size.width);
|
|
51
47
|
buffer[start + 5] = width[0];
|
|
52
48
|
buffer[start + 6] = width[1];
|
|
@@ -55,47 +51,43 @@ var JpegUtil = /** @class */ (function () {
|
|
|
55
51
|
// stop processing
|
|
56
52
|
return true;
|
|
57
53
|
},
|
|
58
|
-
|
|
54
|
+
});
|
|
59
55
|
if (!parsingSucceed) {
|
|
60
56
|
return false;
|
|
61
57
|
}
|
|
62
58
|
return sizeWritten;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var parsingSucceed = this.parse(buffer, (_a = {},
|
|
69
|
-
_a[start_of_Frame_0] = function (start, length) {
|
|
59
|
+
}
|
|
60
|
+
static setJpgHeight(buffer, height) {
|
|
61
|
+
let heightWritten = false;
|
|
62
|
+
const parsingSucceed = this.parse(buffer, {
|
|
63
|
+
[start_of_Frame_0]: (start, length) => {
|
|
70
64
|
// read the the "Start of frame" marker which contains the file size
|
|
71
65
|
// write the picture size
|
|
72
|
-
heightWritten =
|
|
66
|
+
heightWritten = this.writeHeightInStartOfFrame(buffer, start, length, height);
|
|
73
67
|
// stop processing
|
|
74
68
|
return true;
|
|
75
69
|
},
|
|
76
|
-
|
|
70
|
+
});
|
|
77
71
|
if (!parsingSucceed) {
|
|
78
72
|
return false;
|
|
79
73
|
}
|
|
80
74
|
return heightWritten;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
_a[define_number_of_lines] = function (start, length) {
|
|
90
|
-
numberOfLine = _this.readNumberOfLineFromDNL(buffer, start, length);
|
|
75
|
+
}
|
|
76
|
+
static fixSizeWithDNL(buffer) {
|
|
77
|
+
let numberOfLine = null;
|
|
78
|
+
let startOfStartOfFrame = null;
|
|
79
|
+
let lengthOfStartOfFrame = null;
|
|
80
|
+
this.parse(buffer, {
|
|
81
|
+
[define_number_of_lines]: (start, length) => {
|
|
82
|
+
numberOfLine = this.readNumberOfLineFromDNL(buffer, start, length);
|
|
91
83
|
return false; // don't stop
|
|
92
84
|
},
|
|
93
|
-
|
|
85
|
+
[start_of_Frame_0]: (start, length) => {
|
|
94
86
|
startOfStartOfFrame = start;
|
|
95
87
|
lengthOfStartOfFrame = length;
|
|
96
88
|
return false; // don't stop
|
|
97
89
|
},
|
|
98
|
-
|
|
90
|
+
});
|
|
99
91
|
if (numberOfLine == null) {
|
|
100
92
|
this.logDebug("DNL marker not found impossible to fix height");
|
|
101
93
|
return null;
|
|
@@ -108,28 +100,28 @@ var JpegUtil = /** @class */ (function () {
|
|
|
108
100
|
return numberOfLine;
|
|
109
101
|
}
|
|
110
102
|
return null;
|
|
111
|
-
}
|
|
112
|
-
|
|
103
|
+
}
|
|
104
|
+
static writeHeightInStartOfFrame(buffer, startOfStartOfFrame, lengthOfStartOfFrame, numberOfLine) {
|
|
113
105
|
// write the picture height
|
|
114
106
|
if (6 < lengthOfStartOfFrame) {
|
|
115
|
-
|
|
107
|
+
const heightBuffer = Buffer.from([0x00, 0x00]);
|
|
116
108
|
heightBuffer.writeInt16BE(numberOfLine);
|
|
117
109
|
buffer[startOfStartOfFrame + 3] = heightBuffer[0];
|
|
118
110
|
buffer[startOfStartOfFrame + 4] = heightBuffer[1];
|
|
119
111
|
return true;
|
|
120
112
|
}
|
|
121
113
|
return false;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
114
|
+
}
|
|
115
|
+
static readNumberOfLineFromDNL(buffer, start, length) {
|
|
116
|
+
let numberOfLine = null;
|
|
125
117
|
// read the number of line
|
|
126
118
|
if (3 < length) {
|
|
127
119
|
numberOfLine = buffer[start + 2] * 256 + buffer[start + 3];
|
|
128
120
|
}
|
|
129
121
|
return numberOfLine;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
122
|
+
}
|
|
123
|
+
static parse(buffer, markerHandler) {
|
|
124
|
+
let i = 0;
|
|
133
125
|
if (!this.isSOIHeader(i, buffer)) {
|
|
134
126
|
this.logDebug("Not a valid SOI header");
|
|
135
127
|
return false;
|
|
@@ -141,23 +133,23 @@ var JpegUtil = /** @class */ (function () {
|
|
|
141
133
|
return false;
|
|
142
134
|
}
|
|
143
135
|
return this.parseMarker(buffer, i, markerHandler);
|
|
144
|
-
}
|
|
145
|
-
|
|
136
|
+
}
|
|
137
|
+
static isValidJpegHeader(i, buffer) {
|
|
146
138
|
return (i + 6 < buffer.length &&
|
|
147
139
|
buffer[i + 2] == "J".charCodeAt(0) &&
|
|
148
140
|
buffer[i + 3] == "F".charCodeAt(0) &&
|
|
149
141
|
buffer[i + 4] == "I".charCodeAt(0) &&
|
|
150
142
|
buffer[i + 5] == "F".charCodeAt(0) &&
|
|
151
143
|
buffer[i + 6] == 0x00);
|
|
152
|
-
}
|
|
153
|
-
|
|
144
|
+
}
|
|
145
|
+
static isSOIHeader(i, buffer) {
|
|
154
146
|
return (i + 3 < buffer.length &&
|
|
155
147
|
buffer[i] == 0xff &&
|
|
156
148
|
buffer[i + 1] == 0xd8 &&
|
|
157
149
|
buffer[i + 2] == 0xff &&
|
|
158
150
|
buffer[i + 3] == 0xe0);
|
|
159
|
-
}
|
|
160
|
-
|
|
151
|
+
}
|
|
152
|
+
static getBlockLength(buffer, i, marker) {
|
|
161
153
|
if (marker === "FFDA" ||
|
|
162
154
|
marker === "FFD0" ||
|
|
163
155
|
marker === "FFD1" ||
|
|
@@ -171,13 +163,13 @@ var JpegUtil = /** @class */ (function () {
|
|
|
171
163
|
}
|
|
172
164
|
else {
|
|
173
165
|
// read the new block length
|
|
174
|
-
|
|
175
|
-
this.logDebug(
|
|
166
|
+
const blockLength = buffer[i + 2] * 256 + buffer[i + 3];
|
|
167
|
+
this.logDebug(`block size for ${marker} is ${blockLength}`);
|
|
176
168
|
return blockLength;
|
|
177
169
|
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
for (
|
|
170
|
+
}
|
|
171
|
+
static findCurrentBlockSize(buffer, i, current_marker) {
|
|
172
|
+
for (let j = 0; i + j < buffer.length; j++) {
|
|
181
173
|
if (buffer[i + j] === 0xff) {
|
|
182
174
|
if (i + j + 1 < buffer.length) {
|
|
183
175
|
if (buffer[i + j + 1] == 0x00) {
|
|
@@ -189,17 +181,17 @@ var JpegUtil = /** @class */ (function () {
|
|
|
189
181
|
}
|
|
190
182
|
}
|
|
191
183
|
else {
|
|
192
|
-
this.logDebug(
|
|
184
|
+
this.logDebug(`Premature end of stream reach while searching for the block size inside marker ${current_marker}`);
|
|
193
185
|
return null;
|
|
194
186
|
}
|
|
195
187
|
}
|
|
196
188
|
}
|
|
197
189
|
return null;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
}
|
|
191
|
+
static parseMarker(buffer, i, markerHandler) {
|
|
192
|
+
let marker = "";
|
|
201
193
|
//Retrieve the block length of the first block since the first block will not contain the size of file
|
|
202
|
-
|
|
194
|
+
let blockLength = buffer[i] * 256 + buffer[i + 1];
|
|
203
195
|
//Increase the file index to get to the next block
|
|
204
196
|
i += blockLength;
|
|
205
197
|
while (i < buffer.length) {
|
|
@@ -213,17 +205,17 @@ var JpegUtil = /** @class */ (function () {
|
|
|
213
205
|
return false;
|
|
214
206
|
}
|
|
215
207
|
if (buffer[i + 1] == 0x00) {
|
|
216
|
-
this.logDebug(
|
|
208
|
+
this.logDebug(`Bad marker at ${i} 0x00 just after marker ${marker}`);
|
|
217
209
|
return false;
|
|
218
210
|
}
|
|
219
211
|
marker = this.numToHex(buffer[i]) + this.numToHex(buffer[i + 1]);
|
|
220
|
-
|
|
212
|
+
const foundBlockLength = this.getBlockLength(buffer, i, marker);
|
|
221
213
|
if (foundBlockLength == null) {
|
|
222
|
-
this.logDebug(
|
|
214
|
+
this.logDebug(`Was not able to determine block size for marker ${marker}`);
|
|
223
215
|
return false;
|
|
224
216
|
}
|
|
225
217
|
blockLength = foundBlockLength;
|
|
226
|
-
|
|
218
|
+
const handler = markerHandler[marker];
|
|
227
219
|
if (handler != null && handler(i + 2, blockLength)) {
|
|
228
220
|
return true;
|
|
229
221
|
}
|
|
@@ -231,8 +223,7 @@ var JpegUtil = /** @class */ (function () {
|
|
|
231
223
|
}
|
|
232
224
|
this.logDebug("End of payload reached");
|
|
233
225
|
return true;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
}());
|
|
226
|
+
}
|
|
227
|
+
}
|
|
237
228
|
exports.default = JpegUtil;
|
|
238
229
|
//# sourceMappingURL=JpegUtil.js.map
|