@umituz/react-native-storage 1.0.0 → 1.1.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.
Files changed (36) hide show
  1. package/package.json +3 -8
  2. package/src/application/ports/IStorageRepository.ts +12 -0
  3. package/src/domain/value-objects/StorageKey.ts +3 -0
  4. package/src/infrastructure/repositories/AsyncStorageRepository.ts +16 -0
  5. package/lib/application/ports/IStorageRepository.d.ts +0 -48
  6. package/lib/application/ports/IStorageRepository.d.ts.map +0 -1
  7. package/lib/application/ports/IStorageRepository.js +0 -10
  8. package/lib/application/ports/IStorageRepository.js.map +0 -1
  9. package/lib/domain/entities/StorageResult.d.ts +0 -38
  10. package/lib/domain/entities/StorageResult.d.ts.map +0 -1
  11. package/lib/domain/entities/StorageResult.js +0 -42
  12. package/lib/domain/entities/StorageResult.js.map +0 -1
  13. package/lib/domain/errors/StorageError.d.ts +0 -51
  14. package/lib/domain/errors/StorageError.d.ts.map +0 -1
  15. package/lib/domain/errors/StorageError.js +0 -69
  16. package/lib/domain/errors/StorageError.js.map +0 -1
  17. package/lib/domain/value-objects/StorageKey.d.ts +0 -43
  18. package/lib/domain/value-objects/StorageKey.d.ts.map +0 -1
  19. package/lib/domain/value-objects/StorageKey.js +0 -46
  20. package/lib/domain/value-objects/StorageKey.js.map +0 -1
  21. package/lib/index.d.ts +0 -27
  22. package/lib/index.d.ts.map +0 -1
  23. package/lib/index.js +0 -33
  24. package/lib/index.js.map +0 -1
  25. package/lib/infrastructure/repositories/AsyncStorageRepository.d.ts +0 -50
  26. package/lib/infrastructure/repositories/AsyncStorageRepository.d.ts.map +0 -1
  27. package/lib/infrastructure/repositories/AsyncStorageRepository.js +0 -137
  28. package/lib/infrastructure/repositories/AsyncStorageRepository.js.map +0 -1
  29. package/lib/presentation/hooks/useStorage.d.ts +0 -23
  30. package/lib/presentation/hooks/useStorage.d.ts.map +0 -1
  31. package/lib/presentation/hooks/useStorage.js +0 -87
  32. package/lib/presentation/hooks/useStorage.js.map +0 -1
  33. package/lib/presentation/hooks/useStorageState.d.ts +0 -21
  34. package/lib/presentation/hooks/useStorageState.d.ts.map +0 -1
  35. package/lib/presentation/hooks/useStorageState.js +0 -43
  36. package/lib/presentation/hooks/useStorageState.js.map +0 -1
