trackEvent queues events until the deferred Umami script exists (they
were dropped when fired in onMounted) and drops them silently after 10 s.
The result page sends purchase-completed with revenue/currency once per
order (localStorage guard, set only after sending). The plugin honours
Do Not Track and loads recorder.js only on /details/* for Umami heatmaps.
bun test utils/trackEvent.test.ts: 4 pass. Netcup #115.