node-hp-scan-to 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/commitInfo.json +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commitInfo.json +1 -1
- package/src/index.ts +1 -1
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ Please note that the `node-hp-scan-to` project is not endorsed by nor affiliated
|
|
|
66
66
|
### Command line
|
|
67
67
|
`npx node-hp-scan-to`
|
|
68
68
|
|
|
69
|
-
- `-
|
|
69
|
+
- `-a` or `--address` followed by the ip address of the printer, i.e. `-a 192.168.0.5`.
|
|
70
70
|
- `--device-up-polling-interval` is the polling interval in milliseconds to detect if the device is up or not
|
|
71
71
|
- `-l` or `--label` The label to display on the printer (default is the hostname).
|
|
72
72
|
- `-n` or `--name` followed by the printer name, it probably contains spaces, so it needs to be quoted, i.e. `-name "Officejet 6500 E710n-z"`
|
|
@@ -113,7 +113,7 @@ For the correct permissions to the volume set the environment variables `PUID` a
|
|
|
113
113
|
Exhaustive list of supported environment variables and their meaning, or correspondence with [command-line flags](#command-line):
|
|
114
114
|
- `PUID`: id of user that will run the program
|
|
115
115
|
- `PGID`: id of group that will run the program
|
|
116
|
-
- `IP`: command-line flag `-
|
|
116
|
+
- `IP`: command-line flag `-a`/`--address`
|
|
117
117
|
- `PATTERN`: command-line flag `-p`/`--pattern`
|
|
118
118
|
- `LABEL`: command-line flag `-l`/`--label`
|
|
119
119
|
- `NAME`: command-line flag `-n`/`--name`
|
|
@@ -218,7 +218,7 @@ cd node-hp-scan-to
|
|
|
218
218
|
yarn install -d
|
|
219
219
|
yarn build
|
|
220
220
|
# now start the program with the ip or name of the desired printer
|
|
221
|
-
node dist/index.js -
|
|
221
|
+
node dist/index.js -a 192.168.1.4 # or -n "Officejet 6500 E710n-z"
|
|
222
222
|
```
|
|
223
223
|
|
|
224
224
|
#### Debugging
|
package/dist/commitInfo.json
CHANGED
package/dist/index.js
CHANGED
|
@@ -173,7 +173,7 @@ function setupScanParameters(command) {
|
|
|
173
173
|
return command;
|
|
174
174
|
}
|
|
175
175
|
function setupParameterOpts(command) {
|
|
176
|
-
command.option("-
|
|
176
|
+
command.option("-a, --address <ip>", "IP address of the device (this overrides -p)");
|
|
177
177
|
command.option("--device-up-polling-interval <deviceUpPollingInterval>", "Device up polling interval in milliseconds", parseFloat);
|
|
178
178
|
command.option("-n, --name <name>", "Name of the device for service discovery"); // i.e. 'Deskjet 3520 series'
|
|
179
179
|
command.option("-D, --debug", "Enable debug");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n// noinspection XmlDeprecatedElement,HtmlDeprecatedTag\n\n\"use strict\";\n\nimport os from \"os\";\nimport { Command, Option, OptionValues, program } from \"commander\";\nimport { Bonjour } from \"bonjour-service\";\nimport config from \"config\";\nimport HPApi from \"./HPApi\";\nimport PathHelper from \"./PathHelper\";\nimport { delay } from \"./delay\";\nimport { readDeviceCapabilities } from \"./readDeviceCapabilities\";\nimport {\n clearRegistrations,\n RegistrationConfig,\n waitScanEvent,\n} from \"./listening\";\nimport {\n AdfAutoScanConfig,\n DirectoryConfig,\n saveScanFromEvent,\n ScanConfig,\n scanFromAdf,\n waitAdfLoaded,\n} from \"./scanProcessing\";\nimport * as commitInfo from \"./commitInfo.json\";\nimport { PaperlessConfig } from \"./paperless/PaperlessConfig\";\nimport { startHealthCheckServer } from \"./healthcheck\";\n\n\nlet iteration = 0;\n\nasync function listenCmd(\n registrationConfig: RegistrationConfig,\n scanConfig: ScanConfig,\n deviceUpPollingInterval: number,\n) {\n // first make sure the device is reachable\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n let deviceUp = true;\n\n const folder = await PathHelper.getOutputFolder(\n scanConfig.directoryConfig.directory,\n );\n console.log(`Target folder: ${folder}`);\n\n const tempFolder = await PathHelper.getOutputFolder(\n scanConfig.directoryConfig.tempDirectory,\n );\n console.log(`Temp folder: ${tempFolder}`);\n\n const deviceCapabilities = await readDeviceCapabilities();\n\n let scanCount = 0;\n let keepActive = true;\n let errorCount = 0;\n while (keepActive) {\n iteration++;\n console.log(`Running iteration: ${iteration} - errorCount: ${errorCount}`);\n try {\n const event = await waitScanEvent(deviceCapabilities, registrationConfig);\n scanCount = await PathHelper.getNextScanNumber(\n folder,\n scanCount,\n scanConfig.directoryConfig.filePattern,\n );\n console.log(`Scan event captured, saving scan #${scanCount}`);\n await saveScanFromEvent(\n event,\n folder,\n tempFolder,\n scanCount,\n deviceCapabilities,\n scanConfig,\n );\n } catch (e) {\n if (await HPApi.isAlive()) {\n console.log(e);\n errorCount++;\n } else {\n if (HPApi.isDebug()) {\n console.log(e);\n }\n deviceUp = false;\n }\n }\n\n if (errorCount === 50) {\n keepActive = false;\n }\n\n if (!deviceUp) {\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n } else {\n await delay(1000);\n }\n }\n}\n\nasync function adfAutoscanCmd(\n adfAutoScanConfig: AdfAutoScanConfig,\n deviceUpPollingInterval: number,\n) {\n // first make sure the device is reachable\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n let deviceUp = true;\n\n const folder = await PathHelper.getOutputFolder(\n adfAutoScanConfig.directoryConfig.directory,\n );\n console.log(`Target folder: ${folder}`);\n\n const tempFolder = await PathHelper.getOutputFolder(\n adfAutoScanConfig.directoryConfig.tempDirectory,\n );\n console.log(`Temp folder: ${tempFolder}`);\n\n const deviceCapabilities = await readDeviceCapabilities();\n\n let scanCount = 0;\n let keepActive = true;\n let errorCount = 0;\n while (keepActive) {\n iteration++;\n console.log(`Running iteration: ${iteration} - errorCount: ${errorCount}`);\n try {\n await waitAdfLoaded(\n adfAutoScanConfig.pollingInterval,\n adfAutoScanConfig.startScanDelay,\n );\n\n scanCount++;\n\n console.log(`Scan event captured, saving scan #${scanCount}`);\n\n await scanFromAdf(\n scanCount,\n folder,\n tempFolder,\n adfAutoScanConfig,\n deviceCapabilities,\n new Date(),\n );\n } catch (e) {\n console.log(e);\n if (await HPApi.isAlive()) {\n errorCount++;\n } else {\n deviceUp = false;\n }\n }\n\n if (errorCount === 50) {\n keepActive = false;\n }\n\n if (!deviceUp) {\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n } else {\n await delay(1000);\n }\n }\n}\n\nasync function clearRegistrationsCmd(cmd: Command) {\n const parentOption = cmd.parent!.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n await clearRegistrations();\n}\n\nfunction findOfficejetIp(deviceNamePrefix: string): Promise<string> {\n return new Promise((resolve) => {\n const bonjour = new Bonjour();\n console.log(\"Searching device...\");\n const browser = bonjour.find(\n {\n type: \"http\",\n },\n (service) => {\n console.log(\".\");\n if (\n service.name.startsWith(deviceNamePrefix) &&\n service.port === 80 &&\n service.type === \"http\" &&\n service.addresses != null\n ) {\n browser.stop();\n bonjour.destroy();\n console.log(`Found: ${service.name}`);\n resolve(service.addresses[0]);\n }\n },\n );\n browser.start();\n });\n}\n\nfunction getConfig<T>(name: string): T | undefined {\n return config.has(name) ? config.get<T>(name) : undefined;\n}\n\nfunction setupScanParameters(command: Command): Command {\n command.option(\n \"-d, --directory <dir>\",\n \"Directory where scans are saved (default: /tmp/scan-to-pcRANDOM)\",\n );\n command.option(\n \"-t, --temp-directory <dir>\",\n \"Temp directory used for processing (default: /tmp/scan-to-pcRANDOM)\",\n );\n command.option(\n \"-p, --pattern <pattern>\",\n 'Pattern for filename (i.e. \"scan\"_dd.mm.yyyy_hh:MM:ss, without this its scanPageNUMBER)',\n );\n command.option(\n \"-r, --resolution <dpi>\",\n \"Resolution in DPI of the scans (default: 200)\",\n );\n command.option(\n \"-w, --width <width>\",\n \"With in pixel of the scans (default: 2481)\",\n );\n command.option(\n \"-h, --height <height>\",\n \"Height in pixel of the scans (default: 3507)\",\n );\n command.option(\n \"-s, --paperless-post-document-url <paperless_post_document_url>\",\n \"The paperless post document url (example: https://domain.tld/api/documents/post_document/)\",\n );\n\n command.option(\n \"-o, --paperless-token <paperless_token>\",\n \"The paperless token\",\n );\n command.option(\n \"--paperless-group-multi-page-scan-into-a-pdf\",\n \"Combine multiple scanned images into a single PDF document\",\n );\n command.option(\n \"--paperless-always-send-as-pdf-file\",\n \"Always convert scan job to pdf before sending to paperless\",\n );\n command.option(\n \"-k, --paperless-keep-files\",\n \"Keep the scan files on the file system (default: false)\",\n );\n return command;\n}\n\nfunction setupParameterOpts(command: Command): Command {\n command.option(\n \"-ip, --address <ip>\",\n \"IP address of the device (this overrides -p)\",\n );\n command.option(\n \"--device-up-polling-interval <deviceUpPollingInterval>\",\n \"Device up polling interval in milliseconds\",\n parseFloat,\n );\n command.option(\n \"-n, --name <name>\",\n \"Name of the device for service discovery\",\n ); // i.e. 'Deskjet 3520 series'\n\n command.option(\"-D, --debug\", \"Enable debug\");\n return command;\n}\n\nasync function getDeviceIp(options: OptionValues) {\n let ip = options.address || getConfig(\"ip\");\n if (!ip) {\n const name = options.name || getConfig(\"name\");\n ip = await findOfficejetIp(name || \"HP Smart Tank Plus 570 series\");\n }\n console.log(`Using device ip: ${ip}`);\n return ip;\n}\n\nfunction getIsDebug(options: OptionValues) {\n const debug =\n options.debug != null ? true : getConfig<boolean>(\"debug\") || false;\n\n if (debug) {\n console.log(`IsDebug: ${debug}`);\n }\n return debug;\n}\n\nfunction getPaperlessConfig(\n parentOption: OptionValues,\n): PaperlessConfig | undefined {\n const paperlessPostDocumentUrl: string =\n parentOption.paperlessPostDocumentUrl ||\n getConfig(\"paperless_post_document_url\");\n const configPaperlessToken: string =\n parentOption.paperlessToken || getConfig(\"paperless_token\");\n const configPaperlessKeepFiles =\n parentOption.paperlessKeepFiles ||\n getConfig(\"paperless_keep_files\") ||\n false;\n\n if (paperlessPostDocumentUrl && configPaperlessToken) {\n const configPaperlessKeepFiles: boolean =\n parentOption.paperlessKeepFiles ||\n getConfig(\"paperless_keep_files\") ||\n false;\n const groupMultiPageScanIntoAPdf: boolean =\n parentOption.paperlessGroupMultiPageScanIntoAPdf ||\n getConfig(\"paperless_group_multi_page_scan_into_a_pdf\") ||\n false;\n const alwaysSendAsPdfFile: boolean =\n parentOption.paperlessAlwaysSendAsPdfFile ||\n getConfig(\"paperless_always_send_as_pdf_file\") ||\n false;\n\n console.log(\n `Paperless configuration provided, post document url: ${paperlessPostDocumentUrl}, the token length: ${configPaperlessToken.length}, keepFiles: ${configPaperlessKeepFiles}`,\n );\n return {\n postDocumentUrl: paperlessPostDocumentUrl,\n authToken: configPaperlessToken,\n keepFiles: configPaperlessKeepFiles,\n groupMultiPageScanIntoAPdf: groupMultiPageScanIntoAPdf,\n alwaysSendAsPdfFile: alwaysSendAsPdfFile,\n };\n } else {\n return undefined;\n }\n}\n\nfunction getHealthCheckSetting(option: OptionValues) {\n const healthCheckEnabled: boolean =\n option.healthCheck || getConfig(\"enableHealthCheck\") === true;\n let healthCheckPort: number;\n if (option.healthCheckPort) {\n healthCheckPort = parseInt(option.healthCheckPort, 10);\n } else {\n healthCheckPort = getConfig<number>(\"healthCheckPort\") || 3000;\n }\n return {\n isHealthCheckEnabled: healthCheckEnabled,\n healthCheckPort: healthCheckPort,\n };\n}\n\nfunction getScanConfiguration(option: OptionValues) {\n const directoryConfig: DirectoryConfig = {\n directory: option.directory || getConfig(\"directory\"),\n tempDirectory: option.tempDirectory || getConfig(\"tempDirectory\"),\n filePattern: option.pattern || getConfig(\"pattern\"),\n };\n\n const configWidth = (option.width || getConfig(\"width\") || 0).toString();\n const width =\n configWidth.toLowerCase() === \"max\"\n ? Number.MAX_SAFE_INTEGER\n : parseInt(configWidth, 10);\n\n const configHeight = (option.width || getConfig(\"height\") || \"0\").toString();\n const height =\n configWidth.toLowerCase() === \"max\"\n ? Number.MAX_SAFE_INTEGER\n : parseInt(configHeight, 10);\n\n const paperlessConfig = getPaperlessConfig(option);\n\n const scanConfig: ScanConfig = {\n resolution: parseInt(\n option.resolution || getConfig(\"resolution\") || \"200\",\n 10,\n ),\n width: width,\n height: height,\n directoryConfig,\n paperlessConfig,\n };\n return scanConfig;\n}\n\nfunction getDeviceUpPollingInterval(parentOption: OptionValues) {\n return (\n parentOption.deviceUpPollingInterval ||\n getConfig(\"deviceUpPollingInterval\") ||\n 1000\n );\n}\n\nasync function main() {\n setupParameterOpts(program);\n const cmdListen = program.createCommand(\"listen\");\n setupScanParameters(cmdListen)\n .description(\"Listen the device for new scan job to save to this target\")\n .option(\n \"-l, --label <label>\",\n \"The label to display on the device (the default is the hostname)\",\n )\n .addOption(\n new Option(\"--health-check\", \"Start an http health check endpoint\"),\n )\n .addOption(\n new Option(\n \"--health-check-port <health-check-port>\",\n \"Start an http health check endpoint\",\n ),\n )\n .action(async (options, cmd) => {\n const parentOption = cmd.parent.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n\n const registrationConfig: RegistrationConfig = {\n label: options.label || getConfig(\"label\") || os.hostname(),\n };\n\n const deviceUpPollingInterval = getDeviceUpPollingInterval(parentOption);\n\n const healthCheckSetting = getHealthCheckSetting(options);\n if (healthCheckSetting.isHealthCheckEnabled) {\n startHealthCheckServer(healthCheckSetting.healthCheckPort);\n }\n\n const scanConfig = getScanConfiguration(options);\n\n await listenCmd(registrationConfig, scanConfig, deviceUpPollingInterval);\n });\n program.addCommand(cmdListen, { isDefault: true });\n\n const cmdAdfAutoscan = program.createCommand(\"adf-autoscan\");\n setupScanParameters(cmdAdfAutoscan)\n .addOption(\n new Option(\"--duplex\", \"If specified, the scan will be in duplex\"),\n )\n .addOption(\n new Option(\n \"--pdf\",\n \"If specified, the scan result will be a pdf document, the default is multiple jpeg files\",\n ),\n )\n .addOption(\n new Option(\n \"--pollingInterval <pollingInterval>\",\n \"Time interval in millisecond between each lookup for content in the automatic document feeder\",\n ),\n )\n .description(\n \"Automatically trigger a new scan job to this target once paper is detected in the automatic document feeder (adf)\",\n )\n .addOption(\n new Option(\n \"--start-scan-delay <startScanDelay>\",\n \"Once document are detected to be in the adf, this specify the wait delay in millisecond before triggering the scan\",\n ),\n )\n .addOption(\n new Option(\"--health-check\", \"Start an http health check endpoint\"),\n )\n .addOption(\n new Option(\n \"--health-check-port <port>\",\n \"Start an http health check endpoint\",\n ),\n )\n .description(\n \"Automatically trigger a new scan job to this target once paper is detected in the automatic document feeder (adf)\",\n )\n .action(async (options, cmd) => {\n const parentOption = cmd.parent.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n\n const deviceUpPollingInterval = getDeviceUpPollingInterval(parentOption);\n\n const healthCheckSetting = getHealthCheckSetting(options);\n if (healthCheckSetting.isHealthCheckEnabled) {\n startHealthCheckServer(healthCheckSetting.healthCheckPort);\n }\n\n const scanConfig = getScanConfiguration(options);\n\n const adfScanConfig: AdfAutoScanConfig = {\n ...scanConfig,\n isDuplex: options.isDuplex || getConfig(\"autoscan_duplex\") || false,\n generatePdf: options.pdf || getConfig(\"autoscan_pdf\") || false,\n pollingInterval:\n options.pollingInterval ||\n getConfig(\"autoscan_pollingInterval\") ||\n 1000,\n startScanDelay:\n options.startScanDelay ||\n getConfig(\"autoscan_startScanDelay\") ||\n 5000,\n };\n\n await adfAutoscanCmd(adfScanConfig, deviceUpPollingInterval);\n });\n program.addCommand(cmdAdfAutoscan);\n\n const cmdClearRegistrations = program.createCommand(\"clear-registrations\");\n cmdClearRegistrations\n .description(\"Clear the list or registered target on the device\")\n .action(async (options, cmd) => {\n await clearRegistrationsCmd(cmd);\n });\n program.addCommand(cmdClearRegistrations);\n\n await program.parseAsync(process.argv);\n}\n\nconsole.log(`Current commit ID: ${commitInfo.commitId}`);\nmain().catch((err) => console.log(err));\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,sDAAsD;AAEtD,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,4CAAoB;AACpB,yCAAmE;AACnE,qDAA0C;AAC1C,oDAA4B;AAC5B,oDAA4B;AAC5B,8DAAsC;AACtC,mCAAgC;AAChC,qEAAkE;AAClE,2CAIqB;AACrB,qDAO0B;AAC1B,8DAAgD;AAEhD,+CAAuD;AAGvD,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB,KAAK,UAAU,SAAS,CACtB,kBAAsC,EACtC,UAAsB,EACtB,uBAA+B;IAE/B,0CAA0C;IAC1C,MAAM,eAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,MAAM,MAAM,GAAG,MAAM,oBAAU,CAAC,eAAe,CAC7C,UAAU,CAAC,eAAe,CAAC,SAAS,CACrC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,oBAAU,CAAC,eAAe,CACjD,UAAU,CAAC,eAAe,CAAC,aAAa,CACzC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,MAAM,IAAA,+CAAsB,GAAE,CAAC;IAE1D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,UAAU,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAa,EAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YAC1E,SAAS,GAAG,MAAM,oBAAU,CAAC,iBAAiB,CAC5C,MAAM,EACN,SAAS,EACT,UAAU,CAAC,eAAe,CAAC,WAAW,CACvC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAA,kCAAiB,EACrB,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,UAAU,CACX,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,MAAM,eAAK,CAAC,OAAO,EAAE,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACf,UAAU,EAAE,CAAC;aACd;iBAAM;gBACL,IAAI,eAAK,CAAC,OAAO,EAAE,EAAE;oBACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChB;gBACD,QAAQ,GAAG,KAAK,CAAC;aAClB;SACF;QAED,IAAI,UAAU,KAAK,EAAE,EAAE;YACrB,UAAU,GAAG,KAAK,CAAC;SACpB;QAED,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,eAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;SACnD;aAAM;YACL,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;SACnB;KACF;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,iBAAoC,EACpC,uBAA+B;IAE/B,0CAA0C;IAC1C,MAAM,eAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,MAAM,MAAM,GAAG,MAAM,oBAAU,CAAC,eAAe,CAC7C,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,oBAAU,CAAC,eAAe,CACjD,iBAAiB,CAAC,eAAe,CAAC,aAAa,CAChD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,MAAM,IAAA,+CAAsB,GAAE,CAAC;IAE1D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,UAAU,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI;YACF,MAAM,IAAA,8BAAa,EACjB,iBAAiB,CAAC,eAAe,EACjC,iBAAiB,CAAC,cAAc,CACjC,CAAC;YAEF,SAAS,EAAE,CAAC;YAEZ,OAAO,CAAC,GAAG,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC;YAE9D,MAAM,IAAA,4BAAW,EACf,SAAS,EACT,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,IAAI,EAAE,CACX,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,MAAM,eAAK,CAAC,OAAO,EAAE,EAAE;gBACzB,UAAU,EAAE,CAAC;aACd;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAC;aAClB;SACF;QAED,IAAI,UAAU,KAAK,EAAE,EAAE;YACrB,UAAU,GAAG,KAAK,CAAC;SACpB;QAED,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,eAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;SACnD;aAAM;YACL,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;SACnB;KACF;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAY;IAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3C,eAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,IAAA,8BAAkB,GAAE,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CAAC,gBAAwB;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,yBAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B;YACE,IAAI,EAAE,MAAM;SACb,EACD,CAAC,OAAO,EAAE,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,IACE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACzC,OAAO,CAAC,IAAI,KAAK,EAAE;gBACnB,OAAO,CAAC,IAAI,KAAK,MAAM;gBACvB,OAAO,CAAC,SAAS,IAAI,IAAI,EACzB;gBACA,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/B;QACH,CAAC,CACF,CAAC;QACF,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAI,IAAY;IAChC,OAAO,gBAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAM,CAAC,GAAG,CAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,OAAO,CAAC,MAAM,CACZ,uBAAuB,EACvB,kEAAkE,CACnE,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,4BAA4B,EAC5B,qEAAqE,CACtE,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,yBAAyB,EACzB,yFAAyF,CAC1F,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,wBAAwB,EACxB,+CAA+C,CAChD,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,qBAAqB,EACrB,4CAA4C,CAC7C,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,uBAAuB,EACvB,8CAA8C,CAC/C,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,iEAAiE,EACjE,4FAA4F,CAC7F,CAAC;IAEF,OAAO,CAAC,MAAM,CACZ,yCAAyC,EACzC,qBAAqB,CACtB,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,8CAA8C,EAC9C,4DAA4D,CAC7D,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,qCAAqC,EACrC,4DAA4D,CAC7D,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,4BAA4B,EAC5B,yDAAyD,CAC1D,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,OAAO,CAAC,MAAM,CACZ,oBAAoB,EACpB,8CAA8C,CAC/C,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,wDAAwD,EACxD,4CAA4C,EAC5C,UAAU,CACX,CAAC;IACF,OAAO,CAAC,MAAM,CACZ,mBAAmB,EACnB,0CAA0C,CAC3C,CAAC,CAAC,6BAA6B;IAEhC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,EAAE;QACP,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,IAAI,+BAA+B,CAAC,CAAC;KACrE;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,UAAU,CAAC,OAAqB;IACvC,MAAM,KAAK,GACT,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAU,OAAO,CAAC,IAAI,KAAK,CAAC;IAEtE,IAAI,KAAK,EAAE;QACT,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;KAClC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,YAA0B;IAE1B,MAAM,wBAAwB,GAC5B,YAAY,CAAC,wBAAwB;QACrC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,oBAAoB,GACxB,YAAY,CAAC,cAAc,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,wBAAwB,GAC5B,YAAY,CAAC,kBAAkB;QAC/B,SAAS,CAAC,sBAAsB,CAAC;QACjC,KAAK,CAAC;IAER,IAAI,wBAAwB,IAAI,oBAAoB,EAAE;QACpD,MAAM,wBAAwB,GAC5B,YAAY,CAAC,kBAAkB;YAC/B,SAAS,CAAC,sBAAsB,CAAC;YACjC,KAAK,CAAC;QACR,MAAM,0BAA0B,GAC9B,YAAY,CAAC,mCAAmC;YAChD,SAAS,CAAC,4CAA4C,CAAC;YACvD,KAAK,CAAC;QACR,MAAM,mBAAmB,GACvB,YAAY,CAAC,4BAA4B;YACzC,SAAS,CAAC,mCAAmC,CAAC;YAC9C,KAAK,CAAC;QAER,OAAO,CAAC,GAAG,CACT,wDAAwD,wBAAwB,uBAAuB,oBAAoB,CAAC,MAAM,gBAAgB,wBAAwB,EAAE,CAC7K,CAAC;QACF,OAAO;YACL,eAAe,EAAE,wBAAwB;YACzC,SAAS,EAAE,oBAAoB;YAC/B,SAAS,EAAE,wBAAwB;YACnC,0BAA0B,EAAE,0BAA0B;YACtD,mBAAmB,EAAE,mBAAmB;SACzC,CAAC;KACH;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoB;IACjD,MAAM,kBAAkB,GACtB,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAChE,IAAI,eAAuB,CAAC;IAC5B,IAAI,MAAM,CAAC,eAAe,EAAE;QAC1B,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;KACxD;SAAM;QACL,eAAe,GAAG,SAAS,CAAS,iBAAiB,CAAC,IAAI,IAAI,CAAC;KAChE;IACD,OAAO;QACL,oBAAoB,EAAE,kBAAkB;QACxC,eAAe,EAAE,eAAe;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAoB;IAChD,MAAM,eAAe,GAAoB;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,CAAC;QACrD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC,eAAe,CAAC;QACjE,WAAW,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC;KACpD,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,MAAM,KAAK,GACT,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK;QACjC,CAAC,CAAC,MAAM,CAAC,gBAAgB;QACzB,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEhC,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7E,MAAM,MAAM,GACV,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK;QACjC,CAAC,CAAC,MAAM,CAAC,gBAAgB;QACzB,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEjC,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAe;QAC7B,UAAU,EAAE,QAAQ,CAClB,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,EACrD,EAAE,CACH;QACD,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;QACd,eAAe;QACf,eAAe;KAChB,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CAAC,YAA0B;IAC5D,OAAO,CACL,YAAY,CAAC,uBAAuB;QACpC,SAAS,CAAC,yBAAyB,CAAC;QACpC,IAAI,CACL,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,kBAAkB,CAAC,mBAAO,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,mBAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,mBAAmB,CAAC,SAAS,CAAC;SAC3B,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CACL,qBAAqB,EACrB,kEAAkE,CACnE;SACA,SAAS,CACR,IAAI,kBAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CACpE;SACA,SAAS,CACR,IAAI,kBAAM,CACR,yCAAyC,EACzC,qCAAqC,CACtC,CACF;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3C,eAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACzC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,kBAAkB,GAAuB;YAC7C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,YAAE,CAAC,QAAQ,EAAE;SAC5D,CAAC;QAEF,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAEzE,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,kBAAkB,CAAC,oBAAoB,EAAE;YAC3C,IAAA,oCAAsB,EAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;SAC5D;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,SAAS,CAAC,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACL,mBAAO,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,MAAM,cAAc,GAAG,mBAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7D,mBAAmB,CAAC,cAAc,CAAC;SAChC,SAAS,CACR,IAAI,kBAAM,CAAC,UAAU,EAAE,0CAA0C,CAAC,CACnE;SACA,SAAS,CACR,IAAI,kBAAM,CACR,OAAO,EACP,0FAA0F,CAC3F,CACF;SACA,SAAS,CACR,IAAI,kBAAM,CACR,qCAAqC,EACrC,+FAA+F,CAChG,CACF;SACA,WAAW,CACV,mHAAmH,CACpH;SACA,SAAS,CACR,IAAI,kBAAM,CACR,qCAAqC,EACrC,oHAAoH,CACrH,CACF;SACA,SAAS,CACR,IAAI,kBAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CACpE;SACA,SAAS,CACR,IAAI,kBAAM,CACR,4BAA4B,EAC5B,qCAAqC,CACtC,CACF;SACA,WAAW,CACV,mHAAmH,CACpH;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3C,eAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACzC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAEzE,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,kBAAkB,CAAC,oBAAoB,EAAE;YAC3C,IAAA,oCAAsB,EAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;SAC5D;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAsB;YACvC,GAAG,UAAU;YACb,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,iBAAiB,CAAC,IAAI,KAAK;YACnE,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,KAAK;YAC9D,eAAe,EACb,OAAO,CAAC,eAAe;gBACvB,SAAS,CAAC,0BAA0B,CAAC;gBACrC,IAAI;YACN,cAAc,EACZ,OAAO,CAAC,cAAc;gBACtB,SAAS,CAAC,yBAAyB,CAAC;gBACpC,IAAI;SACP,CAAC;QAEF,MAAM,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IACL,mBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAEnC,MAAM,qBAAqB,GAAG,mBAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC3E,qBAAqB;SAClB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACL,mBAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAE1C,MAAM,mBAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n// noinspection XmlDeprecatedElement,HtmlDeprecatedTag\n\n\"use strict\";\n\nimport os from \"os\";\nimport { Command, Option, OptionValues, program } from \"commander\";\nimport { Bonjour } from \"bonjour-service\";\nimport config from \"config\";\nimport HPApi from \"./HPApi\";\nimport PathHelper from \"./PathHelper\";\nimport { delay } from \"./delay\";\nimport { readDeviceCapabilities } from \"./readDeviceCapabilities\";\nimport {\n clearRegistrations,\n RegistrationConfig,\n waitScanEvent,\n} from \"./listening\";\nimport {\n AdfAutoScanConfig,\n DirectoryConfig,\n saveScanFromEvent,\n ScanConfig,\n scanFromAdf,\n waitAdfLoaded,\n} from \"./scanProcessing\";\nimport * as commitInfo from \"./commitInfo.json\";\nimport { PaperlessConfig } from \"./paperless/PaperlessConfig\";\nimport { startHealthCheckServer } from \"./healthcheck\";\n\n\nlet iteration = 0;\n\nasync function listenCmd(\n registrationConfig: RegistrationConfig,\n scanConfig: ScanConfig,\n deviceUpPollingInterval: number,\n) {\n // first make sure the device is reachable\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n let deviceUp = true;\n\n const folder = await PathHelper.getOutputFolder(\n scanConfig.directoryConfig.directory,\n );\n console.log(`Target folder: ${folder}`);\n\n const tempFolder = await PathHelper.getOutputFolder(\n scanConfig.directoryConfig.tempDirectory,\n );\n console.log(`Temp folder: ${tempFolder}`);\n\n const deviceCapabilities = await readDeviceCapabilities();\n\n let scanCount = 0;\n let keepActive = true;\n let errorCount = 0;\n while (keepActive) {\n iteration++;\n console.log(`Running iteration: ${iteration} - errorCount: ${errorCount}`);\n try {\n const event = await waitScanEvent(deviceCapabilities, registrationConfig);\n scanCount = await PathHelper.getNextScanNumber(\n folder,\n scanCount,\n scanConfig.directoryConfig.filePattern,\n );\n console.log(`Scan event captured, saving scan #${scanCount}`);\n await saveScanFromEvent(\n event,\n folder,\n tempFolder,\n scanCount,\n deviceCapabilities,\n scanConfig,\n );\n } catch (e) {\n if (await HPApi.isAlive()) {\n console.log(e);\n errorCount++;\n } else {\n if (HPApi.isDebug()) {\n console.log(e);\n }\n deviceUp = false;\n }\n }\n\n if (errorCount === 50) {\n keepActive = false;\n }\n\n if (!deviceUp) {\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n } else {\n await delay(1000);\n }\n }\n}\n\nasync function adfAutoscanCmd(\n adfAutoScanConfig: AdfAutoScanConfig,\n deviceUpPollingInterval: number,\n) {\n // first make sure the device is reachable\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n let deviceUp = true;\n\n const folder = await PathHelper.getOutputFolder(\n adfAutoScanConfig.directoryConfig.directory,\n );\n console.log(`Target folder: ${folder}`);\n\n const tempFolder = await PathHelper.getOutputFolder(\n adfAutoScanConfig.directoryConfig.tempDirectory,\n );\n console.log(`Temp folder: ${tempFolder}`);\n\n const deviceCapabilities = await readDeviceCapabilities();\n\n let scanCount = 0;\n let keepActive = true;\n let errorCount = 0;\n while (keepActive) {\n iteration++;\n console.log(`Running iteration: ${iteration} - errorCount: ${errorCount}`);\n try {\n await waitAdfLoaded(\n adfAutoScanConfig.pollingInterval,\n adfAutoScanConfig.startScanDelay,\n );\n\n scanCount++;\n\n console.log(`Scan event captured, saving scan #${scanCount}`);\n\n await scanFromAdf(\n scanCount,\n folder,\n tempFolder,\n adfAutoScanConfig,\n deviceCapabilities,\n new Date(),\n );\n } catch (e) {\n console.log(e);\n if (await HPApi.isAlive()) {\n errorCount++;\n } else {\n deviceUp = false;\n }\n }\n\n if (errorCount === 50) {\n keepActive = false;\n }\n\n if (!deviceUp) {\n await HPApi.waitDeviceUp(deviceUpPollingInterval);\n } else {\n await delay(1000);\n }\n }\n}\n\nasync function clearRegistrationsCmd(cmd: Command) {\n const parentOption = cmd.parent!.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n await clearRegistrations();\n}\n\nfunction findOfficejetIp(deviceNamePrefix: string): Promise<string> {\n return new Promise((resolve) => {\n const bonjour = new Bonjour();\n console.log(\"Searching device...\");\n const browser = bonjour.find(\n {\n type: \"http\",\n },\n (service) => {\n console.log(\".\");\n if (\n service.name.startsWith(deviceNamePrefix) &&\n service.port === 80 &&\n service.type === \"http\" &&\n service.addresses != null\n ) {\n browser.stop();\n bonjour.destroy();\n console.log(`Found: ${service.name}`);\n resolve(service.addresses[0]);\n }\n },\n );\n browser.start();\n });\n}\n\nfunction getConfig<T>(name: string): T | undefined {\n return config.has(name) ? config.get<T>(name) : undefined;\n}\n\nfunction setupScanParameters(command: Command): Command {\n command.option(\n \"-d, --directory <dir>\",\n \"Directory where scans are saved (default: /tmp/scan-to-pcRANDOM)\",\n );\n command.option(\n \"-t, --temp-directory <dir>\",\n \"Temp directory used for processing (default: /tmp/scan-to-pcRANDOM)\",\n );\n command.option(\n \"-p, --pattern <pattern>\",\n 'Pattern for filename (i.e. \"scan\"_dd.mm.yyyy_hh:MM:ss, without this its scanPageNUMBER)',\n );\n command.option(\n \"-r, --resolution <dpi>\",\n \"Resolution in DPI of the scans (default: 200)\",\n );\n command.option(\n \"-w, --width <width>\",\n \"With in pixel of the scans (default: 2481)\",\n );\n command.option(\n \"-h, --height <height>\",\n \"Height in pixel of the scans (default: 3507)\",\n );\n command.option(\n \"-s, --paperless-post-document-url <paperless_post_document_url>\",\n \"The paperless post document url (example: https://domain.tld/api/documents/post_document/)\",\n );\n\n command.option(\n \"-o, --paperless-token <paperless_token>\",\n \"The paperless token\",\n );\n command.option(\n \"--paperless-group-multi-page-scan-into-a-pdf\",\n \"Combine multiple scanned images into a single PDF document\",\n );\n command.option(\n \"--paperless-always-send-as-pdf-file\",\n \"Always convert scan job to pdf before sending to paperless\",\n );\n command.option(\n \"-k, --paperless-keep-files\",\n \"Keep the scan files on the file system (default: false)\",\n );\n return command;\n}\n\nfunction setupParameterOpts(command: Command): Command {\n command.option(\n \"-a, --address <ip>\",\n \"IP address of the device (this overrides -p)\",\n );\n command.option(\n \"--device-up-polling-interval <deviceUpPollingInterval>\",\n \"Device up polling interval in milliseconds\",\n parseFloat,\n );\n command.option(\n \"-n, --name <name>\",\n \"Name of the device for service discovery\",\n ); // i.e. 'Deskjet 3520 series'\n\n command.option(\"-D, --debug\", \"Enable debug\");\n return command;\n}\n\nasync function getDeviceIp(options: OptionValues) {\n let ip = options.address || getConfig(\"ip\");\n if (!ip) {\n const name = options.name || getConfig(\"name\");\n ip = await findOfficejetIp(name || \"HP Smart Tank Plus 570 series\");\n }\n console.log(`Using device ip: ${ip}`);\n return ip;\n}\n\nfunction getIsDebug(options: OptionValues) {\n const debug =\n options.debug != null ? true : getConfig<boolean>(\"debug\") || false;\n\n if (debug) {\n console.log(`IsDebug: ${debug}`);\n }\n return debug;\n}\n\nfunction getPaperlessConfig(\n parentOption: OptionValues,\n): PaperlessConfig | undefined {\n const paperlessPostDocumentUrl: string =\n parentOption.paperlessPostDocumentUrl ||\n getConfig(\"paperless_post_document_url\");\n const configPaperlessToken: string =\n parentOption.paperlessToken || getConfig(\"paperless_token\");\n const configPaperlessKeepFiles =\n parentOption.paperlessKeepFiles ||\n getConfig(\"paperless_keep_files\") ||\n false;\n\n if (paperlessPostDocumentUrl && configPaperlessToken) {\n const configPaperlessKeepFiles: boolean =\n parentOption.paperlessKeepFiles ||\n getConfig(\"paperless_keep_files\") ||\n false;\n const groupMultiPageScanIntoAPdf: boolean =\n parentOption.paperlessGroupMultiPageScanIntoAPdf ||\n getConfig(\"paperless_group_multi_page_scan_into_a_pdf\") ||\n false;\n const alwaysSendAsPdfFile: boolean =\n parentOption.paperlessAlwaysSendAsPdfFile ||\n getConfig(\"paperless_always_send_as_pdf_file\") ||\n false;\n\n console.log(\n `Paperless configuration provided, post document url: ${paperlessPostDocumentUrl}, the token length: ${configPaperlessToken.length}, keepFiles: ${configPaperlessKeepFiles}`,\n );\n return {\n postDocumentUrl: paperlessPostDocumentUrl,\n authToken: configPaperlessToken,\n keepFiles: configPaperlessKeepFiles,\n groupMultiPageScanIntoAPdf: groupMultiPageScanIntoAPdf,\n alwaysSendAsPdfFile: alwaysSendAsPdfFile,\n };\n } else {\n return undefined;\n }\n}\n\nfunction getHealthCheckSetting(option: OptionValues) {\n const healthCheckEnabled: boolean =\n option.healthCheck || getConfig(\"enableHealthCheck\") === true;\n let healthCheckPort: number;\n if (option.healthCheckPort) {\n healthCheckPort = parseInt(option.healthCheckPort, 10);\n } else {\n healthCheckPort = getConfig<number>(\"healthCheckPort\") || 3000;\n }\n return {\n isHealthCheckEnabled: healthCheckEnabled,\n healthCheckPort: healthCheckPort,\n };\n}\n\nfunction getScanConfiguration(option: OptionValues) {\n const directoryConfig: DirectoryConfig = {\n directory: option.directory || getConfig(\"directory\"),\n tempDirectory: option.tempDirectory || getConfig(\"tempDirectory\"),\n filePattern: option.pattern || getConfig(\"pattern\"),\n };\n\n const configWidth = (option.width || getConfig(\"width\") || 0).toString();\n const width =\n configWidth.toLowerCase() === \"max\"\n ? Number.MAX_SAFE_INTEGER\n : parseInt(configWidth, 10);\n\n const configHeight = (option.width || getConfig(\"height\") || \"0\").toString();\n const height =\n configWidth.toLowerCase() === \"max\"\n ? Number.MAX_SAFE_INTEGER\n : parseInt(configHeight, 10);\n\n const paperlessConfig = getPaperlessConfig(option);\n\n const scanConfig: ScanConfig = {\n resolution: parseInt(\n option.resolution || getConfig(\"resolution\") || \"200\",\n 10,\n ),\n width: width,\n height: height,\n directoryConfig,\n paperlessConfig,\n };\n return scanConfig;\n}\n\nfunction getDeviceUpPollingInterval(parentOption: OptionValues) {\n return (\n parentOption.deviceUpPollingInterval ||\n getConfig(\"deviceUpPollingInterval\") ||\n 1000\n );\n}\n\nasync function main() {\n setupParameterOpts(program);\n const cmdListen = program.createCommand(\"listen\");\n setupScanParameters(cmdListen)\n .description(\"Listen the device for new scan job to save to this target\")\n .option(\n \"-l, --label <label>\",\n \"The label to display on the device (the default is the hostname)\",\n )\n .addOption(\n new Option(\"--health-check\", \"Start an http health check endpoint\"),\n )\n .addOption(\n new Option(\n \"--health-check-port <health-check-port>\",\n \"Start an http health check endpoint\",\n ),\n )\n .action(async (options, cmd) => {\n const parentOption = cmd.parent.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n\n const registrationConfig: RegistrationConfig = {\n label: options.label || getConfig(\"label\") || os.hostname(),\n };\n\n const deviceUpPollingInterval = getDeviceUpPollingInterval(parentOption);\n\n const healthCheckSetting = getHealthCheckSetting(options);\n if (healthCheckSetting.isHealthCheckEnabled) {\n startHealthCheckServer(healthCheckSetting.healthCheckPort);\n }\n\n const scanConfig = getScanConfiguration(options);\n\n await listenCmd(registrationConfig, scanConfig, deviceUpPollingInterval);\n });\n program.addCommand(cmdListen, { isDefault: true });\n\n const cmdAdfAutoscan = program.createCommand(\"adf-autoscan\");\n setupScanParameters(cmdAdfAutoscan)\n .addOption(\n new Option(\"--duplex\", \"If specified, the scan will be in duplex\"),\n )\n .addOption(\n new Option(\n \"--pdf\",\n \"If specified, the scan result will be a pdf document, the default is multiple jpeg files\",\n ),\n )\n .addOption(\n new Option(\n \"--pollingInterval <pollingInterval>\",\n \"Time interval in millisecond between each lookup for content in the automatic document feeder\",\n ),\n )\n .description(\n \"Automatically trigger a new scan job to this target once paper is detected in the automatic document feeder (adf)\",\n )\n .addOption(\n new Option(\n \"--start-scan-delay <startScanDelay>\",\n \"Once document are detected to be in the adf, this specify the wait delay in millisecond before triggering the scan\",\n ),\n )\n .addOption(\n new Option(\"--health-check\", \"Start an http health check endpoint\"),\n )\n .addOption(\n new Option(\n \"--health-check-port <port>\",\n \"Start an http health check endpoint\",\n ),\n )\n .description(\n \"Automatically trigger a new scan job to this target once paper is detected in the automatic document feeder (adf)\",\n )\n .action(async (options, cmd) => {\n const parentOption = cmd.parent.opts();\n\n const ip = await getDeviceIp(parentOption);\n HPApi.setDeviceIP(ip);\n\n const isDebug = getIsDebug(parentOption);\n HPApi.setDebug(isDebug);\n\n const deviceUpPollingInterval = getDeviceUpPollingInterval(parentOption);\n\n const healthCheckSetting = getHealthCheckSetting(options);\n if (healthCheckSetting.isHealthCheckEnabled) {\n startHealthCheckServer(healthCheckSetting.healthCheckPort);\n }\n\n const scanConfig = getScanConfiguration(options);\n\n const adfScanConfig: AdfAutoScanConfig = {\n ...scanConfig,\n isDuplex: options.isDuplex || getConfig(\"autoscan_duplex\") || false,\n generatePdf: options.pdf || getConfig(\"autoscan_pdf\") || false,\n pollingInterval:\n options.pollingInterval ||\n getConfig(\"autoscan_pollingInterval\") ||\n 1000,\n startScanDelay:\n options.startScanDelay ||\n getConfig(\"autoscan_startScanDelay\") ||\n 5000,\n };\n\n await adfAutoscanCmd(adfScanConfig, deviceUpPollingInterval);\n });\n program.addCommand(cmdAdfAutoscan);\n\n const cmdClearRegistrations = program.createCommand(\"clear-registrations\");\n cmdClearRegistrations\n .description(\"Clear the list or registered target on the device\")\n .action(async (options, cmd) => {\n await clearRegistrationsCmd(cmd);\n });\n program.addCommand(cmdClearRegistrations);\n\n await program.parseAsync(process.argv);\n}\n\nconsole.log(`Current commit ID: ${commitInfo.commitId}`);\nmain().catch((err) => console.log(err));\n"]}
|
package/package.json
CHANGED
package/src/commitInfo.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -256,7 +256,7 @@ function setupScanParameters(command: Command): Command {
|
|
|
256
256
|
|
|
257
257
|
function setupParameterOpts(command: Command): Command {
|
|
258
258
|
command.option(
|
|
259
|
-
"-
|
|
259
|
+
"-a, --address <ip>",
|
|
260
260
|
"IP address of the device (this overrides -p)",
|
|
261
261
|
);
|
|
262
262
|
command.option(
|