@umituz/react-native-filesystem 2.0.0 → 2.1.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-filesystem",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Domain-Driven Design filesystem utilities for React Native apps with build-time module loading and runtime file operations",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -50,4 +50,3 @@
50
50
  "LICENSE"
51
51
  ]
52
52
  }
53
-
package/src/index.ts CHANGED
@@ -174,12 +174,5 @@ export {
174
174
  FileUtils,
175
175
  } from './domain/entities/File';
176
176
 
177
- // Infrastructure Layer - FileSystem Service & Specialized Services
177
+ // Infrastructure Layer - FileSystem Service
178
178
  export { FileSystemService } from './infrastructure/services/FileSystemService';
179
- export { FileOperations } from './infrastructure/services/FileOperations';
180
- export { FileManagement } from './infrastructure/services/FileManagement';
181
- export { DirectoryOperations } from './infrastructure/services/DirectoryOperations';
182
- export { FileInformation } from './infrastructure/services/FileInformation';
183
- export { DownloadOperations } from './infrastructure/services/DownloadOperations';
184
- export { CacheOperations } from './infrastructure/services/CacheOperations';
185
- export { FilePathOperations } from './infrastructure/services/FilePathOperations';
@@ -3,15 +3,26 @@
3
3
  * Delegates to specialized services following SOLID principles
4
4
  */
5
5
 
6
- import { FileOperations } from "./FileOperations";
7
- import { FileManagement } from "./FileManagement";
8
- import { DirectoryOperations } from "./DirectoryOperations";
9
- import { FileInformation } from "./FileInformation";
10
- import { DownloadOperations } from "./DownloadOperations";
11
- import { CacheOperations } from "./CacheOperations";
12
- import { FilePathOperations } from "./FilePathOperations";
6
+ import { readFile, readFileAsBase64 } from "./file-reader.service";
7
+ import { writeFile } from "./file-writer.service";
8
+ import { deleteFile, copyFile, moveFile } from "./file-manager.service";
9
+ import {
10
+ createDirectory,
11
+ listDirectory,
12
+ getDirectoryPath,
13
+ getDocumentDirectory,
14
+ getCacheDirectory,
15
+ } from "./directory.service";
16
+ import { getFileInfo, fileExists, getFileSize } from "./file-info.service";
17
+ import { downloadFile } from "./download.service";
18
+ import { clearCache, getDirectorySize } from "./cache.service";
19
+ import { generateFilePath } from "./file-path.service";
13
20
  import { FileUtils } from "../../domain/entities/File";
14
- import type { FileEncoding, DirectoryType, FileOperationResult } from "../../domain/entities/File";
21
+ import type {
22
+ FileEncoding,
23
+ DirectoryType,
24
+ FileOperationResult,
25
+ } from "../../domain/entities/File";
15
26
 
16
27
  /**
17
28
  * FileSystem Service - Clean facade for all file operations
@@ -19,99 +30,126 @@ import type { FileEncoding, DirectoryType, FileOperationResult } from "../../dom
19
30
  */
