bytekit 0.1.12

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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2241 -0
  3. package/bin/sutils.js +9 -0
  4. package/dist/api-client.d.ts +2 -0
  5. package/dist/api-client.d.ts.map +1 -0
  6. package/dist/api-client.js +2 -0
  7. package/dist/api-client.js.map +1 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/index.d.ts.map +1 -0
  10. package/dist/cli/index.js +401 -0
  11. package/dist/cli/index.js.map +1 -0
  12. package/dist/cli/type-generator.d.ts +12 -0
  13. package/dist/cli/type-generator.d.ts.map +1 -0
  14. package/dist/cli/type-generator.js +152 -0
  15. package/dist/cli/type-generator.js.map +1 -0
  16. package/dist/date-utils.d.ts +2 -0
  17. package/dist/date-utils.d.ts.map +1 -0
  18. package/dist/date-utils.js +2 -0
  19. package/dist/date-utils.js.map +1 -0
  20. package/dist/debug.d.ts +2 -0
  21. package/dist/debug.d.ts.map +1 -0
  22. package/dist/debug.js +2 -0
  23. package/dist/debug.js.map +1 -0
  24. package/dist/env-manager.d.ts +2 -0
  25. package/dist/env-manager.d.ts.map +1 -0
  26. package/dist/env-manager.js +2 -0
  27. package/dist/env-manager.js.map +1 -0
  28. package/dist/file-upload.d.ts +2 -0
  29. package/dist/file-upload.d.ts.map +1 -0
  30. package/dist/file-upload.js +2 -0
  31. package/dist/file-upload.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +2 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/logger.d.ts +2 -0
  37. package/dist/logger.d.ts.map +1 -0
  38. package/dist/logger.js +2 -0
  39. package/dist/logger.js.map +1 -0
  40. package/dist/profiler.d.ts +2 -0
  41. package/dist/profiler.d.ts.map +1 -0
  42. package/dist/profiler.js +2 -0
  43. package/dist/profiler.js.map +1 -0
  44. package/dist/response-validator.d.ts +2 -0
  45. package/dist/response-validator.d.ts.map +1 -0
  46. package/dist/response-validator.js +2 -0
  47. package/dist/response-validator.js.map +1 -0
  48. package/dist/retry-policy.d.ts +2 -0
  49. package/dist/retry-policy.d.ts.map +1 -0
  50. package/dist/retry-policy.js +2 -0
  51. package/dist/retry-policy.js.map +1 -0
  52. package/dist/storage-utils.d.ts +2 -0
  53. package/dist/storage-utils.d.ts.map +1 -0
  54. package/dist/storage-utils.js +2 -0
  55. package/dist/storage-utils.js.map +1 -0
  56. package/dist/streaming.d.ts +2 -0
  57. package/dist/streaming.d.ts.map +1 -0
  58. package/dist/streaming.js +2 -0
  59. package/dist/streaming.js.map +1 -0
  60. package/dist/string-utils.d.ts +2 -0
  61. package/dist/string-utils.d.ts.map +1 -0
  62. package/dist/string-utils.js +2 -0
  63. package/dist/string-utils.js.map +1 -0
  64. package/dist/utils/core/ApiClient.d.ts +94 -0
  65. package/dist/utils/core/ApiClient.d.ts.map +1 -0
  66. package/dist/utils/core/ApiClient.js +291 -0
  67. package/dist/utils/core/ApiClient.js.map +1 -0
  68. package/dist/utils/core/ErrorBoundary.d.ts +141 -0
  69. package/dist/utils/core/ErrorBoundary.d.ts.map +1 -0
  70. package/dist/utils/core/ErrorBoundary.js +322 -0
  71. package/dist/utils/core/ErrorBoundary.js.map +1 -0
  72. package/dist/utils/core/Logger.d.ts +39 -0
  73. package/dist/utils/core/Logger.d.ts.map +1 -0
  74. package/dist/utils/core/Logger.js +154 -0
  75. package/dist/utils/core/Logger.js.map +1 -0
  76. package/dist/utils/core/Profiler.d.ts +8 -0
  77. package/dist/utils/core/Profiler.d.ts.map +1 -0
  78. package/dist/utils/core/Profiler.js +18 -0
  79. package/dist/utils/core/Profiler.js.map +1 -0
  80. package/dist/utils/core/RateLimiter.d.ts +74 -0
  81. package/dist/utils/core/RateLimiter.d.ts.map +1 -0
  82. package/dist/utils/core/RateLimiter.js +170 -0
  83. package/dist/utils/core/RateLimiter.js.map +1 -0
  84. package/dist/utils/core/RequestCache.d.ts +64 -0
  85. package/dist/utils/core/RequestCache.d.ts.map +1 -0
  86. package/dist/utils/core/RequestCache.js +139 -0
  87. package/dist/utils/core/RequestCache.js.map +1 -0
  88. package/dist/utils/core/RequestDeduplicator.d.ts +41 -0
  89. package/dist/utils/core/RequestDeduplicator.d.ts.map +1 -0
  90. package/dist/utils/core/RequestDeduplicator.js +83 -0
  91. package/dist/utils/core/RequestDeduplicator.js.map +1 -0
  92. package/dist/utils/core/ResponseValidator.d.ts +26 -0
  93. package/dist/utils/core/ResponseValidator.d.ts.map +1 -0
  94. package/dist/utils/core/ResponseValidator.js +140 -0
  95. package/dist/utils/core/ResponseValidator.js.map +1 -0
  96. package/dist/utils/core/RetryPolicy.d.ts +43 -0
  97. package/dist/utils/core/RetryPolicy.d.ts.map +1 -0
  98. package/dist/utils/core/RetryPolicy.js +119 -0
  99. package/dist/utils/core/RetryPolicy.js.map +1 -0
  100. package/dist/utils/core/debug.d.ts +46 -0
  101. package/dist/utils/core/debug.d.ts.map +1 -0
  102. package/dist/utils/core/debug.js +83 -0
  103. package/dist/utils/core/debug.js.map +1 -0
  104. package/dist/utils/core/index.d.ts +11 -0
  105. package/dist/utils/core/index.d.ts.map +1 -0
  106. package/dist/utils/core/index.js +11 -0
  107. package/dist/utils/core/index.js.map +1 -0
  108. package/dist/utils/helpers/ArrayUtils.d.ts +134 -0
  109. package/dist/utils/helpers/ArrayUtils.d.ts.map +1 -0
  110. package/dist/utils/helpers/ArrayUtils.js +301 -0
  111. package/dist/utils/helpers/ArrayUtils.js.map +1 -0
  112. package/dist/utils/helpers/CacheManager.d.ts +67 -0
  113. package/dist/utils/helpers/CacheManager.d.ts.map +1 -0
  114. package/dist/utils/helpers/CacheManager.js +222 -0
  115. package/dist/utils/helpers/CacheManager.js.map +1 -0
  116. package/dist/utils/helpers/CompressionUtils.d.ts +80 -0
  117. package/dist/utils/helpers/CompressionUtils.d.ts.map +1 -0
  118. package/dist/utils/helpers/CompressionUtils.js +224 -0
  119. package/dist/utils/helpers/CompressionUtils.js.map +1 -0
  120. package/dist/utils/helpers/CryptoUtils.d.ts +70 -0
  121. package/dist/utils/helpers/CryptoUtils.d.ts.map +1 -0
  122. package/dist/utils/helpers/CryptoUtils.js +215 -0
  123. package/dist/utils/helpers/CryptoUtils.js.map +1 -0
  124. package/dist/utils/helpers/DateUtils.d.ts +31 -0
  125. package/dist/utils/helpers/DateUtils.d.ts.map +1 -0
  126. package/dist/utils/helpers/DateUtils.js +104 -0
  127. package/dist/utils/helpers/DateUtils.js.map +1 -0
  128. package/dist/utils/helpers/DiffUtils.d.ts +61 -0
  129. package/dist/utils/helpers/DiffUtils.d.ts.map +1 -0
  130. package/dist/utils/helpers/DiffUtils.js +249 -0
  131. package/dist/utils/helpers/DiffUtils.js.map +1 -0
  132. package/dist/utils/helpers/EnvManager.d.ts +7 -0
  133. package/dist/utils/helpers/EnvManager.d.ts.map +1 -0
  134. package/dist/utils/helpers/EnvManager.js +19 -0
  135. package/dist/utils/helpers/EnvManager.js.map +1 -0
  136. package/dist/utils/helpers/EventEmitter.d.ts +78 -0
  137. package/dist/utils/helpers/EventEmitter.d.ts.map +1 -0
  138. package/dist/utils/helpers/EventEmitter.js +208 -0
  139. package/dist/utils/helpers/EventEmitter.js.map +1 -0
  140. package/dist/utils/helpers/FileUploadHelper.d.ts +44 -0
  141. package/dist/utils/helpers/FileUploadHelper.d.ts.map +1 -0
  142. package/dist/utils/helpers/FileUploadHelper.js +127 -0
  143. package/dist/utils/helpers/FileUploadHelper.js.map +1 -0
  144. package/dist/utils/helpers/FormUtils.d.ts +162 -0
  145. package/dist/utils/helpers/FormUtils.d.ts.map +1 -0
  146. package/dist/utils/helpers/FormUtils.js +378 -0
  147. package/dist/utils/helpers/FormUtils.js.map +1 -0
  148. package/dist/utils/helpers/ObjectUtils.d.ts +102 -0
  149. package/dist/utils/helpers/ObjectUtils.d.ts.map +1 -0
  150. package/dist/utils/helpers/ObjectUtils.js +297 -0
  151. package/dist/utils/helpers/ObjectUtils.js.map +1 -0
  152. package/dist/utils/helpers/PaginationHelper.d.ts +127 -0
  153. package/dist/utils/helpers/PaginationHelper.d.ts.map +1 -0
  154. package/dist/utils/helpers/PaginationHelper.js +259 -0
  155. package/dist/utils/helpers/PaginationHelper.js.map +1 -0
  156. package/dist/utils/helpers/PollingHelper.d.ts +64 -0
  157. package/dist/utils/helpers/PollingHelper.d.ts.map +1 -0
  158. package/dist/utils/helpers/PollingHelper.js +131 -0
  159. package/dist/utils/helpers/PollingHelper.js.map +1 -0
  160. package/dist/utils/helpers/StorageUtils.d.ts +9 -0
  161. package/dist/utils/helpers/StorageUtils.d.ts.map +1 -0
  162. package/dist/utils/helpers/StorageUtils.js +33 -0
  163. package/dist/utils/helpers/StorageUtils.js.map +1 -0
  164. package/dist/utils/helpers/StreamingHelper.d.ts +35 -0
  165. package/dist/utils/helpers/StreamingHelper.d.ts.map +1 -0
  166. package/dist/utils/helpers/StreamingHelper.js +167 -0
  167. package/dist/utils/helpers/StreamingHelper.js.map +1 -0
  168. package/dist/utils/helpers/StringUtils.d.ts +42 -0
  169. package/dist/utils/helpers/StringUtils.d.ts.map +1 -0
  170. package/dist/utils/helpers/StringUtils.js +173 -0
  171. package/dist/utils/helpers/StringUtils.js.map +1 -0
  172. package/dist/utils/helpers/TimeUtils.d.ts +87 -0
  173. package/dist/utils/helpers/TimeUtils.d.ts.map +1 -0
  174. package/dist/utils/helpers/TimeUtils.js +234 -0
  175. package/dist/utils/helpers/TimeUtils.js.map +1 -0
  176. package/dist/utils/helpers/Validator.d.ts +31 -0
  177. package/dist/utils/helpers/Validator.d.ts.map +1 -0
  178. package/dist/utils/helpers/Validator.js +156 -0
  179. package/dist/utils/helpers/Validator.js.map +1 -0
  180. package/dist/utils/helpers/WebSocketHelper.d.ts +63 -0
  181. package/dist/utils/helpers/WebSocketHelper.d.ts.map +1 -0
  182. package/dist/utils/helpers/WebSocketHelper.js +200 -0
  183. package/dist/utils/helpers/WebSocketHelper.js.map +1 -0
  184. package/dist/utils/helpers/index.d.ts +20 -0
  185. package/dist/utils/helpers/index.d.ts.map +1 -0
  186. package/dist/utils/helpers/index.js +20 -0
  187. package/dist/utils/helpers/index.js.map +1 -0
  188. package/dist/utils/index.d.ts +21 -0
  189. package/dist/utils/index.d.ts.map +1 -0
  190. package/dist/utils/index.js +21 -0
  191. package/dist/utils/index.js.map +1 -0
  192. package/dist/validator.d.ts +2 -0
  193. package/dist/validator.d.ts.map +1 -0
  194. package/dist/validator.js +2 -0
  195. package/dist/validator.js.map +1 -0
  196. package/dist/websocket.d.ts +2 -0
  197. package/dist/websocket.d.ts.map +1 -0
  198. package/dist/websocket.js +2 -0
  199. package/dist/websocket.js.map +1 -0
  200. package/package.json +189 -0
