Add sync error logging, extend error flash, fix unload saves

- Log workforce sync errors to backend stdout so they appear in docker logs
- Extend error flash from 5s to 15s so errors are readable
- Replace sendBeacon (POST-only) with keepalive fetch (PUT) on unload —
  sendBeacon was hitting 404s on all three unload saves

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-22 14:19:38 +00:00
parent c7066521ff
commit 18e24efbeb
14485 changed files with 1836116 additions and 33 deletions

37
frontend/node_modules/is-document.all/index.js generated vendored Normal file
View file

@ -0,0 +1,37 @@
'use strict';
var callBound = require('call-bound');
var toStr = callBound('Object.prototype.toString');
var isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, no-magic-numbers
var objectClass = '[object Object]';
var ddaClass = '[object HTMLAllCollection]';
/** @type {(() => false) | ((value: unknown) => value is HTMLAllCollection)} */
var isDDA = function isDocumentDotAll() {
return /** @type {const} */ (false);
};
if (typeof document === 'object') {
// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly
var all = document.all;
if (toStr(all) === toStr(document.all)) {
isDDA = /** @type {import('.')} */ (function isDocumentDotAll(value) {
/* globals document: false */
// in IE 6-8, typeof document.all is "object" and it's truthy
if ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {
try {
// @ts-expect-error nullish will throw
var str = toStr(value);
// IE 6-8 uses `objectClass`
return (str === ddaClass || str === objectClass)
&& /** @type {Function} */ (value)('') == null; // eslint-disable-line eqeqeq
} catch (e) { /**/ }
}
return false;
});
}
}
module.exports = isDDA;