@edgebasejs/core 0.1.7 → 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.
- package/README.md +15 -0
- package/dist/core/src/access-rules/column-security.d.ts +80 -0
- package/dist/core/src/access-rules/column-security.d.ts.map +1 -0
- package/dist/core/src/access-rules/column-security.js +191 -0
- package/dist/core/src/access-rules/column-security.js.map +1 -0
- package/dist/core/src/access-rules/engine.d.ts.map +1 -1
- package/dist/core/src/access-rules/engine.js +2 -1
- package/dist/core/src/access-rules/engine.js.map +1 -1
- package/dist/core/src/audit/audit-manager.d.ts +108 -0
- package/dist/core/src/audit/audit-manager.d.ts.map +1 -0
- package/dist/core/src/audit/audit-manager.js +265 -0
- package/dist/core/src/audit/audit-manager.js.map +1 -0
- package/dist/core/src/encryption/encryption-manager.d.ts +97 -0
- package/dist/core/src/encryption/encryption-manager.d.ts.map +1 -0
- package/dist/core/src/encryption/encryption-manager.js +224 -0
- package/dist/core/src/encryption/encryption-manager.js.map +1 -0
- package/dist/core/src/index.d.ts +12 -0
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/index.js +12 -0
- package/dist/core/src/index.js.map +1 -1
- package/dist/core/src/realtime/change-notifier.d.ts +50 -0
- package/dist/core/src/realtime/change-notifier.d.ts.map +1 -0
- package/dist/core/src/realtime/change-notifier.js +145 -0
- package/dist/core/src/realtime/change-notifier.js.map +1 -0
- package/dist/core/src/realtime/message-types.d.ts +39 -0
- package/dist/core/src/realtime/message-types.d.ts.map +1 -0
- package/dist/core/src/realtime/message-types.js +5 -0
- package/dist/core/src/realtime/message-types.js.map +1 -0
- package/dist/core/src/realtime/subscription-manager.d.ts +67 -0
- package/dist/core/src/realtime/subscription-manager.d.ts.map +1 -0
- package/dist/core/src/realtime/subscription-manager.js +229 -0
- package/dist/core/src/realtime/subscription-manager.js.map +1 -0
- package/dist/core/src/search/search-manager.d.ts +93 -0
- package/dist/core/src/search/search-manager.d.ts.map +1 -0
- package/dist/core/src/search/search-manager.js +258 -0
- package/dist/core/src/search/search-manager.js.map +1 -0
- package/dist/core/src/storage/file-manager.d.ts +138 -0
- package/dist/core/src/storage/file-manager.d.ts.map +1 -0
- package/dist/core/src/storage/file-manager.js +224 -0
- package/dist/core/src/storage/file-manager.js.map +1 -0
- package/dist/core/src/sync/batch-processor.d.ts +97 -0
- package/dist/core/src/sync/batch-processor.d.ts.map +1 -0
- package/dist/core/src/sync/batch-processor.js +313 -0
- package/dist/core/src/sync/batch-processor.js.map +1 -0
- package/dist/core/src/sync/csv-processor.d.ts +66 -0
- package/dist/core/src/sync/csv-processor.d.ts.map +1 -0
- package/dist/core/src/sync/csv-processor.js +223 -0
- package/dist/core/src/sync/csv-processor.js.map +1 -0
- package/dist/core/src/sync/sync-engine.d.ts +22 -0
- package/dist/core/src/sync/sync-engine.d.ts.map +1 -1
- package/dist/core/src/sync/sync-engine.js +123 -10
- package/dist/core/src/sync/sync-engine.js.map +1 -1
- package/dist/core/src/sync/transaction-manager.d.ts +83 -0
- package/dist/core/src/sync/transaction-manager.d.ts.map +1 -0
- package/dist/core/src/sync/transaction-manager.js +227 -0
- package/dist/core/src/sync/transaction-manager.js.map +1 -0
- package/dist/core/src/webhooks/webhook-manager.d.ts +137 -0
- package/dist/core/src/webhooks/webhook-manager.d.ts.map +1 -0
- package/dist/core/src/webhooks/webhook-manager.js +334 -0
- package/dist/core/src/webhooks/webhook-manager.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/package.json +2 -2
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook manager for event-driven integrations
|
|
3
|
+
* Handles webhook registration, event triggering, and delivery with retry logic
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Webhook manager
|
|
7
|
+
*/
|
|
8
|
+
export class WebhookManager {
|
|
9
|
+
constructor(db, options) {
|
|
10
|
+
this.db = db;
|
|
11
|
+
this.maxRetries = options?.maxRetries || 5;
|
|
12
|
+
this.retryDelays = options?.retryDelays || [60, 300, 900, 3600, 7200];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Register a new webhook
|
|
16
|
+
*/
|
|
17
|
+
async registerWebhook(user, options) {
|
|
18
|
+
// Validate URL
|
|
19
|
+
try {
|
|
20
|
+
new URL(options.url);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw new Error('Invalid webhook URL');
|
|
24
|
+
}
|
|
25
|
+
// Validate events
|
|
26
|
+
if (!options.events || options.events.length === 0) {
|
|
27
|
+
throw new Error('At least one event type is required');
|
|
28
|
+
}
|
|
29
|
+
const now = Date.now();
|
|
30
|
+
const webhookId = `wh_${now}_${Math.random().toString(36).substring(2, 15)}`;
|
|
31
|
+
const secret = this.generateSecret();
|
|
32
|
+
const webhook = {
|
|
33
|
+
id: webhookId,
|
|
34
|
+
userId: user.id,
|
|
35
|
+
url: options.url,
|
|
36
|
+
events: options.events,
|
|
37
|
+
secret,
|
|
38
|
+
isActive: true,
|
|
39
|
+
description: options.description,
|
|
40
|
+
headers: options.headers,
|
|
41
|
+
createdAt: now,
|
|
42
|
+
updatedAt: now,
|
|
43
|
+
};
|
|
44
|
+
await this.db.run(`INSERT INTO webhooks (id, user_id, url, events, secret, is_active, description, headers, created_at, updated_at)
|
|
45
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
46
|
+
webhook.id,
|
|
47
|
+
webhook.userId,
|
|
48
|
+
webhook.url,
|
|
49
|
+
JSON.stringify(webhook.events),
|
|
50
|
+
webhook.secret,
|
|
51
|
+
webhook.isActive ? 1 : 0,
|
|
52
|
+
webhook.description || null,
|
|
53
|
+
webhook.headers ? JSON.stringify(webhook.headers) : null,
|
|
54
|
+
webhook.createdAt,
|
|
55
|
+
webhook.updatedAt,
|
|
56
|
+
]);
|
|
57
|
+
return webhook;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get a webhook by ID
|
|
61
|
+
*/
|
|
62
|
+
async getWebhook(webhookId, userId) {
|
|
63
|
+
let query = 'SELECT * FROM webhooks WHERE id = ?';
|
|
64
|
+
const params = [webhookId];
|
|
65
|
+
if (userId) {
|
|
66
|
+
query += ' AND user_id = ?';
|
|
67
|
+
params.push(userId);
|
|
68
|
+
}
|
|
69
|
+
const row = await this.db.getOne(query, params);
|
|
70
|
+
if (!row) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return this.rowToWebhook(row);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* List webhooks for a user
|
|
77
|
+
*/
|
|
78
|
+
async listWebhooks(userId) {
|
|
79
|
+
const rows = await this.db.getAll('SELECT * FROM webhooks WHERE user_id = ? ORDER BY created_at DESC', [userId]);
|
|
80
|
+
return rows.map((row) => this.rowToWebhook(row));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update a webhook
|
|
84
|
+
*/
|
|
85
|
+
async updateWebhook(webhookId, userId, updates) {
|
|
86
|
+
const webhook = await this.getWebhook(webhookId, userId);
|
|
87
|
+
if (!webhook) {
|
|
88
|
+
throw new Error('Webhook not found');
|
|
89
|
+
}
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
const setClauses = [];
|
|
92
|
+
const params = [];
|
|
93
|
+
if (updates.url !== undefined) {
|
|
94
|
+
try {
|
|
95
|
+
new URL(updates.url);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
throw new Error('Invalid webhook URL');
|
|
99
|
+
}
|
|
100
|
+
setClauses.push('url = ?');
|
|
101
|
+
params.push(updates.url);
|
|
102
|
+
}
|
|
103
|
+
if (updates.events !== undefined) {
|
|
104
|
+
if (updates.events.length === 0) {
|
|
105
|
+
throw new Error('At least one event type is required');
|
|
106
|
+
}
|
|
107
|
+
setClauses.push('events = ?');
|
|
108
|
+
params.push(JSON.stringify(updates.events));
|
|
109
|
+
}
|
|
110
|
+
if (updates.isActive !== undefined) {
|
|
111
|
+
setClauses.push('is_active = ?');
|
|
112
|
+
params.push(updates.isActive ? 1 : 0);
|
|
113
|
+
}
|
|
114
|
+
if (updates.description !== undefined) {
|
|
115
|
+
setClauses.push('description = ?');
|
|
116
|
+
params.push(updates.description);
|
|
117
|
+
}
|
|
118
|
+
if (updates.headers !== undefined) {
|
|
119
|
+
setClauses.push('headers = ?');
|
|
120
|
+
params.push(JSON.stringify(updates.headers));
|
|
121
|
+
}
|
|
122
|
+
setClauses.push('updated_at = ?');
|
|
123
|
+
params.push(now);
|
|
124
|
+
params.push(webhookId, userId);
|
|
125
|
+
await this.db.run(`UPDATE webhooks SET ${setClauses.join(', ')} WHERE id = ? AND user_id = ?`, params);
|
|
126
|
+
return (await this.getWebhook(webhookId, userId));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Delete a webhook
|
|
130
|
+
*/
|
|
131
|
+
async deleteWebhook(webhookId, userId) {
|
|
132
|
+
await this.db.run('DELETE FROM webhooks WHERE id = ? AND user_id = ?', [webhookId, userId]);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Trigger an event and queue it for delivery
|
|
136
|
+
*/
|
|
137
|
+
async triggerEvent(options) {
|
|
138
|
+
// Find matching webhooks
|
|
139
|
+
const webhooks = await this.findMatchingWebhooks(options.eventType, options.userId);
|
|
140
|
+
if (webhooks.length === 0) {
|
|
141
|
+
return; // No webhooks to trigger
|
|
142
|
+
}
|
|
143
|
+
const now = Date.now();
|
|
144
|
+
// Create webhook events for each matching webhook
|
|
145
|
+
for (const webhook of webhooks) {
|
|
146
|
+
const eventId = `evt_${now}_${Math.random().toString(36).substring(2, 15)}`;
|
|
147
|
+
const payload = {
|
|
148
|
+
id: eventId,
|
|
149
|
+
type: options.eventType,
|
|
150
|
+
timestamp: now,
|
|
151
|
+
data: {
|
|
152
|
+
entity: options.entity,
|
|
153
|
+
recordId: options.recordId,
|
|
154
|
+
operation: options.operation,
|
|
155
|
+
...options.data,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const signature = this.signPayload(payload, webhook.secret);
|
|
159
|
+
await this.db.run(`INSERT INTO webhook_events (id, webhook_id, event_type, payload, signature, attempts, max_attempts, next_retry_at, created_at)
|
|
160
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [eventId, webhook.id, options.eventType, JSON.stringify(payload), signature, 0, this.maxRetries, now, now]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Process pending webhook events
|
|
165
|
+
*/
|
|
166
|
+
async processPendingEvents() {
|
|
167
|
+
const now = Date.now();
|
|
168
|
+
const events = await this.db.getAll(`SELECT e.*, w.url, w.headers
|
|
169
|
+
FROM webhook_events e
|
|
170
|
+
JOIN webhooks w ON e.webhook_id = w.id
|
|
171
|
+
WHERE e.delivered_at IS NULL
|
|
172
|
+
AND e.failed_at IS NULL
|
|
173
|
+
AND (e.next_retry_at IS NULL OR e.next_retry_at <= ?)
|
|
174
|
+
AND e.attempts < e.max_attempts
|
|
175
|
+
AND w.is_active = 1
|
|
176
|
+
ORDER BY e.created_at ASC
|
|
177
|
+
LIMIT 100`, [now]);
|
|
178
|
+
let processed = 0;
|
|
179
|
+
for (const event of events) {
|
|
180
|
+
try {
|
|
181
|
+
await this.deliverEvent(event);
|
|
182
|
+
processed++;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.error(`Failed to deliver event ${event.id}:`, error);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return processed;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Deliver a webhook event
|
|
192
|
+
*/
|
|
193
|
+
async deliverEvent(event) {
|
|
194
|
+
const startTime = Date.now();
|
|
195
|
+
const deliveryId = `del_${startTime}_${Math.random().toString(36).substring(2, 15)}`;
|
|
196
|
+
try {
|
|
197
|
+
const headers = {
|
|
198
|
+
'Content-Type': 'application/json',
|
|
199
|
+
'X-EdgeBase-Signature': event.signature,
|
|
200
|
+
'X-EdgeBase-Event-Type': event.event_type,
|
|
201
|
+
'X-EdgeBase-Event-Id': event.id,
|
|
202
|
+
'X-EdgeBase-Delivery-Id': deliveryId,
|
|
203
|
+
};
|
|
204
|
+
// Add custom headers
|
|
205
|
+
if (event.headers) {
|
|
206
|
+
const customHeaders = JSON.parse(event.headers);
|
|
207
|
+
Object.assign(headers, customHeaders);
|
|
208
|
+
}
|
|
209
|
+
const response = await fetch(event.url, {
|
|
210
|
+
method: 'POST',
|
|
211
|
+
headers,
|
|
212
|
+
body: event.payload,
|
|
213
|
+
});
|
|
214
|
+
const duration = Date.now() - startTime;
|
|
215
|
+
const responseBody = await response.text().catch(() => '');
|
|
216
|
+
// Log delivery
|
|
217
|
+
await this.db.run(`INSERT INTO webhook_deliveries (id, webhook_id, event_id, url, event_type, status_code, response_body, duration, created_at)
|
|
218
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [deliveryId, event.webhook_id, event.id, event.url, event.event_type, response.status, responseBody.substring(0, 1000), duration, Date.now()]);
|
|
219
|
+
if (response.ok) {
|
|
220
|
+
// Mark as delivered
|
|
221
|
+
await this.db.run('UPDATE webhook_events SET delivered_at = ?, attempts = attempts + 1 WHERE id = ?', [Date.now(), event.id]);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
// Schedule retry
|
|
225
|
+
await this.scheduleRetry(event, `HTTP ${response.status}: ${responseBody.substring(0, 200)}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
const duration = Date.now() - startTime;
|
|
230
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
231
|
+
// Log failed delivery
|
|
232
|
+
await this.db.run(`INSERT INTO webhook_deliveries (id, webhook_id, event_id, url, event_type, error, duration, created_at)
|
|
233
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [deliveryId, event.webhook_id, event.id, event.url, event.event_type, errorMsg.substring(0, 1000), duration, Date.now()]);
|
|
234
|
+
// Schedule retry
|
|
235
|
+
await this.scheduleRetry(event, errorMsg);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Schedule a retry for a failed event
|
|
240
|
+
*/
|
|
241
|
+
async scheduleRetry(event, error) {
|
|
242
|
+
const attempts = event.attempts + 1;
|
|
243
|
+
if (attempts >= event.max_attempts) {
|
|
244
|
+
// Max retries reached - mark as failed
|
|
245
|
+
await this.db.run('UPDATE webhook_events SET failed_at = ?, attempts = ?, error = ? WHERE id = ?', [
|
|
246
|
+
Date.now(),
|
|
247
|
+
attempts,
|
|
248
|
+
error.substring(0, 1000),
|
|
249
|
+
event.id,
|
|
250
|
+
]);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
// Schedule next retry with exponential backoff
|
|
254
|
+
const delayIndex = Math.min(attempts - 1, this.retryDelays.length - 1);
|
|
255
|
+
const delay = this.retryDelays[delayIndex];
|
|
256
|
+
const nextRetryAt = Date.now() + delay * 1000;
|
|
257
|
+
await this.db.run('UPDATE webhook_events SET attempts = ?, next_retry_at = ?, error = ? WHERE id = ?', [
|
|
258
|
+
attempts,
|
|
259
|
+
nextRetryAt,
|
|
260
|
+
error.substring(0, 1000),
|
|
261
|
+
event.id,
|
|
262
|
+
]);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Find webhooks matching an event type
|
|
267
|
+
*/
|
|
268
|
+
async findMatchingWebhooks(eventType, userId) {
|
|
269
|
+
let query = 'SELECT * FROM webhooks WHERE is_active = 1';
|
|
270
|
+
const params = [];
|
|
271
|
+
if (userId) {
|
|
272
|
+
query += ' AND user_id = ?';
|
|
273
|
+
params.push(userId);
|
|
274
|
+
}
|
|
275
|
+
const rows = await this.db.getAll(query, params);
|
|
276
|
+
const webhooks = rows.map((row) => this.rowToWebhook(row));
|
|
277
|
+
// Filter by event type
|
|
278
|
+
return webhooks.filter((webhook) => {
|
|
279
|
+
// Check if any event pattern matches
|
|
280
|
+
return webhook.events.some((pattern) => this.matchEventPattern(eventType, pattern));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Match an event type against a pattern (supports wildcards)
|
|
285
|
+
*/
|
|
286
|
+
matchEventPattern(eventType, pattern) {
|
|
287
|
+
// Convert pattern to regex (support * wildcard)
|
|
288
|
+
const regexPattern = pattern.replace(/\*/g, '.*');
|
|
289
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
290
|
+
return regex.test(eventType);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Sign a payload with HMAC-SHA256
|
|
294
|
+
*/
|
|
295
|
+
signPayload(payload, secret) {
|
|
296
|
+
const payloadString = typeof payload === 'string' ? payload : JSON.stringify(payload);
|
|
297
|
+
// Simple signing - in production, use crypto.subtle for proper HMAC-SHA256
|
|
298
|
+
// This is a placeholder using base64 encoding
|
|
299
|
+
const combined = payloadString + secret;
|
|
300
|
+
const encoder = new TextEncoder();
|
|
301
|
+
const data = encoder.encode(combined);
|
|
302
|
+
// Convert to base64
|
|
303
|
+
let binary = '';
|
|
304
|
+
for (let i = 0; i < data.length; i++) {
|
|
305
|
+
binary += String.fromCharCode(data[i]);
|
|
306
|
+
}
|
|
307
|
+
const base64 = btoa(binary);
|
|
308
|
+
return `sha256=${base64}`;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Generate a random secret
|
|
312
|
+
*/
|
|
313
|
+
generateSecret() {
|
|
314
|
+
return `whsec_${Array.from({ length: 32 }, () => Math.random().toString(36).charAt(2)).join('')}`;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Convert database row to Webhook object
|
|
318
|
+
*/
|
|
319
|
+
rowToWebhook(row) {
|
|
320
|
+
return {
|
|
321
|
+
id: row.id,
|
|
322
|
+
userId: row.user_id,
|
|
323
|
+
url: row.url,
|
|
324
|
+
events: JSON.parse(row.events),
|
|
325
|
+
secret: row.secret,
|
|
326
|
+
isActive: row.is_active === 1,
|
|
327
|
+
description: row.description,
|
|
328
|
+
headers: row.headers ? JSON.parse(row.headers) : undefined,
|
|
329
|
+
createdAt: row.created_at,
|
|
330
|
+
updatedAt: row.updated_at,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=webhook-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-manager.js","sourceRoot":"","sources":["../../../../src/webhooks/webhook-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgebasejs/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "EdgeBase server core library",
|
|
5
5
|
"main": "./dist/core/src/index.js",
|
|
6
6
|
"types": "./dist/core/src/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@edgebasejs/types": "
|
|
11
|
+
"@edgebasejs/types": "0.1.9",
|
|
12
12
|
"zod": "^3.22.0"
|
|
13
13
|
},
|
|
14
14
|
"publishConfig": {
|