@riddance/host
Version:
52 lines • 9.72 kB
JavaScript
import { performance } from 'node:perf_hooks';
import { highPrecisionISODate } from './host/logging.js';
/*@__INLINE__*/
export function objectSpreadable(json) {
if (!json) {
return {};
}
return json;
}
/*@__INLINE__*/
export function arraySpreadable(json) {
if (!Array.isArray(json)) {
return [];
}
return json;
}
export function httpRequestHeaders(context) {
const headers = {
'user-agent': `${context.meta?.packageName ?? '?'}/${context.meta?.revision ?? '?'}`,
};
if (context.operationId) {
headers['x-request-id'] = context.operationId;
}
if (context.client) {
if (context.client.id) {
headers['x-client-id'] = context.client.id;
}
if (!!context.client.ip || !!context.client.port) {
headers['x-forwarded-for'] = `${context.client.ip ?? ''}:${context.client.port ?? ''}`;
}
if (context.client.userAgent) {
headers['x-forwarded-for-user-agent'] = context.client.userAgent;
}
}
return headers;
}
export async function measure(logger, name, fn, fields) {
const start = performance.now();
try {
return await fn();
}
finally {
const end = performance.now();
logger.trace(`Measurement of ${name} time`, undefined, {
start: highPrecisionISODate(start),
end: highPrecisionISODate(end),
duration: (Math.round(end * 10_000) - Math.round(start * 10_000)) / 10_000,
...fields,
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBK0J4RCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVc7SUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFtRCxDQUFBO0FBQzlELENBQUM7QUFFRCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFXO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUF1QixDQUFBO0FBQ2xDLENBQUM7QUFzREQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sT0FBTyxHQUE4QjtRQUN2QyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0tBQ3ZGLENBQUE7SUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7UUFDMUYsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsNEJBQTRCLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDekIsTUFBcUUsRUFDckUsSUFBWSxFQUNaLEVBQXdCLEVBQ3hCLE1BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1AsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNuRCxLQUFLLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQzFFLEdBQUcsTUFBTTtTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdub2RlOnBlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlclxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgTXV0YWJsZUpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IE11dGFibGVKc29uW11cbiAgICB8IHsgW2tleTogc3RyaW5nXTogTXV0YWJsZUpzb24gfVxuZXhwb3J0IHR5cGUgSnNvbiA9XG4gICAgfCBudWxsXG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgcmVhZG9ubHkgSnNvbltdXG4gICAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RTcHJlYWRhYmxlKGpzb24/OiBKc29uKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH0ge1xuICAgIGlmICghanNvbikge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgdW5rbm93biBhcyB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxufVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVNwcmVhZGFibGUoanNvbj86IEpzb24pOiByZWFkb25seSBKc29uW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgcmVhZG9ubHkgSnNvbltdXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGluZGljYXRpb24gb2YgQ1BVIHVzYWdlIG9mIHRoZSBoYW5kbGVyLlxuICAgICAqIEBkZWZhdWx0ICdsb3cnXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcHV0ZT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuXG4gICAgICogQGRlZmF1bHQgJ2xvdydcbiAgICAgKi9cbiAgICByZWFkb25seSBtZW1vcnk/OiAnaGlnaCcgfCAnbG93J1xuICAgIC8qKlxuICAgICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5yaWNoIHRoZSBsb2cgd2l0aCB0aGUgYm9keSBvZiBldmVudHMsIHJlcXVlc3RzIG9yIHJlc3BvbnNlcy4gU2V0IHRvIGZhbHNlIGlmIHRoZSBib2R5IGlzIGxhcmdlIG9yIGNvbnRhaW4gdmVyeSBzZW5zaXRpdmUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVCb2R5RnJvbUxvZ3M/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIGxldmVsIGJlbG93IHdoaWNoIGxvZyBlbnRyaWVzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIEBkZWZhdWx0ICd0cmFjZSdcbiAgICAgKi9cbiAgICByZWFkb25seSBtaW5pbXVtTG9nTGV2ZWw/OiAndHJhY2UnIHwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZmF0YWwnXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBmaW5pc2ggZXhlY3V0aW5nIGluLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dCA9IHtcbiAgICByZWFkb25seSBlbnY6IEVudmlyb25tZW50XG4gICAgcmVhZG9ubHkgbG9nOiBMb2dnZXJcbiAgICByZWFkb25seSBzaWduYWw6IEFib3J0U2lnbmFsXG4gICAgbm93KCk6IERhdGVcblxuICAgIHJlYWRvbmx5IG9wZXJhdGlvbklkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50Pzoge1xuICAgICAgICByZWFkb25seSBpZD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBpcD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBwb3J0PzogbnVtYmVyXG4gICAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xuICAgIH1cbiAgICByZWFkb25seSBtZXRhPzoge1xuICAgICAgICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcmV2aXNpb24/OiBzdHJpbmdcbiAgICB9XG5cbiAgICBlbWl0KHRvcGljOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgc3ViamVjdDogc3RyaW5nLCBkYXRhPzogSnNvbiwgbWVzc2FnZUlkPzogc3RyaW5nKTogdm9pZFxuICAgIGV2ZW50QmFycmllcigpOiBQcm9taXNlPHZvaWQ+XG5cbiAgICBvblN1Y2Nlc3MoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKTogdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHR0cFJlcXVlc3RIZWFkZXJzKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAndXNlci1hZ2VudCc6IGAke2NvbnRleHQubWV0YT8ucGFja2FnZU5hbWUgPz8gJz8nfS8ke2NvbnRleHQubWV0YT8ucmV2aXNpb24gPz8gJz8nfWAsXG4gICAgfVxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvbklkKSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddID0gY29udGV4dC5vcGVyYXRpb25JZFxuICAgIH1cbiAgICBpZiAoY29udGV4dC5jbGllbnQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LmlkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID0gY29udGV4dC5jbGllbnQuaWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFjb250ZXh0LmNsaWVudC5pcCB8fCAhIWNvbnRleHQuY2xpZW50LnBvcnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddID0gYCR7Y29udGV4dC5jbGllbnQuaXAgPz8gJyd9OiR7Y29udGV4dC5jbGllbnQucG9ydCA/PyAnJ31gXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yLXVzZXItYWdlbnQnXSA9IGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZWFzdXJlPFQ+KFxuICAgIGxvZ2dlcjogeyB0cmFjZTogKG1lc3NhZ2U6IHN0cmluZywgXzogdW5kZWZpbmVkLCBmOiBvYmplY3QpID0+IHZvaWQgfSxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZm46ICgpID0+IFByb21pc2U8VD4gfCBULFxuICAgIGZpZWxkcz86IG9iamVjdCxcbikge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgIGxvZ2dlci50cmFjZShgTWVhc3VyZW1lbnQgb2YgJHtuYW1lfSB0aW1lYCwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBzdGFydDogaGlnaFByZWNpc2lvbklTT0RhdGUoc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShlbmQpLFxuICAgICAgICAgICAgZHVyYXRpb246IChNYXRoLnJvdW5kKGVuZCAqIDEwXzAwMCkgLSBNYXRoLnJvdW5kKHN0YXJ0ICogMTBfMDAwKSkgLyAxMF8wMDAsXG4gICAgICAgICAgICAuLi5maWVsZHMsXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19