@flusys/ng-storage 1.1.1-beta → 1.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -623
- package/fesm2022/flusys-ng-storage-file-manager-form.component-DhqZmpuX.mjs +671 -0
- package/fesm2022/flusys-ng-storage-file-manager-form.component-DhqZmpuX.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage-file-manager-list.component-nZDj1UfS.mjs +464 -0
- package/fesm2022/flusys-ng-storage-file-manager-list.component-nZDj1UfS.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage-folder-form.component-Bru9NQyr.mjs +218 -0
- package/fesm2022/flusys-ng-storage-folder-form.component-Bru9NQyr.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage-folder-list.component-fuJMWYWZ.mjs +263 -0
- package/fesm2022/flusys-ng-storage-folder-list.component-fuJMWYWZ.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage-storage-config-form.component-Da-pWR7d.mjs +891 -0
- package/fesm2022/flusys-ng-storage-storage-config-form.component-Da-pWR7d.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage-storage-config-list.component-D59X4sae.mjs +288 -0
- package/fesm2022/flusys-ng-storage-storage-config-list.component-D59X4sae.mjs.map +1 -0
- package/fesm2022/flusys-ng-storage.mjs +679 -321
- package/fesm2022/flusys-ng-storage.mjs.map +1 -1
- package/package.json +11 -10
- package/types/flusys-ng-storage.d.ts +179 -178
- package/fesm2022/flusys-ng-storage-file-manager-form.component-H3OZS0SW.mjs +0 -715
- package/fesm2022/flusys-ng-storage-file-manager-form.component-H3OZS0SW.mjs.map +0 -1
- package/fesm2022/flusys-ng-storage-file-manager-list.component-4pb6TafD.mjs +0 -475
- package/fesm2022/flusys-ng-storage-file-manager-list.component-4pb6TafD.mjs.map +0 -1
- package/fesm2022/flusys-ng-storage-folder-form.component-DQ0QY7P0.mjs +0 -253
- package/fesm2022/flusys-ng-storage-folder-form.component-DQ0QY7P0.mjs.map +0 -1
- package/fesm2022/flusys-ng-storage-folder-list.component-D-oMaEgl.mjs +0 -267
- package/fesm2022/flusys-ng-storage-folder-list.component-D-oMaEgl.mjs.map +0 -1
- package/fesm2022/flusys-ng-storage-storage-config-form.component-CjIAxfHC.mjs +0 -546
- package/fesm2022/flusys-ng-storage-storage-config-form.component-CjIAxfHC.mjs.map +0 -1
- package/fesm2022/flusys-ng-storage-storage-config-list.component-jHk8O9Mx.mjs +0 -328
- package/fesm2022/flusys-ng-storage-storage-config-list.component-jHk8O9Mx.mjs.map +0 -1
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { IBaseEntity,
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
1
|
+
import { IBaseEntity, TranslateService, IFileProvider, IFileSelectFilter, IListResponse, IFileBasicInfo, IFileUploadOptions, ISingleResponse, IUploadedFile, ISelectFilter, IFolderBasicInfo, IStorageConfigBasicInfo, ApiResourceService, IBulkResponse, RouterTabItem } from '@flusys/ng-shared';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Provider } from '@angular/core';
|
|
3
|
+
import { DestroyRef, Provider } from '@angular/core';
|
|
4
|
+
import * as _flusys_ng_layout from '@flusys/ng-layout';
|
|
5
|
+
import * as _flusys_ng_core from '@flusys/ng-core';
|
|
5
6
|
import { BaseApiService } from '@flusys/ng-core';
|
|
6
|
-
import { Routes } from '@angular/router';
|
|
7
|
+
import { Router, Routes } from '@angular/router';
|
|
8
|
+
import { MessageService, ConfirmationService } from '@flusys/ng-ui';
|
|
9
|
+
import { Observable } from 'rxjs';
|
|
10
|
+
|
|
11
|
+
declare const STORAGE_MESSAGES: Record<string, string>;
|
|
7
12
|
|
|
8
13
|
/**
|
|
9
14
|
* File Location Enum
|
|
@@ -29,10 +34,7 @@ declare enum ImageFormat {
|
|
|
29
34
|
/**
|
|
30
35
|
* File Manager Interface (matches backend IFileManager)
|
|
31
36
|
*/
|
|
32
|
-
interface IFileManager {
|
|
33
|
-
id: string;
|
|
34
|
-
createdAt: Date;
|
|
35
|
-
updatedAt: Date;
|
|
37
|
+
interface IFileManager extends IBaseEntity {
|
|
36
38
|
name: string;
|
|
37
39
|
contentType: string;
|
|
38
40
|
size: string;
|
|
@@ -41,7 +43,6 @@ interface IFileManager {
|
|
|
41
43
|
location: FileLocationEnum;
|
|
42
44
|
storageConfigId: string | null;
|
|
43
45
|
providerName?: string;
|
|
44
|
-
expiresAt: Date | null;
|
|
45
46
|
isPrivate: boolean;
|
|
46
47
|
companyId?: string;
|
|
47
48
|
folderId?: string | null;
|
|
@@ -82,71 +83,41 @@ interface IFilesResponseDto {
|
|
|
82
83
|
name: string;
|
|
83
84
|
contentType: string;
|
|
84
85
|
url: string;
|
|
86
|
+
location?: string;
|
|
87
|
+
storageConfigId?: string;
|
|
88
|
+
providerName?: string;
|
|
85
89
|
}
|
|
86
90
|
|
|
87
|
-
/**
|
|
88
|
-
* Folder Interface
|
|
89
|
-
* Matches backend IFolder and FolderResponseDto
|
|
90
|
-
*/
|
|
91
91
|
interface IFolder extends IBaseEntity {
|
|
92
92
|
name: string;
|
|
93
93
|
slug: string;
|
|
94
94
|
companyId?: string | null;
|
|
95
95
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Create Folder DTO
|
|
98
|
-
* POST /storage/folder/insert
|
|
99
|
-
*/
|
|
100
96
|
interface ICreateFolderDto {
|
|
101
97
|
name: string;
|
|
102
98
|
}
|
|
103
|
-
|
|
104
|
-
* Update Folder DTO
|
|
105
|
-
* POST /storage/folder/update
|
|
106
|
-
*/
|
|
107
|
-
interface IUpdateFolderDto {
|
|
99
|
+
interface IUpdateFolderDto extends Partial<ICreateFolderDto> {
|
|
108
100
|
id: string;
|
|
109
|
-
name?: string;
|
|
110
101
|
}
|
|
111
102
|
|
|
112
|
-
/**
|
|
113
|
-
* Storage Config Interface
|
|
114
|
-
* Matches backend IStorageConfig and StorageConfigResponseDto
|
|
115
|
-
*/
|
|
116
103
|
interface IStorageConfig extends IBaseEntity {
|
|
117
104
|
name: string;
|
|
118
105
|
storage: FileLocationEnum;
|
|
119
|
-
config: Record<string,
|
|
106
|
+
config: Record<string, unknown>;
|
|
120
107
|
isActive: boolean;
|
|
121
108
|
isDefault: boolean;
|
|
122
109
|
companyId?: string | null;
|
|
123
110
|
}
|
|
124
|
-
/**
|
|
125
|
-
* Create Storage Config DTO
|
|
126
|
-
* POST /storage/storage-config/insert
|
|
127
|
-
*/
|
|
128
111
|
interface ICreateStorageConfigDto {
|
|
129
112
|
name: string;
|
|
130
113
|
storage: FileLocationEnum;
|
|
131
|
-
config: Record<string,
|
|
114
|
+
config: Record<string, unknown>;
|
|
132
115
|
isActive?: boolean;
|
|
133
116
|
isDefault?: boolean;
|
|
134
117
|
}
|
|
135
|
-
|
|
136
|
-
* Update Storage Config DTO
|
|
137
|
-
* POST /storage/storage-config/update
|
|
138
|
-
*/
|
|
139
|
-
interface IUpdateStorageConfigDto {
|
|
118
|
+
interface IUpdateStorageConfigDto extends Partial<ICreateStorageConfigDto> {
|
|
140
119
|
id: string;
|
|
141
|
-
name?: string;
|
|
142
|
-
storage?: FileLocationEnum;
|
|
143
|
-
config?: Record<string, any>;
|
|
144
|
-
isActive?: boolean;
|
|
145
|
-
isDefault?: boolean;
|
|
146
120
|
}
|
|
147
|
-
/**
|
|
148
|
-
* AWS S3 Configuration
|
|
149
|
-
*/
|
|
150
121
|
interface IAwsS3Config {
|
|
151
122
|
region: string;
|
|
152
123
|
bucket: string;
|
|
@@ -154,17 +125,11 @@ interface IAwsS3Config {
|
|
|
154
125
|
secretAccessKey: string;
|
|
155
126
|
endpoint?: string;
|
|
156
127
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Azure Blob Storage Configuration
|
|
159
|
-
*/
|
|
160
128
|
interface IAzureBlobConfig {
|
|
161
129
|
accountName: string;
|
|
162
130
|
accountKey: string;
|
|
163
131
|
containerName: string;
|
|
164
132
|
}
|
|
165
|
-
/**
|
|
166
|
-
* SFTP Configuration
|
|
167
|
-
*/
|
|
168
133
|
interface ISftpConfig {
|
|
169
134
|
host: string;
|
|
170
135
|
port: number;
|
|
@@ -173,9 +138,6 @@ interface ISftpConfig {
|
|
|
173
138
|
privateKey?: string;
|
|
174
139
|
basePath: string;
|
|
175
140
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Local Storage Configuration
|
|
178
|
-
*/
|
|
179
141
|
interface ILocalStorageConfig {
|
|
180
142
|
basePath: string;
|
|
181
143
|
}
|
|
@@ -200,29 +162,141 @@ interface IUploadedFileInfo {
|
|
|
200
162
|
key: string;
|
|
201
163
|
size: number;
|
|
202
164
|
contentType: string;
|
|
165
|
+
location?: string;
|
|
166
|
+
storageConfigId?: string;
|
|
203
167
|
}
|
|
204
168
|
|
|
205
169
|
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
* Implements IProfileUploadProvider interface for ng-auth profile page.
|
|
209
|
-
* Uses UploadService.uploadAndRegister() to upload files and register in file manager.
|
|
210
|
-
*
|
|
211
|
-
* @example
|
|
212
|
-
* // In app.config.ts
|
|
213
|
-
* providers: [
|
|
214
|
-
* ...provideStorageProviders(),
|
|
215
|
-
* ]
|
|
170
|
+
* Provider label translation keys
|
|
216
171
|
*/
|
|
217
|
-
declare
|
|
172
|
+
declare const PROVIDER_LABEL_KEYS: Record<FileLocationEnum, string>;
|
|
173
|
+
/**
|
|
174
|
+
* Get provider label translation key
|
|
175
|
+
*/
|
|
176
|
+
declare function getProviderLabelKey(storage: FileLocationEnum | string): string;
|
|
177
|
+
/**
|
|
178
|
+
* Get provider icon class
|
|
179
|
+
*/
|
|
180
|
+
declare function getProviderIcon(storage: FileLocationEnum | string): string;
|
|
181
|
+
/**
|
|
182
|
+
* Get provider severity for f-tag
|
|
183
|
+
*/
|
|
184
|
+
declare function getProviderSeverity(storage: FileLocationEnum | string): 'success' | 'info' | 'warn' | 'danger' | 'secondary' | 'contrast';
|
|
185
|
+
/**
|
|
186
|
+
* Get file icon based on content type
|
|
187
|
+
*/
|
|
188
|
+
declare function getFileIcon(contentType: string): string;
|
|
189
|
+
/** File size unit keys for translation */
|
|
190
|
+
declare const FILE_SIZE_UNIT_KEYS: readonly ["storage.size.bytes", "shared.size.kb", "shared.size.mb", "storage.size.gb"];
|
|
191
|
+
/**
|
|
192
|
+
* Format file size from bytes to human readable format
|
|
193
|
+
* Returns an object with value and unitKey for translation
|
|
194
|
+
*/
|
|
195
|
+
declare function formatFileSizeWithKey(bytes: number): {
|
|
196
|
+
value: string;
|
|
197
|
+
unitKey: string;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Format file size from bytes to human readable string
|
|
201
|
+
* @deprecated Use formatFileSizeWithKey for localization support
|
|
202
|
+
*/
|
|
203
|
+
declare function formatFileSize(bytes: number): string;
|
|
204
|
+
/**
|
|
205
|
+
* Storage provider options for dropdown selects
|
|
206
|
+
* Labels are translation keys - components should translate them
|
|
207
|
+
*/
|
|
208
|
+
declare const STORAGE_PROVIDER_OPTIONS: readonly [{
|
|
209
|
+
readonly labelKey: "storage.aws.title";
|
|
210
|
+
readonly value: FileLocationEnum.AWS;
|
|
211
|
+
}, {
|
|
212
|
+
readonly labelKey: "storage.azure.title";
|
|
213
|
+
readonly value: FileLocationEnum.AZURE;
|
|
214
|
+
}, {
|
|
215
|
+
readonly labelKey: "storage.sftp.title";
|
|
216
|
+
readonly value: FileLocationEnum.SFTP;
|
|
217
|
+
}, {
|
|
218
|
+
readonly labelKey: "storage.local.title";
|
|
219
|
+
readonly value: FileLocationEnum.LOCAL;
|
|
220
|
+
}];
|
|
221
|
+
type StorageProviderOption = (typeof STORAGE_PROVIDER_OPTIONS)[number];
|
|
222
|
+
|
|
223
|
+
declare abstract class BaseStoragePage {
|
|
224
|
+
protected readonly router: Router;
|
|
225
|
+
protected readonly messageService: MessageService;
|
|
226
|
+
protected readonly appConfig: _flusys_ng_core.IAppConfig;
|
|
227
|
+
protected readonly companyContext: _flusys_ng_layout.ILayoutAuthState;
|
|
228
|
+
protected readonly translateAdapter: TranslateService;
|
|
229
|
+
readonly isLoading: i0.WritableSignal<boolean>;
|
|
230
|
+
readonly showCompanyInfo: i0.Signal<boolean>;
|
|
231
|
+
readonly currentCompanyName: i0.Signal<string>;
|
|
232
|
+
protected showSuccess(detail: string, summaryKey?: string): void;
|
|
233
|
+
protected showError(detail: string, summaryKey?: string): void;
|
|
234
|
+
protected navigateTo(path: string[]): void;
|
|
235
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseStoragePage, never>;
|
|
236
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseStoragePage, never, never, {}, {}, never, never, true, never>;
|
|
237
|
+
}
|
|
238
|
+
declare abstract class BaseStorageListPage<T> {
|
|
239
|
+
protected readonly router: Router;
|
|
240
|
+
protected readonly messageService: MessageService;
|
|
241
|
+
protected readonly appConfig: _flusys_ng_core.IAppConfig;
|
|
242
|
+
protected readonly confirmationService: ConfirmationService;
|
|
243
|
+
protected readonly destroyRef: DestroyRef;
|
|
244
|
+
protected readonly translateAdapter: TranslateService;
|
|
245
|
+
protected readonly companyContext: _flusys_ng_layout.ILayoutAuthState;
|
|
246
|
+
readonly items: i0.WritableSignal<T[]>;
|
|
247
|
+
readonly isLoading: i0.WritableSignal<boolean>;
|
|
248
|
+
readonly total: i0.WritableSignal<number>;
|
|
249
|
+
readonly pageSize: i0.WritableSignal<number>;
|
|
250
|
+
readonly first: i0.WritableSignal<number>;
|
|
251
|
+
readonly currentPage: i0.Signal<number>;
|
|
252
|
+
readonly showCompanyInfo: i0.Signal<boolean>;
|
|
253
|
+
readonly totalRecords: i0.WritableSignal<number>;
|
|
254
|
+
readonly currentCompanyName: i0.Signal<string>;
|
|
255
|
+
abstract loadData(): Promise<void>;
|
|
256
|
+
abstract getResourceRoute(): string;
|
|
257
|
+
getDeleteConfirmMessage(item: T): string;
|
|
258
|
+
onCreate(): void;
|
|
259
|
+
onEdit(id: string): void;
|
|
260
|
+
onPageChange(event: {
|
|
261
|
+
first?: number | null;
|
|
262
|
+
rows?: number | null;
|
|
263
|
+
}): void;
|
|
264
|
+
protected getPaginationParams(): {
|
|
265
|
+
currentPage: number;
|
|
266
|
+
pageSize: number;
|
|
267
|
+
};
|
|
268
|
+
protected showSuccess(detail: string, summary?: string): void;
|
|
269
|
+
protected showError(detail: string, summary?: string): void;
|
|
270
|
+
protected showInfo(detail: string, summary?: string): void;
|
|
271
|
+
protected showWarn(detail: string, summary?: string): void;
|
|
272
|
+
onDelete(item: T, idGetter: (item: T) => string, deleteApiCall: (id: string) => Observable<unknown> | Promise<unknown>, options?: {
|
|
273
|
+
header?: string;
|
|
274
|
+
}): void;
|
|
275
|
+
onDeleteAsync(item: T, idGetter: (item: T) => string, deleteApiCall: (id: string) => Promise<unknown>, options?: {
|
|
276
|
+
header?: string;
|
|
277
|
+
}): Promise<void>;
|
|
278
|
+
protected navigateTo(path: string[]): void;
|
|
279
|
+
protected t(key: string, variables?: Record<string, string | number>): string;
|
|
280
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseStorageListPage<any>, never>;
|
|
281
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseStorageListPage<any>, never, never, {}, {}, never, never, true, never>;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
declare class FileProviderAdapter implements IFileProvider {
|
|
285
|
+
private readonly fileManagerApi;
|
|
218
286
|
private readonly uploadService;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
287
|
+
private readonly folderApi;
|
|
288
|
+
private readonly storageConfigApi;
|
|
289
|
+
loadFiles(filter: IFileSelectFilter): Observable<IListResponse<IFileBasicInfo>>;
|
|
290
|
+
uploadFile(file: File, options?: IFileUploadOptions): Observable<ISingleResponse<IUploadedFile>>;
|
|
291
|
+
uploadMultipleFiles(files: File[], options?: IFileUploadOptions): Observable<ISingleResponse<IUploadedFile[]>>;
|
|
292
|
+
getFileUrls(fileIds: string[]): Observable<ISingleResponse<IFileBasicInfo[]>>;
|
|
293
|
+
loadFolders(filter: ISelectFilter): Observable<IListResponse<IFolderBasicInfo>>;
|
|
294
|
+
loadStorageConfigs(filter: ISelectFilter): Observable<IListResponse<IStorageConfigBasicInfo>>;
|
|
295
|
+
private buildFileFilter;
|
|
296
|
+
private mapToFileBasicInfo;
|
|
297
|
+
private mapToUploadedFile;
|
|
298
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileProviderAdapter, never>;
|
|
299
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FileProviderAdapter>;
|
|
226
300
|
}
|
|
227
301
|
|
|
228
302
|
/**
|
|
@@ -243,38 +317,11 @@ declare class ProfileUploadProviderAdapter implements IProfileUploadProvider {
|
|
|
243
317
|
*/
|
|
244
318
|
declare function provideStorageProviders(): Provider[];
|
|
245
319
|
|
|
246
|
-
/**
|
|
247
|
-
* File Manager API Service
|
|
248
|
-
* Handles file metadata CRUD operations
|
|
249
|
-
* Endpoint: POST /storage/file-manager/*
|
|
250
|
-
*
|
|
251
|
-
* Note: Company feature enabled - all queries automatically scoped to user's company
|
|
252
|
-
*/
|
|
253
320
|
declare class FileManagerApiService extends ApiResourceService<IUpdateFileManagerDto, IFileManager> {
|
|
254
321
|
constructor();
|
|
255
|
-
/**
|
|
256
|
-
* Get multiple files with valid URLs
|
|
257
|
-
* POST /storage/file-manager/get-files
|
|
258
|
-
* Regenerates presigned URLs if expired
|
|
259
|
-
*/
|
|
260
322
|
getFiles(fileIds: string[]): Observable<ISingleResponse<IFilesResponseDto[]>>;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
* POST /storage/file-manager/get-all
|
|
264
|
-
* Filtered by folder ID and company (if enabled)
|
|
265
|
-
*/
|
|
266
|
-
getFilesByFolder(folderId: number | null, page?: number, limit?: number): Observable<IListResponse<IFileManager>>;
|
|
267
|
-
/**
|
|
268
|
-
* Get private files (requires permission)
|
|
269
|
-
* POST /storage/file-manager/get-all
|
|
270
|
-
* Filtered by isPrivate and user permission 'storage.file.viewPrivate'
|
|
271
|
-
*/
|
|
272
|
-
getPrivateFiles(page?: number, limit?: number): Observable<IListResponse<IFileManager>>;
|
|
273
|
-
/**
|
|
274
|
-
* Create new file manager record
|
|
275
|
-
* POST /storage/file-manager/insert
|
|
276
|
-
*/
|
|
277
|
-
create(dto: ICreateFileManagerDto): Observable<ISingleResponse<IFileManager>>;
|
|
323
|
+
createFile(dto: ICreateFileManagerDto): Observable<ISingleResponse<IFileManager>>;
|
|
324
|
+
createFiles(dtos: ICreateFileManagerDto[]): Observable<IBulkResponse<IFileManager>>;
|
|
278
325
|
static ɵfac: i0.ɵɵFactoryDeclaration<FileManagerApiService, never>;
|
|
279
326
|
static ɵprov: i0.ɵɵInjectableDeclaration<FileManagerApiService>;
|
|
280
327
|
}
|
|
@@ -286,7 +333,7 @@ declare class FileManagerApiService extends ApiResourceService<IUpdateFileManage
|
|
|
286
333
|
*
|
|
287
334
|
* Note: Company feature enabled - all queries automatically scoped to user's company
|
|
288
335
|
*/
|
|
289
|
-
declare class FolderApiService extends ApiResourceService<IUpdateFolderDto, IFolder> {
|
|
336
|
+
declare class FolderApiService extends ApiResourceService<ICreateFolderDto | IUpdateFolderDto, IFolder> {
|
|
290
337
|
constructor();
|
|
291
338
|
static ɵfac: i0.ɵɵFactoryDeclaration<FolderApiService, never>;
|
|
292
339
|
static ɵprov: i0.ɵɵInjectableDeclaration<FolderApiService>;
|
|
@@ -299,119 +346,73 @@ declare class FolderApiService extends ApiResourceService<IUpdateFolderDto, IFol
|
|
|
299
346
|
*
|
|
300
347
|
* Note: Company feature enabled - all queries automatically scoped to user's company
|
|
301
348
|
*/
|
|
302
|
-
declare class StorageConfigApiService extends ApiResourceService<IUpdateStorageConfigDto, IStorageConfig> {
|
|
349
|
+
declare class StorageConfigApiService extends ApiResourceService<ICreateStorageConfigDto | IUpdateStorageConfigDto, IStorageConfig> {
|
|
303
350
|
constructor();
|
|
304
351
|
static ɵfac: i0.ɵɵFactoryDeclaration<StorageConfigApiService, never>;
|
|
305
352
|
static ɵprov: i0.ɵɵInjectableDeclaration<StorageConfigApiService>;
|
|
306
353
|
}
|
|
307
354
|
|
|
308
355
|
/**
|
|
309
|
-
* Upload Service
|
|
310
|
-
* Handles file upload/delete operations
|
|
356
|
+
* Upload Service - File upload/delete operations
|
|
311
357
|
* Endpoint: POST /storage/upload/*
|
|
312
|
-
*
|
|
313
|
-
* Features:
|
|
314
|
-
* - Company-scoped uploads (if company feature enabled)
|
|
315
|
-
* - Image compression
|
|
316
|
-
* - Multiple storage providers
|
|
317
|
-
* - File validation (size, type)
|
|
318
|
-
* - Default storage config from environment (services.storage.defaultStorageConfigId)
|
|
319
358
|
*/
|
|
320
359
|
declare class UploadService extends BaseApiService {
|
|
321
360
|
private readonly fileManagerApi;
|
|
322
361
|
constructor();
|
|
323
|
-
/**
|
|
324
|
-
* Get default storage config ID from app config
|
|
325
|
-
* Used when no storageConfigId is provided in upload options
|
|
326
|
-
*/
|
|
362
|
+
/** Get default storage config ID from app config */
|
|
327
363
|
getDefaultConfigId(): string | undefined;
|
|
328
|
-
/**
|
|
329
|
-
* Upload single file
|
|
330
|
-
* POST /storage/upload/single-file?storageConfigId=x&folderPath=y
|
|
331
|
-
*
|
|
332
|
-
* @param file - File to upload
|
|
333
|
-
* @param options - Upload options (storage config, compression, etc.)
|
|
334
|
-
*/
|
|
364
|
+
/** Upload single file - POST /storage/upload/single-file */
|
|
335
365
|
uploadSingleFile(file: File, options?: IUploadOptionsDto): Observable<ISingleResponse<IUploadedFileInfo>>;
|
|
336
|
-
/**
|
|
337
|
-
* Upload multiple files (max 50)
|
|
338
|
-
* POST /storage/upload/multiple-file?storageConfigId=x&folderPath=y
|
|
339
|
-
*
|
|
340
|
-
* @param files - Array of files to upload
|
|
341
|
-
* @param options - Upload options
|
|
342
|
-
*/
|
|
366
|
+
/** Upload multiple files (max 50) - POST /storage/upload/multiple-file */
|
|
343
367
|
uploadMultipleFiles(files: File[], options?: IUploadOptionsDto): Observable<ISingleResponse<IUploadedFileInfo[]>>;
|
|
344
|
-
/**
|
|
345
|
-
* Build query string from upload options
|
|
346
|
-
* Uses default storageConfigId from app config if not provided in options
|
|
347
|
-
*/
|
|
348
|
-
private buildQueryParams;
|
|
349
|
-
/**
|
|
350
|
-
* Delete single file
|
|
351
|
-
* POST /storage/upload/delete-single-file
|
|
352
|
-
*
|
|
353
|
-
* @param key - File key/path to delete
|
|
354
|
-
* @param storageConfigId - Optional storage config ID (uses default from config if not provided)
|
|
355
|
-
*/
|
|
368
|
+
/** Delete single file - POST /storage/upload/delete-single-file */
|
|
356
369
|
deleteSingleFile(key: string, storageConfigId?: string): Observable<ISingleResponse<void>>;
|
|
357
|
-
/**
|
|
358
|
-
* Delete multiple files
|
|
359
|
-
* POST /storage/upload/delete-multiple-file
|
|
360
|
-
*
|
|
361
|
-
* @param keys - Array of file keys/paths to delete
|
|
362
|
-
* @param storageConfigId - Optional storage config ID (uses default from config if not provided)
|
|
363
|
-
*/
|
|
370
|
+
/** Delete multiple files - POST /storage/upload/delete-multiple-file */
|
|
364
371
|
deleteMultipleFiles(keys: string[], storageConfigId?: string): Observable<ISingleResponse<void>>;
|
|
365
|
-
/**
|
|
366
|
-
* Get file download URL
|
|
367
|
-
* GET /storage/upload/file/:filePath
|
|
368
|
-
*
|
|
369
|
-
* @param key - File key/path
|
|
370
|
-
* @returns URL for direct file access
|
|
371
|
-
*/
|
|
372
|
+
/** Get file download URL - GET /storage/upload/file/:filePath */
|
|
372
373
|
getFileUrl(key: string): string;
|
|
373
|
-
/**
|
|
374
|
-
* Upload file and register in file manager
|
|
375
|
-
* Returns file manager ID (UUID) for storing in references like profilePictureId
|
|
376
|
-
*
|
|
377
|
-
* @param file - File to upload
|
|
378
|
-
* @param options - Upload options (storage config, compression, etc.)
|
|
379
|
-
* @returns Observable with file manager record (id is the UUID to store)
|
|
380
|
-
*/
|
|
374
|
+
/** Upload file and register in file manager - returns file manager ID (UUID) */
|
|
381
375
|
uploadAndRegister(file: File, options?: IUploadOptionsDto & {
|
|
382
376
|
isPrivate?: boolean;
|
|
383
377
|
folderId?: string;
|
|
384
378
|
}): Observable<ISingleResponse<IFileManager>>;
|
|
379
|
+
/** Upload multiple files and register in file manager - batch upload (2 API calls total) */
|
|
380
|
+
uploadAndRegisterMultiple(files: File[], options?: IUploadOptionsDto & {
|
|
381
|
+
isPrivate?: boolean;
|
|
382
|
+
folderId?: string;
|
|
383
|
+
}): Observable<ISingleResponse<IFileManager[]>>;
|
|
384
|
+
private resolveConfigId;
|
|
385
|
+
private toCreateFileDto;
|
|
386
|
+
private buildUploadUrl;
|
|
387
|
+
private buildQueryParams;
|
|
388
|
+
private buildDeleteBody;
|
|
385
389
|
static ɵfac: i0.ɵɵFactoryDeclaration<UploadService, never>;
|
|
386
390
|
static ɵprov: i0.ɵɵInjectableDeclaration<UploadService>;
|
|
387
391
|
}
|
|
388
392
|
|
|
389
393
|
/**
|
|
390
394
|
* Storage Module Routes
|
|
391
|
-
* All
|
|
392
|
-
*
|
|
393
|
-
* All routes are protected by permission guards to prevent direct URL access.
|
|
395
|
+
* All routes protected by permission guards
|
|
394
396
|
*/
|
|
395
397
|
declare const STORAGE_ROUTES: Routes;
|
|
396
398
|
|
|
397
|
-
interface ITab {
|
|
398
|
-
id: string;
|
|
399
|
-
label: string;
|
|
400
|
-
icon: string;
|
|
401
|
-
route: string;
|
|
402
|
-
}
|
|
403
399
|
/**
|
|
404
400
|
* Storage Container Component
|
|
405
401
|
*
|
|
406
402
|
* Main container for Storage module with tab navigation
|
|
407
403
|
* Routes: Files | Folders | Configurations
|
|
404
|
+
* Tabs are filtered based on user permissions
|
|
408
405
|
*/
|
|
409
406
|
declare class StorageContainerComponent {
|
|
410
|
-
|
|
411
|
-
readonly
|
|
407
|
+
private readonly permissionValidator;
|
|
408
|
+
private readonly translateService;
|
|
409
|
+
/** All available tabs with required permissions */
|
|
410
|
+
private readonly allTabs;
|
|
411
|
+
/** Visible tabs based on user permissions */
|
|
412
|
+
readonly visibleTabs: i0.Signal<RouterTabItem[]>;
|
|
412
413
|
static ɵfac: i0.ɵɵFactoryDeclaration<StorageContainerComponent, never>;
|
|
413
414
|
static ɵcmp: i0.ɵɵComponentDeclaration<StorageContainerComponent, "lib-storage-container", never, {}, {}, never, never, true, never>;
|
|
414
415
|
}
|
|
415
416
|
|
|
416
|
-
export { FileLocationEnum, FileManagerApiService, FolderApiService, ImageFormat,
|
|
417
|
-
export type { IAwsS3Config, IAzureBlobConfig, ICreateFileManagerDto, ICreateFolderDto, ICreateStorageConfigDto, IFileManager, IFilesResponseDto, IFolder, IGetFilesRequestDto, ILocalStorageConfig, ISftpConfig, IStorageConfig, IUpdateFileManagerDto, IUpdateFolderDto, IUpdateStorageConfigDto, IUploadOptionsDto, IUploadedFileInfo };
|
|
417
|
+
export { BaseStorageListPage, BaseStoragePage, FILE_SIZE_UNIT_KEYS, FileLocationEnum, FileManagerApiService, FileProviderAdapter, FolderApiService, ImageFormat, PROVIDER_LABEL_KEYS, STORAGE_MESSAGES, STORAGE_PROVIDER_OPTIONS, STORAGE_ROUTES, StorageConfigApiService, StorageContainerComponent, UploadService, formatFileSize, formatFileSizeWithKey, getFileIcon, getProviderIcon, getProviderLabelKey, getProviderSeverity, provideStorageProviders };
|
|
418
|
+
export type { IAwsS3Config, IAzureBlobConfig, ICreateFileManagerDto, ICreateFolderDto, ICreateStorageConfigDto, IFileManager, IFilesResponseDto, IFolder, IGetFilesRequestDto, ILocalStorageConfig, ISftpConfig, IStorageConfig, IUpdateFileManagerDto, IUpdateFolderDto, IUpdateStorageConfigDto, IUploadOptionsDto, IUploadedFileInfo, StorageProviderOption };
|