node-hp-scan-to 1.8.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +272 -51
  2. package/dist/HPApi.d.ts +13 -3
  3. package/dist/HPApi.js +106 -28
  4. package/dist/HPApi.js.map +1 -1
  5. package/dist/PathHelper.d.ts +7 -4
  6. package/dist/PathHelper.js +108 -31
  7. package/dist/PathHelper.js.map +1 -1
  8. package/dist/commands/adfAutoscanCmd.js +2 -2
  9. package/dist/commands/adfAutoscanCmd.js.map +1 -1
  10. package/dist/commands/listenCmd.d.ts +3 -0
  11. package/dist/commands/listenCmd.js +75 -42
  12. package/dist/commands/listenCmd.js.map +1 -1
  13. package/dist/commands/singleScanCmd.js +1 -1
  14. package/dist/commands/singleScanCmd.js.map +1 -1
  15. package/dist/commitInfo.json +1 -1
  16. package/dist/healthcheck.d.ts +2 -1
  17. package/dist/healthcheck.js +1 -0
  18. package/dist/healthcheck.js.map +1 -1
  19. package/dist/hpModels/AdfState.d.ts +4 -0
  20. package/dist/hpModels/AdfState.js +9 -0
  21. package/dist/hpModels/AdfState.js.map +1 -0
  22. package/dist/hpModels/Destination.js +2 -36
  23. package/dist/hpModels/Destination.js.map +1 -1
  24. package/dist/hpModels/EnumUtils.d.ts +3 -0
  25. package/dist/hpModels/EnumUtils.js +13 -0
  26. package/dist/hpModels/EnumUtils.js.map +1 -0
  27. package/dist/hpModels/EsclManifest.d.ts +45 -0
  28. package/dist/hpModels/EsclManifest.js +43 -0
  29. package/dist/hpModels/EsclManifest.js.map +1 -0
  30. package/dist/hpModels/EsclScanCaps.d.ts +37 -0
  31. package/dist/hpModels/EsclScanCaps.js +83 -0
  32. package/dist/hpModels/EsclScanCaps.js.map +1 -0
  33. package/dist/hpModels/EsclScanImageInfo.d.ts +17 -0
  34. package/dist/hpModels/EsclScanImageInfo.js +26 -0
  35. package/dist/hpModels/EsclScanImageInfo.js.map +1 -0
  36. package/dist/hpModels/EsclScanJobSettings.d.ts +16 -0
  37. package/dist/hpModels/EsclScanJobSettings.js +95 -0
  38. package/dist/hpModels/EsclScanJobSettings.js.map +1 -0
  39. package/dist/hpModels/EsclScanStatus.d.ts +75 -0
  40. package/dist/hpModels/EsclScanStatus.js +98 -0
  41. package/dist/hpModels/EsclScanStatus.js.map +1 -0
  42. package/dist/hpModels/EventTable.js +2 -5
  43. package/dist/hpModels/EventTable.js.map +1 -1
  44. package/dist/hpModels/IScanJobSettings.d.ts +5 -0
  45. package/dist/hpModels/IScanJobSettings.js +3 -0
  46. package/dist/hpModels/IScanJobSettings.js.map +1 -0
  47. package/dist/hpModels/IScanStatus.d.ts +9 -0
  48. package/dist/hpModels/IScanStatus.js +3 -0
  49. package/dist/hpModels/IScanStatus.js.map +1 -0
  50. package/dist/hpModels/Job.d.ts +11 -2
  51. package/dist/hpModels/Job.js +18 -7
  52. package/dist/hpModels/Job.js.map +1 -1
  53. package/dist/hpModels/ParseXmlString.d.ts +1 -0
  54. package/dist/hpModels/ParseXmlString.js +17 -0
  55. package/dist/hpModels/ParseXmlString.js.map +1 -0
  56. package/dist/hpModels/ScanCaps.d.ts +1 -0
  57. package/dist/hpModels/ScanCaps.js +5 -5
  58. package/dist/hpModels/ScanCaps.js.map +1 -1
  59. package/dist/hpModels/ScanJobManifest.d.ts +1 -0
  60. package/dist/hpModels/ScanJobManifest.js +9 -5
  61. package/dist/hpModels/ScanJobManifest.js.map +1 -1
  62. package/dist/hpModels/ScanJobSettings.d.ts +7 -2
  63. package/dist/hpModels/ScanJobSettings.js +19 -3
  64. package/dist/hpModels/ScanJobSettings.js.map +1 -1
  65. package/dist/hpModels/ScanPlexMode.d.ts +4 -0
  66. package/dist/hpModels/ScanPlexMode.js +9 -0
  67. package/dist/hpModels/ScanPlexMode.js.map +1 -0
  68. package/dist/hpModels/ScanStatus.d.ts +6 -3
  69. package/dist/hpModels/ScanStatus.js +9 -10
  70. package/dist/hpModels/ScanStatus.js.map +1 -1
  71. package/dist/hpModels/ScannerState.d.ts +4 -0
  72. package/dist/hpModels/ScannerState.js +9 -0
  73. package/dist/hpModels/ScannerState.js.map +1 -0
  74. package/dist/hpModels/WalkupScanDestination.d.ts +2 -1
  75. package/dist/hpModels/WalkupScanDestination.js +5 -6
  76. package/dist/hpModels/WalkupScanDestination.js.map +1 -1
  77. package/dist/hpModels/WalkupScanDestinations.js +2 -5
  78. package/dist/hpModels/WalkupScanDestinations.js.map +1 -1
  79. package/dist/hpModels/WalkupScanManifest.js +2 -5
  80. package/dist/hpModels/WalkupScanManifest.js.map +1 -1
  81. package/dist/hpModels/WalkupScanToCompCaps.js +2 -5
  82. package/dist/hpModels/WalkupScanToCompCaps.js.map +1 -1
  83. package/dist/hpModels/WalkupScanToCompDestination.d.ts +2 -1
  84. package/dist/hpModels/WalkupScanToCompDestination.js +5 -6
  85. package/dist/hpModels/WalkupScanToCompDestination.js.map +1 -1
  86. package/dist/hpModels/WalkupScanToCompDestinations.js +2 -5
  87. package/dist/hpModels/WalkupScanToCompDestinations.js.map +1 -1
  88. package/dist/hpModels/WalkupScanToCompEvent.d.ts +7 -1
  89. package/dist/hpModels/WalkupScanToCompEvent.js +13 -6
  90. package/dist/hpModels/WalkupScanToCompEvent.js.map +1 -1
  91. package/dist/hpModels/WalkupScanToCompManifest.js +2 -5
  92. package/dist/hpModels/WalkupScanToCompManifest.js.map +1 -1
  93. package/dist/index.js +13 -300
  94. package/dist/index.js.map +1 -1
  95. package/dist/listening.js +8 -6
  96. package/dist/listening.js.map +1 -1
  97. package/dist/pdfProcessing.js +1 -1
  98. package/dist/pdfProcessing.js.map +1 -1
  99. package/dist/postProcessing.js +9 -3
  100. package/dist/postProcessing.js.map +1 -1
  101. package/dist/program.d.ts +10 -0
  102. package/dist/program.js +346 -0
  103. package/dist/program.js.map +1 -0
  104. package/dist/readDeviceCapabilities.d.ts +1 -1
  105. package/dist/readDeviceCapabilities.js +56 -4
  106. package/dist/readDeviceCapabilities.js.map +1 -1
  107. package/dist/scanJobHandlers.d.ts +4 -3
  108. package/dist/scanJobHandlers.js +139 -48
  109. package/dist/scanJobHandlers.js.map +1 -1
  110. package/dist/scanProcessing.d.ts +10 -5
  111. package/dist/scanProcessing.js +19 -16
  112. package/dist/scanProcessing.js.map +1 -1
  113. package/dist/type/DeviceCapabilities.d.ts +8 -0
  114. package/dist/type/DiscoveryTree.d.ts +2 -0
  115. package/dist/type/DiscoveryTree.js +12 -20
  116. package/dist/type/DiscoveryTree.js.map +1 -1
  117. package/dist/type/DuplexAssemblyMode.d.ts +33 -0
  118. package/dist/type/DuplexAssemblyMode.js +38 -0
  119. package/dist/type/DuplexAssemblyMode.js.map +1 -0
  120. package/dist/type/FileConfig.d.ts +47 -0
  121. package/dist/type/FileConfig.js +88 -0
  122. package/dist/type/FileConfig.js.map +1 -0
  123. package/dist/type/helpGroupsHeadings.d.ts +10 -0
  124. package/dist/type/helpGroupsHeadings.js +15 -0
  125. package/dist/type/helpGroupsHeadings.js.map +1 -0
  126. package/dist/type/scanConfigs.d.ts +3 -0
  127. package/dist/type/scanMode.d.ts +4 -0
  128. package/dist/type/scanMode.js +9 -0
  129. package/dist/type/scanMode.js.map +1 -0
  130. package/dist/type/scanTargetDefinitions.d.ts +2 -0
  131. package/package.json +35 -28
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DuplexAssemblyMode = void 0;
4
+ var DuplexAssemblyMode;
5
+ (function (DuplexAssemblyMode) {
6
+ /**
7
+ * PAGE_WISE
8
+ * Front scanned: [1, 3, 5, 7]
9
+ * Back scanned: [2, 4, 6, 8]
10
+ * Final order: [1, 2, 3, 4, 5, 6, 7, 8]
11
+ */
12
+ DuplexAssemblyMode["PAGE_WISE"] = "page-wise";
13
+ /**
14
+ * DOCUMENT_WISE
15
+ * Front scanned: [1, 3, 5, 7]
16
+ * Back scanned (stack flipped): [8, 6, 4, 2]
17
+ * After reversing back: [2, 4, 6, 8]
18
+ * Final order: [1, 2, 3, 4, 5, 6, 7, 8]
19
+ */
20
+ DuplexAssemblyMode["DOCUMENT_WISE"] = "document-wise";
21
+ /**
22
+ * REVERSE_FRONT
23
+ * Front scanned (stack flipped): [7, 5, 3, 1]
24
+ * Back scanned: [2, 4, 6, 8]
25
+ * After reversing front: [1, 3, 5, 7]
26
+ * Final order: [1, 2, 3, 4, 5, 6, 7, 8]
27
+ */
28
+ DuplexAssemblyMode["REVERSE_FRONT"] = "reverse-front";
29
+ /**
30
+ * REVERSE_BOTH
31
+ * Front scanned (stack flipped): [7, 5, 3, 1]
32
+ * Back scanned (stack flipped): [8, 6, 4, 2]
33
+ * After reversing front & back: [1, 3, 5, 7], [2, 4, 6, 8]
34
+ * Final order: [1, 2, 3, 4, 5, 6, 7, 8]
35
+ */
36
+ DuplexAssemblyMode["REVERSE_BOTH"] = "reverse-both";
37
+ })(DuplexAssemblyMode || (exports.DuplexAssemblyMode = DuplexAssemblyMode = {}));
38
+ //# sourceMappingURL=DuplexAssemblyMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DuplexAssemblyMode.js","sourceRoot":"","sources":["../../src/type/DuplexAssemblyMode.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBAmCX;AAnCD,WAAY,kBAAkB;IAC5B;;;;;OAKG;IACH,6CAAuB,CAAA;IAEvB;;;;;;OAMG;IACH,qDAA+B,CAAA;IAE/B;;;;;;OAMG;IACH,qDAA+B,CAAA;IAE/B;;;;;;OAMG;IACH,mDAA6B,CAAA;AAC/B,CAAC,EAnCW,kBAAkB,kCAAlB,kBAAkB,QAmC7B"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { DuplexAssemblyMode } from "./DuplexAssemblyMode";
3
+ export declare const configSchema: z.ZodObject<{
4
+ ip: z.ZodOptional<z.ZodString>;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ label: z.ZodOptional<z.ZodString>;
7
+ deviceUpPollingInterval: z.ZodOptional<z.ZodNumber>;
8
+ debug: z.ZodOptional<z.ZodBoolean>;
9
+ directory: z.ZodOptional<z.ZodString>;
10
+ tempDirectory: z.ZodOptional<z.ZodString>;
11
+ pattern: z.ZodOptional<z.ZodString>;
12
+ width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"max">]>>;
13
+ height: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"max">]>>;
14
+ resolution: z.ZodOptional<z.ZodNumber>;
15
+ mode: z.ZodOptional<z.ZodEnum<{
16
+ Gray: "Gray";
17
+ Color: "Color";
18
+ }>>;
19
+ prefer_escl: z.ZodOptional<z.ZodBoolean>;
20
+ add_emulated_duplex: z.ZodOptional<z.ZodBoolean>;
21
+ emulated_duplex_label: z.ZodOptional<z.ZodString>;
22
+ emulated_duplex_assembly_mode: z.ZodOptional<z.ZodEnum<{
23
+ "page-wise": DuplexAssemblyMode.PAGE_WISE;
24
+ "document-wise": DuplexAssemblyMode.DOCUMENT_WISE;
25
+ "reverse-front": DuplexAssemblyMode.REVERSE_FRONT;
26
+ "reverse-both": DuplexAssemblyMode.REVERSE_BOTH;
27
+ }>>;
28
+ single_scan_duplex: z.ZodOptional<z.ZodBoolean>;
29
+ single_scan_pdf: z.ZodOptional<z.ZodBoolean>;
30
+ autoscan_duplex: z.ZodOptional<z.ZodBoolean>;
31
+ autoscan_pdf: z.ZodOptional<z.ZodBoolean>;
32
+ autoscan_pollingInterval: z.ZodOptional<z.ZodNumber>;
33
+ autoscan_startScanDelay: z.ZodOptional<z.ZodNumber>;
34
+ paperless_post_document_url: z.ZodOptional<z.ZodString>;
35
+ paperless_token: z.ZodOptional<z.ZodString>;
36
+ paperless_group_multi_page_scan_into_a_pdf: z.ZodOptional<z.ZodBoolean>;
37
+ paperless_always_send_as_pdf_file: z.ZodOptional<z.ZodBoolean>;
38
+ nextcloud_url: z.ZodOptional<z.ZodString>;
39
+ nextcloud_username: z.ZodOptional<z.ZodString>;
40
+ nextcloud_password: z.ZodOptional<z.ZodString>;
41
+ nextcloud_password_file: z.ZodOptional<z.ZodString>;
42
+ nextcloud_upload_folder: z.ZodOptional<z.ZodString>;
43
+ keep_files: z.ZodOptional<z.ZodBoolean>;
44
+ enableHealthCheck: z.ZodOptional<z.ZodBoolean>;
45
+ healthCheckPort: z.ZodOptional<z.ZodNumber>;
46
+ }, z.core.$strip>;
47
+ export type FileConfig = z.infer<typeof configSchema>;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const DuplexAssemblyMode_1 = require("./DuplexAssemblyMode");
6
+ // Configuration schema for the config file
7
+ exports.configSchema = zod_1.z.object({
8
+ ///
9
+ /// Network and Identification
10
+ ///
11
+ ip: zod_1.z.string().optional(), // IP address of the device (optional)
12
+ name: zod_1.z.string().optional(), // Device name (used for mDNS if IP is not set)
13
+ label: zod_1.z.string().optional(), // Display label on the device screen
14
+ ///
15
+ /// Connectivity & Debug
16
+ ///
17
+ deviceUpPollingInterval: zod_1.z.number().min(0).optional(), // Polling interval (ms) to check if device is reachable
18
+ debug: zod_1.z.boolean().optional(), // Enable debug mode for reporting issues
19
+ ///
20
+ /// Directories & File Naming
21
+ ///
22
+ directory: zod_1.z.string().optional(), // Directory to store scan results
23
+ tempDirectory: zod_1.z.string().optional(), // Temporary directory for file processing
24
+ pattern: zod_1.z.string().optional(), // Pattern for naming scanned files
25
+ ///
26
+ /// Scan Settings
27
+ ///
28
+ width: zod_1.z
29
+ .union([
30
+ zod_1.z.number().int().positive(), // Positive integer
31
+ zod_1.z.literal("max"), // The string "max"
32
+ ])
33
+ .optional(), // Scan width in pixels
34
+ height: zod_1.z
35
+ .union([
36
+ zod_1.z.number().int().positive(), // Positive integer
37
+ zod_1.z.literal("max"), // The string "max"
38
+ ])
39
+ .optional(), // Scan height in pixels
40
+ resolution: zod_1.z.number().int().positive().optional(), // DPI resolution
41
+ mode: zod_1.z.enum(["Gray", "Color"]).optional(), // The scan mode
42
+ prefer_escl: zod_1.z.boolean().optional(), // Always upload scans as PDF
43
+ ///
44
+ /// Duplex Scanning Options
45
+ ///
46
+ add_emulated_duplex: zod_1.z.boolean().optional(), // Enable emulated duplex feature
47
+ emulated_duplex_label: zod_1.z.string().optional(), // Label for emulated duplex target
48
+ emulated_duplex_assembly_mode: zod_1.z
49
+ .enum(Object.values(DuplexAssemblyMode_1.DuplexAssemblyMode))
50
+ .optional(),
51
+ ///
52
+ /// Single Scan Options
53
+ ///
54
+ single_scan_duplex: zod_1.z.boolean().optional(), // Use duplex for single scans (if supported)
55
+ single_scan_pdf: zod_1.z.boolean().optional(), // Output format for single scans: PDF (true) or JPG (false)
56
+ ///
57
+ /// Auto Scan (Document Feeder)
58
+ ///
59
+ autoscan_duplex: zod_1.z.boolean().optional(), // Use duplex for auto scans (if supported)
60
+ autoscan_pdf: zod_1.z.boolean().optional(), // Output format for auto scans: PDF (true) or JPG (false)
61
+ autoscan_pollingInterval: zod_1.z.number().min(0).optional(), // Interval (ms) to poll the document feeder
62
+ autoscan_startScanDelay: zod_1.z.number().min(0).optional(), // Delay (ms) before auto scan starts after feeder is loaded
63
+ ///
64
+ /// Paperless Integration
65
+ ///
66
+ paperless_post_document_url: zod_1.z.string().optional(), // Paperless POST URL
67
+ paperless_token: zod_1.z.string().optional(), // Paperless API token
68
+ paperless_group_multi_page_scan_into_a_pdf: zod_1.z.boolean().optional(), // Group multi-page scans into a single PDF
69
+ paperless_always_send_as_pdf_file: zod_1.z.boolean().optional(), // Always upload scans as PDF
70
+ ///
71
+ /// Nextcloud Integration
72
+ ///
73
+ nextcloud_url: zod_1.z.string().optional(), // Nextcloud server URL
74
+ nextcloud_username: zod_1.z.string().optional(), // Nextcloud username
75
+ nextcloud_password: zod_1.z.string().optional(), // Nextcloud password
76
+ nextcloud_password_file: zod_1.z.string().optional(), // Path to file containing Nextcloud password
77
+ nextcloud_upload_folder: zod_1.z.string().optional(), // Upload folder path on Nextcloud
78
+ ///
79
+ /// Common to external destination (paperless & nextcloud)
80
+ ///
81
+ keep_files: zod_1.z.boolean().optional(), // Keep scanned files locally after upload
82
+ ///
83
+ /// Health Check
84
+ ///
85
+ enableHealthCheck: zod_1.z.boolean().optional(), // Enable HTTP health check endpoint
86
+ healthCheckPort: zod_1.z.number().int().positive().max(65535).optional(), // Port for health check endpoint
87
+ });
88
+ //# sourceMappingURL=FileConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileConfig.js","sourceRoot":"","sources":["../../src/type/FileConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare enum HelpGroupsHeadings {
2
+ healthCheck = "Health check Options:",
3
+ paperless = "Paperless Options:",
4
+ nextcloud = "Nextcloud Options:",
5
+ scan = "Scan Options:",
6
+ ouput = "Output Options:",
7
+ adfAutoScan = "Auto-scan Options:",
8
+ network = "Network Options:",
9
+ deviceControlScreen = "Device Control Screen Options:"
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HelpGroupsHeadings = void 0;
4
+ var HelpGroupsHeadings;
5
+ (function (HelpGroupsHeadings) {
6
+ HelpGroupsHeadings["healthCheck"] = "Health check Options:";
7
+ HelpGroupsHeadings["paperless"] = "Paperless Options:";
8
+ HelpGroupsHeadings["nextcloud"] = "Nextcloud Options:";
9
+ HelpGroupsHeadings["scan"] = "Scan Options:";
10
+ HelpGroupsHeadings["ouput"] = "Output Options:";
11
+ HelpGroupsHeadings["adfAutoScan"] = "Auto-scan Options:";
12
+ HelpGroupsHeadings["network"] = "Network Options:";
13
+ HelpGroupsHeadings["deviceControlScreen"] = "Device Control Screen Options:";
14
+ })(HelpGroupsHeadings || (exports.HelpGroupsHeadings = HelpGroupsHeadings = {}));
15
+ //# sourceMappingURL=helpGroupsHeadings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpGroupsHeadings.js","sourceRoot":"","sources":["../../src/type/helpGroupsHeadings.ts"],"names":[],"mappings":";;;AAAA,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC5B,2DAAqC,CAAA;IACrC,sDAAgC,CAAA;IAChC,sDAAgC,CAAA;IAChC,4CAAsB,CAAA;IACtB,+CAAyB,CAAA;IACzB,wDAAkC,CAAA;IAClC,kDAA4B,CAAA;IAC5B,4EAAsD,CAAA;AACxD,CAAC,EATW,kBAAkB,kCAAlB,kBAAkB,QAS7B"}
@@ -1,13 +1,16 @@
1
1
  import { DirectoryConfig } from "./directoryConfig";
