@opencard-dev/webhook-server 0.1.2 → 0.1.4
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/dist/index.js +40 -20
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -129,7 +129,8 @@ app.post('/webhooks/stripe', async (c) => {
|
|
|
129
129
|
const signature = c.req.header('stripe-signature');
|
|
130
130
|
if (!signature) {
|
|
131
131
|
// No signature header at all — definitely not a legitimate Stripe request.
|
|
132
|
-
|
|
132
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
133
|
+
console.warn('[Webhook] Request missing Stripe-Signature header — rejecting');
|
|
133
134
|
return c.json({ error: 'Missing Stripe-Signature header' }, 400);
|
|
134
135
|
}
|
|
135
136
|
// ── Step 3: Verify the signature (if we have a secret) ───────────────────
|
|
@@ -175,7 +176,8 @@ app.post('/webhooks/stripe', async (c) => {
|
|
|
175
176
|
// on `event.type` to decide what to do.
|
|
176
177
|
//
|
|
177
178
|
// Reference: https://stripe.com/docs/api/events/types
|
|
178
|
-
|
|
179
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
180
|
+
console.log(`[Webhook] Received event: ${event.type} (id: ${event.id})`);
|
|
179
181
|
switch (event.type) {
|
|
180
182
|
// ── issuing_authorization.request ──────────────────────────────────────
|
|
181
183
|
//
|
|
@@ -232,7 +234,8 @@ app.post('/webhooks/stripe', async (c) => {
|
|
|
232
234
|
// without doing anything — this prevents Stripe from retrying the event.
|
|
233
235
|
// Silently ignoring is intentional; we only care about Issuing events.
|
|
234
236
|
default:
|
|
235
|
-
|
|
237
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
238
|
+
console.log(`[Webhook] Unhandled event type: ${event.type} — acknowledged and ignored`);
|
|
236
239
|
return c.json({ received: true });
|
|
237
240
|
}
|
|
238
241
|
});
|
|
@@ -266,7 +269,8 @@ app.post('/approvals/:id/approve', async (c) => {
|
|
|
266
269
|
const db = new core_1.OpenCardDatabase();
|
|
267
270
|
const request = db.approveRequest(id, decidedBy, body.note);
|
|
268
271
|
db.close();
|
|
269
|
-
|
|
272
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
273
|
+
console.log(`[Approvals] Approved request ${id} by ${decidedBy}`);
|
|
270
274
|
return c.json({
|
|
271
275
|
status: 'approved',
|
|
272
276
|
request_id: request.id,
|
|
@@ -297,7 +301,8 @@ app.post('/approvals/:id/deny', async (c) => {
|
|
|
297
301
|
const db = new core_1.OpenCardDatabase();
|
|
298
302
|
const request = db.denyRequest(id, decidedBy, body.note);
|
|
299
303
|
db.close();
|
|
300
|
-
|
|
304
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
305
|
+
console.log(`[Approvals] Denied request ${id} by ${decidedBy}`);
|
|
301
306
|
return c.json({
|
|
302
307
|
status: 'denied',
|
|
303
308
|
request_id: request.id,
|
|
@@ -327,12 +332,16 @@ try {
|
|
|
327
332
|
const db = (0, core_1.initDatabase)();
|
|
328
333
|
const reconciler = new core_1.TransactionReconciler(db);
|
|
329
334
|
(0, core_1.setReconciler)(reconciler);
|
|
330
|
-
|
|
335
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
336
|
+
console.log('[WebhookServer] SQLite database initialized and reconciler wired ✓');
|
|
331
337
|
}
|
|
332
338
|
catch (err) {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
339
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
340
|
+
console.error('[WebhookServer] ⚠ Failed to initialize SQLite database — webhook events will NOT be persisted.');
|
|
341
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
342
|
+
console.error('[WebhookServer] ⚠ Auth decisions are unaffected. Fix the DB issue to restore audit trail.');
|
|
343
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
344
|
+
console.error('[WebhookServer] DB init error:', err instanceof Error ? err.message : String(err));
|
|
336
345
|
}
|
|
337
346
|
// ─── Export app creation and server startup functions ─────────────────────────
|
|
338
347
|
/**
|
|
@@ -351,8 +360,10 @@ function startWebhookServer(port) {
|
|
|
351
360
|
// ── Validate and initialize Stripe ──────────────────────────────────────
|
|
352
361
|
const stripeKey = process.env.STRIPE_SECRET_KEY;
|
|
353
362
|
if (!stripeKey) {
|
|
354
|
-
|
|
355
|
-
|
|
363
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
364
|
+
console.error('[WebhookServer] FATAL: STRIPE_SECRET_KEY environment variable is not set.');
|
|
365
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
366
|
+
console.error('[WebhookServer] Set it with: export STRIPE_SECRET_KEY=sk_test_...');
|
|
356
367
|
reject(new Error('STRIPE_SECRET_KEY not set'));
|
|
357
368
|
return;
|
|
358
369
|
}
|
|
@@ -363,21 +374,30 @@ function startWebhookServer(port) {
|
|
|
363
374
|
}
|
|
364
375
|
const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET;
|
|
365
376
|
if (!webhookSecret) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
377
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
378
|
+
console.warn('[WebhookServer] ⚠ WARNING: STRIPE_WEBHOOK_SECRET not set — signature verification DISABLED');
|
|
379
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
380
|
+
console.warn('[WebhookServer] ⚠ This is insecure. Only acceptable for local development.');
|
|
381
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
382
|
+
console.warn('[WebhookServer] ⚠ Get your secret from: stripe listen --forward-to localhost:3000/webhooks/stripe');
|
|
369
383
|
}
|
|
370
384
|
// ── Start server ────────────────────────────────────────────────────────
|
|
371
|
-
|
|
372
|
-
|
|
385
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
386
|
+
console.log('[WebhookServer] OpenCard webhook server starting...');
|
|
387
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
388
|
+
console.log(`[WebhookServer] Stripe signature verification: ${webhookSecret ? 'ENABLED ✓' : 'DISABLED ⚠'}`);
|
|
373
389
|
(0, node_server_1.serve)({
|
|
374
390
|
fetch: app.fetch,
|
|
375
391
|
port: port,
|
|
376
392
|
}, (info) => {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
393
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
394
|
+
console.log(`[WebhookServer] Server listening on port ${info.port}`);
|
|
395
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
396
|
+
console.log(`[WebhookServer] Webhook endpoint: POST http://localhost:${info.port}/webhooks/stripe`);
|
|
397
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
398
|
+
console.log(`[WebhookServer] Health check: GET http://localhost:${info.port}/health`);
|
|
399
|
+
if (process.env.OPENCARD_LOG !== 'silent')
|
|
400
|
+
console.log('[WebhookServer] Ready to handle Stripe events.');
|
|
381
401
|
resolve();
|
|
382
402
|
});
|
|
383
403
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;;;;;AAgVH,4CAEC;AAMD,gDA4CC;AAlYD,mDAA0C;AAC1C,+BAA4B;AAC5B,oDAA4B;AAC5B,6CAS4B;AAE5B,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAEhE,kFAAkF;AAElF;;;GAGG;AACH,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,GAAG,GAAG,IAAI,WAAI,EAAE,CAAC;AAEvB,iFAAiF;AAEjF;;;;;GAKG;AACH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU;IAEtE,OAAO,CAAC,CAAC,IAAI,CAAC;QACZ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,4DAA4D;QAC5D,yDAAyD;QACzD,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;KAC/C,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF;;;;;;;;;GASG;AACH,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvC,4EAA4E;IAC5E,EAAE;IACF,uEAAuE;IACvE,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEnC,6EAA6E;IAC7E,EAAE;IACF,wEAAwE;IACxE,wEAAwE;IACxE,mDAAmD;IACnD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,2EAA2E;QAC3E,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|