@nice2dev/ui-tools 1.0.10

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 (158) hide show
  1. package/README.md +36 -0
  2. package/dist/access-control.d.ts +726 -0
  3. package/dist/access-control.d.ts.map +1 -0
  4. package/dist/accessibility-i18n.d.ts +1017 -0
  5. package/dist/accessibility-i18n.d.ts.map +1 -0
  6. package/dist/ai-assistant.d.ts +263 -0
  7. package/dist/ai-assistant.d.ts.map +1 -0
  8. package/dist/ai-playgrounds.d.ts +842 -0
  9. package/dist/ai-playgrounds.d.ts.map +1 -0
  10. package/dist/alerting-incidents.d.ts +558 -0
  11. package/dist/alerting-incidents.d.ts.map +1 -0
  12. package/dist/api-designer.d.ts +1568 -0
  13. package/dist/api-designer.d.ts.map +1 -0
  14. package/dist/api-testing.d.ts +1146 -0
  15. package/dist/api-testing.d.ts.map +1 -0
  16. package/dist/apm-profiling.d.ts +656 -0
  17. package/dist/apm-profiling.d.ts.map +1 -0
  18. package/dist/artifacts.d.ts +421 -0
  19. package/dist/artifacts.d.ts.map +1 -0
  20. package/dist/audit-compliance.d.ts +752 -0
  21. package/dist/audit-compliance.d.ts.map +1 -0
  22. package/dist/certificates.d.ts +256 -0
  23. package/dist/certificates.d.ts.map +1 -0
  24. package/dist/chart-builder.d.ts +1404 -0
  25. package/dist/chart-builder.d.ts.map +1 -0
  26. package/dist/cloud-instances.d.ts +169 -0
  27. package/dist/cloud-instances.d.ts.map +1 -0
  28. package/dist/config-management.d.ts +350 -0
  29. package/dist/config-management.d.ts.map +1 -0
  30. package/dist/containers.d.ts +256 -0
  31. package/dist/containers.d.ts.map +1 -0
  32. package/dist/dashboard-designer.d.ts +1238 -0
  33. package/dist/dashboard-designer.d.ts.map +1 -0
  34. package/dist/data-management.d.ts +496 -0
  35. package/dist/data-management.d.ts.map +1 -0
  36. package/dist/data-pipeline.d.ts +1105 -0
  37. package/dist/data-pipeline.d.ts.map +1 -0
  38. package/dist/data-warehouse.d.ts +1097 -0
  39. package/dist/data-warehouse.d.ts.map +1 -0
  40. package/dist/dataset-management.d.ts +782 -0
  41. package/dist/dataset-management.d.ts.map +1 -0
  42. package/dist/db-adapters.d.ts +704 -0
  43. package/dist/db-adapters.d.ts.map +1 -0
  44. package/dist/db-admin.d.ts +699 -0
  45. package/dist/db-admin.d.ts.map +1 -0
  46. package/dist/db-designer.d.ts +366 -0
  47. package/dist/db-designer.d.ts.map +1 -0
  48. package/dist/debugger.d.ts +356 -0
  49. package/dist/debugger.d.ts.map +1 -0
  50. package/dist/device-management.d.ts +871 -0
  51. package/dist/device-management.d.ts.map +1 -0
  52. package/dist/distributed-tracing.d.ts +427 -0
  53. package/dist/distributed-tracing.d.ts.map +1 -0
  54. package/dist/dns-management.d.ts +215 -0
  55. package/dist/dns-management.d.ts.map +1 -0
  56. package/dist/download-manager.d.ts +271 -0
  57. package/dist/download-manager.d.ts.map +1 -0
  58. package/dist/download-torrent.d.ts +1062 -0
  59. package/dist/download-torrent.d.ts.map +1 -0
  60. package/dist/edge-computing.d.ts +720 -0
  61. package/dist/edge-computing.d.ts.map +1 -0
  62. package/dist/education.d.ts +1135 -0
  63. package/dist/education.d.ts.map +1 -0
  64. package/dist/email-template.d.ts +1141 -0
  65. package/dist/email-template.d.ts.map +1 -0
  66. package/dist/erp-enterprise.d.ts +1270 -0
  67. package/dist/erp-enterprise.d.ts.map +1 -0
  68. package/dist/form-builder.d.ts +1117 -0
  69. package/dist/form-builder.d.ts.map +1 -0
  70. package/dist/game-engine-advanced.d.ts +1049 -0
  71. package/dist/game-engine-advanced.d.ts.map +1 -0
  72. package/dist/git.d.ts +415 -0
  73. package/dist/git.d.ts.map +1 -0
  74. package/dist/hardware-integration.d.ts +966 -0
  75. package/dist/hardware-integration.d.ts.map +1 -0
  76. package/dist/iac.d.ts +318 -0
  77. package/dist/iac.d.ts.map +1 -0
  78. package/dist/icon-tools.d.ts +1023 -0
  79. package/dist/icon-tools.d.ts.map +1 -0
  80. package/dist/ide.d.ts +322 -0
  81. package/dist/ide.d.ts.map +1 -0
  82. package/dist/index.cjs +2 -0
  83. package/dist/index.cjs.map +1 -0
  84. package/dist/index.d.ts +176 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.mjs +1887 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/integration-platform.d.ts +857 -0
  89. package/dist/integration-platform.d.ts.map +1 -0
  90. package/dist/kubernetes.d.ts +278 -0
  91. package/dist/kubernetes.d.ts.map +1 -0
  92. package/dist/life-management.d.ts +1132 -0
  93. package/dist/life-management.d.ts.map +1 -0
  94. package/dist/log-management.d.ts +473 -0
  95. package/dist/log-management.d.ts.map +1 -0
  96. package/dist/mathematics.d.ts +870 -0
  97. package/dist/mathematics.d.ts.map +1 -0
  98. package/dist/message-queue.d.ts +1006 -0
  99. package/dist/message-queue.d.ts.map +1 -0
  100. package/dist/metrics-dashboard.d.ts +596 -0
  101. package/dist/metrics-dashboard.d.ts.map +1 -0
  102. package/dist/mobile-components.d.ts +766 -0
  103. package/dist/mobile-components.d.ts.map +1 -0
  104. package/dist/model-deployment.d.ts +787 -0
  105. package/dist/model-deployment.d.ts.map +1 -0
  106. package/dist/model-registry.d.ts +740 -0
  107. package/dist/model-registry.d.ts.map +1 -0
  108. package/dist/model-training.d.ts +706 -0
  109. package/dist/model-training.d.ts.map +1 -0
  110. package/dist/network-config.d.ts +334 -0
  111. package/dist/network-config.d.ts.map +1 -0
  112. package/dist/network-monitoring.d.ts +291 -0
  113. package/dist/network-monitoring.d.ts.map +1 -0
  114. package/dist/pdf-tools.d.ts +1003 -0
  115. package/dist/pdf-tools.d.ts.map +1 -0
  116. package/dist/pipelines.d.ts +250 -0
  117. package/dist/pipelines.d.ts.map +1 -0
  118. package/dist/remote-desktop.d.ts +207 -0
  119. package/dist/remote-desktop.d.ts.map +1 -0
  120. package/dist/report-designer.d.ts +1153 -0
  121. package/dist/report-designer.d.ts.map +1 -0
  122. package/dist/scada-industrial.d.ts +848 -0
  123. package/dist/scada-industrial.d.ts.map +1 -0
  124. package/dist/scientific-research.d.ts +1149 -0
  125. package/dist/scientific-research.d.ts.map +1 -0
  126. package/dist/secret-management.d.ts +617 -0
  127. package/dist/secret-management.d.ts.map +1 -0
  128. package/dist/security-scanning.d.ts +714 -0
  129. package/dist/security-scanning.d.ts.map +1 -0
  130. package/dist/self-service-analytics.d.ts +1208 -0
  131. package/dist/self-service-analytics.d.ts.map +1 -0
  132. package/dist/sensor-dashboard.d.ts +845 -0
  133. package/dist/sensor-dashboard.d.ts.map +1 -0
  134. package/dist/server-management.d.ts +331 -0
  135. package/dist/server-management.d.ts.map +1 -0
  136. package/dist/smart-home.d.ts +861 -0
  137. package/dist/smart-home.d.ts.map +1 -0
  138. package/dist/spreadsheet.d.ts +1043 -0
  139. package/dist/spreadsheet.d.ts.map +1 -0
  140. package/dist/sql-editor.d.ts +402 -0
  141. package/dist/sql-editor.d.ts.map +1 -0
  142. package/dist/terminal.d.ts +245 -0
  143. package/dist/terminal.d.ts.map +1 -0
  144. package/dist/testing-qa.d.ts +1013 -0
  145. package/dist/testing-qa.d.ts.map +1 -0
  146. package/dist/torrent-client.d.ts +298 -0
  147. package/dist/torrent-client.d.ts.map +1 -0
  148. package/dist/traceless.d.ts +759 -0
  149. package/dist/traceless.d.ts.map +1 -0
  150. package/dist/virtual-machines.d.ts +199 -0
  151. package/dist/virtual-machines.d.ts.map +1 -0
  152. package/dist/visual-scripting.d.ts +381 -0
  153. package/dist/visual-scripting.d.ts.map +1 -0
  154. package/dist/word-processor.d.ts +1124 -0
  155. package/dist/word-processor.d.ts.map +1 -0
  156. package/dist/workspace.d.ts +333 -0
  157. package/dist/workspace.d.ts.map +1 -0
  158. package/package.json +62 -0
