fix(observability,webhooks,i18n): timestamped logs, dedupe webhook retries, default non-de locales to English
- New custom server.js (replaces react-router-serve): ISO timestamps on all console.* output and on access logs, and skip successful /healthz polls so real traffic stays visible. - New ProcessedWebhook table + dedupe helper keyed on X-Shopify-Webhook-Id; stops Shopify retries from triggering a second invoice email when the original delivery exceeded the 5s ack timeout. - orders/create + orders/fulfilled now respond 200 immediately and run the PDF/email work in the background so we stay under that timeout. - pickLanguage(): non-German locales (it, fr, es, ...) now default to English instead of falling back to German. Empty/unknown still maps to 'de' so the per-shop defaultLanguage chain keeps working. - Tests for pickLanguage and dedupe via node --test + tsx.
This commit is contained in:
Generated
+17
@@ -12,6 +12,7 @@
|
||||
"@prisma/client": "^6.16.3",
|
||||
"@react-pdf/renderer": "^4.5.1",
|
||||
"@react-router/dev": "^7.12.0",
|
||||
"@react-router/express": "^7.14.2",
|
||||
"@react-router/fs-routes": "^7.12.0",
|
||||
"@react-router/node": "^7.12.0",
|
||||
"@react-router/serve": "^7.12.0",
|
||||
@@ -26,7 +27,10 @@
|
||||
"@tiptap/react": "^3.23.1",
|
||||
"@tiptap/starter-kit": "^3.23.1",
|
||||
"@types/nodemailer": "^8.0.0",
|
||||
"compression": "^1.8.1",
|
||||
"express": "^4.22.1",
|
||||
"isbot": "^5.1.31",
|
||||
"morgan": "^1.10.1",
|
||||
"nodemailer": "^8.0.7",
|
||||
"prisma": "^6.16.3",
|
||||
"qrcode": "^1.5.4",
|
||||
@@ -61,6 +65,15 @@
|
||||
"node": ">=20.19 <22 || >=22.12"
|
||||
}
|
||||
},
|
||||
"extensions/customer-account-payment": {
|
||||
"version": "1.0.0",
|
||||
"devDependencies": {
|
||||
"@preact/signals": "^1.3.0",
|
||||
"@shopify/ui-extensions": "^2026.1.0",
|
||||
"preact": "^10.22.0",
|
||||
"typescript": "^5.6.0"
|
||||
}
|
||||
},
|
||||
"extensions/invoice-order-action": {
|
||||
"version": "1.0.0",
|
||||
"devDependencies": {
|
||||
@@ -6670,6 +6683,10 @@
|
||||
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/customer-account-payment": {
|
||||
"resolved": "extensions/customer-account-payment",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/damerau-levenshtein": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
|
||||
|
||||
Reference in New Issue
Block a user