@acorex/core 18.5.13 → 18.5.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtbmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9uZXR3b3JrL3NyYy9hY29yZXgtY29yZS1uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,5 @@
1
+ export * from './lib/upload-task';
2
+ export * from './lib/download-task';
3
+ export * from './lib/network.types';
4
+ export * from './lib/network.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvbmV0d29yay9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3VwbG9hZC10YXNrJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rvd25sb2FkLXRhc2snO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmV0d29yay50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZXR3b3JrLnNlcnZpY2UnOyJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Subject } from 'rxjs';
2
+ import { takeUntil, map } from 'rxjs/operators';
3
+ import { HttpEventType } from '@angular/common/http';
4
+ import { AXDownloadStatus } from './network.types'; // Ensure correct import path
5
+ export class AXDownloadTask {
6
+ constructor(observable) {
7
+ this.observable = observable;
8
+ this.cancelSignal = new Subject();
9
+ }
10
+ get events() {
11
+ return this.observable.pipe(takeUntil(this.cancelSignal), map(event => this.handleEvent(event)));
12
+ }
13
+ handleEvent(event) {
14
+ switch (event.type) {
15
+ case HttpEventType.DownloadProgress:
16
+ {
17
+ const percentDone = Math.round(100 * event.loaded / (event.total ?? event.loaded));
18
+ return {
19
+ progress: percentDone,
20
+ bytesReceived: event.loaded,
21
+ totalBytes: event.total ?? 0,
22
+ status: AXDownloadStatus.Downloading
23
+ };
24
+ }
25
+ case HttpEventType.Response:
26
+ return {
27
+ progress: 100,
28
+ bytesReceived: event.body.size,
29
+ totalBytes: event.body.size,
30
+ status: AXDownloadStatus.DownloadComplete,
31
+ data: event.body
32
+ };
33
+ default:
34
+ return {
35
+ progress: 0,
36
+ bytesReceived: 0,
37
+ totalBytes: 0,
38
+ status: AXDownloadStatus.StartingDownload
39
+ };
40
+ }
41
+ }
42
+ cancel() {
43
+ this.cancelSignal.next();
44
+ this.cancelSignal.complete();
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtdGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9uZXR3b3JrL3NyYy9saWIvZG93bmxvYWQtdGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLDZCQUE2QjtBQUVyRyxNQUFNLE9BQU8sY0FBYztJQUd2QixZQUFvQixVQUFzQztRQUF0QyxlQUFVLEdBQVYsVUFBVSxDQUE0QjtRQUZsRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFbUIsQ0FBQztJQUUvRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXFCO1FBQ3JDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLEtBQUssYUFBYSxDQUFDLGdCQUFnQjtnQkFDL0IsQ0FBQztvQkFDRyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDbkYsT0FBTzt3QkFDSCxRQUFRLEVBQUUsV0FBVzt3QkFDckIsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNO3dCQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDO3dCQUM1QixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsV0FBVztxQkFDdkMsQ0FBQztnQkFDTixDQUFDO1lBRUwsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDdkIsT0FBTztvQkFDSCxRQUFRLEVBQUUsR0FBRztvQkFDYixhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUM5QixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUMzQixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCO29CQUN6QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ25CLENBQUM7WUFFTjtnQkFDSSxPQUFPO29CQUNILFFBQVEsRUFBRSxDQUFDO29CQUNYLGFBQWEsRUFBRSxDQUFDO29CQUNoQixVQUFVLEVBQUUsQ0FBQztvQkFDYixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsZ0JBQWdCO2lCQUM1QyxDQUFDO1FBQ1YsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVhEb3dubG9hZFJlc3BvbnNlLCBBWERvd25sb2FkU3RhdHVzIH0gZnJvbSAnLi9uZXR3b3JrLnR5cGVzJzsgLy8gRW5zdXJlIGNvcnJlY3QgaW1wb3J0IHBhdGhcblxuZXhwb3J0IGNsYXNzIEFYRG93bmxvYWRUYXNrIHtcbiAgICBwcml2YXRlIGNhbmNlbFNpZ25hbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9ic2VydmFibGU6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+KSB7IH1cblxuICAgIGdldCBldmVudHMoKTogT2JzZXJ2YWJsZTxBWERvd25sb2FkUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuY2FuY2VsU2lnbmFsKSxcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB0aGlzLmhhbmRsZUV2ZW50KGV2ZW50KSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFdmVudChldmVudDogSHR0cEV2ZW50PGFueT4pOiBBWERvd25sb2FkUmVzcG9uc2Uge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCA/PyBldmVudC5sb2FkZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBwZXJjZW50RG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IGV2ZW50LmxvYWRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXM6IGV2ZW50LnRvdGFsID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYRG93bmxvYWRTdGF0dXMuRG93bmxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiBldmVudC5ib2R5LnNpemUsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXM6IGV2ZW50LmJvZHkuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWERvd25sb2FkU3RhdHVzLkRvd25sb2FkQ29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGV2ZW50LmJvZHlcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiAwLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEJ5dGVzOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IEFYRG93bmxvYWRTdGF0dXMuU3RhcnRpbmdEb3dubG9hZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsU2lnbmFsLm5leHQoKTtcbiAgICAgICAgdGhpcy5jYW5jZWxTaWduYWwuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { HttpRequest, HttpClient } from '@angular/common/http';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXDownloadTask } from './download-task';
4
+ import { AXUploadTask } from './upload-task';
5
+ import * as i0 from "@angular/core";
6
+ export class AXNetworkService {
7
+ constructor() {
8
+ this.http = inject(HttpClient);
9
+ }
10
+ // Unified method handling both types of inputs
11
+ upload(arg1, arg2) {
12
+ let request;
13
+ let totalFilesSize = 0;
14
+ if (typeof arg1 === 'string' && arg2 instanceof FormData) {
15
+ // Calculate total file size
16
+ arg2.forEach((value) => {
17
+ if (value instanceof File) {
18
+ totalFilesSize += value.size;
19
+ }
20
+ });
21
+ request = new HttpRequest('POST', arg1, arg2, {
22
+ reportProgress: true,
23
+ responseType: 'json'
24
+ });
25
+ }
26
+ else if (arg1 instanceof HttpRequest) {
27
+ if (arg1.body instanceof FormData) {
28
+ // Calculate total file size
29
+ arg1.body.forEach((value) => {
30
+ if (value instanceof File) {
31
+ totalFilesSize += value.size;
32
+ }
33
+ });
34
+ }
35
+ request = arg1.clone({
36
+ reportProgress: true,
37
+ responseType: arg1.responseType || 'json'
38
+ });
39
+ }
40
+ else {
41
+ throw new Error("Invalid arguments for upload method.");
42
+ }
43
+ const events = this.http.request(request);
44
+ return new AXUploadTask(events, totalFilesSize);
45
+ }
46
+ // Unified method handling both types of inputs
47
+ download(arg) {
48
+ let request;
49
+ if (typeof arg === 'string') {
50
+ request = new HttpRequest('GET', arg, {
51
+ reportProgress: true,
52
+ responseType: 'blob',
53
+ });
54
+ }
55
+ else {
56
+ request = new HttpRequest(arg.method, arg.url, arg.body, {
57
+ ...arg,
58
+ reportProgress: true,
59
+ responseType: 'blob',
60
+ });
61
+ }
62
+ const events = this.http.request(request);
63
+ return new AXDownloadTask(events);
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, providedIn: 'root' }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, decorators: [{
69
+ type: Injectable,
70
+ args: [{ providedIn: 'root' }]
71
+ }] });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL25ldHdvcmsvc3JjL2xpYi9uZXR3b3JrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLN0MsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUdZLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FzRXJDO0lBaEVHLCtDQUErQztJQUMvQyxNQUFNLENBQUksSUFBK0IsRUFBRSxJQUFlO1FBQ3RELElBQUksT0FBeUIsQ0FBQztRQUM5QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxZQUFZLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUN4QixjQUFjLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDakMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUMxQyxjQUFjLEVBQUUsSUFBSTtnQkFDcEIsWUFBWSxFQUFFLE1BQU07YUFDdkIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksWUFBWSxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN4QixJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQzt3QkFDeEIsY0FBYyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNO2FBQzVDLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxPQUFPLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksWUFBWSxDQUFJLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBUUQsK0NBQStDO0lBQy9DLFFBQVEsQ0FBQyxHQUErQjtRQUNwQyxJQUFJLE9BQTBCLENBQUM7UUFFL0IsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDbEMsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLFlBQVksRUFBRSxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUNyRCxHQUFHLEdBQUc7Z0JBQ04sY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLFlBQVksRUFBRSxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBTyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBdEVRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEb3dubG9hZFRhc2sgfSBmcm9tICcuL2Rvd25sb2FkLXRhc2snO1xuaW1wb3J0IHsgQVhVcGxvYWRUYXNrIH0gZnJvbSAnLi91cGxvYWQtdGFzayc7XG5cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYTmV0d29ya1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLy8gT3ZlcmxvYWQgc2lnbmF0dXJlc1xuICAgIHVwbG9hZDxUPih1cmw6IHN0cmluZywgZm9ybURhdGE6IEZvcm1EYXRhKTogQVhVcGxvYWRUYXNrPFQ+O1xuICAgIHVwbG9hZDxUPihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogQVhVcGxvYWRUYXNrPFQ+O1xuXG4gICAgLy8gVW5pZmllZCBtZXRob2QgaGFuZGxpbmcgYm90aCB0eXBlcyBvZiBpbnB1dHNcbiAgICB1cGxvYWQ8VD4oYXJnMTogc3RyaW5nIHwgSHR0cFJlcXVlc3Q8YW55PiwgYXJnMj86IEZvcm1EYXRhKTogQVhVcGxvYWRUYXNrPFQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT47XG4gICAgICAgIGxldCB0b3RhbEZpbGVzU2l6ZSA9IDA7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmcxID09PSAnc3RyaW5nJyAmJiBhcmcyIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0b3RhbCBmaWxlIHNpemVcbiAgICAgICAgICAgIGFyZzIuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmlsZXNTaXplICs9IHZhbHVlLnNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXF1ZXN0ID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgYXJnMSwgYXJnMiwge1xuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmcxIGluc3RhbmNlb2YgSHR0cFJlcXVlc3QpIHtcbiAgICAgICAgICAgIGlmIChhcmcxLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0b3RhbCBmaWxlIHNpemVcbiAgICAgICAgICAgICAgICBhcmcxLmJvZHkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxGaWxlc1NpemUgKz0gdmFsdWUuc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdCA9IGFyZzEuY2xvbmUoe1xuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogYXJnMS5yZXNwb25zZVR5cGUgfHwgJ2pzb24nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIGZvciB1cGxvYWQgbWV0aG9kLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcXVlc3QpO1xuICAgICAgICByZXR1cm4gbmV3IEFYVXBsb2FkVGFzazxUPihldmVudHMsIHRvdGFsRmlsZXNTaXplKTtcbiAgICB9XG5cblxuXG4gICAgLy8gT3ZlcmxvYWQgc2lnbmF0dXJlc1xuICAgIGRvd25sb2FkKHVybDogc3RyaW5nKTogQVhEb3dubG9hZFRhc2s7XG4gICAgZG93bmxvYWQocmVxdWVzdDogSHR0cFJlcXVlc3Q8QmxvYj4pOiBBWERvd25sb2FkVGFzaztcblxuICAgIC8vIFVuaWZpZWQgbWV0aG9kIGhhbmRsaW5nIGJvdGggdHlwZXMgb2YgaW5wdXRzXG4gICAgZG93bmxvYWQoYXJnOiBzdHJpbmcgfCBIdHRwUmVxdWVzdDxCbG9iPik6IEFYRG93bmxvYWRUYXNrIHtcbiAgICAgICAgbGV0IHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PEJsb2I+O1xuXG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVxdWVzdCA9IG5ldyBIdHRwUmVxdWVzdCgnR0VUJywgYXJnLCB7XG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSBuZXcgSHR0cFJlcXVlc3QoYXJnLm1ldGhvZCwgYXJnLnVybCwgYXJnLmJvZHksIHtcbiAgICAgICAgICAgICAgICAuLi5hcmcsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IHRoaXMuaHR0cC5yZXF1ZXN0PEJsb2I+KHJlcXVlc3QpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRG93bmxvYWRUYXNrKGV2ZW50cyk7XG4gICAgfVxuXG59Il19
@@ -0,0 +1,15 @@
1
+ export var AXUploadStatus;
2
+ (function (AXUploadStatus) {
3
+ AXUploadStatus["Uploading"] = "Uploading...";
4
+ AXUploadStatus["UploadComplete"] = "Upload complete";
5
+ AXUploadStatus["StartingUpload"] = "Starting upload";
6
+ AXUploadStatus["UploadFailed"] = "Upload failed";
7
+ })(AXUploadStatus || (AXUploadStatus = {}));
8
+ export var AXDownloadStatus;
9
+ (function (AXDownloadStatus) {
10
+ AXDownloadStatus["Downloading"] = "Downloading...";
11
+ AXDownloadStatus["DownloadComplete"] = "Download complete";
12
+ AXDownloadStatus["StartingDownload"] = "Starting download";
13
+ AXDownloadStatus["DownloadFailed"] = "Download failed";
14
+ })(AXDownloadStatus || (AXDownloadStatus = {}));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9uZXR3b3JrL3NyYy9saWIvbmV0d29yay50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLDRDQUEwQixDQUFBO0lBQzFCLG9EQUFrQyxDQUFBO0lBQ2xDLG9EQUFrQyxDQUFBO0lBQ2xDLGdEQUE4QixDQUFBO0FBQ2xDLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QjtBQVVELE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDeEIsa0RBQThCLENBQUE7SUFDOUIsMERBQXNDLENBQUE7SUFDdEMsMERBQXNDLENBQUE7SUFDdEMsc0RBQWtDLENBQUE7QUFDdEMsQ0FBQyxFQUxXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFLM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBBWFVwbG9hZFN0YXR1cyB7XG4gICAgVXBsb2FkaW5nID0gXCJVcGxvYWRpbmcuLi5cIixcbiAgICBVcGxvYWRDb21wbGV0ZSA9IFwiVXBsb2FkIGNvbXBsZXRlXCIsXG4gICAgU3RhcnRpbmdVcGxvYWQgPSBcIlN0YXJ0aW5nIHVwbG9hZFwiLFxuICAgIFVwbG9hZEZhaWxlZCA9IFwiVXBsb2FkIGZhaWxlZFwiXG59XG5cbmV4cG9ydCB0eXBlIEFYVXBsb2FkUmVzcG9uc2U8VD4gPSB7XG4gICAgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICBieXRlc1RyYW5zZmVycmVkOiBudW1iZXI7XG4gICAgdG90YWxCeXRlczogbnVtYmVyO1xuICAgIHN0YXR1czogQVhVcGxvYWRTdGF0dXM7XG4gICAgcmVzdWx0PzogVDtcbn07XG5cbmV4cG9ydCBlbnVtIEFYRG93bmxvYWRTdGF0dXMge1xuICAgIERvd25sb2FkaW5nID0gXCJEb3dubG9hZGluZy4uLlwiLFxuICAgIERvd25sb2FkQ29tcGxldGUgPSBcIkRvd25sb2FkIGNvbXBsZXRlXCIsXG4gICAgU3RhcnRpbmdEb3dubG9hZCA9IFwiU3RhcnRpbmcgZG93bmxvYWRcIixcbiAgICBEb3dubG9hZEZhaWxlZCA9IFwiRG93bmxvYWQgZmFpbGVkXCJcbn1cblxuZXhwb3J0IHR5cGUgQVhEb3dubG9hZFJlc3BvbnNlID0ge1xuICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgYnl0ZXNSZWNlaXZlZDogbnVtYmVyO1xuICAgIHRvdGFsQnl0ZXM6IG51bWJlcjtcbiAgICBzdGF0dXM6IEFYRG93bmxvYWRTdGF0dXM7XG4gICAgZGF0YT86IEJsb2I7IC8vIG9yIGFueSBhcHByb3ByaWF0ZSB0eXBlIGJhc2VkIG9uIHlvdXIgc3BlY2lmaWMgdXNlIGNhc2Vcbn07Il19
@@ -0,0 +1,48 @@
1
+ import { Subject } from 'rxjs';
2
+ import { takeUntil, map } from 'rxjs/operators';
3
+ import { HttpEventType } from '@angular/common/http';
4
+ import { AXUploadStatus } from './network.types'; // Ensure correct import path
5
+ export class AXUploadTask {
6
+ constructor(observable, totalFileSize) {
7
+ this.observable = observable;
8
+ this.totalFileSize = totalFileSize;
9
+ this.cancelSignal = new Subject();
10
+ }
11
+ get events() {
12
+ return this.observable.pipe(takeUntil(this.cancelSignal), map(event => this.handleEvent(event)));
13
+ }
14
+ handleEvent(event) {
15
+ switch (event.type) {
16
+ case HttpEventType.UploadProgress:
17
+ {
18
+ const percentDone = Math.round(100 * event.loaded / (this.totalFileSize || event.total));
19
+ return {
20
+ progress: percentDone,
21
+ bytesTransferred: event.loaded,
22
+ totalBytes: this.totalFileSize,
23
+ status: AXUploadStatus.Uploading
24
+ };
25
+ }
26
+ case HttpEventType.Response:
27
+ return {
28
+ progress: 100,
29
+ bytesTransferred: this.totalFileSize,
30
+ totalBytes: this.totalFileSize,
31
+ status: AXUploadStatus.UploadComplete,
32
+ result: event.body
33
+ };
34
+ default:
35
+ return {
36
+ progress: 0,
37
+ bytesTransferred: 0,
38
+ totalBytes: 0,
39
+ status: AXUploadStatus.StartingUpload
40
+ };
41
+ }
42
+ }
43
+ cancel() {
44
+ this.cancelSignal.next();
45
+ this.cancelSignal.complete();
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvbmV0d29yay9zcmMvbGliL3VwbG9hZC10YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFvQixjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLDZCQUE2QjtBQUVqRyxNQUFNLE9BQU8sWUFBWTtJQUdyQixZQUFvQixVQUFvQyxFQUFVLGFBQXFCO1FBQW5FLGVBQVUsR0FBVixVQUFVLENBQTBCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFGL0UsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWdELENBQUM7SUFFNUYsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ04sQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFxQjtRQUNyQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixLQUFLLGFBQWEsQ0FBQyxjQUFjO2dCQUM3QixDQUFDO29CQUNHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN6RixPQUFPO3dCQUNILFFBQVEsRUFBRSxXQUFXO3dCQUNyQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTTt3QkFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUM5QixNQUFNLEVBQUUsY0FBYyxDQUFDLFNBQVM7cUJBQ25DLENBQUM7Z0JBQ04sQ0FBQztZQUVMLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQ3ZCLE9BQU87b0JBQ0gsUUFBUSxFQUFFLEdBQUc7b0JBQ2IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDOUIsTUFBTSxFQUFFLGNBQWMsQ0FBQyxjQUFjO29CQUNyQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ3JCLENBQUM7WUFFTjtnQkFDSSxPQUFPO29CQUNILFFBQVEsRUFBRSxDQUFDO29CQUNYLGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLFVBQVUsRUFBRSxDQUFDO29CQUNiLE1BQU0sRUFBRSxjQUFjLENBQUMsY0FBYztpQkFDeEMsQ0FBQztRQUNWLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFYVXBsb2FkUmVzcG9uc2UsIEFYVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi9uZXR3b3JrLnR5cGVzJzsgLy8gRW5zdXJlIGNvcnJlY3QgaW1wb3J0IHBhdGhcblxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkVGFzazxUPiB7XG4gICAgcHJpdmF0ZSBjYW5jZWxTaWduYWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj4sIHByaXZhdGUgdG90YWxGaWxlU2l6ZTogbnVtYmVyKSB7IH1cblxuICAgIGdldCBldmVudHMoKTogT2JzZXJ2YWJsZTxBWFVwbG9hZFJlc3BvbnNlPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9ic2VydmFibGUucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmNhbmNlbFNpZ25hbCksXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gdGhpcy5oYW5kbGVFdmVudChldmVudCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFdmVudChldmVudDogSHR0cEV2ZW50PGFueT4pOiBBWFVwbG9hZFJlc3BvbnNlPFQ+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gKHRoaXMudG90YWxGaWxlU2l6ZSB8fCBldmVudC50b3RhbCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHBlcmNlbnREb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogZXZlbnQubG9hZGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxCeXRlczogdGhpcy50b3RhbEZpbGVTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFVwbG9hZFN0YXR1cy5VcGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiB0aGlzLnRvdGFsRmlsZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXM6IHRoaXMudG90YWxGaWxlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFVwbG9hZFN0YXR1cy5VcGxvYWRDb21wbGV0ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBldmVudC5ib2R5XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgICAgICAgICAgICAgICAgdG90YWxCeXRlczogMCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBBWFVwbG9hZFN0YXR1cy5TdGFydGluZ1VwbG9hZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuY2FuY2VsU2lnbmFsLm5leHQoKTtcbiAgICAgICAgdGhpcy5jYW5jZWxTaWduYWwuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,181 @@
1
+ import { Subject } from 'rxjs';
2
+ import { takeUntil, map } from 'rxjs/operators';
3
+ import { HttpEventType, HttpClient, HttpRequest } from '@angular/common/http';
4
+ import * as i0 from '@angular/core';
5
+ import { inject, Injectable } from '@angular/core';
6
+
7
+ var AXUploadStatus;
8
+ (function (AXUploadStatus) {
9
+ AXUploadStatus["Uploading"] = "Uploading...";
10
+ AXUploadStatus["UploadComplete"] = "Upload complete";
11
+ AXUploadStatus["StartingUpload"] = "Starting upload";
12
+ AXUploadStatus["UploadFailed"] = "Upload failed";
13
+ })(AXUploadStatus || (AXUploadStatus = {}));
14
+ var AXDownloadStatus;
15
+ (function (AXDownloadStatus) {
16
+ AXDownloadStatus["Downloading"] = "Downloading...";
17
+ AXDownloadStatus["DownloadComplete"] = "Download complete";
18
+ AXDownloadStatus["StartingDownload"] = "Starting download";
19
+ AXDownloadStatus["DownloadFailed"] = "Download failed";
20
+ })(AXDownloadStatus || (AXDownloadStatus = {}));
21
+
22
+ class AXUploadTask {
23
+ constructor(observable, totalFileSize) {
24
+ this.observable = observable;
25
+ this.totalFileSize = totalFileSize;
26
+ this.cancelSignal = new Subject();
27
+ }
28
+ get events() {
29
+ return this.observable.pipe(takeUntil(this.cancelSignal), map(event => this.handleEvent(event)));
30
+ }
31
+ handleEvent(event) {
32
+ switch (event.type) {
33
+ case HttpEventType.UploadProgress:
34
+ {
35
+ const percentDone = Math.round(100 * event.loaded / (this.totalFileSize || event.total));
36
+ return {
37
+ progress: percentDone,
38
+ bytesTransferred: event.loaded,
39
+ totalBytes: this.totalFileSize,
40
+ status: AXUploadStatus.Uploading
41
+ };
42
+ }
43
+ case HttpEventType.Response:
44
+ return {
45
+ progress: 100,
46
+ bytesTransferred: this.totalFileSize,
47
+ totalBytes: this.totalFileSize,
48
+ status: AXUploadStatus.UploadComplete,
49
+ result: event.body
50
+ };
51
+ default:
52
+ return {
53
+ progress: 0,
54
+ bytesTransferred: 0,
55
+ totalBytes: 0,
56
+ status: AXUploadStatus.StartingUpload
57
+ };
58
+ }
59
+ }
60
+ cancel() {
61
+ this.cancelSignal.next();
62
+ this.cancelSignal.complete();
63
+ }
64
+ }
65
+
66
+ class AXDownloadTask {
67
+ constructor(observable) {
68
+ this.observable = observable;
69
+ this.cancelSignal = new Subject();
70
+ }
71
+ get events() {
72
+ return this.observable.pipe(takeUntil(this.cancelSignal), map(event => this.handleEvent(event)));
73
+ }
74
+ handleEvent(event) {
75
+ switch (event.type) {
76
+ case HttpEventType.DownloadProgress:
77
+ {
78
+ const percentDone = Math.round(100 * event.loaded / (event.total ?? event.loaded));
79
+ return {
80
+ progress: percentDone,
81
+ bytesReceived: event.loaded,
82
+ totalBytes: event.total ?? 0,
83
+ status: AXDownloadStatus.Downloading
84
+ };
85
+ }
86
+ case HttpEventType.Response:
87
+ return {
88
+ progress: 100,
89
+ bytesReceived: event.body.size,
90
+ totalBytes: event.body.size,
91
+ status: AXDownloadStatus.DownloadComplete,
92
+ data: event.body
93
+ };
94
+ default:
95
+ return {
96
+ progress: 0,
97
+ bytesReceived: 0,
98
+ totalBytes: 0,
99
+ status: AXDownloadStatus.StartingDownload
100
+ };
101
+ }
102
+ }
103
+ cancel() {
104
+ this.cancelSignal.next();
105
+ this.cancelSignal.complete();
106
+ }
107
+ }
108
+
109
+ class AXNetworkService {
110
+ constructor() {
111
+ this.http = inject(HttpClient);
112
+ }
113
+ // Unified method handling both types of inputs
114
+ upload(arg1, arg2) {
115
+ let request;
116
+ let totalFilesSize = 0;
117
+ if (typeof arg1 === 'string' && arg2 instanceof FormData) {
118
+ // Calculate total file size
119
+ arg2.forEach((value) => {
120
+ if (value instanceof File) {
121
+ totalFilesSize += value.size;
122
+ }
123
+ });
124
+ request = new HttpRequest('POST', arg1, arg2, {
125
+ reportProgress: true,
126
+ responseType: 'json'
127
+ });
128
+ }
129
+ else if (arg1 instanceof HttpRequest) {
130
+ if (arg1.body instanceof FormData) {
131
+ // Calculate total file size
132
+ arg1.body.forEach((value) => {
133
+ if (value instanceof File) {
134
+ totalFilesSize += value.size;
135
+ }
136
+ });
137
+ }
138
+ request = arg1.clone({
139
+ reportProgress: true,
140
+ responseType: arg1.responseType || 'json'
141
+ });
142
+ }
143
+ else {
144
+ throw new Error("Invalid arguments for upload method.");
145
+ }
146
+ const events = this.http.request(request);
147
+ return new AXUploadTask(events, totalFilesSize);
148
+ }
149
+ // Unified method handling both types of inputs
150
+ download(arg) {
151
+ let request;
152
+ if (typeof arg === 'string') {
153
+ request = new HttpRequest('GET', arg, {
154
+ reportProgress: true,
155
+ responseType: 'blob',
156
+ });
157
+ }
158
+ else {
159
+ request = new HttpRequest(arg.method, arg.url, arg.body, {
160
+ ...arg,
161
+ reportProgress: true,
162
+ responseType: 'blob',
163
+ });
164
+ }
165
+ const events = this.http.request(request);
166
+ return new AXDownloadTask(events);
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
169
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, providedIn: 'root' }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXNetworkService, decorators: [{
172
+ type: Injectable,
173
+ args: [{ providedIn: 'root' }]
174
+ }] });
175
+
176
+ /**
177
+ * Generated bundle index. Do not edit.
178
+ */
179
+
180
+ export { AXDownloadStatus, AXDownloadTask, AXNetworkService, AXUploadStatus, AXUploadTask };
181
+ //# sourceMappingURL=acorex-core-network.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-network.mjs","sources":["../../../../libs/core/network/src/lib/network.types.ts","../../../../libs/core/network/src/lib/upload-task.ts","../../../../libs/core/network/src/lib/download-task.ts","../../../../libs/core/network/src/lib/network.service.ts","../../../../libs/core/network/src/acorex-core-network.ts"],"sourcesContent":["export enum AXUploadStatus {\n Uploading = \"Uploading...\",\n UploadComplete = \"Upload complete\",\n StartingUpload = \"Starting upload\",\n UploadFailed = \"Upload failed\"\n}\n\nexport type AXUploadResponse<T> = {\n progress: number;\n bytesTransferred: number;\n totalBytes: number;\n status: AXUploadStatus;\n result?: T;\n};\n\nexport enum AXDownloadStatus {\n Downloading = \"Downloading...\",\n DownloadComplete = \"Download complete\",\n StartingDownload = \"Starting download\",\n DownloadFailed = \"Download failed\"\n}\n\nexport type AXDownloadResponse = {\n progress: number;\n bytesReceived: number;\n totalBytes: number;\n status: AXDownloadStatus;\n data?: Blob; // or any appropriate type based on your specific use case\n};","import { Observable, Subject } from 'rxjs';\nimport { takeUntil, map } from 'rxjs/operators';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { AXUploadResponse, AXUploadStatus } from './network.types'; // Ensure correct import path\n\nexport class AXUploadTask<T> {\n private cancelSignal = new Subject<void>();\n\n constructor(private observable: Observable<HttpEvent<T>>, private totalFileSize: number) { }\n\n get events(): Observable<AXUploadResponse<T>> {\n return this.observable.pipe(\n takeUntil(this.cancelSignal),\n map(event => this.handleEvent(event))\n );\n }\n\n private handleEvent(event: HttpEvent<any>): AXUploadResponse<T> {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n {\n const percentDone = Math.round(100 * event.loaded / (this.totalFileSize || event.total));\n return {\n progress: percentDone,\n bytesTransferred: event.loaded,\n totalBytes: this.totalFileSize,\n status: AXUploadStatus.Uploading\n };\n }\n\n case HttpEventType.Response:\n return {\n progress: 100,\n bytesTransferred: this.totalFileSize,\n totalBytes: this.totalFileSize,\n status: AXUploadStatus.UploadComplete,\n result: event.body\n };\n\n default:\n return {\n progress: 0,\n bytesTransferred: 0,\n totalBytes: 0,\n status: AXUploadStatus.StartingUpload\n };\n }\n }\n\n cancel() {\n this.cancelSignal.next();\n this.cancelSignal.complete();\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil, map } from 'rxjs/operators';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { AXDownloadResponse, AXDownloadStatus } from './network.types'; // Ensure correct import path\n\nexport class AXDownloadTask {\n private cancelSignal = new Subject<void>();\n\n constructor(private observable: Observable<HttpEvent<any>>) { }\n\n get events(): Observable<AXDownloadResponse> {\n return this.observable.pipe(\n takeUntil(this.cancelSignal),\n map(event => this.handleEvent(event)),\n );\n }\n\n private handleEvent(event: HttpEvent<any>): AXDownloadResponse {\n switch (event.type) {\n case HttpEventType.DownloadProgress:\n {\n const percentDone = Math.round(100 * event.loaded / (event.total ?? event.loaded));\n return {\n progress: percentDone,\n bytesReceived: event.loaded,\n totalBytes: event.total ?? 0,\n status: AXDownloadStatus.Downloading\n };\n }\n\n case HttpEventType.Response:\n return {\n progress: 100,\n bytesReceived: event.body.size,\n totalBytes: event.body.size,\n status: AXDownloadStatus.DownloadComplete,\n data: event.body\n };\n\n default:\n return {\n progress: 0,\n bytesReceived: 0,\n totalBytes: 0,\n status: AXDownloadStatus.StartingDownload\n };\n }\n }\n\n cancel() {\n this.cancelSignal.next();\n this.cancelSignal.complete();\n }\n}\n","import { HttpRequest, HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AXDownloadTask } from './download-task';\nimport { AXUploadTask } from './upload-task';\n\n\n\n@Injectable({ providedIn: 'root' })\nexport class AXNetworkService {\n\n private http = inject(HttpClient);\n\n // Overload signatures\n upload<T>(url: string, formData: FormData): AXUploadTask<T>;\n upload<T>(request: HttpRequest<any>): AXUploadTask<T>;\n\n // Unified method handling both types of inputs\n upload<T>(arg1: string | HttpRequest<any>, arg2?: FormData): AXUploadTask<T> {\n let request: HttpRequest<any>;\n let totalFilesSize = 0;\n\n if (typeof arg1 === 'string' && arg2 instanceof FormData) {\n // Calculate total file size\n arg2.forEach((value) => {\n if (value instanceof File) {\n totalFilesSize += value.size;\n }\n });\n request = new HttpRequest('POST', arg1, arg2, {\n reportProgress: true,\n responseType: 'json'\n });\n } else if (arg1 instanceof HttpRequest) {\n if (arg1.body instanceof FormData) {\n // Calculate total file size\n arg1.body.forEach((value) => {\n if (value instanceof File) {\n totalFilesSize += value.size;\n }\n });\n }\n request = arg1.clone({\n reportProgress: true,\n responseType: arg1.responseType || 'json'\n });\n } else {\n throw new Error(\"Invalid arguments for upload method.\");\n }\n\n const events = this.http.request<T>(request);\n return new AXUploadTask<T>(events, totalFilesSize);\n }\n\n\n\n // Overload signatures\n download(url: string): AXDownloadTask;\n download(request: HttpRequest<Blob>): AXDownloadTask;\n\n // Unified method handling both types of inputs\n download(arg: string | HttpRequest<Blob>): AXDownloadTask {\n let request: HttpRequest<Blob>;\n\n if (typeof arg === 'string') {\n request = new HttpRequest('GET', arg, {\n reportProgress: true,\n responseType: 'blob',\n });\n } else {\n request = new HttpRequest(arg.method, arg.url, arg.body, {\n ...arg,\n reportProgress: true,\n responseType: 'blob',\n });\n }\n\n const events = this.http.request<Blob>(request);\n return new AXDownloadTask(events);\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;IAAY,eAKX;AALD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,cAA0B,CAAA;AAC1B,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AAClC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AAClC,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAClC,CAAC,EALW,cAAc,KAAd,cAAc,GAKzB,EAAA,CAAA,CAAA,CAAA;IAUW,iBAKX;AALD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,gBAA8B,CAAA;AAC9B,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC,CAAA;AACtC,IAAA,gBAAA,CAAA,kBAAA,CAAA,GAAA,mBAAsC,CAAA;AACtC,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AACtC,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA;;MCfY,YAAY,CAAA;IAGrB,WAAoB,CAAA,UAAoC,EAAU,aAAqB,EAAA;QAAnE,IAAU,CAAA,UAAA,GAAV,UAAU,CAA0B;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;AAF/E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;KAEiD;AAE5F,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACxC,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,KAAqB,EAAA;AACrC,QAAA,QAAQ,KAAK,CAAC,IAAI;YACd,KAAK,aAAa,CAAC,cAAc;gBAC7B;oBACI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzF,OAAO;AACH,wBAAA,QAAQ,EAAE,WAAW;wBACrB,gBAAgB,EAAE,KAAK,CAAC,MAAM;wBAC9B,UAAU,EAAE,IAAI,CAAC,aAAa;wBAC9B,MAAM,EAAE,cAAc,CAAC,SAAS;qBACnC,CAAC;iBACL;YAEL,KAAK,aAAa,CAAC,QAAQ;gBACvB,OAAO;AACH,oBAAA,QAAQ,EAAE,GAAG;oBACb,gBAAgB,EAAE,IAAI,CAAC,aAAa;oBACpC,UAAU,EAAE,IAAI,CAAC,aAAa;oBAC9B,MAAM,EAAE,cAAc,CAAC,cAAc;oBACrC,MAAM,EAAE,KAAK,CAAC,IAAI;iBACrB,CAAC;AAEN,YAAA;gBACI,OAAO;AACH,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,gBAAgB,EAAE,CAAC;AACnB,oBAAA,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,cAAc,CAAC,cAAc;iBACxC,CAAC;SACT;KACJ;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;AACJ;;MChDY,cAAc,CAAA;AAGvB,IAAA,WAAA,CAAoB,UAAsC,EAAA;QAAtC,IAAU,CAAA,UAAA,GAAV,UAAU,CAA4B;AAFlD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;KAEoB;AAE/D,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5B,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACxC,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,KAAqB,EAAA;AACrC,QAAA,QAAQ,KAAK,CAAC,IAAI;YACd,KAAK,aAAa,CAAC,gBAAgB;gBAC/B;oBACI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnF,OAAO;AACH,wBAAA,QAAQ,EAAE,WAAW;wBACrB,aAAa,EAAE,KAAK,CAAC,MAAM;AAC3B,wBAAA,UAAU,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;wBAC5B,MAAM,EAAE,gBAAgB,CAAC,WAAW;qBACvC,CAAC;iBACL;YAEL,KAAK,aAAa,CAAC,QAAQ;gBACvB,OAAO;AACH,oBAAA,QAAQ,EAAE,GAAG;AACb,oBAAA,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;AAC9B,oBAAA,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;oBAC3B,MAAM,EAAE,gBAAgB,CAAC,gBAAgB;oBACzC,IAAI,EAAE,KAAK,CAAC,IAAI;iBACnB,CAAC;AAEN,YAAA;gBACI,OAAO;AACH,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,aAAa,EAAE,CAAC;AAChB,oBAAA,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,gBAAgB,CAAC,gBAAgB;iBAC5C,CAAC;SACT;KACJ;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;AACJ;;MC7CY,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAGY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAsErC,KAAA;;IA/DG,MAAM,CAAI,IAA+B,EAAE,IAAe,EAAA;AACtD,QAAA,IAAI,OAAyB,CAAC;QAC9B,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,YAAY,QAAQ,EAAE;;AAEtD,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACvB,oBAAA,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC;iBAChC;AACL,aAAC,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AAC1C,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,MAAM;AACvB,aAAA,CAAC,CAAC;SACN;AAAM,aAAA,IAAI,IAAI,YAAY,WAAW,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAE;;gBAE/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,oBAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACvB,wBAAA,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC;qBAChC;AACL,iBAAC,CAAC,CAAC;aACN;AACD,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AACjB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,MAAM;AAC5C,aAAA,CAAC,CAAC;SACN;aAAM;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SAC3D;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,OAAO,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,YAAY,CAAI,MAAM,EAAE,cAAc,CAAC,CAAC;KACtD;;AASD,IAAA,QAAQ,CAAC,GAA+B,EAAA;AACpC,QAAA,IAAI,OAA0B,CAAC;AAE/B,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;AAClC,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,MAAM;AACvB,aAAA,CAAC,CAAC;SACN;aAAM;AACH,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AACrD,gBAAA,GAAG,GAAG;AACN,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,MAAM;AACvB,aAAA,CAAC,CAAC;SACN;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO,OAAO,CAAC,CAAC;AAChD,QAAA,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;KACrC;8GAtEQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACPlC;;AAEG;;;;"}
@@ -0,0 +1,3 @@
1
+ # @acorex/core/network
2
+
3
+ Secondary entry point of `@acorex/core`. It can be used by importing from `@acorex/core/network`.
@@ -0,0 +1,4 @@
1
+ export * from './lib/upload-task';
2
+ export * from './lib/download-task';
3
+ export * from './lib/network.types';
4
+ export * from './lib/network.service';
@@ -0,0 +1,11 @@
1
+ import { Observable } from 'rxjs';
2
+ import { HttpEvent } from '@angular/common/http';
3
+ import { AXDownloadResponse } from './network.types';
4
+ export declare class AXDownloadTask {
5
+ private observable;
6
+ private cancelSignal;
7
+ constructor(observable: Observable<HttpEvent<any>>);
8
+ get events(): Observable<AXDownloadResponse>;
9
+ private handleEvent;
10
+ cancel(): void;
11
+ }
@@ -0,0 +1,13 @@
1
+ import { HttpRequest } from '@angular/common/http';
2
+ import { AXDownloadTask } from './download-task';
3
+ import { AXUploadTask } from './upload-task';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AXNetworkService {
6
+ private http;
7
+ upload<T>(url: string, formData: FormData): AXUploadTask<T>;
8
+ upload<T>(request: HttpRequest<any>): AXUploadTask<T>;
9
+ download(url: string): AXDownloadTask;
10
+ download(request: HttpRequest<Blob>): AXDownloadTask;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXNetworkService, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXNetworkService>;
13
+ }
@@ -0,0 +1,26 @@
1
+ export declare enum AXUploadStatus {
2
+ Uploading = "Uploading...",
3
+ UploadComplete = "Upload complete",
4
+ StartingUpload = "Starting upload",
5
+ UploadFailed = "Upload failed"
6
+ }
7
+ export type AXUploadResponse<T> = {
8
+ progress: number;
9
+ bytesTransferred: number;
10
+ totalBytes: number;
11
+ status: AXUploadStatus;
12
+ result?: T;
13
+ };
14
+ export declare enum AXDownloadStatus {
15
+ Downloading = "Downloading...",
16
+ DownloadComplete = "Download complete",
17
+ StartingDownload = "Starting download",
18
+ DownloadFailed = "Download failed"
19
+ }
20
+ export type AXDownloadResponse = {
21
+ progress: number;
22
+ bytesReceived: number;
23
+ totalBytes: number;
24
+ status: AXDownloadStatus;
25
+ data?: Blob;
26
+ };
@@ -0,0 +1,12 @@
1
+ import { Observable } from 'rxjs';
2
+ import { HttpEvent } from '@angular/common/http';
3
+ import { AXUploadResponse } from './network.types';
4
+ export declare class AXUploadTask<T> {
5
+ private observable;
6
+ private totalFileSize;
7
+ private cancelSignal;
8
+ constructor(observable: Observable<HttpEvent<T>>, totalFileSize: number);
9
+ get events(): Observable<AXUploadResponse<T>>;
10
+ private handleEvent;
11
+ cancel(): void;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/core",
3
- "version": "18.5.13",
3
+ "version": "18.5.14",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
@@ -32,11 +32,17 @@
32
32
  "esm": "./esm2022/common/acorex-core-common.mjs",
33
33
  "default": "./fesm2022/acorex-core-common.mjs"
34
34
  },
35
- "./file": {
36
- "types": "./file/index.d.ts",
37
- "esm2022": "./esm2022/file/acorex-core-file.mjs",
38
- "esm": "./esm2022/file/acorex-core-file.mjs",
39
- "default": "./fesm2022/acorex-core-file.mjs"
35
+ "./events": {
36
+ "types": "./events/index.d.ts",
37
+ "esm2022": "./esm2022/events/acorex-core-events.mjs",
38
+ "esm": "./esm2022/events/acorex-core-events.mjs",
39
+ "default": "./fesm2022/acorex-core-events.mjs"
40
+ },
41
+ "./config": {
42
+ "types": "./config/index.d.ts",
43
+ "esm2022": "./esm2022/config/acorex-core-config.mjs",
44
+ "esm": "./esm2022/config/acorex-core-config.mjs",
45
+ "default": "./fesm2022/acorex-core-config.mjs"
40
46
  },
41
47
  "./format": {
42
48
  "types": "./format/index.d.ts",
@@ -44,11 +50,11 @@
44
50
  "esm": "./esm2022/format/acorex-core-format.mjs",
45
51
  "default": "./fesm2022/acorex-core-format.mjs"
46
52
  },
47
- "./events": {
48
- "types": "./events/index.d.ts",
49
- "esm2022": "./esm2022/events/acorex-core-events.mjs",
50
- "esm": "./esm2022/events/acorex-core-events.mjs",
51
- "default": "./fesm2022/acorex-core-events.mjs"
53
+ "./file": {
54
+ "types": "./file/index.d.ts",
55
+ "esm2022": "./esm2022/file/acorex-core-file.mjs",
56
+ "esm": "./esm2022/file/acorex-core-file.mjs",
57
+ "default": "./fesm2022/acorex-core-file.mjs"
52
58
  },
53
59
  "./date-time": {
54
60
  "types": "./date-time/index.d.ts",
@@ -56,12 +62,6 @@
56
62
  "esm": "./esm2022/date-time/acorex-core-date-time.mjs",
57
63
  "default": "./fesm2022/acorex-core-date-time.mjs"
58
64
  },
59
- "./config": {
60
- "types": "./config/index.d.ts",
61
- "esm2022": "./esm2022/config/acorex-core-config.mjs",
62
- "esm": "./esm2022/config/acorex-core-config.mjs",
63
- "default": "./fesm2022/acorex-core-config.mjs"
64
- },
65
65
  "./image": {
66
66
  "types": "./image/index.d.ts",
67
67
  "esm2022": "./esm2022/image/acorex-core-image.mjs",
@@ -74,6 +74,12 @@
74
74
  "esm": "./esm2022/memorize/acorex-core-memorize.mjs",
75
75
  "default": "./fesm2022/acorex-core-memorize.mjs"
76
76
  },
77
+ "./network": {
78
+ "types": "./network/index.d.ts",
79
+ "esm2022": "./esm2022/network/acorex-core-network.mjs",
80
+ "esm": "./esm2022/network/acorex-core-network.mjs",
81
+ "default": "./fesm2022/acorex-core-network.mjs"
82
+ },
77
83
  "./pipes": {
78
84
  "types": "./pipes/index.d.ts",
79
85
  "esm2022": "./esm2022/pipes/acorex-core-pipes.mjs",