package/package.json CHANGED
@@ -1,16 +1,12 @@
1
1
  {
2
2
  "name": "@umituz/react-native-storage",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "Domain-Driven Design storage system for React Native apps with type-safe AsyncStorage operations",
5
- "main": "./lib/index.js",
6
- "types": "./lib/index.d.ts",
5
+ "main": "./src/index.ts",
6
+ "types": "./src/index.ts",
7
7
  "scripts": {
8
- "build": "tsc",
9
8
  "typecheck": "tsc --noEmit",
10
9
  "lint": "tsc --noEmit",
11
- "clean": "rm -rf lib",
12
- "prebuild": "npm run clean",
13
- "prepublishOnly": "npm run build",
14
10
  "version:patch": "npm version patch -m 'chore: release v%s'",
15
11
  "version:minor": "npm version minor -m 'chore: release v%s'",
16
12
  "version:major": "npm version major -m 'chore: release v%s'"
@@ -46,7 +42,6 @@
46
42
  "access": "public"
47
43
  },
48
44
  "files": [
49
- "lib",
50
45
  "src",
51
46
  "README.md",
52
47
  "LICENSE"
@@ -53,4 +53,16 @@ export interface IStorageRepository {
53
53
  * Get multiple items at once
54
54
  */
55
55
  getMultiple(keys: string[]): Promise<StorageResult<Record<string, string | null>>>;
56
+
57
+ /**
58
+ * Get object from storage (alias for getItem for backward compatibility)
59
+ * @deprecated Use getItem instead
60
+ */
61
+ getObject<T>(key: string, defaultValue: T): Promise<StorageResult<T>>;
62
+
63
+ /**
64
+ * Set object in storage (alias for setItem for backward compatibility)
65
+ * @deprecated Use setItem instead
66
+ */
67
+ setObject<T>(key: string, value: T): Promise<StorageResult<T>>;
56
68
  }
@@ -15,6 +15,9 @@ export enum StorageKey {
15
15
  // Onboarding
16
16
  ONBOARDING_COMPLETED = '@onboarding_completed',
17
17
 
18
+ // Auth
19
+ AUTH_SHOW_REGISTER = '@auth_show_register',
20
+
18
21
  // Localization
19
22
  LANGUAGE = '@app_language',
20
23
 
@@ -143,6 +143,22 @@ export class AsyncStorageRepository implements IStorageRepository {
143
143
  return failure(new StorageReadError('MULTIPLE_KEYS', error));
144
144
  }
145
145
  }
146
+
147
+ /**
148
+ * Get object from storage (alias for getItem for backward compatibility)
149
+ * @deprecated Use getItem instead
150
+ */
151
+ async getObject<T>(key: string, defaultValue: T): Promise<StorageResult<T>> {
152
+ return this.getItem(key, defaultValue);
153
+ }
154
+
155
+ /**
156
+ * Set object in storage (alias for setItem for backward compatibility)
157
+ * @deprecated Use setItem instead
158
+ */
159
+ async setObject<T>(key: string, value: T): Promise<StorageResult<T>> {
160
+ return this.setItem(key, value);
161
+ }
146
162
  }
147
163
 
148
164
  /**
@@ -1,48 +0,0 @@
1
- /**
2
- * Storage Repository Interface (Port)
3
- *
4
- * Domain-Driven Design: Application port for storage operations
5
- * Infrastructure layer implements this interface
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- import type { StorageResult } from '../../domain/entities/StorageResult';
10
- /**
11
- * Storage Repository Interface
12
- * Defines contract for storage operations
13
- */
14
- export interface IStorageRepository {
15
- /**
16
- * Get item from storage with JSON parsing
17
- */
18
- getItem<T>(key: string, defaultValue: T): Promise<StorageResult<T>>;
19
- /**
20
- * Set item in storage with JSON serialization
21
- */
22
- setItem<T>(key: string, value: T): Promise<StorageResult<T>>;
23
- /**
24
- * Get string value (no JSON parsing)
25
- */
26
- getString(key: string, defaultValue: string): Promise<StorageResult<string>>;
27
- /**
28
- * Set string value (no JSON serialization)
29
- */
30
- setString(key: string, value: string): Promise<StorageResult<string>>;
31
- /**
32
- * Remove item from storage
33
- */
34
- removeItem(key: string): Promise<StorageResult<void>>;
35
- /**
36
- * Check if key exists in storage
37
- */
38
- hasItem(key: string): Promise<boolean>;
39
- /**
40
- * Clear all storage data
41
- */
42
- clearAll(): Promise<StorageResult<void>>;
43
- /**
44
- * Get multiple items at once
45
- */
46
- getMultiple(keys: string[]): Promise<StorageResult<Record<string, string | null>>>;
47
- }
48
- //# sourceMappingURL=IStorageRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStorageRepository.d.ts","sourceRoot":"","sources":["../../../src/application/ports/IStorageRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACpF"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Storage Repository Interface (Port)
3
- *
4
- * Domain-Driven Design: Application port for storage operations
5
- * Infrastructure layer implements this interface
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- export {};
10
- //# sourceMappingURL=IStorageRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStorageRepository.js","sourceRoot":"","sources":["../../../src/application/ports/IStorageRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Storage Result Entity
3
- *
4
- * Domain-Driven Design: Entity representing storage operation result
5
- * Functional programming pattern for error handling (Result type)
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- import type { StorageError } from '../errors/StorageError';
10
- /**
11
- * Storage Operation Result
12
- * Success/Failure pattern for type-safe error handling
13
- */
14
- export type StorageResult<T> = {
15
- success: true;
16
- data: T;
17
- } | {
18
- success: false;
19
- error: StorageError;
20
- fallback?: T;
21
- };
22
- /**
23
- * Create success result
24
- */
25
- export declare const success: <T>(data: T) => StorageResult<T>;
26
- /**
27
- * Create failure result
28
- */
29
- export declare const failure: <T>(error: StorageError, fallback?: T) => StorageResult<T>;
30
- /**
31
- * Unwrap result with default value
32
- */
33
- export declare const unwrap: <T>(result: StorageResult<T>, defaultValue: T) => T;
34
- /**
35
- * Map result data
36
- */
37
- export declare const map: <T, U>(result: StorageResult<T>, fn: (data: T) => U) => StorageResult<U>;
38
- //# sourceMappingURL=StorageResult.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageResult.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/StorageResult.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IACvB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,aAAa,CAAC,CAAC,CAGlD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,OAAO,YAAY,EAAE,WAAW,CAAC,KAAG,aAAa,CAAC,CAAC,CAI5E,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,KAAG,CAKrE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EACtB,QAAQ,aAAa,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KACjB,aAAa,CAAC,CAAC,CAKjB,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Storage Result Entity
3
- *
4
- * Domain-Driven Design: Entity representing storage operation result
5
- * Functional programming pattern for error handling (Result type)
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- /**
10
- * Create success result
11
- */
12
- export const success = (data) => ({
13
- success: true,
14
- data,
15
- });
16
- /**
17
- * Create failure result
18
- */
19
- export const failure = (error, fallback) => ({
20
- success: false,
21
- error,
22
- fallback,
23
- });
24
- /**
25
- * Unwrap result with default value
26
- */
27
- export const unwrap = (result, defaultValue) => {
28
- if (result.success) {
29
- return result.data;
30
- }
31
- return result.fallback ?? defaultValue;
32
- };
33
- /**
34
- * Map result data
35
- */
36
- export const map = (result, fn) => {
37
- if (result.success) {
38
- return success(fn(result.data));
39
- }
40
- return result;
41
- };
42
- //# sourceMappingURL=StorageResult.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageResult.js","sourceRoot":"","sources":["../../../src/domain/entities/StorageResult.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,IAAO,EAAoB,EAAE,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI;IACb,IAAI;CACL,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAmB,EAAE,QAAY,EAAoB,EAAE,CAAC,CAAC;IAClF,OAAO,EAAE,KAAK;IACd,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,MAAwB,EAAE,YAAe,EAAK,EAAE;IACxE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC;AACzC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAwB,EACxB,EAAkB,EACA,EAAE;IACpB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAA0B,CAAC;AACpC,CAAC,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Storage Error Types
3
- *
4
- * Domain-Driven Design: Domain errors for storage operations
5
- * Typed errors for better error handling and debugging
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- /**
10
- * Base Storage Error
11
- */
12
- export declare class StorageError extends Error {
13
- readonly key?: string | undefined;
14
- constructor(message: string, key?: string | undefined);
15
- }
16
- /**
17
- * Storage Read Error
18
- */
19
- export declare class StorageReadError extends StorageError {
20
- readonly cause?: unknown;
21
- constructor(key: string, cause?: unknown);
22
- }
23
- /**
24
- * Storage Write Error
25
- */
26
- export declare class StorageWriteError extends StorageError {
27
- readonly cause?: unknown;
28
- constructor(key: string, cause?: unknown);
29
- }
30
- /**
31
- * Storage Delete Error
32
- */
33
- export declare class StorageDeleteError extends StorageError {
34
- readonly cause?: unknown;
35
- constructor(key: string, cause?: unknown);
36
- }
37
- /**
38
- * Storage Serialization Error
39
- */
40
- export declare class StorageSerializationError extends StorageError {
41
- readonly cause?: unknown;
42
- constructor(key: string, cause?: unknown);
43
- }
44
- /**
45
- * Storage Deserialization Error
46
- */
47
- export declare class StorageDeserializationError extends StorageError {
48
- readonly cause?: unknown;
49
- constructor(key: string, cause?: unknown);
50
- }
51
- //# sourceMappingURL=StorageError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageError.d.ts","sourceRoot":"","sources":["../../../src/domain/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aACQ,GAAG,CAAC,EAAE,MAAM;gBAA7C,OAAO,EAAE,MAAM,EAAkB,GAAG,CAAC,EAAE,MAAM,YAAA;CAI1D;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzC;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzC;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAKzC"}
@@ -1,69 +0,0 @@
1
- /**
2
- * Storage Error Types
3
- *
4
- * Domain-Driven Design: Domain errors for storage operations
5
- * Typed errors for better error handling and debugging
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- /**
10
- * Base Storage Error
11
- */
12
- export class StorageError extends Error {
13
- constructor(message, key) {
14
- super(message);
15
- this.key = key;
16
- this.name = 'StorageError';
17
- }
18
- }
19
- /**
20
- * Storage Read Error
21
- */
22
- export class StorageReadError extends StorageError {
23
- constructor(key, cause) {
24
- super(`Failed to read from storage: ${key}`, key);
25
- this.name = 'StorageReadError';
26
- this.cause = cause;
27
- }
28
- }
29
- /**
30
- * Storage Write Error
31
- */
32
- export class StorageWriteError extends StorageError {
33
- constructor(key, cause) {
34
- super(`Failed to write to storage: ${key}`, key);
35
- this.name = 'StorageWriteError';
36
- this.cause = cause;
37
- }
38
- }
39
- /**
40
- * Storage Delete Error
41
- */
42
- export class StorageDeleteError extends StorageError {
43
- constructor(key, cause) {
44
- super(`Failed to delete from storage: ${key}`, key);
45
- this.name = 'StorageDeleteError';
46
- this.cause = cause;
47
- }
48
- }
49
- /**
50
- * Storage Serialization Error
51
- */
52
- export class StorageSerializationError extends StorageError {
53
- constructor(key, cause) {
54
- super(`Failed to serialize data for key: ${key}`, key);
55
- this.name = 'StorageSerializationError';
56
- this.cause = cause;
57
- }
58
- }
59
- /**
60
- * Storage Deserialization Error
61
- */
62
- export class StorageDeserializationError extends StorageError {
63
- constructor(key, cause) {
64
- super(`Failed to deserialize data for key: ${key}`, key);
65
- this.name = 'StorageDeserializationError';
66
- this.cause = cause;
67
- }
68
- }
69
- //# sourceMappingURL=StorageError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageError.js","sourceRoot":"","sources":["../../../src/domain/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe,EAAkB,GAAY;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,QAAG,GAAH,GAAG,CAAS;QAEvD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAGhD,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CAAC,gCAAgC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAGjD,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CAAC,+BAA+B,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAGlD,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CAAC,kCAAkC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IAGzD,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CAAC,qCAAqC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,YAAY;IAG3D,YAAY,GAAW,EAAE,KAAe;QACtC,KAAK,CAAC,uCAAuC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Storage Key Value Object
3
- *
4
- * Domain-Driven Design: Value Object for storage keys
5
- * Ensures type safety and prevents invalid key usage
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- /**
10
- * Storage Key Type
11
- * All valid storage keys must be defined here
12
- */
13
- export declare enum StorageKey {
14
- ONBOARDING_COMPLETED = "@onboarding_completed",
15
- LANGUAGE = "@app_language",
16
- THEME_MODE = "@app_theme_mode",
17
- SETTINGS = "app_settings",
18
- QUERY_CACHE = "{{APP_NAME}}_query_cache"
19
- }
20
- /**
21
- * Storage key with dynamic suffix
22
- */
23
- export type DynamicStorageKey = {
24
- base: StorageKey;
25
- suffix: string;
26
- };
27
- /**
28
- * Helper to create user-specific storage key
29
- *
30
- * @param baseKey Base storage key
31
- * @param userId User identifier
32
- * @returns User-specific key
33
- */
34
- export declare const createUserKey: (baseKey: StorageKey, userId: string) => string;
35
- /**
36
- * Helper to create app-specific storage key
37
- *
38
- * @param baseKey Base storage key
39
- * @param appName App identifier
40
- * @returns App-specific key
41
- */
42
- export declare const createAppKey: (baseKey: StorageKey, appName: string) => string;
43
- //# sourceMappingURL=StorageKey.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageKey.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/StorageKey.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,oBAAY,UAAU;IAEpB,oBAAoB,0BAA0B;IAG9C,QAAQ,kBAAkB;IAG1B,UAAU,oBAAoB;IAG9B,QAAQ,iBAAiB;IAGzB,WAAW,6BAA6B;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,UAAU,EAAE,QAAQ,MAAM,KAAG,MAEnE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,EAAE,SAAS,MAAM,KAAG,MAEnE,CAAC"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Storage Key Value Object
3
- *
4
- * Domain-Driven Design: Value Object for storage keys
5
- * Ensures type safety and prevents invalid key usage
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- /**
10
- * Storage Key Type
11
- * All valid storage keys must be defined here
12
- */
13
- export var StorageKey;
14
- (function (StorageKey) {
15
- // Onboarding
16
- StorageKey["ONBOARDING_COMPLETED"] = "@onboarding_completed";
17
- // Localization
18
- StorageKey["LANGUAGE"] = "@app_language";
19
- // Theme
20
- StorageKey["THEME_MODE"] = "@app_theme_mode";
21
- // Settings (requires userId suffix)
22
- StorageKey["SETTINGS"] = "app_settings";
23
- // Query Cache (requires app name prefix)
24
- StorageKey["QUERY_CACHE"] = "{{APP_NAME}}_query_cache";
25
- })(StorageKey || (StorageKey = {}));
26
- /**
27
- * Helper to create user-specific storage key
28
- *
29
- * @param baseKey Base storage key
30
- * @param userId User identifier
31
- * @returns User-specific key
32
- */
33
- export const createUserKey = (baseKey, userId) => {
34
- return `${baseKey}_${userId}`;
35
- };
36
- /**
37
- * Helper to create app-specific storage key
38
- *
39
- * @param baseKey Base storage key
40
- * @param appName App identifier
41
- * @returns App-specific key
42
- */
43
- export const createAppKey = (baseKey, appName) => {
44
- return `${appName}_${baseKey}`;
45
- };
46
- //# sourceMappingURL=StorageKey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StorageKey.js","sourceRoot":"","sources":["../../../src/domain/value-objects/StorageKey.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,UAeX;AAfD,WAAY,UAAU;IACpB,aAAa;IACb,4DAA8C,CAAA;IAE9C,eAAe;IACf,wCAA0B,CAAA;IAE1B,QAAQ;IACR,4CAA8B,CAAA;IAE9B,oCAAoC;IACpC,uCAAyB,CAAA;IAEzB,yCAAyC;IACzC,sDAAwC,CAAA;AAC1C,CAAC,EAfW,UAAU,KAAV,UAAU,QAerB;AAUD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAmB,EAAE,MAAc,EAAU,EAAE;IAC3E,OAAO,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAmB,EAAE,OAAe,EAAU,EAAE;IAC3E,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC"}
package/lib/index.d.ts DELETED
@@ -1,27 +0,0 @@
1
- /**
2
- * Storage Domain - Public API
3
- *
4
- * Domain-Driven Design (DDD) Architecture
5
- *
6
- * This is the SINGLE SOURCE OF TRUTH for all storage operations.
7
- * ALL imports from the storage domain MUST go through this file.
8
- *
9
- * Architecture:
10
- * - domain: Entities, value objects, errors (business logic)
11
- * - application: Ports (interfaces), use cases (not needed for simple CRUD)
12
- * - infrastructure: Repository implementation (AsyncStorage adapter)
13
- * - presentation: Hooks (React integration)
14
- *
15
- * Usage:
16
- * import { useStorage, useStorageState, StorageKey } from '@umituz/react-native-storage';
17
- */
18
- export { StorageKey, createUserKey, createAppKey, } from './domain/value-objects/StorageKey';
19
- export type { DynamicStorageKey } from './domain/value-objects/StorageKey';
20
- export { StorageError, StorageReadError, StorageWriteError, StorageDeleteError, StorageSerializationError, StorageDeserializationError, } from './domain/errors/StorageError';
21
- export type { StorageResult } from './domain/entities/StorageResult';
22
- export { success, failure, unwrap, map, } from './domain/entities/StorageResult';
23
- export type { IStorageRepository } from './application/ports/IStorageRepository';
24
- export { AsyncStorageRepository, storageRepository, } from './infrastructure/repositories/AsyncStorageRepository';
25
- export { useStorage } from './presentation/hooks/useStorage';
26
- export { useStorageState } from './presentation/hooks/useStorageState';
27
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,GAAG,GACJ,MAAM,iCAAiC,CAAC;AAMzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAMjF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sDAAsD,CAAC;AAM9D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC"}
package/lib/index.js DELETED
@@ -1,33 +0,0 @@
1
- /**
2
- * Storage Domain - Public API
3
- *
4
- * Domain-Driven Design (DDD) Architecture
5
- *
6
- * This is the SINGLE SOURCE OF TRUTH for all storage operations.
7
- * ALL imports from the storage domain MUST go through this file.
8
- *
9
- * Architecture:
10
- * - domain: Entities, value objects, errors (business logic)
11
- * - application: Ports (interfaces), use cases (not needed for simple CRUD)
12
- * - infrastructure: Repository implementation (AsyncStorage adapter)
13
- * - presentation: Hooks (React integration)
14
- *
15
- * Usage:
16
- * import { useStorage, useStorageState, StorageKey } from '@umituz/react-native-storage';
17
- */
18
- // =============================================================================
19
- // DOMAIN LAYER - Business Logic
20
- // =============================================================================
21
- export { StorageKey, createUserKey, createAppKey, } from './domain/value-objects/StorageKey';
22
- export { StorageError, StorageReadError, StorageWriteError, StorageDeleteError, StorageSerializationError, StorageDeserializationError, } from './domain/errors/StorageError';
23
- export { success, failure, unwrap, map, } from './domain/entities/StorageResult';
24
- // =============================================================================
25
- // INFRASTRUCTURE LAYER - Implementation
26
- // =============================================================================
27
- export { AsyncStorageRepository, storageRepository, } from './infrastructure/repositories/AsyncStorageRepository';
28
- // =============================================================================
29
- // PRESENTATION LAYER - Hooks
30
- // =============================================================================
31
- export { useStorage } from './presentation/hooks/useStorage';
32
- export { useStorageState } from './presentation/hooks/useStorageState';
33
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAEhF,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,GAAG,GACJ,MAAM,iCAAiC,CAAC;AAQzC,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sDAAsD,CAAC;AAE9D,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC"}
@@ -1,50 +0,0 @@
1
- /**
2
- * AsyncStorage Repository
3
- *
4
- * Domain-Driven Design: Infrastructure implementation of IStorageRepository
5
- * Adapts React Native AsyncStorage to domain interface
6
- */
7
- import type { IStorageRepository } from '../../application/ports/IStorageRepository';
8
- import type { StorageResult } from '../../domain/entities/StorageResult';
9
- /**
10
- * AsyncStorage Repository Implementation
11
- */
12
- export declare class AsyncStorageRepository implements IStorageRepository {
13
- /**
14
- * Get item from AsyncStorage with type safety
15
- */
16
- getItem<T>(key: string, defaultValue: T): Promise<StorageResult<T>>;
17
- /**
18
- * Set item in AsyncStorage with automatic JSON serialization
19
- */
20
- setItem<T>(key: string, value: T): Promise<StorageResult<T>>;
21
- /**
22
- * Get string value (no JSON parsing)
23
- */
24
- getString(key: string, defaultValue: string): Promise<StorageResult<string>>;
25
- /**
26
- * Set string value (no JSON serialization)
27
- */
28
- setString(key: string, value: string): Promise<StorageResult<string>>;
29
- /**
30
- * Remove item from AsyncStorage
31
- */
32
- removeItem(key: string): Promise<StorageResult<void>>;
33
- /**
34
- * Check if key exists in storage
35
- */
36
- hasItem(key: string): Promise<boolean>;
37
- /**
38
- * Clear all AsyncStorage data (use with caution!)
39
- */
40
- clearAll(): Promise<StorageResult<void>>;
41
- /**
42
- * Get multiple items at once (more efficient than multiple getItem calls)
43
- */
44
- getMultiple(keys: string[]): Promise<StorageResult<Record<string, string | null>>>;
45
- }
46
- /**
47
- * Singleton instance
48
- */
49
- export declare const storageRepository: AsyncStorageRepository;
50
- //# sourceMappingURL=AsyncStorageRepository.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AsyncStorageRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/AsyncStorageRepository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAUzE;;GAEG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAoBzE;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAgBlE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAelF;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAS3E;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAS3D;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAS9C;;OAEG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CASzD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,wBAA+B,CAAC"}
@@ -1,137 +0,0 @@
1
- /**
2
- * AsyncStorage Repository
3
- *
4
- * Domain-Driven Design: Infrastructure implementation of IStorageRepository
5
- * Adapts React Native AsyncStorage to domain interface
6
- */
7
- import AsyncStorage from '@react-native-async-storage/async-storage';
8
- import { success, failure } from '../../domain/entities/StorageResult';
9
- import { StorageReadError, StorageWriteError, StorageDeleteError, StorageSerializationError, StorageDeserializationError, } from '../../domain/errors/StorageError';
10
- /**
11
- * AsyncStorage Repository Implementation
12
- */
13
- export class AsyncStorageRepository {
14
- /**
15
- * Get item from AsyncStorage with type safety
16
- */
17
- async getItem(key, defaultValue) {
18
- try {
19
- const value = await AsyncStorage.getItem(key);
20
- if (value === null) {
21
- // Missing keys on first app launch are NORMAL, not errors
22
- return success(defaultValue);
23
- }
24
- try {
25
- const parsed = JSON.parse(value);
26
- return success(parsed);
27
- }
28
- catch (parseError) {
29
- return failure(new StorageDeserializationError(key, parseError), defaultValue);
30
- }
31
- }
32
- catch (error) {
33
- return failure(new StorageReadError(key, error), defaultValue);
34
- }
35
- }
36
- /**
37
- * Set item in AsyncStorage with automatic JSON serialization
38
- */
39
- async setItem(key, value) {
40
- try {
41
- let serialized;
42
- try {
43
- serialized = JSON.stringify(value);
44
- }
45
- catch (serializeError) {
46
- return failure(new StorageSerializationError(key, serializeError));
47
- }
48
- await AsyncStorage.setItem(key, serialized);
49
- return success(value);
50
- }
51
- catch (error) {
52
- return failure(new StorageWriteError(key, error));
53
- }
54
- }
55
- /**
56
- * Get string value (no JSON parsing)
57
- */
58
- async getString(key, defaultValue) {
59
- try {
60
- const value = await AsyncStorage.getItem(key);
61
- if (value === null) {
62
- // Missing keys on first app launch are NORMAL, not errors
63
- return success(defaultValue);
64
- }
65
- return success(value);
66
- }
67
- catch (error) {
68
- return failure(new StorageReadError(key, error), defaultValue);
69
- }
70
- }
71
- /**
72
- * Set string value (no JSON serialization)
73
- */
74
- async setString(key, value) {
75
- try {
76
- await AsyncStorage.setItem(key, value);
77
- return success(value);
78
- }
79
- catch (error) {
80
- return failure(new StorageWriteError(key, error));
81
- }
82
- }
83
- /**
84
- * Remove item from AsyncStorage
85
- */
86
- async removeItem(key) {
87
- try {
88
- await AsyncStorage.removeItem(key);
89
- return success(undefined);
90
- }
91
- catch (error) {
92
- return failure(new StorageDeleteError(key, error));
93
- }
94
- }
95
- /**
96
- * Check if key exists in storage
97
- */
98
- async hasItem(key) {
99
- try {
100
- const value = await AsyncStorage.getItem(key);
101
- return value !== null;
102
- }
103
- catch {
104
- return false;
105
- }
106
- }
107
- /**
108
- * Clear all AsyncStorage data (use with caution!)
109
- */
110
- async clearAll() {
111
- try {
112
- await AsyncStorage.clear();
113
- return success(undefined);
114
- }
115
- catch (error) {
116
- return failure(new StorageDeleteError('ALL_KEYS', error));
117
- }
118
- }
119
- /**
120
- * Get multiple items at once (more efficient than multiple getItem calls)
121
- */
122
- async getMultiple(keys) {
123
- try {
124
- const pairs = await AsyncStorage.multiGet(keys);
125
- const result = Object.fromEntries(pairs);
126
- return success(result);
127
- }
128
- catch (error) {
129
- return failure(new StorageReadError('MULTIPLE_KEYS', error));
130
- }
131
- }
132
- }
133
- /**
134
- * Singleton instance
135
- */
136
- export const storageRepository = new AsyncStorageRepository();
137
- //# sourceMappingURL=AsyncStorageRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AsyncStorageRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/AsyncStorageRepository.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * useStorage Hook
3
- *
4
- * Domain-Driven Design: Presentation layer hook for storage operations
5
- * Provides clean API for components to interact with storage domain
6
- */
7
- import type { StorageResult } from '../../domain/entities/StorageResult';
8
- import type { StorageKey } from '../../domain/value-objects/StorageKey';
9
- /**
10
- * Storage Hook
11
- * Provides type-safe storage operations
12
- */
13
- export declare const useStorage: () => {
14
- getItem: <T>(key: string | StorageKey, defaultValue: T) => Promise<T>;
15
- setItem: <T>(key: string | StorageKey, value: T) => Promise<boolean>;
16
- getString: (key: string | StorageKey, defaultValue: string) => Promise<string>;
17
- setString: (key: string | StorageKey, value: string) => Promise<boolean>;
18
- removeItem: (key: string | StorageKey) => Promise<boolean>;
19
- hasItem: (key: string | StorageKey) => Promise<boolean>;
20
- clearAll: () => Promise<boolean>;
21
- getItemWithResult: <T>(key: string | StorageKey, defaultValue: T) => Promise<StorageResult<T>>;
22
- };
23
- //# sourceMappingURL=useStorage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStorage.d.ts","sourceRoot":"","sources":["../../../src/presentation/hooks/useStorage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,UAAU;cAIc,CAAC,OAAO,MAAM,GAAG,UAAU,gBAAgB,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;cASzD,CAAC,OAAO,MAAM,GAAG,UAAU,SAAS,CAAC,KAAG,OAAO,CAAC,OAAO,CAAC;qBASjD,MAAM,GAAG,UAAU,gBAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;qBAS3D,MAAM,GAAG,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;sBASpD,MAAM,GAAG,UAAU,KAAG,OAAO,CAAC,OAAO,CAAC;mBASzC,MAAM,GAAG,UAAU,KAAG,OAAO,CAAC,OAAO,CAAC;oBAQvC,OAAO,CAAC,OAAO,CAAC;wBAQV,CAAC,OACvC,MAAM,GAAG,UAAU,gBACV,CAAC,KACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAe7B,CAAC"}
@@ -1,87 +0,0 @@
1
- /**
2
- * useStorage Hook
3
- *
4
- * Domain-Driven Design: Presentation layer hook for storage operations
5
- * Provides clean API for components to interact with storage domain
6
- */
7
- import { useCallback } from 'react';
8
- import { storageRepository } from '../../infrastructure/repositories/AsyncStorageRepository';
9
- import { unwrap } from '../../domain/entities/StorageResult';
10
- /**
11
- * Storage Hook
12
- * Provides type-safe storage operations
13
- */
14
- export const useStorage = () => {
15
- /**
16
- * Get item from storage
17
- */
18
- const getItem = useCallback(async (key, defaultValue) => {
19
- const keyString = typeof key === 'string' ? key : String(key);
20
- const result = await storageRepository.getItem(keyString, defaultValue);
21
- return unwrap(result, defaultValue);
22
- }, []);
23
- /**
24
- * Set item in storage
25
- */
26
- const setItem = useCallback(async (key, value) => {
27
- const keyString = typeof key === 'string' ? key : String(key);
28
- const result = await storageRepository.setItem(keyString, value);
29
- return result.success;
30
- }, []);
31
- /**
32
- * Get string from storage
33
- */
34
- const getString = useCallback(async (key, defaultValue) => {
35
- const keyString = typeof key === 'string' ? key : String(key);
36
- const result = await storageRepository.getString(keyString, defaultValue);
37
- return unwrap(result, defaultValue);
38
- }, []);
39
- /**
40
- * Set string in storage
41
- */
42
- const setString = useCallback(async (key, value) => {
43
- const keyString = typeof key === 'string' ? key : String(key);
44
- const result = await storageRepository.setString(keyString, value);
45
- return result.success;
46
- }, []);
47
- /**
48
- * Remove item from storage
49
- */
50
- const removeItem = useCallback(async (key) => {
51
- const keyString = typeof key === 'string' ? key : String(key);
52
- const result = await storageRepository.removeItem(keyString);
53
- return result.success;
54
- }, []);
55
- /**
56
- * Check if item exists
57
- */
58
- const hasItem = useCallback(async (key) => {
59
- const keyString = typeof key === 'string' ? key : String(key);
60
- return storageRepository.hasItem(keyString);
61
- }, []);
62
- /**
63
- * Clear all storage
64
- */
65
- const clearAll = useCallback(async () => {
66
- const result = await storageRepository.clearAll();
67
- return result.success;
68
- }, []);
69
- /**
70
- * Get item with full result (success/error)
71
- */
72
- const getItemWithResult = useCallback(async (key, defaultValue) => {
73
- const keyString = typeof key === 'string' ? key : String(key);
74
- return storageRepository.getItem(keyString, defaultValue);
75
- }, []);
76
- return {
77
- getItem,
78
- setItem,
79
- getString,
80
- setString,
81
- removeItem,
82
- hasItem,
83
- clearAll,
84
- getItemWithResult,
85
- };
86
- };
87
- //# sourceMappingURL=useStorage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../../src/presentation/hooks/useStorage.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * useStorageState Hook
3
- *
4
- * Domain-Driven Design: Presentation layer hook for state + storage sync
5
- * Combines React state with automatic storage persistence
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- import type { StorageKey } from '../../domain/value-objects/StorageKey';
10
- /**
11
- * Storage State Hook
12
- * Syncs React state with AsyncStorage automatically
13
- *
14
- * @example
15
- * ```typescript
16
- * const [theme, setTheme] = useStorageState(StorageKey.THEME_MODE, 'light');
17
- * // State is automatically persisted to storage
18
- * ```
19
- */
20
- export declare const useStorageState: <T>(key: string | StorageKey, defaultValue: T) => [T, (value: T) => Promise<void>, boolean];
21
- //# sourceMappingURL=useStorageState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStorageState.d.ts","sourceRoot":"","sources":["../../../src/presentation/hooks/useStorageState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,KAAK,MAAM,GAAG,UAAU,EACxB,cAAc,CAAC,KACd,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CA2B1C,CAAC"}
@@ -1,43 +0,0 @@
1
- /**
2
- * useStorageState Hook
3
- *
4
- * Domain-Driven Design: Presentation layer hook for state + storage sync
5
- * Combines React state with automatic storage persistence
6
- *
7
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
8
- */
9
- import { useState, useEffect, useCallback } from 'react';
10
- import { storageRepository } from '../../infrastructure/repositories/AsyncStorageRepository';
11
- import { unwrap } from '../../domain/entities/StorageResult';
12
- /**
13
- * Storage State Hook
14
- * Syncs React state with AsyncStorage automatically
15
- *
16
- * @example
17
- * ```typescript
18
- * const [theme, setTheme] = useStorageState(StorageKey.THEME_MODE, 'light');
19
- * // State is automatically persisted to storage
20
- * ```
21
- */
22
- export const useStorageState = (key, defaultValue) => {
23
- const keyString = typeof key === 'string' ? key : String(key);
24
- const [state, setState] = useState(defaultValue);
25
- const [isLoading, setIsLoading] = useState(true);
26
- // Load initial value from storage
27
- useEffect(() => {
28
- const loadFromStorage = async () => {
29
- const result = await storageRepository.getItem(keyString, defaultValue);
30
- const value = unwrap(result, defaultValue);
31
- setState(value);
32
- setIsLoading(false);
33
- };
34
- loadFromStorage();
35
- }, [keyString, defaultValue]);
36
- // Update state and persist to storage
37
- const updateState = useCallback(async (value) => {
38
- setState(value);
39
- await storageRepository.setItem(keyString, value);
40
- }, [keyString]);
41
- return [state, updateState, isLoading];
42
- };
43
- //# sourceMappingURL=useStorageState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStorageState.js","sourceRoot":"","sources":["../../../src/presentation/hooks/useStorageState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0DAA0D,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAG7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAAwB,EACxB,YAAe,EAC4B,EAAE;IAC7C,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC3C,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9B,sCAAsC;IACtC,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,KAAQ,EAAE,EAAE;QACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC,CAAC"}