@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
|
+
"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
|
-
*
|
|
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 {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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 -
|
|
34
|
-
* Delegates to specialized services following
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
107
|
+
return FileManagement.copyFile(sourceUri, destinationUri);
|
|
147
108
|
}
|
|
148
109
|
|
|
149
|
-
static async copyToDocuments(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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 {
|
|
8
|
+
import type { ModuleCollection } from '../../domain/entities/ModuleContext';
|
|
16
9
|
|
|
17
10
|
/**
|
|
18
|
-
*
|
|
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(
|
|
31
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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(
|
|
94
|
-
return
|
|
95
|
-
key
|
|
96
|
-
.replace('./', '')
|
|
97
|
-
.replace(/\.(json|js|ts|tsx)$/, '')
|
|
98
|
-
);
|
|
27
|
+
export function getModuleNames(): string[] {
|
|
28
|
+
return [];
|
|
99
29
|
}
|