20
31
  export class FileSystemService {
21
32
  // File Reading
22
- static async readFile(uri: string, encoding: FileEncoding = "utf8"): Promise<string | null> {
23
- return FileOperations.readFile(uri, encoding);
33
+ static async readFile(
34
+ uri: string,
35
+ encoding: FileEncoding = "utf8"
36
+ ): Promise<string | null> {
37
+ return readFile(uri, encoding);
24
38
  }
25
39
 
26
40
  static async readFileAsBase64(uri: string): Promise<string | null> {
27
- return FileOperations.readFileAsBase64(uri);
41
+ return readFileAsBase64(uri);
28
42
  }
29
43
 
30
44
  // File Writing
31
- static async writeFile(uri: string, content: string, encoding: FileEncoding = "utf8"): Promise<FileOperationResult> {
32
- return FileOperations.writeFile(uri, content, encoding);
45
+ static async writeFile(
46
+ uri: string,
47
+ content: string,
48
+ encoding: FileEncoding = "utf8"
49
+ ): Promise<FileOperationResult> {
50
+ return writeFile(uri, content, encoding);
33
51
  }
34
52
 
35
53
  // File Management
36
54
  static async deleteFile(uri: string): Promise<boolean> {
37
- return FileManagement.deleteFile(uri);
55
+ return deleteFile(uri);
38
56
  }
39
57
 
40
- static async copyFile(sourceUri: string, destinationUri: string): Promise<FileOperationResult> {
41
- return FileManagement.copyFile(sourceUri, destinationUri);
58
+ static async copyFile(
59
+ sourceUri: string,
60
+ destinationUri: string
61
+ ): Promise<FileOperationResult> {
62
+ return copyFile(sourceUri, destinationUri);
42
63
  }
43
64
 
44
- static async moveFile(sourceUri: string, destinationUri: string): Promise<FileOperationResult> {
45
- return FileManagement.moveFile(sourceUri, destinationUri);
65
+ static async moveFile(
66
+ sourceUri: string,
67
+ destinationUri: string
68
+ ): Promise<FileOperationResult> {
69
+ return moveFile(sourceUri, destinationUri);
46
70
  }
47
71
 
48
72
  // Directory Operations
49
73
  static async createDirectory(uri: string): Promise<boolean> {
50
- return DirectoryOperations.createDirectory(uri);
74
+ return createDirectory(uri);
51
75
  }
52
76
 
53
77
  static async listDirectory(uri: string): Promise<string[]> {
54
- return DirectoryOperations.listDirectory(uri);
78
+ return listDirectory(uri);
55
79
  }
56
80
 
57
81
  static getDirectoryPath(type: DirectoryType): string {
58
- return DirectoryOperations.getDirectoryPath(type);
82
+ return getDirectoryPath(type);
59
83
  }
60
84
 
61
85
  static getDocumentDirectory(): string {
62
- return DirectoryOperations.getDocumentDirectory();
86
+ return getDocumentDirectory();
63
87
  }
64
88
 
65
89
  static getCacheDirectory(): string {
66
- return DirectoryOperations.getCacheDirectory();
90
+ return getCacheDirectory();
67
91
  }
68
92
 
69
93
  // File Information
70
94
  static async getFileInfo(uri: string) {
71
- return FileInformation.getFileInfo(uri);
95
+ return getFileInfo(uri);
72
96
  }
73
97
 
74
98
  static async exists(uri: string): Promise<boolean> {
75
- return FileInformation.exists(uri);
99
+ return fileExists(uri);
76
100
  }
77
101
 
78
102
  static async getFileSize(uri: string): Promise<number> {
79
- return FileInformation.getFileSize(uri);
103
+ return getFileSize(uri);
80
104
  }
81
105
 
82
106
  // Downloads
83
- static async downloadFile(url: string, destinationUri?: string): Promise<FileOperationResult> {
84
- return DownloadOperations.downloadFile(url, destinationUri);
107
+ static async downloadFile(
108
+ url: string,
109
+ destinationUri?: string
110
+ ): Promise<FileOperationResult> {
111
+ return downloadFile(url, destinationUri);
85
112
  }
86
113
 
87
114
  // Cache Management
88
115
  static async clearCache(): Promise<boolean> {
89
- return CacheOperations.clearCache();
116
+ return clearCache();
90
117
  }
91
118
 
92
119
  static async getDirectorySize(uri: string): Promise<number> {
93
- return CacheOperations.getDirectorySize(uri);
120
+ return getDirectorySize(uri);
94
121
  }
95
122
 
96
123
  // File Path Generation
97
- static generateFilePath(filename: string, directory: DirectoryType = "documentDirectory"): string {
98
- return FilePathOperations.generateFilePath(filename, directory);
124
+ static generateFilePath(
125
+ filename: string,
126
+ directory: DirectoryType = "documentDirectory"
127
+ ): string {
128
+ return generateFilePath(filename, directory);
99
129
  }
100
130
 
101
131
  // Convenience methods
102
- static async copyToCache(sourceUri: string, filename?: string): Promise<FileOperationResult> {
103
- const destinationUri = FilePathOperations.generateUniqueFilePath(
104
- filename || sourceUri.split("/").pop() || "file",
105
- "cacheDirectory"
132
+ static async copyToCache(
133
+ sourceUri: string,
134
+ filename?: string
135
+ ): Promise<FileOperationResult> {
136
+ const cacheDir = getCacheDirectory();
137
+ const uniqueFilename = FileUtils.generateUniqueFilename(
138
+ filename || sourceUri.split("/").pop() || "file"
106
139
  );
107
- return FileManagement.copyFile(sourceUri, destinationUri);
140
+ const destinationUri = FileUtils.joinPaths(cacheDir, uniqueFilename);
141
+ return copyFile(sourceUri, destinationUri);
108
142
  }
109
143
 
110
- static async copyToDocuments(sourceUri: string, filename?: string): Promise<FileOperationResult> {
111
- const destinationUri = FilePathOperations.generateUniqueFilePath(
112
- filename || sourceUri.split("/").pop() || "file",
113
- "documentDirectory"
144
+ static async copyToDocuments(
145
+ sourceUri: string,
146
+ filename?: string
147
+ ): Promise<FileOperationResult> {
148
+ const docDir = getDocumentDirectory();
149
+ const uniqueFilename = FileUtils.generateUniqueFilename(
150
+ filename || sourceUri.split("/").pop() || "file"
114
151
  );
115
- return FileManagement.copyFile(sourceUri, destinationUri);
152
+ const destinationUri = FileUtils.joinPaths(docDir, uniqueFilename);
153
+ return copyFile(sourceUri, destinationUri);
116
154
  }
117
155
  }
@@ -1,52 +1,29 @@
1
1
  /**
2
- * Module Loader Utilities
2
+ * Module Loader Utilities - DEPRECATED
3
3
  *
4
- * Provides explicit module loading for maximum compatibility
5
- * No longer uses require.context to avoid iOS Metro bundler issues
4
+ * These functions are deprecated and no longer used.
5
+ * Kept for backward compatibility only.
6
6
  */
7
7
 
8
8
  import type { ModuleCollection } from '../../domain/entities/ModuleContext';
9
9
 
10
10
  /**
11
- * Load JSON modules with explicit imports
12
- *
13
- * This function is kept for backward compatibility but now uses explicit imports
14
- * instead of require.context for maximum platform compatibility.
15
- *
16
- * @deprecated Use explicit imports instead of require.context pattern
17
- * @param context - Not used anymore, kept for API compatibility
18
- * @returns Empty object (backward compatibility)
11
+ * @deprecated No longer used - kept for backward compatibility
19
12
  */
20
- export function loadJsonModules(context?: any): ModuleCollection {
21
- // Return empty object for backward compatibility
22
- // Projects should migrate to explicit imports
13
+ export function loadJsonModules(): ModuleCollection {
23
14
  return {};
24
15
  }
25
16
 
26
17
  /**
27
- * Load modules with custom name transformation
28
- *
29
- * @deprecated Use explicit imports instead
30
- * @param context - Not used anymore
31
- * @param transformName - Not used anymore
32
- * @returns Empty object (backward compatibility)
18
+ * @deprecated No longer used - kept for backward compatibility
33
19
  */
34
- export function loadModulesWithTransform(
35
- context?: any,
36
- transformName?: (name: string) => string
37
- ): ModuleCollection {
38
- // Return empty object for backward compatibility
20
+ export function loadModulesWithTransform(): ModuleCollection {
39
21
  return {};
40
22
  }
41
23
 
42
24
  /**
43
- * Get list of module names from context
44
- *
45
- * @deprecated Use explicit imports instead
46
- * @param context - Not used anymore
47
- * @returns Empty array (backward compatibility)
25
+ * @deprecated No longer used - kept for backward compatibility
48
26
  */
49
- export function getModuleNames(context?: any): string[] {
50
- // Return empty array for backward compatibility
27
+ export function getModuleNames(): string[] {
51
28
  return [];
52
29
  }
@@ -1,16 +0,0 @@
1
- /**
2
- * Cache Operations Service
3
- * Handles cache-related operations
4
- */
5
-
6
- import { clearCache, getDirectorySize } from "./cache.service";
7
-
8
- export class CacheOperations {
9
- static async clearCache(): Promise<boolean> {
10
- return clearCache();
11
- }
12
-
13
- static async getDirectorySize(uri: string): Promise<number> {
14
- return getDirectorySize(uri);
15
- }
16
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * Directory Operations Service
3
- * Handles directory-related operations
4
- */
5
-
6
- import {
7
- createDirectory,
8
- listDirectory,
9
- getDirectoryPath,
10
- getDocumentDirectory,
11
- getCacheDirectory,
12
- } from "./directory.service";
13
- import type { DirectoryType } from "../../domain/entities/File";
14
-
15
- export class DirectoryOperations {
16
- static async createDirectory(uri: string): Promise<boolean> {
17
- return createDirectory(uri);
18
- }
19
-
20
- static async listDirectory(uri: string): Promise<string[]> {
21
- return listDirectory(uri);
22
- }
23
-
24
- static getDirectoryPath(type: DirectoryType): string {
25
- return getDirectoryPath(type);
26
- }
27
-
28
- static getDocumentDirectory(): string {
29
- return getDocumentDirectory();
30
- }
31
-
32
- static getCacheDirectory(): string {
33
- return getCacheDirectory();
34
- }
35
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * Download Operations Service
3
- * Handles file download operations
4
- */
5
-
6
- import { downloadFile } from "./download.service";
7
- import type { FileOperationResult } from "../../domain/entities/File";
8
-
9
- export class DownloadOperations {
10
- static async downloadFile(
11
- url: string,
12
- destinationUri?: string,
13
- ): Promise<FileOperationResult> {
14
- return downloadFile(url, destinationUri);
15
- }
16
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * File Information Service
3
- * Handles file information queries
4
- */
5
-
6
- import { getFileInfo, fileExists, getFileSize } from "./file-info.service";
7
- import type { FileInfo } from "../../domain/entities/File";
8
-
9
- export class FileInformation {
10
- static async getFileInfo(uri: string): Promise<FileInfo | null> {
11
- return getFileInfo(uri);
12
- }
13
-
14
- static async exists(uri: string): Promise<boolean> {
15
- return fileExists(uri);
16
- }
17
-
18
- static async getFileSize(uri: string): Promise<number> {
19
- return getFileSize(uri);
20
- }
21
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * File Management Service
3
- * Handles file operations like copy, move, delete
4
- */
5
-
6
- import { deleteFile, copyFile, moveFile } from "./file-manager.service";
7
- import type { FileOperationResult } from "../../domain/entities/File";
8
-
9
- export class FileManagement {
10
- static async deleteFile(uri: string): Promise<boolean> {
11
- return deleteFile(uri);
12
- }
13
-
14
- static async copyFile(
15
- sourceUri: string,
16
- destinationUri: string,
17
- ): Promise<FileOperationResult> {
18
- return copyFile(sourceUri, destinationUri);
19
- }
20
-
21
- static async moveFile(
22
- sourceUri: string,
23
- destinationUri: string,
24
- ): Promise<FileOperationResult> {
25
- return moveFile(sourceUri, destinationUri);
26
- }
27
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * File Operations Service
3
- * Handles basic file read/write operations
4
- */
5
-
6
- import { readFile, readFileAsBase64 } from "./file-reader.service";
7
- import { writeFile } from "./file-writer.service";
8
- import type { FileEncoding, FileOperationResult } from "../../domain/entities/File";
9
-
10
- export class FileOperations {
11
- static async readFile(
12
- uri: string,
13
- encoding: FileEncoding = "utf8",
14
- ): Promise<string | null> {
15
- return readFile(uri, encoding);
16
- }
17
-
18
- static async readFileAsBase64(uri: string): Promise<string | null> {
19
- return readFileAsBase64(uri);
20
- }
21
-
22
- static async writeFile(
23
- uri: string,
24
- content: string,
25
- encoding: FileEncoding = "utf8",
26
- ): Promise<FileOperationResult> {
27
- return writeFile(uri, content, encoding);
28
- }
29
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * File Path Operations Service
3
- * Handles file path generation and utilities
4
- */
5
-
6
- import { generateFilePath } from "./file-path.service";
7
- import { getDirectoryPath } from "./directory.service";
8
- import { FileUtils } from "../../domain/entities/File";
9
- import type { DirectoryType } from "../../domain/entities/File";
10
-
11
- export class FilePathOperations {
12
- static generateFilePath(
13
- filename: string,
14
- directory: DirectoryType = "documentDirectory",
15
- ): string {
16
- return generateFilePath(filename, directory);
17
- }
18
-
19
- static generateUniqueFilePath(
20
- filename: string,
21
- directory: DirectoryType = "documentDirectory",
22
- ): string {
23
- const uniqueName = FileUtils.generateUniqueFilename(filename);
24
- return FileUtils.joinPaths(getDirectoryPath(directory), uniqueName);
25
- }
26
- }