UNPKG

@graphql-codegen/plugin-helpers

Version:

GraphQL Code Generator common utils and types

67 lines (66 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createNoopProfiler = createNoopProfiler; exports.createProfiler = createProfiler; function createNoopProfiler() { return { outputName: null, run(fn) { return Promise.resolve().then(() => fn()); }, collect() { return []; }, clear() { }, }; } function createProfiler() { /** Build a unique, human-readable trace filename e.g. `codegen-20111005T144800000.json` */ function generateOutputName() { const datetimeNormalized = new Date() .toISOString() // 2011-10-05T14:48:00.000Z .replace(/[-:.Z]/g, ''); // 20111005T144800000 return `codegen-${datetimeNormalized}.json`; } const events = []; let outputName = generateOutputName(); return { get outputName() { return outputName; }, collect() { return events; }, clear() { events.length = 0; outputName = generateOutputName(); }, run(fn, name, cat) { let startTime; return Promise.resolve() .then(() => { startTime = process.hrtime(); }) .then(() => fn()) .then(value => { const duration = process.hrtime(startTime); // Trace Event Format documentation: // https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview const event = { name, cat, ph: 'X', ts: hrtimeToMicroseconds(startTime), pid: 1, tid: 0, dur: hrtimeToMicroseconds(duration), }; events.push(event); return value; }); }, }; } function hrtimeToMicroseconds(hrtime) { return (hrtime[0] * 1e9 + hrtime[1]) / 1000; }