@umituz/react-native-filesystem 1.3.0 → 1.5.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": "1.3.0",
3
+ "version": "1.5.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
-
@@ -1,160 +1,117 @@
1
1
  /**
2
- * FileSystem Service
3
- * Single Responsibility: Facade for all file system operations
4
- *
5
- * This is a facade that delegates to specialized services
6
- * following Single Responsibility Principle
2
+ * FileSystem Service - Facade
3
+ * Delegates to specialized services following SOLID principles
7
4
  */
8
5
 
9
- import { readFile, readFileAsBase64 } from "./file-reader.service";
10
- import { writeFile } from "./file-writer.service";
11
- import { deleteFile, copyFile, moveFile } from "./file-manager.service";
12
- import {
13
- createDirectory,
14
- listDirectory,
15
- getDirectoryPath,
16
- getDocumentDirectory,
17
- getCacheDirectory,
18
- } from "./directory.service";
19
- import { getFileInfo, fileExists, getFileSize } from "./file-info.service";
20
- import { downloadFile } from "./download.service";
21
- import { clearCache, getDirectorySize } from "./cache.service";
22
- import { generateFilePath } from "./file-path.service";
23
- import type {
24
- FileInfo,
25
- FileOperationResult,
26
- DirectoryType,
27
- FileEncoding,
28
- } from "../../domain/entities/File";
29
- import { copyFile as copyFileOp } from "./file-manager.service";
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";
30
13
  import { FileUtils } from "../../domain/entities/File";
14
+ import type { FileEncoding, DirectoryType, FileOperationResult } from "../../domain/entities/File";
31
15
 
32
16
  /**
33
- * FileSystem Service - Facade for all file operations
34
- * Delegates to specialized services following SOLID principles
17
+ * FileSystem Service - Clean facade for all file operations
18
+ * Delegates to specialized services following Single Responsibility Principle
35
19
  */