2
2
  import { PaperlessConfig } from "../paperless/PaperlessConfig";
3
3
  import { NextcloudConfig } from "../nextcloud/NextcloudConfig";
4
+ import { ScanMode } from "./scanMode";
4
5
  export type ScanConfig = {
5
6
  resolution: number;
7
+ mode: ScanMode;
6
8
  width: number | null;
7
9
  height: number | null;
8
10
  directoryConfig: DirectoryConfig;
9
11
  paperlessConfig: PaperlessConfig | undefined;
10
12
  nextcloudConfig: NextcloudConfig | undefined;
13
+ preferEscl: boolean;
11
14
  };
12
15
  export type AdfAutoScanConfig = ScanConfig & {
13
16
  isDuplex: boolean;
@@ -0,0 +1,4 @@
1
+ export declare enum ScanMode {
2
+ Gray = "Gray",
3
+ Color = "Color"
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScanMode = void 0;
4
+ var ScanMode;
5
+ (function (ScanMode) {
6
+ ScanMode["Gray"] = "Gray";
7
+ ScanMode["Color"] = "Color";
8
+ })(ScanMode || (exports.ScanMode = ScanMode = {}));
9
+ //# sourceMappingURL=scanMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanMode.js","sourceRoot":"","sources":["../../src/type/scanMode.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB"}
@@ -1,7 +1,9 @@
1
1
  import Event from "../hpModels/Event";
2
+ import { DuplexAssemblyMode } from "./DuplexAssemblyMode";
2
3
  export type RegistrationConfig = {
3
4
  label: string;
4
5
  isDuplexSingleSide: boolean;
6
+ duplexAssemblyMode?: DuplexAssemblyMode;
5
7
  };
6
8
  export type ScanTarget = RegistrationConfig & {
7
9
  resourceURI: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-hp-scan-to",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "description": "Scan document to Computer for HP All-in-One Printers",
5
5
  "keywords": [
6
6
  "Officejet",
@@ -17,6 +17,8 @@
17
17
  "prestart": "node getCommitId.js",
18
18
  "start": "ts-node src/index.ts",
19
19
  "start:single-scan": "ts-node src/index.ts single-scan",
20
+ "start:clear-registrations": "ts-node src/index.ts clear-registrations",
21
+ "start:adf-autoscan": "ts-node src/index.ts adf-autoscan",
20
22
  "start-debug": "ts-node src/index.ts -D",
21
23
  "prebuild": "node getCommitId.js",
22
24
  "lint": "eslint . --ext .ts,.tsx",
@@ -25,7 +27,7 @@
25
27
  "built-start": "tsc -p . && node --trace-warnings ./dist/index.js",
26
28
  "start-dev": "nodemon",
27
29
  "prepublishOnly": "npm run prebuild && tsc -p ./ --outDir dist/",
28
- "prettier": "prettier --write \"src/**/*.ts\"",
30
+ "prettier": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
29
31
  "test": "npx mocha --require ts-node/register ./test/**/*.test.ts",
30
32
  "test-ci": "npx nyc --reporter=lcov mocha -r ts-node/register ./test/**/*.test.ts && codecov"
31
33
  },
@@ -34,7 +36,7 @@
34
36
  "README.md"
35
37
  ],
36
38
  "engines": {
37
- "node": ">=18.0.0"
39
+ "node": ">=22.18.0"
38
40
  },
39
41
  "author": {
40
42
  "email": "manuc66@gmail.com",
@@ -49,40 +51,45 @@
49
51
  },
50
52
  "license": "MIT",
51
53
  "devDependencies": {
52
- "@eslint/js": "^9.23.0",
54
+ "@eslint/js": "^9.34.0",
53
55
  "@istanbuljs/nyc-config-typescript": "^1.0.2",
54
- "@types/chai": "^5.2.0",
55
- "@types/chai-string": "^1.4.2",
56
- "@types/config": "^3.3.0",
57
- "@types/dateformat": "^5.0.0",
58
- "@types/mocha": "^10.0.0",
59
- "@types/node": "^22.1.0",
60
- "@types/xml2js": "^0.4.11",
61
- "@typescript-eslint/eslint-plugin": "^8.29.0",
62
- "@typescript-eslint/parser": "^8.29.0",
63
- "chai": "^5.2.0",
56
+ "@types/chai": "^5.2.2",
57
+ "@types/chai-string": "^1.4.5",
58
+ "@types/config": "^3.3.5",
59
+ "@types/dateformat": "^5.0.3",
60
+ "@types/mocha": "^10.0.10",
61
+ "@types/node": "^24.3.0",
62
+ "@types/xml2js": "^0.4.14",
63
+ "@typescript-eslint/eslint-plugin": "^8.41.0",
64
+ "@typescript-eslint/parser": "^8.41.0",
65
+ "chai": "^6.0.1",
64
66
  "codecov": "^3.8.3",
65
- "eslint": "^9.23.0",
66
- "globals": "^16.0.0",
67
- "mocha": "^11.1.0",
68
- "nock": "^14.0.0",
69
- "nodemon": "^3.0.1",
70
- "nyc": "^17.0.0",
71
- "prettier": "^3.0.0",
67
+ "eslint": "^9.34.0",
68
+ "eslint-config-prettier": "^10.1.8",
69
+ "eslint-plugin-prettier": "^5.5.4",
70
+ "globals": "^16.3.0",
71
+ "mocha": "^11.7.1",
72
+ "nock": "^14.0.10",
73
+ "nodemon": "^3.1.10",
74
+ "nyc": "^17.1.0",
75
+ "prettier": "^3.6.2",
72
76
  "ts-mockito": "^2.6.1",
73
77
  "ts-node": "^10.9.2",
74
- "typescript": "^5.8.2",
75
- "typescript-eslint": "^8.29.0",
76
- "yarn": "^1.22.19"
78
+ "typescript": "^5.9.2",
79
+ "typescript-eslint": "^8.41.0",
80
+ "yarn": "^1.22.22"
77
81
  },
78
82
  "dependencies": {
79
- "axios": "^1.8.3",
83
+ "@commander-js/extra-typings": "^14.0.0",
84
+ "axios": "^1.11.0",
80
85
  "bonjour-service": "^1.3.0",
81
86
  "commander": "^14.0.0",
82
- "config": "^4.0.0",
87
+ "config": "^4.1.1",
83
88
  "dateformat": "^5.0.3",
84
- "jspdf": "^3.0.0",
85
- "xml2js": "^0.6.2"
89
+ "jspdf": "^3.0.2",
90
+ "nanoid": "^5.1.6",
91
+ "xml2js": "^0.6.2",
92
+ "zod": "^4.1.3"
86
93
  },
87
94
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
88
95
  }