@edgebasejs/react-native 0.1.8 → 0.1.9

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 (145) hide show
  1. package/README.md +18 -0
  2. package/dist/client-core/src/index.d.ts +4 -0
  3. package/dist/client-core/src/index.d.ts.map +1 -1
  4. package/dist/client-core/src/index.js +4 -0
  5. package/dist/client-core/src/index.js.map +1 -1
  6. package/dist/client-core/src/mutations/batch-processor-client.d.ts +67 -0
  7. package/dist/client-core/src/mutations/batch-processor-client.d.ts.map +1 -0
  8. package/dist/client-core/src/mutations/batch-processor-client.js +64 -0
  9. package/dist/client-core/src/mutations/batch-processor-client.js.map +1 -0
  10. package/dist/client-core/src/mutations/transaction-hook.d.ts +80 -0
  11. package/dist/client-core/src/mutations/transaction-hook.d.ts.map +1 -0
  12. package/dist/client-core/src/mutations/transaction-hook.js +204 -0
  13. package/dist/client-core/src/mutations/transaction-hook.js.map +1 -0
  14. package/dist/client-core/src/realtime/realtime-sync-manager.d.ts +55 -0
  15. package/dist/client-core/src/realtime/realtime-sync-manager.d.ts.map +1 -0
  16. package/dist/client-core/src/realtime/realtime-sync-manager.js +208 -0
  17. package/dist/client-core/src/realtime/realtime-sync-manager.js.map +1 -0
  18. package/dist/client-core/src/realtime/subscription-handler.d.ts +74 -0
  19. package/dist/client-core/src/realtime/subscription-handler.d.ts.map +1 -0
  20. package/dist/client-core/src/realtime/subscription-handler.js +224 -0
  21. package/dist/client-core/src/realtime/subscription-handler.js.map +1 -0
  22. package/dist/client-core/src/sync/sync-engine.d.ts +10 -0
  23. package/dist/client-core/src/sync/sync-engine.d.ts.map +1 -1
  24. package/dist/client-core/src/sync/sync-engine.js +37 -5
  25. package/dist/client-core/src/sync/sync-engine.js.map +1 -1
  26. package/dist/client-react-native/src/hooks/index.d.ts +10 -0
  27. package/dist/client-react-native/src/hooks/index.d.ts.map +1 -1
  28. package/dist/client-react-native/src/hooks/index.js +8 -0
  29. package/dist/client-react-native/src/hooks/index.js.map +1 -1
  30. package/dist/client-react-native/src/hooks/use-audit.d.ts +65 -0
  31. package/dist/client-react-native/src/hooks/use-audit.d.ts.map +1 -0
  32. package/dist/client-react-native/src/hooks/use-audit.js +201 -0
  33. package/dist/client-react-native/src/hooks/use-audit.js.map +1 -0
  34. package/dist/client-react-native/src/hooks/use-batch-mutation.d.ts +56 -0
  35. package/dist/client-react-native/src/hooks/use-batch-mutation.d.ts.map +1 -0
  36. package/dist/client-react-native/src/hooks/use-batch-mutation.js +95 -0
  37. package/dist/client-react-native/src/hooks/use-batch-mutation.js.map +1 -0
  38. package/dist/client-react-native/src/hooks/use-encryption.d.ts +45 -0
  39. package/dist/client-react-native/src/hooks/use-encryption.d.ts.map +1 -0
  40. package/dist/client-react-native/src/hooks/use-encryption.js +143 -0
  41. package/dist/client-react-native/src/hooks/use-encryption.js.map +1 -0
  42. package/dist/client-react-native/src/hooks/use-file-manager.d.ts +38 -0
  43. package/dist/client-react-native/src/hooks/use-file-manager.d.ts.map +1 -0
  44. package/dist/client-react-native/src/hooks/use-file-manager.js +174 -0
  45. package/dist/client-react-native/src/hooks/use-file-manager.js.map +1 -0
  46. package/dist/client-react-native/src/hooks/use-file-upload.d.ts +34 -0
  47. package/dist/client-react-native/src/hooks/use-file-upload.d.ts.map +1 -0
  48. package/dist/client-react-native/src/hooks/use-file-upload.js +85 -0
  49. package/dist/client-react-native/src/hooks/use-file-upload.js.map +1 -0
  50. package/dist/client-react-native/src/hooks/use-mutation.d.ts.map +1 -1
  51. package/dist/client-react-native/src/hooks/use-mutation.js +34 -6
  52. package/dist/client-react-native/src/hooks/use-mutation.js.map +1 -1
  53. package/dist/client-react-native/src/hooks/use-search.d.ts +33 -0
  54. package/dist/client-react-native/src/hooks/use-search.d.ts.map +1 -0
  55. package/dist/client-react-native/src/hooks/use-search.js +174 -0
  56. package/dist/client-react-native/src/hooks/use-search.js.map +1 -0
  57. package/dist/client-react-native/src/hooks/use-subscribe.d.ts +14 -0
  58. package/dist/client-react-native/src/hooks/use-subscribe.d.ts.map +1 -0
  59. package/dist/client-react-native/src/hooks/use-subscribe.js +165 -0
  60. package/dist/client-react-native/src/hooks/use-subscribe.js.map +1 -0
  61. package/dist/client-react-native/src/hooks/use-transaction.d.ts +27 -0
  62. package/dist/client-react-native/src/hooks/use-transaction.d.ts.map +1 -0
  63. package/dist/client-react-native/src/hooks/use-transaction.js +160 -0
  64. package/dist/client-react-native/src/hooks/use-transaction.js.map +1 -0
  65. package/dist/client-react-native/src/provider.d.ts +5 -2
  66. package/dist/client-react-native/src/provider.d.ts.map +1 -1
  67. package/dist/client-react-native/src/provider.js +23 -23
  68. package/dist/client-react-native/src/provider.js.map +1 -1
  69. package/dist/core/src/access-rules/column-security.d.ts +80 -0
  70. package/dist/core/src/access-rules/column-security.d.ts.map +1 -0
  71. package/dist/core/src/access-rules/column-security.js +191 -0
  72. package/dist/core/src/access-rules/column-security.js.map +1 -0
  73. package/dist/core/src/access-rules/engine.d.ts +26 -0
  74. package/dist/core/src/access-rules/engine.d.ts.map +1 -0
  75. package/dist/core/src/access-rules/engine.js +76 -0
  76. package/dist/core/src/access-rules/engine.js.map +1 -0
  77. package/dist/core/src/access-rules/index.d.ts +3 -0
  78. package/dist/core/src/access-rules/index.d.ts.map +1 -0
  79. package/dist/core/src/access-rules/index.js +3 -0
  80. package/dist/core/src/access-rules/index.js.map +1 -0
  81. package/dist/core/src/audit/audit-manager.d.ts +108 -0
  82. package/dist/core/src/audit/audit-manager.d.ts.map +1 -0
  83. package/dist/core/src/audit/audit-manager.js +265 -0
  84. package/dist/core/src/audit/audit-manager.js.map +1 -0
  85. package/dist/core/src/auth/auth-service.d.ts +71 -0
  86. package/dist/core/src/auth/auth-service.d.ts.map +1 -0
  87. package/dist/core/src/auth/auth-service.js +177 -0
  88. package/dist/core/src/auth/auth-service.js.map +1 -0
  89. package/dist/core/src/auth/index.d.ts +4 -0
  90. package/dist/core/src/auth/index.d.ts.map +1 -0
  91. package/dist/core/src/auth/index.js +4 -0
  92. package/dist/core/src/auth/index.js.map +1 -0
  93. package/dist/core/src/encryption/encryption-manager.d.ts +97 -0
  94. package/dist/core/src/encryption/encryption-manager.d.ts.map +1 -0
  95. package/dist/core/src/encryption/encryption-manager.js +224 -0
  96. package/dist/core/src/encryption/encryption-manager.js.map +1 -0
  97. package/dist/core/src/index.d.ts +16 -0
  98. package/dist/core/src/index.d.ts.map +1 -0
  99. package/dist/core/src/index.js +16 -0
  100. package/dist/core/src/index.js.map +1 -0
  101. package/dist/core/src/realtime/change-notifier.d.ts +50 -0
  102. package/dist/core/src/realtime/change-notifier.d.ts.map +1 -0
  103. package/dist/core/src/realtime/change-notifier.js +145 -0
  104. package/dist/core/src/realtime/change-notifier.js.map +1 -0
  105. package/dist/core/src/realtime/message-types.d.ts +39 -0
  106. package/dist/core/src/realtime/message-types.d.ts.map +1 -0
  107. package/dist/core/src/realtime/message-types.js +5 -0
  108. package/dist/core/src/realtime/message-types.js.map +1 -0
  109. package/dist/core/src/realtime/subscription-manager.d.ts +67 -0
  110. package/dist/core/src/realtime/subscription-manager.d.ts.map +1 -0
  111. package/dist/core/src/realtime/subscription-manager.js +229 -0
  112. package/dist/core/src/realtime/subscription-manager.js.map +1 -0
  113. package/dist/core/src/search/search-manager.d.ts +93 -0
  114. package/dist/core/src/search/search-manager.d.ts.map +1 -0
  115. package/dist/core/src/search/search-manager.js +258 -0
  116. package/dist/core/src/search/search-manager.js.map +1 -0
  117. package/dist/core/src/storage/file-manager.d.ts +138 -0
  118. package/dist/core/src/storage/file-manager.d.ts.map +1 -0
  119. package/dist/core/src/storage/file-manager.js +224 -0
  120. package/dist/core/src/storage/file-manager.js.map +1 -0
  121. package/dist/core/src/sync/batch-processor.d.ts +97 -0
  122. package/dist/core/src/sync/batch-processor.d.ts.map +1 -0
  123. package/dist/core/src/sync/batch-processor.js +313 -0
  124. package/dist/core/src/sync/batch-processor.js.map +1 -0
  125. package/dist/core/src/sync/csv-processor.d.ts +66 -0
  126. package/dist/core/src/sync/csv-processor.d.ts.map +1 -0
  127. package/dist/core/src/sync/csv-processor.js +223 -0
  128. package/dist/core/src/sync/csv-processor.js.map +1 -0
  129. package/dist/core/src/sync/index.d.ts +3 -0
  130. package/dist/core/src/sync/index.d.ts.map +1 -0
  131. package/dist/core/src/sync/index.js +3 -0
  132. package/dist/core/src/sync/index.js.map +1 -0
  133. package/dist/core/src/sync/sync-engine.d.ts +68 -0
  134. package/dist/core/src/sync/sync-engine.d.ts.map +1 -0
  135. package/dist/core/src/sync/sync-engine.js +317 -0
  136. package/dist/core/src/sync/sync-engine.js.map +1 -0
  137. package/dist/core/src/sync/transaction-manager.d.ts +83 -0
  138. package/dist/core/src/sync/transaction-manager.d.ts.map +1 -0
  139. package/dist/core/src/sync/transaction-manager.js +227 -0
  140. package/dist/core/src/sync/transaction-manager.js.map +1 -0
  141. package/dist/core/src/webhooks/webhook-manager.d.ts +137 -0
  142. package/dist/core/src/webhooks/webhook-manager.d.ts.map +1 -0
  143. package/dist/core/src/webhooks/webhook-manager.js +334 -0
  144. package/dist/core/src/webhooks/webhook-manager.js.map +1 -0
  145. package/package.json +4 -6
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Audit trail manager for change tracking and compliance
3
+ * Tracks all data changes with user attribution and timestamps
4
+ */
5
+ /**
6
+ * Audit manager for tracking data changes
7
+ */
8
+ export class AuditManager {
9
+ constructor(db, options) {
10
+ this.db = db;
11
+ this.options = {
12
+ trackBefore: options?.trackBefore !== false,
13
+ trackAfter: options?.trackAfter !== false,
14
+ trackChanges: options?.trackChanges !== false,
15
+ excludeFields: options?.excludeFields || ['password', 'password_hash', 'secret', 'token'],
16
+ maxRetentionDays: options?.maxRetentionDays || 90,
17
+ };
18
+ }
19
+ /**
20
+ * Log a data change
21
+ */
22
+ async logChange(user, entity, recordId, operation, before, after, metadata) {
23
+ const now = Date.now();
24
+ const auditId = `aud_${now}_${Math.random().toString(36).substring(2, 15)}`;
25
+ // Filter sensitive fields
26
+ const filteredBefore = before ? this.filterSensitiveFields(before) : undefined;
27
+ const filteredAfter = after ? this.filterSensitiveFields(after) : undefined;
28
+ // Calculate field-level changes for updates
29
+ let changes;
30
+ if (this.options.trackChanges && operation === 'update' && filteredBefore && filteredAfter) {
31
+ changes = this.calculateChanges(filteredBefore, filteredAfter);
32
+ }
33
+ const auditLog = {
34
+ id: auditId,
35
+ userId: user.id,
36
+ entity,
37
+ recordId,
38
+ operation,
39
+ before: this.options.trackBefore && (operation === 'update' || operation === 'delete') ? filteredBefore : undefined,
40
+ after: this.options.trackAfter && (operation === 'create' || operation === 'update') ? filteredAfter : undefined,
41
+ changes,
42
+ metadata,
43
+ createdAt: now,
44
+ };
45
+ // Store in database
46
+ await this.db.run(`INSERT INTO audit_logs (id, user_id, entity, record_id, operation, before_data, after_data, changes, metadata, created_at)
47
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
48
+ auditLog.id,
49
+ auditLog.userId,
50
+ auditLog.entity,
51
+ auditLog.recordId,
52
+ auditLog.operation,
53
+ auditLog.before ? JSON.stringify(auditLog.before) : null,
54
+ auditLog.after ? JSON.stringify(auditLog.after) : null,
55
+ auditLog.changes ? JSON.stringify(auditLog.changes) : null,
56
+ auditLog.metadata ? JSON.stringify(auditLog.metadata) : null,
57
+ auditLog.createdAt,
58
+ ]);
59
+ return auditLog;
60
+ }
61
+ /**
62
+ * Query audit logs
63
+ */
64
+ async queryLogs(query) {
65
+ const limit = query.limit || 50;
66
+ const offset = query.offset || 0;
67
+ // Build WHERE clause
68
+ const conditions = [];
69
+ const params = [];
70
+ if (query.entity) {
71
+ conditions.push('entity = ?');
72
+ params.push(query.entity);
73
+ }
74
+ if (query.recordId) {
75
+ conditions.push('record_id = ?');
76
+ params.push(query.recordId);
77
+ }
78
+ if (query.userId) {
79
+ conditions.push('user_id = ?');
80
+ params.push(query.userId);
81
+ }
82
+ if (query.operation) {
83
+ conditions.push('operation = ?');
84
+ params.push(query.operation);
85
+ }
86
+ if (query.startDate) {
87
+ conditions.push('created_at >= ?');
88
+ params.push(query.startDate);
89
+ }
90
+ if (query.endDate) {
91
+ conditions.push('created_at <= ?');
92
+ params.push(query.endDate);
93
+ }
94
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
95
+ // Get logs
96
+ const sql = `
97
+ SELECT * FROM audit_logs
98
+ ${whereClause}
99
+ ORDER BY created_at DESC
100
+ LIMIT ? OFFSET ?
101
+ `;
102
+ const rows = await this.db.getAll(sql, [...params, limit + 1, offset]);
103
+ // Check if there are more results
104
+ const hasMore = rows.length > limit;
105
+ const trimmedRows = hasMore ? rows.slice(0, limit) : rows;
106
+ // Get total count
107
+ const countSql = `SELECT COUNT(*) as total FROM audit_logs ${whereClause}`;
108
+ const countResult = await this.db.getOne(countSql, params);
109
+ const total = countResult?.total || 0;
110
+ // Parse JSON fields
111
+ const logs = trimmedRows.map((row) => ({
112
+ id: row.id,
113
+ userId: row.user_id,
114
+ entity: row.entity,
115
+ recordId: row.record_id,
116
+ operation: row.operation,
117
+ before: row.before_data ? JSON.parse(row.before_data) : undefined,
118
+ after: row.after_data ? JSON.parse(row.after_data) : undefined,
119
+ changes: row.changes ? JSON.parse(row.changes) : undefined,
120
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
121
+ createdAt: row.created_at,
122
+ }));
123
+ return {
124
+ logs,
125
+ total,
126
+ hasMore,
127
+ };
128
+ }
129
+ /**
130
+ * Get audit log by ID
131
+ */
132
+ async getLog(auditId) {
133
+ const row = await this.db.getOne('SELECT * FROM audit_logs WHERE id = ?', [auditId]);
134
+ if (!row) {
135
+ return null;
136
+ }
137
+ return {
138
+ id: row.id,
139
+ userId: row.user_id,
140
+ entity: row.entity,
141
+ recordId: row.record_id,
142
+ operation: row.operation,
143
+ before: row.before_data ? JSON.parse(row.before_data) : undefined,
144
+ after: row.after_data ? JSON.parse(row.after_data) : undefined,
145
+ changes: row.changes ? JSON.parse(row.changes) : undefined,
146
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
147
+ createdAt: row.created_at,
148
+ };
149
+ }
150
+ /**
151
+ * Get audit history for a specific record
152
+ */
153
+ async getRecordHistory(entity, recordId) {
154
+ const rows = await this.db.getAll('SELECT * FROM audit_logs WHERE entity = ? AND record_id = ? ORDER BY created_at DESC', [entity, recordId]);
155
+ return rows.map((row) => ({
156
+ id: row.id,
157
+ userId: row.user_id,
158
+ entity: row.entity,
159
+ recordId: row.record_id,
160
+ operation: row.operation,
161
+ before: row.before_data ? JSON.parse(row.before_data) : undefined,
162
+ after: row.after_data ? JSON.parse(row.after_data) : undefined,
163
+ changes: row.changes ? JSON.parse(row.changes) : undefined,
164
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
165
+ createdAt: row.created_at,
166
+ }));
167
+ }
168
+ /**
169
+ * Get summary statistics for audit logs
170
+ */
171
+ async getStatistics(options) {
172
+ const conditions = [];
173
+ const params = [];
174
+ if (options?.entity) {
175
+ conditions.push('entity = ?');
176
+ params.push(options.entity);
177
+ }
178
+ if (options?.userId) {
179
+ conditions.push('user_id = ?');
180
+ params.push(options.userId);
181
+ }
182
+ if (options?.startDate) {
183
+ conditions.push('created_at >= ?');
184
+ params.push(options.startDate);
185
+ }
186
+ if (options?.endDate) {
187
+ conditions.push('created_at <= ?');
188
+ params.push(options.endDate);
189
+ }
190
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
191
+ // Total changes
192
+ const totalResult = await this.db.getOne(`SELECT COUNT(*) as total FROM audit_logs ${whereClause}`, params);
193
+ const totalChanges = totalResult?.total || 0;
194
+ // Changes by operation
195
+ const operationRows = await this.db.getAll(`SELECT operation, COUNT(*) as count FROM audit_logs ${whereClause} GROUP BY operation`, params);
196
+ const changesByOperation = operationRows.map((row) => ({
197
+ operation: row.operation,
198
+ count: row.count,
199
+ }));
200
+ // Changes by entity
201
+ const entityRows = await this.db.getAll(`SELECT entity, COUNT(*) as count FROM audit_logs ${whereClause} GROUP BY entity ORDER BY count DESC LIMIT 10`, params);
202
+ const changesByEntity = entityRows.map((row) => ({
203
+ entity: row.entity,
204
+ count: row.count,
205
+ }));
206
+ // Changes by user
207
+ const userRows = await this.db.getAll(`SELECT user_id, COUNT(*) as count FROM audit_logs ${whereClause} GROUP BY user_id ORDER BY count DESC LIMIT 10`, params);
208
+ const changesByUser = userRows.map((row) => ({
209
+ userId: row.user_id,
210
+ count: row.count,
211
+ }));
212
+ return {
213
+ totalChanges,
214
+ changesByOperation,
215
+ changesByEntity,
216
+ changesByUser,
217
+ };
218
+ }
219
+ /**
220
+ * Clean up old audit logs based on retention policy
221
+ */
222
+ async cleanupOldLogs() {
223
+ const cutoffDate = Date.now() - this.options.maxRetentionDays * 24 * 60 * 60 * 1000;
224
+ const result = await this.db.getOne('SELECT COUNT(*) as count FROM audit_logs WHERE created_at < ?', [cutoffDate]);
225
+ const count = result?.count || 0;
226
+ if (count > 0) {
227
+ await this.db.run('DELETE FROM audit_logs WHERE created_at < ?', [cutoffDate]);
228
+ }
229
+ return count;
230
+ }
231
+ /**
232
+ * Filter sensitive fields from data
233
+ */
234
+ filterSensitiveFields(data) {
235
+ const filtered = {};
236
+ for (const [key, value] of Object.entries(data)) {
237
+ if (!this.options.excludeFields.includes(key.toLowerCase())) {
238
+ filtered[key] = value;
239
+ }
240
+ }
241
+ return filtered;
242
+ }
243
+ /**
244
+ * Calculate field-level changes between before and after states
245
+ */
246
+ calculateChanges(before, after) {
247
+ const changes = [];
248
+ // Check for changed and new fields
249
+ for (const [field, afterValue] of Object.entries(after)) {
250
+ const beforeValue = before[field];
251
+ // Compare values (handle different types)
252
+ if (JSON.stringify(beforeValue) !== JSON.stringify(afterValue)) {
253
+ changes.push({ field, before: beforeValue, after: afterValue });
254
+ }
255
+ }
256
+ // Check for deleted fields
257
+ for (const field of Object.keys(before)) {
258
+ if (!(field in after)) {
259
+ changes.push({ field, before: before[field], after: undefined });
260
+ }
261
+ }
262
+ return changes;
263
+ }
264
+ }
265
+ //# sourceMappingURL=audit-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-manager.js","sourceRoot":"","sources":["../../../../../core/src/audit/audit-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import type { User, AuthTokens, LoginRequest, RegisterRequest } from '@edgebasejs/types';
3
+ export declare const LoginSchema: z.ZodObject<{
4
+ email: z.ZodString;
5
+ password: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ email: string;
8
+ password: string;
9
+ }, {
10
+ email: string;
11
+ password: string;
12
+ }>;
13
+ export declare const RegisterSchema: z.ZodObject<{
14
+ email: z.ZodString;
15
+ password: z.ZodString;
16
+ }, "strip", z.ZodTypeAny, {
17
+ email: string;
18
+ password: string;
19
+ }, {
20
+ email: string;
21
+ password: string;
22
+ }>;
23
+ /**
24
+ * Password hashing utilities
25
+ * For D1/Cloudflare, we use PBKDF2 (built-in Web Crypto API)
26
+ */
27
+ export declare function hashPassword(password: string): Promise<string>;
28
+ /**
29
+ * Verify password against hash
30
+ */
31
+ export declare function verifyPassword(password: string, hash: string): Promise<boolean>;
32
+ /**
33
+ * JWT token generation and verification
34
+ */
35
+ export interface JWTPayload {
36
+ userId: string;
37
+ email: string;
38
+ iat: number;
39
+ exp: number;
40
+ type: 'access' | 'refresh';
41
+ }
42
+ /**
43
+ * Create JWT token (simple implementation without external library)
44
+ * Note: In production, consider using a library like `jose` or `jsonwebtoken`
45
+ */
46
+ export declare function createJWT(payload: Omit<JWTPayload, 'iat' | 'exp'>, secret: string, expiresIn: number): string;
47
+ /**
48
+ * Parse JWT token (simple implementation)
49
+ */
50
+ export declare function parseJWT(token: string): JWTPayload | null;
51
+ /**
52
+ * Authentication service
53
+ */
54
+ export declare class AuthService {
55
+ /**
56
+ * Register a new user
57
+ */
58
+ static registerUser(request: RegisterRequest, onCreateUser: (user: User) => Promise<void>): Promise<User>;
59
+ /**
60
+ * Login user
61
+ */
62
+ static loginUser(request: LoginRequest, onGetUser: (email: string) => Promise<User & {
63
+ passwordHash: string;
64
+ }>, secret: string): Promise<AuthTokens>;
65
+ /**
66
+ * Refresh access token
67
+ */
68
+ static refreshToken(refreshToken: string, secret: string): string;
69
+ }
70
+ export default AuthService;
71
+ //# sourceMappingURL=auth-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../../../core/src/auth/auth-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzF,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BpE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CrF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAkBzD;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;WACU,YAAY,CACvB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAuBhB;;OAEG;WACU,SAAS,CACpB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,EACtE,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC;IAiCtB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;CAYlE;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,177 @@
1
+ // Authentication service
2
+ // Handles password hashing, JWT generation, and token management
3
+ import { z } from 'zod';
4
+ // Validation schemas
5
+ export const LoginSchema = z.object({
6
+ email: z.string().email('Invalid email'),
7
+ password: z.string().min(8, 'Password must be at least 8 characters'),
8
+ });
9
+ export const RegisterSchema = z.object({
10
+ email: z.string().email('Invalid email'),
11
+ password: z.string().min(8, 'Password must be at least 8 characters'),
12
+ });
13
+ /**
14
+ * Password hashing utilities
15
+ * For D1/Cloudflare, we use PBKDF2 (built-in Web Crypto API)
16
+ */
17
+ export async function hashPassword(password) {
18
+ // Using PBKDF2 with Web Crypto API available in Cloudflare Workers
19
+ const encoder = new TextEncoder();
20
+ const data = encoder.encode(password);
21
+ const salt = crypto.getRandomValues(new Uint8Array(16));
22
+ const key = await crypto.subtle.importKey('raw', data, { name: 'PBKDF2' }, false, ['deriveBits']);
23
+ const bits = await crypto.subtle.deriveBits({
24
+ name: 'PBKDF2',
25
+ salt: salt,
26
+ iterations: 100000,
27
+ hash: 'SHA-256',
28
+ }, key, 256);
29
+ // Combine salt + hash and encode as hex
30
+ const hashArray = new Uint8Array(bits);
31
+ const saltHex = Array.from(salt)
32
+ .map((b) => b.toString(16).padStart(2, '0'))
33
+ .join('');
34
+ const hashHex = Array.from(hashArray)
35
+ .map((b) => b.toString(16).padStart(2, '0'))
36
+ .join('');
37
+ return `pbkdf2:${saltHex}:${hashHex}`;
38
+ }
39
+ /**
40
+ * Verify password against hash
41
+ */
42
+ export async function verifyPassword(password, hash) {
43
+ if (!hash.startsWith('pbkdf2:')) {
44
+ return false;
45
+ }
46
+ const parts = hash.split(':');
47
+ if (parts.length !== 3) {
48
+ return false;
49
+ }
50
+ const [, saltHex, storedHashHex] = parts;
51
+ try {
52
+ const encoder = new TextEncoder();
53
+ const data = encoder.encode(password);
54
+ // Convert hex salt back to bytes
55
+ const salt = new Uint8Array(saltHex.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
56
+ const key = await crypto.subtle.importKey('raw', data, { name: 'PBKDF2' }, false, [
57
+ 'deriveBits',
58
+ ]);
59
+ const bits = await crypto.subtle.deriveBits({
60
+ name: 'PBKDF2',
61
+ salt: salt,
62
+ iterations: 100000,
63
+ hash: 'SHA-256',
64
+ }, key, 256);
65
+ const hashArray = new Uint8Array(bits);
66
+ const computedHashHex = Array.from(hashArray)
67
+ .map((b) => b.toString(16).padStart(2, '0'))
68
+ .join('');
69
+ return computedHashHex === storedHashHex;
70
+ }
71
+ catch (error) {
72
+ console.error('Password verification error:', error);
73
+ return false;
74
+ }
75
+ }
76
+ /**
77
+ * Create JWT token (simple implementation without external library)
78
+ * Note: In production, consider using a library like `jose` or `jsonwebtoken`
79
+ */
80
+ export function createJWT(payload, secret, expiresIn) {
81
+ const header = {
82
+ alg: 'HS256',
83
+ typ: 'JWT',
84
+ };
85
+ const now = Math.floor(Date.now() / 1000);
86
+ const jwtPayload = {
87
+ ...payload,
88
+ iat: now,
89
+ exp: now + expiresIn,
90
+ };
91
+ const headerEncoded = btoa(JSON.stringify(header));
92
+ const payloadEncoded = btoa(JSON.stringify(jwtPayload));
93
+ // For now, return a placeholder token with payload info
94
+ // Full HMAC implementation would require crypto-js or jose library
95
+ return `${headerEncoded}.${payloadEncoded}.signature-placeholder`;
96
+ }
97
+ /**
98
+ * Parse JWT token (simple implementation)
99
+ */
100
+ export function parseJWT(token) {
101
+ try {
102
+ const parts = token.split('.');
103
+ if (parts.length !== 3) {
104
+ return null;
105
+ }
106
+ const payload = JSON.parse(atob(parts[1]));
107
+ const now = Math.floor(Date.now() / 1000);
108
+ if (payload.exp && payload.exp < now) {
109
+ return null;
110
+ }
111
+ return payload;
112
+ }
113
+ catch (error) {
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Authentication service
119
+ */
120
+ export class AuthService {
121
+ /**
122
+ * Register a new user
123
+ */
124
+ static async registerUser(request, onCreateUser) {
125
+ // Validate input
126
+ const validated = RegisterSchema.parse(request);
127
+ // Hash password
128
+ const passwordHash = await hashPassword(validated.password);
129
+ // Create user
130
+ const userId = `user_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
131
+ const now = Date.now();
132
+ const user = {
133
+ id: userId,
134
+ email: validated.email,
135
+ createdAt: now,
136
+ updatedAt: now,
137
+ };
138
+ await onCreateUser(user);
139
+ return user;
140
+ }
141
+ /**
142
+ * Login user
143
+ */
144
+ static async loginUser(request, onGetUser, secret) {
145
+ // Validate input
146
+ const validated = LoginSchema.parse(request);
147
+ // Get user
148
+ const user = await onGetUser(validated.email);
149
+ // Verify password
150
+ const passwordValid = await verifyPassword(validated.password, user.passwordHash);
151
+ if (!passwordValid) {
152
+ throw new Error('Invalid credentials');
153
+ }
154
+ // Generate tokens
155
+ const accessToken = createJWT({ userId: user.id, email: user.email, type: 'access' }, secret, 3600 // 1 hour
156
+ );
157
+ const refreshToken = createJWT({ userId: user.id, email: user.email, type: 'refresh' }, secret, 604800 // 7 days
158
+ );
159
+ return {
160
+ accessToken,
161
+ refreshToken,
162
+ expiresIn: 3600,
163
+ };
164
+ }
165
+ /**
166
+ * Refresh access token
167
+ */
168
+ static refreshToken(refreshToken, secret) {
169
+ const payload = parseJWT(refreshToken);
170
+ if (!payload || payload.type !== 'refresh') {
171
+ throw new Error('Invalid refresh token');
172
+ }
173
+ return createJWT({ userId: payload.userId, email: payload.email, type: 'access' }, secret, 3600);
174
+ }
175
+ }
176
+ export default AuthService;
177
+ //# sourceMappingURL=auth-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../../../../core/src/auth/auth-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './auth-service';
2
+ export { default as AuthService } from './auth-service';
3
+ export { createJWT, parseJWT, verifyPassword, hashPassword } from './auth-service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './auth-service';
2
+ export { default as AuthService } from './auth-service';
3
+ export { createJWT, parseJWT, verifyPassword, hashPassword } from './auth-service';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core/src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Encryption manager for field-level data encryption
3
+ * Handles encryption/decryption of sensitive fields at rest
4
+ */
5
+ export interface EncryptionConfig {
6
+ entity: string;
7
+ fields: string[];
8
+ algorithm?: 'AES-GCM' | 'AES-CBC';
9
+ keyRotation?: boolean;
10
+ }
11
+ export interface EncryptedValue {
12
+ ciphertext: string;
13
+ iv: string;
14
+ algorithm: string;
15
+ keyVersion?: number;
16
+ }
17
+ export interface EncryptionKey {
18
+ id: string;
19
+ key: CryptoKey;
20
+ version: number;
21
+ algorithm: string;
22
+ createdAt: number;
23
+ }
24
+ /**
25
+ * Encryption manager for field-level encryption
26
+ */
27
+ export declare class EncryptionManager {
28
+ private configs;
29
+ private currentKey;
30
+ private keyHistory;
31
+ constructor();
32
+ /**
33
+ * Register encryption configuration for an entity
34
+ */
35
+ registerConfig(config: EncryptionConfig): void;
36
+ /**
37
+ * Get encryption configuration for an entity
38
+ */
39
+ getConfig(entity: string): EncryptionConfig | undefined;
40
+ /**
41
+ * Initialize encryption key from master key
42
+ */
43
+ initializeKey(masterKey: string, version?: number): Promise<void>;
44
+ /**
45
+ * Rotate encryption key (for key rotation support)
46
+ */
47
+ rotateKey(newMasterKey: string): Promise<void>;
48
+ /**
49
+ * Encrypt a value
50
+ */
51
+ encrypt(value: any): Promise<EncryptedValue>;
52
+ /**
53
+ * Decrypt a value
54
+ */
55
+ decrypt(encrypted: EncryptedValue): Promise<any>;
56
+ /**
57
+ * Encrypt fields in a record based on entity configuration
58
+ */
59
+ encryptRecord(entity: string, record: Record<string, any>): Promise<Record<string, any>>;
60
+ /**
61
+ * Decrypt fields in a record based on entity configuration
62
+ */
63
+ decryptRecord(entity: string, record: Record<string, any>): Promise<Record<string, any>>;
64
+ /**
65
+ * Check if a field should be encrypted
66
+ */
67
+ shouldEncrypt(entity: string, field: string): boolean;
68
+ /**
69
+ * Get all encrypted fields for an entity
70
+ */
71
+ getEncryptedFields(entity: string): string[];
72
+ /**
73
+ * Re-encrypt a record with a new key (for key rotation)
74
+ */
75
+ reencryptRecord(entity: string, record: Record<string, any>): Promise<Record<string, any>>;
76
+ /**
77
+ * Derive key material from master key
78
+ */
79
+ private deriveKeyMaterial;
80
+ /**
81
+ * Convert ArrayBuffer to Base64
82
+ */
83
+ private arrayBufferToBase64;
84
+ /**
85
+ * Convert Base64 to ArrayBuffer
86
+ */
87
+ private base64ToArrayBuffer;
88
+ /**
89
+ * Clear all encryption keys (security)
90
+ */
91
+ clear(): void;
92
+ }
93
+ /**
94
+ * Global encryption manager instance
95
+ */
96
+ export declare const encryptionManager: EncryptionManager;
97
+ //# sourceMappingURL=encryption-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption-manager.d.ts","sourceRoot":"","sources":["../../../../../core/src/encryption/encryption-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,SAAS,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,UAAU,CAAyC;;IAI3D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAI9C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIvD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B1E;;OAEG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;IAiClD;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAkCtD;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAqB9F;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA+B9F;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAKrD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAK5C;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQhG;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}