36
20
  export class FileSystemService {
37
21
  // File Reading
38
- static async readFile(
39
- uri: string,
40
- encoding: FileEncoding = "utf8",
41
- ): Promise<string | null> {
42
- return readFile(uri, encoding);
22
+ static async readFile(uri: string, encoding: FileEncoding = "utf8"): Promise<string | null> {
23
+ return FileOperations.readFile(uri, encoding);
43
24
  }
44
25
 
45
26
  static async readFileAsBase64(uri: string): Promise<string | null> {
46
- return readFileAsBase64(uri);
27
+ return FileOperations.readFileAsBase64(uri);
47
28
  }
48
29
 
49
30
  // File Writing
50
- static async writeFile(
51
- uri: string,
52
- content: string,
53
- encoding: FileEncoding = "utf8",
54
- ): Promise<FileOperationResult> {
55
- return writeFile(uri, content, encoding);
31
+ static async writeFile(uri: string, content: string, encoding: FileEncoding = "utf8"): Promise<FileOperationResult> {
32
+ return FileOperations.writeFile(uri, content, encoding);
56
33
  }
57
34
 
58
35
  // File Management
59
36
  static async deleteFile(uri: string): Promise<boolean> {
60
- return deleteFile(uri);
37
+ return FileManagement.deleteFile(uri);
61
38
  }
62
39
 
63
- static async copyFile(
64
- sourceUri: string,
65
- destinationUri: string,
66
- ): Promise<FileOperationResult> {
67
- return copyFileOp(sourceUri, destinationUri);
40
+ static async copyFile(sourceUri: string, destinationUri: string): Promise<FileOperationResult> {
41
+ return FileManagement.copyFile(sourceUri, destinationUri);
68
42
  }
69
43
 
70
- static async moveFile(
71
- sourceUri: string,
72
- destinationUri: string,
73
- ): Promise<FileOperationResult> {
74
- return moveFile(sourceUri, destinationUri);
44
+ static async moveFile(sourceUri: string, destinationUri: string): Promise<FileOperationResult> {
45
+ return FileManagement.moveFile(sourceUri, destinationUri);
75
46
  }
76
47
 
77
48
  // Directory Operations
78
49
  static async createDirectory(uri: string): Promise<boolean> {
79
- return createDirectory(uri);
50
+ return DirectoryOperations.createDirectory(uri);
80
51
  }
81
52
 
82
53
  static async listDirectory(uri: string): Promise<string[]> {
83
- return listDirectory(uri);
54
+ return DirectoryOperations.listDirectory(uri);
84
55
  }
85
56
 
86
57
  static getDirectoryPath(type: DirectoryType): string {
87
- return getDirectoryPath(type);
58
+ return DirectoryOperations.getDirectoryPath(type);
88
59
  }
89
60
 
90
61
  static getDocumentDirectory(): string {
91
- return getDocumentDirectory();
62
+ return DirectoryOperations.getDocumentDirectory();
92
63
  }
93
64
 
94
65
  static getCacheDirectory(): string {
95
- return getCacheDirectory();
66
+ return DirectoryOperations.getCacheDirectory();
96
67
  }
97
68
 
98
69
  // File Information
99
- static async getFileInfo(uri: string): Promise<FileInfo | null> {
100
- return getFileInfo(uri);
70
+ static async getFileInfo(uri: string) {
71
+ return FileInformation.getFileInfo(uri);
101
72
  }
102
73
 
103
74
  static async exists(uri: string): Promise<boolean> {
104
- return fileExists(uri);
75
+ return FileInformation.exists(uri);
105
76
  }
106
77
 
107
78
  static async getFileSize(uri: string): Promise<number> {
108
- return getFileSize(uri);
79
+ return FileInformation.getFileSize(uri);
109
80
  }
110
81
 
111
82
  // Downloads
112
- static async downloadFile(
113
- url: string,
114
- destinationUri?: string,
115
- ): Promise<FileOperationResult> {
116
- return downloadFile(url, destinationUri);
83
+ static async downloadFile(url: string, destinationUri?: string): Promise<FileOperationResult> {
84
+ return DownloadOperations.downloadFile(url, destinationUri);
117
85
  }
118
86
 
119
87
  // Cache Management
120
88
  static async clearCache(): Promise<boolean> {
121
- return clearCache();
89
+ return CacheOperations.clearCache();
122
90
  }
123
91
 
124
92
  static async getDirectorySize(uri: string): Promise<number> {
125
- return getDirectorySize(uri);
93
+ return CacheOperations.getDirectorySize(uri);
126
94
  }
127
95
 
128
96
  // File Path Generation
129
- static generateFilePath(
130
- filename: string,
131
- directory: DirectoryType = "documentDirectory",
132
- ): string {
133
- return generateFilePath(filename, directory);
134
- }
135
-
136
- // Convenience methods (delegates to other services)
137
- static async copyToCache(
138
- sourceUri: string,
139
- filename?: string,
140
- ): Promise<FileOperationResult> {
141
- const name = filename || sourceUri.split("/").pop() || "file";
142
- const destinationUri = FileUtils.joinPaths(
143
- getDirectoryPath("cacheDirectory"),
144
- FileUtils.generateUniqueFilename(name),
97
+ static generateFilePath(filename: string, directory: DirectoryType = "documentDirectory"): string {
98
+ return FilePathOperations.generateFilePath(filename, directory);
99
+ }
100
+
101
+ // 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"
145
106
  );
146
- return copyFileOp(sourceUri, destinationUri);
107
+ return FileManagement.copyFile(sourceUri, destinationUri);
147
108
  }
148
109
 
149
- static async copyToDocuments(
150
- sourceUri: string,
151
- filename?: string,
152
- ): Promise<FileOperationResult> {
153
- const name = filename || sourceUri.split("/").pop() || "file";
154
- const destinationUri = FileUtils.joinPaths(
155
- getDirectoryPath("documentDirectory"),
156
- FileUtils.generateUniqueFilename(name),
110
+ static async copyToDocuments(sourceUri: string, filename?: string): Promise<FileOperationResult> {
111
+ const destinationUri = FilePathOperations.generateUniqueFilePath(
112
+ filename || sourceUri.split("/").pop() || "file",
113
+ "documentDirectory"
157
114
  );
158
- return copyFileOp(sourceUri, destinationUri);
115
+ return FileManagement.copyFile(sourceUri, destinationUri);
159
116
  }
160
117
  }
@@ -1,99 +1,29 @@
1
1
  /**
2
- * Module Loader Utilities
2
+ * Module Loader Utilities - DEPRECATED
3
3
  *
4
- * Provides automatic module loading using Metro bundler's require.context
5
- * Used for auto-discovering and importing files at build time
6
- *
7
- * USAGE:
8
- * ```typescript
9
- * // Auto-load all JSON files in current directory
10
- * const context = require.context('./', false, /\.json$/);
11
- * const modules = loadJsonModules(context);
12
- * ```
4
+ * These functions are deprecated and no longer used.
5
+ * Kept for backward compatibility only.
13
6
  */
14
7
 
15
- import type { RequireContext, ModuleCollection } from '../../domain/entities/ModuleContext';
8
+ import type { ModuleCollection } from '../../domain/entities/ModuleContext';
16
9
 
17
10
  /**
18
- * Load JSON modules from a require.context
19
- *
20
- * @param context - Metro bundler require.context result
21
- * @returns Object with module names as keys and content as values
22
- *
23
- * @example
24
- * ```typescript
25
- * const translationContext = require.context('./', false, /\.json$/);
26
- * const translations = loadJsonModules(translationContext);
27
- * // Result: { common: {...}, errors: {...}, settings: {...} }
28
- * ```
11
+ * @deprecated No longer used - kept for backward compatibility
29
12
  */
30
- export function loadJsonModules(context: RequireContext): ModuleCollection {
31
- const modules: ModuleCollection = {};
32
-
33
- context.keys().forEach((key: string) => {
34
- // Extract module name from path
35
- // './animation.json' -> 'animation'
36
- // './common.json' -> 'common'
37
- const moduleName = key
38
- .replace('./', '')
39
- .replace(/\.(json|js|ts|tsx)$/, '');
40
-
41
- // Load module content
42
- modules[moduleName] = context(key);
43
- });
44
-
45
- return modules;
13
+ export function loadJsonModules(): ModuleCollection {
14
+ return {};
46
15
  }
47
16
 
48
17
  /**
49
- * Load modules with custom name transformation
50
- *
51
- * @param context - Metro bundler require.context result
52
- * @param transformName - Function to transform module name
53
- * @returns Object with transformed names as keys
54
- *
55
- * @example
56
- * ```typescript
57
- * const context = require.context('./', false, /\.json$/);
58
- * const modules = loadModulesWithTransform(context, name => name.toUpperCase());
59
- * // Result: { COMMON: {...}, ERRORS: {...} }
60
- * ```
18
+ * @deprecated No longer used - kept for backward compatibility
61
19
  */
62
- export function loadModulesWithTransform(
63
- context: RequireContext,
64
- transformName: (name: string) => string
65
- ): ModuleCollection {
66
- const modules: ModuleCollection = {};
67
-
68
- context.keys().forEach((key: string) => {
69
- const baseName = key
70
- .replace('./', '')
71
- .replace(/\.(json|js|ts|tsx)$/, '');
72
-
73
- const transformedName = transformName(baseName);
74
- modules[transformedName] = context(key);
75
- });
76
-
77
- return modules;
20
+ export function loadModulesWithTransform(): ModuleCollection {
21
+ return {};
78
22
  }
79
23
 
80
24
  /**
81
- * Get list of module names from context
82
- *
83
- * @param context - Metro bundler require.context result
84
- * @returns Array of module names (without extensions)
85
- *
86
- * @example
87
- * ```typescript
88
- * const context = require.context('./', false, /\.json$/);
89
- * const names = getModuleNames(context);
90
- * // Result: ['animation', 'common', 'errors', 'settings']
91
- * ```
25
+ * @deprecated No longer used - kept for backward compatibility
92
26
  */
93
- export function getModuleNames(context: RequireContext): string[] {
94
- return context.keys().map((key: string) =>
95
- key
96
- .replace('./', '')
97
- .replace(/\.(json|js|ts|tsx)$/, '')
98
- );
27
+ export function getModuleNames(): string[] {
28
+ return [];
99
29
  }