UNPKG

17.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"stagnant-honeycomb.browser.js","sources":["../index.mjs","../honeycomb.mjs"],"sourcesContent":["function defaultConfig(){\n\n function onevent(){}\n function onerror(){}\n function onsuccess(){}\n function onflush(){}\n \n // eslint-disable-next-line no-undef\n \n const ourConsole = {\n log(){},\n error(){},\n warn(){}\n }\n\n function generateId(){\n return Math.random().toString(15).slice(2,8)\n }\n\n return { \n onevent, onerror, onsuccess, onflush, console: ourConsole, generateId \n }\n}\n\nfunction Main(config={}){\n\n config = { ...defaultConfig(), ...config }\n\n const { generateId } = config\n\n async function dispatchEvent(event){\n await config.onevent(event)\n if( event.error ) {\n await config.onerror(event)\n } else {\n await config.onsuccess(event)\n }\n }\n\n function Event({\n parentId, id, startTime, endTime, name, data, error\n }){\n return { parentId, id, startTime, endTime, name, data, error }\n }\n\n function RootEvent(){\n const event = Event({\n parentId: null\n ,id: generateId()\n ,startTime: Date.now()\n ,endTime: Date.now()\n ,error: null\n ,data: {}\n })\n\n event.flush = async function flush(){\n delete event.flush\n event.endTime = Date.now()\n await dispatchEvent(event)\n await config.onflush(event)\n return event\n }\n\n return event\n }\n\n function setupEvent({ parentEvent, name, data, sync }){\n const event = Event({\n parentId: parentEvent.id\n ,id: generateId()\n ,name\n ,startTime: null\n ,endTime: null\n ,data: { ...parentEvent.data || {}, ...data }\n ,error: null\n ,sync: parentEvent.sync || sync\n })\n const childP = Instance(event)\n return { childP, event }\n }\n\n\n function Instance(parentEvent){\n \n function handler(...args){\n const callbackIndex = args.findIndex( x => typeof x == 'function' )\n let cb = args[callbackIndex]\n let rest = callbackIndex > 0 ? args.slice(0,callbackIndex) : args\n\n let [name, data] = rest\n \n if (typeof name != 'string') {\n data = name\n if( cb ) {\n name = data.name || cb.toString().replace( /\\s/g, '' ).replace( /(.)*=>/, '' );\n }\n }\n\n if ( data == null ) data = {}\n\n return { name, data, callback: cb }\n }\n\n function handlerData({ data }){\n parentEvent.data = { ...parentEvent.data, ...data }\n return null\n }\n\n async function handlerAsync({ event, childP, callback }){\n if ( parentEvent.sync ) {\n throw new Error('Cannot use an async trace within a synchronous trace')\n }\n \n try {\n event.startTime = Date.now()\n const out = await callback(childP)\n event.endTime = Date.now()\n return out\n } catch (e) {\n event.endTime = Date.now()\n event.error = e\n throw e\n } finally {\n dispatchEvent(event)\n .catch( e => config.console.error('Failed to dispatch event', e))\n }\n \n }\n\n function handlerSync({ callback, name, event, childP }){\n try {\n event.startTime = Date.now()\n const out = callback(childP)\n event.endTime = Date.now()\n if( out != null && 'then' in out ) {\n config.console.warn(name, 'A call to trace.sync was made but the response was async. This is likely a mistake and should be corrected.')\n }\n return out\n } catch (e) {\n event.endTime = Date.now()\n event.error = e\n throw e\n } finally {\n dispatchEvent(event)\n .catch( e => config.console.error('Failed to dispatch event', e))\n }\n }\n\n function routerOptions({ sync }, ...args){\n const { data, callback, name } = handler(...args)\n \n const {event,childP} = \n callback ? setupEvent({ parentEvent, name, data, sync }) : {}\n\n if( callback && sync ) {\n return handlerSync({ data, callback, childP, name, event })\n } else if ( callback && !sync ) {\n return handlerAsync({ data, callback, childP, name, event })\n } else {\n return handlerData({ data })\n }\n }\n\n async function routerAsync(...args){\n const out = await routerOptions({ sync: false }, ...args)\n return out\n }\n\n function routerSync(...args){\n const out = routerOptions({ sync: true }, ...args)\n return out\n }\n\n routerAsync.sync = routerSync\n return routerAsync\n }\n\n let rootEvent = RootEvent()\n let handlerInstance = Instance(rootEvent)\n handlerInstance.flush = rootEvent.flush\n handlerInstance.config = config\n return handlerInstance\n}\n\n/**\n * Safely invoke a callback even if trace is null.\n * \n * useful when there are multiple entry points into a function and some are not\n * passing in a trace.\n * \n * @param {*} trace \n * @param {...any} args \n * @returns \n */\nfunction call(trace, ...args){\n const cb = args.find( x => typeof x == 'function' )\n\n if ( trace ) {\n return trace( ...args )\n } else if ( cb ) {\n return cb( (...args) => call(null, ...args) )\n }\n return null\n}\n\nMain.call = call\n\n/**\n * Create a no-op trace if provided trace is null\n * \n * Much like stagnant.call, useful when there are multiple entry points into a function and some are not\n * passing in a trace.\n * \n * @param {*} trace \n * @param {...any} args \n * @returns \n */\nfunction ensure(trace){\n if( trace ) {\n return trace\n } else {\n return (...args) => call(null, ...args)\n }\n}\n\nMain.ensure = ensure\nexport default Main","/* globals process */\nimport stagnant from './index.mjs'\nimport fetch from 'node-fetch'\n\nexport default function Honey({ \n name: rootName='root'\n , dataset='default'\n , writeKey=process.env.HONEYCOMB_WRITE_KEY\n // pass in traceId/parentId from an existing trace\n // e.g. to continue a trace from another server, or \n // even the browser\n // otherwise leave blank\n , traceId= Math.random().toString(15).slice(2,8)\n , parentId= undefined\n , data={} \n , config={}\n}={}){\n\n // Traces aren't nested, but a trace can contain nested spans.\n // We create a root trace for every invocation of Honey\n // every other event subsequently is a span within that root trace\n const root = stagnant({\n async onevent(event){\n const name = event.parentId ? event.name : rootName\n const body = JSON.stringify({\n ...event.data\n , ...data\n , name\n , error: event.error ? event.error.message : undefined\n ,'error.stack': event.error ? event.error.stack : undefined\n , 'trace.trace_id': 'trace-'+ traceId\n , 'trace.span_id': 'span-' + event.id\n , 'trace.parent_id': event.parentId ? 'span-' + event.parentId : parentId\n , service_name: 'stagnant'\n , duration_ms: event.endTime - event.startTime\n })\n\n try {\n\n // console.log(name, event.error, event.endTime - event.startTime)\n const response = await fetch(`https://api.honeycomb.io/1/events/${dataset}`, {\n method: 'post'\n ,headers: {\n 'X-Honeycomb-Team': writeKey\n ,'X-Honeycomb-Event-Time': event.startTime\n ,'Content-Type': 'application/json'\n }\n ,body\n })\n root.config.console.log(name, response.status, body);\n if( !event.parentId ) {\n root.config.console.log('flushed', response.status )\n }\n } catch (e) {\n root.config.console.error(e)\n }\n\n }\n , ...config\n })\n\n return root\n}\n"],"names":["stagnant","fetch"],"mappings":"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"}
\No newline at end of file