@@ -0,0 +1,104 @@
1
+ const MS_PER_UNIT = {
2
+ milliseconds: 1,
3
+ seconds: 1000,
4
+ minutes: 60000,
5
+ hours: 3600000,
6
+ days: 86400000,
7
+ };
8
+ const ROUNDING_FUNCTIONS = {
9
+ floor: Math.floor,
10
+ ceil: Math.ceil,
11
+ round: Math.round,
12
+ trunc: Math.trunc,
13
+ };
14
+ const toDate = (value) => {
15
+ if (value === null || value === undefined)
16
+ return null;
17
+ if (value instanceof Date && !Number.isNaN(value.getTime()))
18
+ return new Date(value.getTime());
19
+ if (typeof value === "number" && Number.isFinite(value))
20
+ return new Date(value);
21
+ if (typeof value === "string") {
22
+ const parsed = new Date(value);
23
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
24
+ }
25
+ return null;
26
+ };
27
+ const requireDate = (value) => {
28
+ const date = toDate(value);
29
+ if (!date)
30
+ throw new TypeError("Invalid date input");
31
+ return date;
32
+ };
33
+ const pad = (value) => value.toString().padStart(2, "0");
34
+ const calculateDurationMs = ({ days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0, } = {}) => days * MS_PER_UNIT.days +
35
+ hours * MS_PER_UNIT.hours +
36
+ minutes * MS_PER_UNIT.minutes +
37
+ seconds * MS_PER_UNIT.seconds +
38
+ milliseconds;
39
+ export const DateUtils = {
40
+ parse(value) {
41
+ return toDate(value);
42
+ },
43
+ isValid(value) {
44
+ return Boolean(toDate(value));
45
+ },
46
+ toISODate(value) {
47
+ const date = requireDate(value);
48
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
49
+ },
50
+ startOfDay(value) {
51
+ const date = requireDate(value);
52
+ date.setHours(0, 0, 0, 0);
53
+ return date;
54
+ },
55
+ endOfDay(value) {
56
+ const date = requireDate(value);
57
+ date.setHours(23, 59, 59, 999);
58
+ return date;
59
+ },
60
+ add(value, duration = {}) {
61
+ const date = requireDate(value);
62
+ const result = new Date(date.getTime());
63
+ result.setTime(result.getTime() + calculateDurationMs(duration));
64
+ return result;
65
+ },
66
+ diff(a, b, options = {}) {
67
+ const start = requireDate(a);
68
+ const end = requireDate(b);
69
+ const { unit = "milliseconds", absolute = false, rounding = "floor" } = options;
70
+ const diffMs = end.getTime() - start.getTime();
71
+ const value = diffMs / MS_PER_UNIT[unit];
72
+ const rounded = ROUNDING_FUNCTIONS[rounding](value);
73
+ return absolute ? Math.abs(rounded) : rounded;
74
+ },
75
+ diffInDays(a, b, options = {}) {
76
+ const { rounding = "ceil", ...rest } = options;
77
+ return DateUtils.diff(a, b, {
78
+ ...rest,
79
+ rounding,
80
+ unit: "days",
81
+ });
82
+ },
83
+ isSameDay(a, b) {
84
+ const first = requireDate(a);
85
+ const second = requireDate(b);
86
+ return (first.getFullYear() === second.getFullYear() &&
87
+ first.getMonth() === second.getMonth() &&
88
+ first.getDate() === second.getDate());
89
+ },
90
+ isBefore(a, b) {
91
+ return requireDate(a).getTime() < requireDate(b).getTime();
92
+ },
93
+ isAfter(a, b) {
94
+ return requireDate(a).getTime() > requireDate(b).getTime();
95
+ },
96
+ format(date, locale = "es-AR") {
97
+ return date.toLocaleDateString(locale, {
98
+ year: "numeric",
99
+ month: "short",
100
+ day: "2-digit",
101
+ });
102
+ },
103
+ };
104
+ //# sourceMappingURL=DateUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateUtils.js","sourceRoot":"","sources":["../../../src/utils/helpers/DateUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Diff and patch utilities for tracking changes
3
+ * Deep comparison, change detection, and patch generation
4
+ */
5
+ export interface DiffResult {
6
+ changed: string[];
7
+ added: string[];
8
+ removed: string[];
9
+ }
10
+ export interface Patch {
11
+ op: "add" | "remove" | "replace";
12
+ path: string;
13
+ value?: unknown;
14
+ oldValue?: unknown;
15
+ }
16
+ /**
17
+ * Diff utilities for comparing objects and tracking changes
18
+ */
19
+ export declare class DiffUtils {
20
+ /**
21
+ * Deep compare two values
22
+ */
23
+ static deepEqual(a: unknown, b: unknown): boolean;
24
+ /**
25
+ * Diff two objects and return changed, added, removed keys
26
+ */
27
+ static diff(oldObj: Record<string, unknown>, newObj: Record<string, unknown>): DiffResult;
28
+ /**
29
+ * Create patches from old to new object
30
+ */
31
+ static createPatch(oldObj: Record<string, unknown>, newObj: Record<string, unknown>): Patch[];
32
+ /**
33
+ * Apply patches to object
34
+ */
35
+ static applyPatch(obj: Record<string, unknown>, patches: Patch[]): Record<string, unknown>;
36
+ /**
37
+ * Reverse patches (undo)
38
+ */
39
+ static reversePatch(patches: Patch[]): Patch[];
40
+ /**
41
+ * Get nested value using dot notation
42
+ */
43
+ private static getNestedValue;
44
+ /**
45
+ * Set nested value using dot notation
46
+ */
47
+ private static setNestedValue;
48
+ /**
49
+ * Deep diff with nested paths
50
+ */
51
+ static deepDiff(oldObj: unknown, newObj: unknown, prefix?: string): DiffResult;
52
+ /**
53
+ * Merge two objects with conflict resolution
54
+ */
55
+ static merge(obj1: Record<string, unknown>, obj2: Record<string, unknown>, strategy?: "first" | "second" | "merge"): Record<string, unknown>;
56
+ /**
57
+ * Get summary of changes
58
+ */
59
+ static getSummary(diff: DiffResult): string;
60
+ }
61
+ //# sourceMappingURL=DiffUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/DiffUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,SAAS;IAClB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IA6BjD;;OAEG;IACH,MAAM,CAAC,IAAI,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,UAAU;IA2Bb;;OAEG;IACH,MAAM,CAAC,WAAW,CACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,KAAK,EAAE;IAmCV;;OAEG;IACH,MAAM,CAAC,UAAU,CACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,KAAK,EAAE,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoB1B;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IAqB9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAK,GAAG,UAAU;IAoD1E;;OAEG;IACH,MAAM,CAAC,KAAK,CACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,GAAE,OAAO,GAAG,QAAQ,GAAG,OAAiB,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4B1B;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAS9C"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Diff and patch utilities for tracking changes
3
+ * Deep comparison, change detection, and patch generation
4
+ */
5
+ /**
6
+ * Diff utilities for comparing objects and tracking changes
7
+ */
8
+ export class DiffUtils {
9
+ /**
10
+ * Deep compare two values
11
+ */
12
+ static deepEqual(a, b) {
13
+ if (a === b)
14
+ return true;
15
+ if (a == null || b == null)
16
+ return a === b;
17
+ if (typeof a !== typeof b)
18
+ return false;
19
+ if (typeof a === "object") {
20
+ const aKeys = Object.keys(a);
21
+ const bKeys = Object.keys(b);
22
+ if (aKeys.length !== bKeys.length)
23
+ return false;
24
+ for (const key of aKeys) {
25
+ if (!bKeys.includes(key))
26
+ return false;
27
+ if (!this.deepEqual(a[key], b[key])) {
28
+ return false;
29
+ }
30
+ }
31
+ return true;
32
+ }
33
+ return false;
34
+ }
35
+ /**
36
+ * Diff two objects and return changed, added, removed keys
37
+ */
38
+ static diff(oldObj, newObj) {
39
+ const changed = [];
40
+ const added = [];
41
+ const removed = [];
42
+ const oldKeys = new Set(Object.keys(oldObj));
43
+ const newKeys = new Set(Object.keys(newObj));
44
+ // Find changed and removed
45
+ for (const key of oldKeys) {
46
+ if (!newKeys.has(key)) {
47
+ removed.push(key);
48
+ }
49
+ else if (!this.deepEqual(oldObj[key], newObj[key])) {
50
+ changed.push(key);
51
+ }
52
+ }
53
+ // Find added
54
+ for (const key of newKeys) {
55
+ if (!oldKeys.has(key)) {
56
+ added.push(key);
57
+ }
58
+ }
59
+ return { changed, added, removed };
60
+ }
61
+ /**
62
+ * Create patches from old to new object
63
+ */
64
+ static createPatch(oldObj, newObj) {
65
+ const patches = [];
66
+ const diff = this.diff(oldObj, newObj);
67
+ // Handle removed
68
+ for (const key of diff.removed) {
69
+ patches.push({
70
+ op: "remove",
71
+ path: key,
72
+ oldValue: oldObj[key],
73
+ });
74
+ }
75
+ // Handle changed
76
+ for (const key of diff.changed) {
77
+ patches.push({
78
+ op: "replace",
79
+ path: key,
80
+ value: newObj[key],
81
+ oldValue: oldObj[key],
82
+ });
83
+ }
84
+ // Handle added
85
+ for (const key of diff.added) {
86
+ patches.push({
87
+ op: "add",
88
+ path: key,
89
+ value: newObj[key],
90
+ });
91
+ }
92
+ return patches;
93
+ }
94
+ /**
95
+ * Apply patches to object
96
+ */
97
+ static applyPatch(obj, patches) {
98
+ const result = { ...obj };
99
+ for (const patch of patches) {
100
+ switch (patch.op) {
101
+ case "add":
102
+ result[patch.path] = patch.value;
103
+ break;
104
+ case "remove":
105
+ delete result[patch.path];
106
+ break;
107
+ case "replace":
108
+ result[patch.path] = patch.value;
109
+ break;
110
+ }
111
+ }
112
+ return result;
113
+ }
114
+ /**
115
+ * Reverse patches (undo)
116
+ */
117
+ static reversePatch(patches) {
118
+ return patches.map((patch) => {
119
+ switch (patch.op) {
120
+ case "add":
121
+ return { op: "remove", path: patch.path };
122
+ case "remove":
123
+ return {
124
+ op: "add",
125
+ path: patch.path,
126
+ value: patch.oldValue,
127
+ };
128
+ case "replace":
129
+ return {
130
+ op: "replace",
131
+ path: patch.path,
132
+ value: patch.oldValue,
133
+ };
134
+ }
135
+ });
136
+ }
137
+ /**
138
+ * Get nested value using dot notation
139
+ */
140
+ static getNestedValue(obj, path) {
141
+ const keys = path.split(".");
142
+ let current = obj;
143
+ for (const key of keys) {
144
+ if (current == null)
145
+ return undefined;
146
+ current = current[key];
147
+ }
148
+ return current;
149
+ }
150
+ /**
151
+ * Set nested value using dot notation
152
+ */
153
+ static setNestedValue(obj, path, value) {
154
+ const keys = path.split(".");
155
+ let current = obj;
156
+ for (let i = 0; i < keys.length - 1; i++) {
157
+ const key = keys[i];
158
+ if (!(key in current)) {
159
+ current[key] = {};
160
+ }
161
+ current = current[key];
162
+ }
163
+ current[keys[keys.length - 1]] = value;
164
+ }
165
+ /**
166
+ * Deep diff with nested paths
167
+ */
168
+ static deepDiff(oldObj, newObj, prefix = "") {
169
+ const result = { changed: [], added: [], removed: [] };
170
+ if (typeof oldObj !== "object" ||
171
+ oldObj === null ||
172
+ typeof newObj !== "object" ||
173
+ newObj === null) {
174
+ if (!this.deepEqual(oldObj, newObj)) {
175
+ result.changed.push(prefix || "root");
176
+ }
177
+ return result;
178
+ }
179
+ const oldKeys = new Set(Object.keys(oldObj));
180
+ const newKeys = new Set(Object.keys(newObj));
181
+ for (const key of oldKeys) {
182
+ const path = prefix ? `${prefix}.${key}` : key;
183
+ if (!newKeys.has(key)) {
184
+ result.removed.push(path);
185
+ }
186
+ else {
187
+ const oldVal = oldObj[key];
188
+ const newVal = newObj[key];
189
+ if (typeof oldVal === "object" &&
190
+ oldVal !== null &&
191
+ typeof newVal === "object" &&
192
+ newVal !== null) {
193
+ const nested = this.deepDiff(oldVal, newVal, path);
194
+ result.changed.push(...nested.changed);
195
+ result.added.push(...nested.added);
196
+ result.removed.push(...nested.removed);
197
+ }
198
+ else if (!this.deepEqual(oldVal, newVal)) {
199
+ result.changed.push(path);
200
+ }
201
+ }
202
+ }
203
+ for (const key of newKeys) {
204
+ if (!oldKeys.has(key)) {
205
+ const path = prefix ? `${prefix}.${key}` : key;
206
+ result.added.push(path);
207
+ }
208
+ }
209
+ return result;
210
+ }
211
+ /**
212
+ * Merge two objects with conflict resolution
213
+ */
214
+ static merge(obj1, obj2, strategy = "merge") {
215
+ if (strategy === "first")
216
+ return { ...obj1 };
217
+ if (strategy === "second")
218
+ return { ...obj2 };
219
+ const result = { ...obj1 };
220
+ for (const key of Object.keys(obj2)) {
221
+ const val1 = result[key];
222
+ const val2 = obj2[key];
223
+ if (typeof val1 === "object" &&
224
+ val1 !== null &&
225
+ typeof val2 === "object" &&
226
+ val2 !== null) {
227
+ result[key] = this.merge(val1, val2);
228
+ }
229
+ else {
230
+ result[key] = val2;
231
+ }
232
+ }
233
+ return result;
234
+ }
235
+ /**
236
+ * Get summary of changes
237
+ */
238
+ static getSummary(diff) {
239
+ const parts = [];
240
+ if (diff.changed.length > 0)
241
+ parts.push(`${diff.changed.length} changed`);
242
+ if (diff.added.length > 0)
243
+ parts.push(`${diff.added.length} added`);
244
+ if (diff.removed.length > 0)
245
+ parts.push(`${diff.removed.length} removed`);
246
+ return parts.join(", ") || "no changes";
247
+ }
248
+ }
249
+ //# sourceMappingURL=DiffUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffUtils.js","sourceRoot":"","sources":["../../../src/utils/helpers/DiffUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare class EnvManager {
2
+ private readonly isBrowser;
3
+ get(name: string): string | undefined;
4
+ require(name: string): string;
5
+ isProd(): boolean;
6
+ }
7
+ //# sourceMappingURL=EnvManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvManager.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/EnvManager.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAE3D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKrC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAM7B,MAAM;CAIT"}
@@ -0,0 +1,19 @@
1
+ export class EnvManager {
2
+ isBrowser = typeof window !== "undefined";
3
+ get(name) {
4
+ if (this.isBrowser)
5
+ return import.meta?.env?.[name];
6
+ return process?.env?.[name];
7
+ }
8
+ require(name) {
9
+ const value = this.get(name);
10
+ if (!value)
11
+ throw new Error(`Missing environment variable: ${name}`);
12
+ return value;
13
+ }
14
+ isProd() {
15
+ const mode = this.get("NODE_ENV") || this.get("MODE");
16
+ return mode === "production";
17
+ }
18
+ }
19
+ //# sourceMappingURL=EnvManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvManager.js","sourceRoot":"","sources":["../../../src/utils/helpers/EnvManager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACF,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IAE3D,GAAG,CAAC,IAAY;QACZ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAQ,MAAM,CAAC,IAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtD,OAAO,IAAI,KAAK,YAAY,CAAC;IACjC,CAAC;CACJ"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Event emitter for pub/sub pattern
3
+ * Framework-agnostic event system
4
+ */
5
+ export type EventListener<T = unknown> = (data: T) => void | Promise<void>;
6
+ export type EventListenerWithError<T = unknown> = (data: T, error?: Error) => void | Promise<void>;
7
+ export interface EventEmitterOptions {
8
+ maxListeners?: number;
9
+ captureRejections?: boolean;
10
+ }
11
+ /**
12
+ * Event emitter for pub/sub communication
13
+ */
14
+ export declare class EventEmitter<Events extends Record<string, unknown> = Record<string, unknown>> {
15
+ private eventMap;
16
+ private onceMap;
17
+ private maxListeners;
18
+ private captureRejections;
19
+ private errorHandlers;
20
+ constructor(options?: EventEmitterOptions);
21
+ /**
22
+ * Register event listener
23
+ */
24
+ on<K extends keyof Events>(event: K, listener: EventListener<Events[K]>): this;
25
+ /**
26
+ * Register one-time event listener
27
+ */
28
+ once<K extends keyof Events>(event: K, listener: EventListener<Events[K]>): this;
29
+ /**
30
+ * Remove event listener
31
+ */
32
+ off<K extends keyof Events>(event: K, listener: EventListener<Events[K]>): this;
33
+ /**
34
+ * Remove all listeners for event
35
+ */
36
+ removeAllListeners<K extends keyof Events>(event?: K): this;
37
+ /**
38
+ * Emit event
39
+ */
40
+ emit<K extends keyof Events>(event: K, data: Events[K]): Promise<boolean>;
41
+ /**
42
+ * Emit event synchronously
43
+ */
44
+ emitSync<K extends keyof Events>(event: K, data: Events[K]): boolean;
45
+ /**
46
+ * Register error handler
47
+ */
48
+ onError(listener: EventListenerWithError): this;
49
+ /**
50
+ * Handle error
51
+ */
52
+ private handleError;
53
+ /**
54
+ * Get listener count for event
55
+ */
56
+ listenerCount<K extends keyof Events>(event: K): number;
57
+ /**
58
+ * Get all listeners for event
59
+ */
60
+ getListeners<K extends keyof Events>(event: K): EventListener<Events[K]>[];
61
+ /**
62
+ * Get all event names
63
+ */
64
+ eventNames(): (keyof Events)[];
65
+ /**
66
+ * Set max listeners
67
+ */
68
+ setMaxListeners(n: number): this;
69
+ /**
70
+ * Get max listeners
71
+ */
72
+ getMaxListeners(): number;
73
+ }
74
+ /**
75
+ * Factory function for creating event emitters
76
+ */
77
+ export declare function createEventEmitter<Events extends Record<string, unknown> = Record<string, unknown>>(options?: EventEmitterOptions): EventEmitter<Events>;
78
+ //# sourceMappingURL=EventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/EventEmitter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3E,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC9C,IAAI,EAAE,CAAC,EACP,KAAK,CAAC,EAAE,KAAK,KACZ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,YAAY,CACrB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEhE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,aAAa,CAA0C;gBAEnD,OAAO,GAAE,mBAAwB;IAK7C;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,MAAM,EACrB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GACnC,IAAI;IAkBP;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EACvB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GACnC,IAAI;IAuBP;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EACtB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GACnC,IAAI;IAcP;;OAEG;IACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI;IAW3D;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAC7B,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,OAAO,CAAC;IAqCnB;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;IAqBpE;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAK/C;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM;IAKvD;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IAO1E;;OAEG;IACH,UAAU,IAAI,CAAC,MAAM,MAAM,CAAC,EAAE;IAI9B;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,eAAe,IAAI,MAAM;CAG5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAErD"}