@@ -0,0 +1,215 @@
1
+ /**
2
+ * DNS & Domain Management types (PRO-8.5)
3
+ *
4
+ * Zone editor, record manager, DNSSEC, propagation check, WHOIS,
5
+ * domain monitor, DNS health, reverse DNS, DNS migration, DDNS.
6
+ *
7
+ * @module @nice2dev/ui-tools/dns-management
8
+ */
9
+ export interface DnsZoneConfig {
10
+ id: string;
11
+ zoneName: string;
12
+ type: 'master' | 'slave' | 'stub' | 'forward';
13
+ /** Master servers (for slave) */
14
+ masterServers?: string[];
15
+ /** Allow transfer */
16
+ allowTransfer: string[];
17
+ /** Allow update */
18
+ allowUpdate: string[];
19
+ /** DNSSEC enabled */
20
+ dnssecEnabled: boolean;
21
+ /** SOA */
22
+ soa: {
23
+ primaryNs: string;
24
+ email: string;
25
+ serial: number;
26
+ refresh: number;
27
+ retry: number;
28
+ expire: number;
29
+ minimum: number;
30
+ };
31
+ }
32
+ export type DnsRecordType = 'A' | 'AAAA' | 'CNAME' | 'MX' | 'TXT' | 'NS' | 'PTR' | 'SRV' | 'CAA' | 'TLSA' | 'NAPTR' | 'DS' | 'DNSKEY' | 'SSHFP' | 'HTTPS' | 'SVCB';
33
+ export interface DnsRecord {
34
+ id: string;
35
+ zoneId: string;
36
+ name: string;
37
+ type: DnsRecordType;
38
+ value: string;
39
+ ttl: number;
40
+ /** Priority (MX, SRV) */
41
+ priority?: number;
42
+ /** Weight (SRV) */
43
+ weight?: number;
44
+ /** Port (SRV) */
45
+ port?: number;
46
+ /** Comment */
47
+ comment?: string;
48
+ /** Enabled */
49
+ enabled: boolean;
50
+ /** Modified at */
51
+ modifiedAt: string;
52
+ }
53
+ export interface DnssecKey {
54
+ id: string;
55
+ zoneId: string;
56
+ keyTag: number;
57
+ algorithm: number;
58
+ algorithmName: string;
59
+ keyType: 'ksk' | 'zsk';
60
+ flags: number;
61
+ publicKey: string;
62
+ /** Active */
63
+ active: boolean;
64
+ /** Created at */
65
+ createdAt: string;
66
+ /** Retire at */
67
+ retireAt?: string;
68
+ }
69
+ export interface DnssecDsRecord {
70
+ keyTag: number;
71
+ algorithm: number;
72
+ digestType: number;
73
+ digest: string;
74
+ }
75
+ export interface DnsPropagationConfig {
76
+ /** Domain to check */
77
+ domain: string;
78
+ /** Record type */
79
+ recordType: DnsRecordType;
80
+ /** Expected value */
81
+ expectedValue?: string;
82
+ /** Resolvers to check */
83
+ resolvers: Array<{
84
+ name: string;
85
+ ip: string;
86
+ location: string;
87
+ }>;
88
+ }
89
+ export interface DnsPropagationResult {
90
+ resolver: string;
91
+ location: string;
92
+ status: 'propagated' | 'pending' | 'mismatch' | 'error';
93
+ value?: string;
94
+ ttl?: number;
95
+ responseTime: number;
96
+ checkedAt: string;
97
+ }
98
+ export interface WhoisResult {
99
+ domain: string;
100
+ registrar: string;
101
+ registrarUrl?: string;
102
+ createdDate: string;
103
+ updatedDate: string;
104
+ expiryDate: string;
105
+ /** Status codes */
106
+ status: string[];
107
+ /** Nameservers */
108
+ nameservers: string[];
109
+ /** Registrant (may be redacted) */
110
+ registrant?: {
111
+ name?: string;
112
+ organization?: string;
113
+ country?: string;
114
+ };
115
+ /** DNSSEC */
116
+ dnssec: boolean;
117
+ /** Raw WHOIS */
118
+ raw: string;
119
+ }
120
+ export interface DomainMonitorConfig {
121
+ id: string;
122
+ domain: string;
123
+ /** Checks */
124
+ checkExpiry: boolean;
125
+ checkDnssec: boolean;
126
+ checkSsl: boolean;
127
+ checkNameservers: boolean;
128
+ /** Alert thresholds (days) */
129
+ expiryWarningDays: number;
130
+ sslExpiryWarningDays: number;
131
+ /** Notification emails */
132
+ notificationEmails: string[];
133
+ }
134
+ export interface DomainHealthStatus {
135
+ domain: string;
136
+ /** Expiry */
137
+ expiryDate: string;
138
+ daysUntilExpiry: number;
139
+ /** SSL */
140
+ sslValid: boolean;
141
+ sslExpiryDate?: string;
142
+ sslDaysUntilExpiry?: number;
143
+ /** DNSSEC */
144
+ dnssecValid: boolean;
145
+ dnssecStatus?: string;
146
+ /** Nameservers */
147
+ nameserversResolving: boolean;
148
+ nameservers: Array<{
149
+ name: string;
150
+ status: 'ok' | 'error';
151
+ }>;
152
+ /** Overall health */
153
+ overallHealth: 'healthy' | 'warning' | 'critical';
154
+ checkedAt: string;
155
+ }
156
+ export interface ReverseDnsZone {
157
+ id: string;
158
+ /** Network (e.g., 192.168.1.0/24) */
159
+ network: string;
160
+ /** Zone name (e.g., 1.168.192.in-addr.arpa) */
161
+ zoneName: string;
162
+ /** PTR records */
163
+ records: Array<{
164
+ ip: string;
165
+ hostname: string;
166
+ ttl: number;
167
+ }>;
168
+ }
169
+ export interface DnsMigrationConfig {
170
+ /** Source */
171
+ sourceType: 'zone-file' | 'axfr' | 'api';
172
+ sourceEndpoint?: string;
173
+ sourceCredentialId?: string;
174
+ /** Target */
175
+ targetType: 'zone-file' | 'api';
176
+ targetEndpoint?: string;
177
+ targetCredentialId?: string;
178
+ /** Options */
179
+ includeRecordTypes: DnsRecordType[];
180
+ excludeRecordTypes: DnsRecordType[];
181
+ /** Dry run */
182
+ dryRun: boolean;
183
+ }
184
+ export interface DnsMigrationResult {
185
+ recordsProcessed: number;
186
+ recordsMigrated: number;
187
+ recordsSkipped: number;
188
+ errors: Array<{
189
+ record: string;
190
+ error: string;
191
+ }>;
192
+ }
193
+ export interface DdnsConfig {
194
+ id: string;
195
+ hostname: string;
196
+ /** Provider */
197
+ provider: 'cloudflare' | 'duckdns' | 'noip' | 'dynu' | 'custom';
198
+ /** Custom endpoint */
199
+ customEndpoint?: string;
200
+ /** Credential ID */
201
+ credentialId: string;
202
+ /** Update interval (seconds) */
203
+ updateInterval: number;
204
+ /** IP detection method */
205
+ ipDetection: 'auto' | 'interface' | 'custom-url';
206
+ /** Interface (if ipDetection = interface) */
207
+ interface?: string;
208
+ /** Custom URL (if ipDetection = custom-url) */
209
+ customIpUrl?: string;
210
+ /** Last update */
211
+ lastUpdate?: string;
212
+ lastIp?: string;
213
+ status: 'active' | 'error' | 'disabled';
214
+ }
215
+ //# sourceMappingURL=dns-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns-management.d.ts","sourceRoot":"","sources":["../src/dns-management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * @file download-manager.ts
3
+ * @module @nice2dev/ui-tools
4
+ * @description PRO-31.1 — Core Download Manager Service
5
+ *
6
+ * Provides download management with multi-protocol support, segmented downloads,
7
+ * queue management, bandwidth throttling, and scheduling.
8
+ */
9
+ import type { DownloadItem, DownloadStatus, DownloadPriority, DownloadManagerConfig, DownloadQueue, DownloadCategory, TransferSpeed, TransferStats, BandwidthLimit, URLParseResult, FileChecksum } from './download-torrent';
10
+ /**
11
+ * Formats bytes to human-readable string.
12
+ */
13
+ export declare function formatBytes(bytes: number, decimals?: number): string;
14
+ /**
15
+ * Formats speed to TransferSpeed object.
16
+ */
17
+ export declare function formatSpeed(bytesPerSecond: number): TransferSpeed;
18
+ /**
19
+ * Formats duration in seconds to human-readable string.
20
+ */
21
+ export declare function formatDuration(seconds: number): string;
22
+ /**
23
+ * Calculates ETA based on remaining bytes and speed.
24
+ */
25
+ export declare function calculateETA(remainingBytes: number, speedBytesPerSecond: number): number | undefined;
26
+ /**
27
+ * Parses a URL to extract download information.
28
+ */
29
+ export declare function parseDownloadUrl(url: string): URLParseResult;
30
+ /**
31
+ * Parses a magnet link.
32
+ */
33
+ export declare function parseMagnetLink(magnetUrl: string): URLParseResult;
34
+ /**
35
+ * Gets file type category from extension.
36
+ */
37
+ export declare function getFileType(extension: string): string;
38
+ /**
39
+ * Generates a unique download ID.
40
+ */
41
+ export declare function generateDownloadId(): string;
42
+ /**
43
+ * Validates a checksum against file data.
44
+ */
45
+ export declare function validateChecksum(data: ArrayBuffer, checksum: FileChecksum): Promise<boolean>;
46
+ export interface DownloadSegment {
47
+ index: number;
48
+ start: number;
49
+ end: number;
50
+ downloaded: number;
51
+ status: 'pending' | 'downloading' | 'completed' | 'failed';
52
+ retries: number;
53
+ }
54
+ /**
55
+ * Creates segments for parallel downloading.
56
+ */
57
+ export declare function createDownloadSegments(totalSize: number, segmentCount: number): DownloadSegment[];
58
+ export type DownloadEventType = 'added' | 'started' | 'progress' | 'paused' | 'resumed' | 'completed' | 'failed' | 'cancelled' | 'queue-changed';
59
+ export interface DownloadEvent {
60
+ type: DownloadEventType;
61
+ download?: DownloadItem;
62
+ queue?: DownloadQueue;
63
+ error?: Error;
64
+ }
65
+ export type DownloadEventCallback = (event: DownloadEvent) => void;
66
+ /**
67
+ * Core Download Manager service.
68
+ */
69
+ export declare class DownloadManager {
70
+ private config;
71
+ private downloads;
72
+ private activeDownloads;
73
+ private abortControllers;
74
+ private speedSamples;
75
+ private eventListeners;
76
+ private updateInterval;
77
+ constructor(config?: Partial<DownloadManagerConfig>);
78
+ /**
79
+ * Subscribes to download events.
80
+ */
81
+ on(event: DownloadEventType, callback: DownloadEventCallback): () => void;
82
+ /**
83
+ * Emits a download event.
84
+ */
85
+ private emit;
86
+ /**
87
+ * Adds a download to the queue.
88
+ */
89
+ addDownload(url: string, options?: Partial<{
90
+ filename: string;
91
+ path: string;
92
+ priority: DownloadPriority;
93
+ category: string;
94
+ checksum: FileChecksum;
95
+ autoStart: boolean;
96
+ headers: Record<string, string>;
97
+ }>): DownloadItem;
98
+ /**
99
+ * Adds multiple downloads from URLs.
100
+ */
101
+ addDownloads(urls: string[], options?: Partial<{
102
+ path: string;
103
+ priority: DownloadPriority;
104
+ category: string;
105
+ autoStart: boolean;
106
+ }>): DownloadItem[];
107
+ /**
108
+ * Removes a download from the queue.
109
+ */
110
+ removeDownload(id: string, deleteFile?: boolean): boolean;
111
+ /**
112
+ * Gets a download by ID.
113
+ */
114
+ getDownload(id: string): DownloadItem | undefined;
115
+ /**
116
+ * Gets all downloads.
117
+ */
118
+ getAllDownloads(): DownloadItem[];
119
+ /**
120
+ * Gets the download queue summary.
121
+ */
122
+ getQueue(): DownloadQueue;
123
+ /**
124
+ * Gets downloads by status.
125
+ */
126
+ getDownloadsByStatus(status: DownloadStatus): DownloadItem[];
127
+ /**
128
+ * Gets downloads by category.
129
+ */
130
+ getDownloadsByCategory(category: string): DownloadItem[];
131
+ /**
132
+ * Starts a download.
133
+ */
134
+ startDownload(id: string): Promise<void>;
135
+ /**
136
+ * Pauses a download.
137
+ */
138
+ pauseDownload(id: string): void;
139
+ /**
140
+ * Resumes a paused download.
141
+ */
142
+ resumeDownload(id: string): void;
143
+ /**
144
+ * Cancels a download.
145
+ */
146
+ cancelDownload(id: string): void;
147
+ /**
148
+ * Pauses all active downloads.
149
+ */
150
+ pauseAll(): void;
151
+ /**
152
+ * Resumes all paused downloads.
153
+ */
154
+ resumeAll(): void;
155
+ /**
156
+ * Cancels all downloads.
157
+ */
158
+ cancelAll(): void;
159
+ /**
160
+ * Changes download priority.
161
+ */
162
+ setPriority(id: string, priority: DownloadPriority): void;
163
+ /**
164
+ * Moves a download in the queue.
165
+ */
166
+ moveInQueue(id: string, direction: 'up' | 'down' | 'top' | 'bottom'): void;
167
+ /**
168
+ * Gets the current configuration.
169
+ */
170
+ getConfig(): DownloadManagerConfig;
171
+ /**
172
+ * Updates the configuration.
173
+ */
174
+ updateConfig(updates: Partial<DownloadManagerConfig>): void;
175
+ /**
176
+ * Sets bandwidth limit.
177
+ */
178
+ setBandwidthLimit(limit: BandwidthLimit | undefined): void;
179
+ /**
180
+ * Sets maximum concurrent downloads.
181
+ */
182
+ setMaxConcurrentDownloads(max: number): void;
183
+ /**
184
+ * Adds a download category.
185
+ */
186
+ addCategory(category: DownloadCategory): void;
187
+ /**
188
+ * Gets overall transfer statistics.
189
+ */
190
+ getStats(): TransferStats;
191
+ /**
192
+ * Executes the actual download using Fetch API.
193
+ */
194
+ private executeDownload;
195
+ /**
196
+ * Handles completed download data.
197
+ */
198
+ private handleDownloadComplete;
199
+ /**
200
+ * Builds authentication headers.
201
+ */
202
+ private buildAuthHeaders;
203
+ /**
204
+ * Updates speed tracking for a download.
205
+ */
206
+ private updateSpeed;
207
+ /**
208
+ * Processes the download queue.
209
+ */
210
+ private processQueue;
211
+ /**
212
+ * Detects category from file extension.
213
+ */
214
+ private detectCategory;
215
+ /**
216
+ * Emits a queue changed event.
217
+ */
218
+ private emitQueueChanged;
219
+ /**
220
+ * Disposes the download manager.
221
+ */
222
+ dispose(): void;
223
+ }
224
+ /**
225
+ * Gets or creates the download manager singleton.
226
+ */
227
+ export declare function getDownloadManager(config?: Partial<DownloadManagerConfig>): DownloadManager;
228
+ /**
229
+ * Disposes the download manager singleton.
230
+ */
231
+ export declare function disposeDownloadManager(): void;
232
+ export interface UseDownloadManagerOptions {
233
+ config?: Partial<DownloadManagerConfig>;
234
+ autoRefresh?: boolean;
235
+ refreshInterval?: number;
236
+ }
237
+ export interface UseDownloadManagerReturn {
238
+ /** Queue state */
239
+ queue: DownloadQueue;
240
+ /** Transfer stats */
241
+ stats: TransferStats;
242
+ /** Active downloads */
243
+ activeDownloads: DownloadItem[];
244
+ /** Add a download */
245
+ addDownload: (url: string, options?: Parameters<DownloadManager['addDownload']>[1]) => DownloadItem;
246
+ /** Add multiple downloads */
247
+ addDownloads: (urls: string[], options?: Parameters<DownloadManager['addDownloads']>[1]) => DownloadItem[];
248
+ /** Start a download */
249
+ startDownload: (id: string) => void;
250
+ /** Pause a download */
251
+ pauseDownload: (id: string) => void;
252
+ /** Resume a download */
253
+ resumeDownload: (id: string) => void;
254
+ /** Cancel a download */
255
+ cancelDownload: (id: string) => void;
256
+ /** Remove a download */
257
+ removeDownload: (id: string, deleteFile?: boolean) => void;
258
+ /** Pause all downloads */
259
+ pauseAll: () => void;
260
+ /** Resume all downloads */
261
+ resumeAll: () => void;
262
+ /** Set bandwidth limit */
263
+ setBandwidthLimit: (limit: BandwidthLimit | undefined) => void;
264
+ /** Set priority */
265
+ setPriority: (id: string, priority: DownloadPriority) => void;
266
+ }
267
+ /**
268
+ * React hook for download manager.
269
+ */
270
+ export declare function useDownloadManager(options?: UseDownloadManagerOptions): UseDownloadManagerReturn;
271
+ //# sourceMappingURL=download-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-manager.d.ts","sourceRoot":"","sources":["../src/download-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EAGd,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAS/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAqBjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAetD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,GAAG,SAAS,CAKpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA4C5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CA4BjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAMD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE,CAuBjG;AAMD,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEnE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,cAAc,CAAiE;IACvF,OAAO,CAAC,cAAc,CAA+C;gBAEzD,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAkBvD;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,MAAM,IAAI;IAQzE;;OAEG;IACH,OAAO,CAAC,IAAI;IAiBZ;;OAEG;IACH,WAAW,CACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,YAAY,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAM,GACN,YAAY;IAyCf;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAM,GACN,YAAY,EAAE;IAIjB;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,OAAO;IAoBvD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD;;OAEG;IACH,eAAe,IAAI,YAAY,EAAE;IAIjC;;OAEG;IACH,QAAQ,IAAI,aAAa;IAezB;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE;IAI5D;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE;IAQxD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+D9C;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAoB/B;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWhC;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAmBhC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAMhB;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAQzD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI;IAsC1E;;OAEG;IACH,SAAS,IAAI,qBAAqB;IAIlC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI;IAI1D;;OAEG;IACH,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAQ7C;;OAEG;IACH,QAAQ,IAAI,aAAa;IA8BzB;;OAEG;YACW,eAAe;IA+E7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB;AAQD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAK3F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAQD,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,kBAAkB;IAClB,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,uBAAuB;IACvB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,qBAAqB;IACrB,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KACpD,YAAY,CAAC;IAClB,6BAA6B;IAC7B,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KACrD,YAAY,EAAE,CAAC;IACpB,uBAAuB;IACvB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,uBAAuB;IACvB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,wBAAwB;IACxB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,wBAAwB;IACxB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,wBAAwB;IACxB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/D,mBAAmB;IACnB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAgF1B"}