Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

gql-profiler

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gql-profiler - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2

.eslintrc

402

lib/index.js

@@ -1,24 +0,368 @@

'use strict';
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['gql-profiler'] = {})));
}(this, (function (exports) { 'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var asyncToGenerator = function (fn) {
return function () {
var gen = fn.apply(this, arguments);
return new Promise(function (resolve, reject) {
function step(key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
if (info.done) {
resolve(value);
} else {
return Promise.resolve(value).then(function (value) {
step("next", value);
}, function (err) {
step("throw", err);
});
}
}
var _monitor = require('./monitor');
return step("next");
});
};
};
var _monitor2 = _interopRequireDefault(_monitor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const defaultOptions = { enabled: true };
const wrap = (resolvers, options = {}) => {
const config = _extends({}, defaultOptions, options);
if (!config.enabled) {
return resolvers;
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var monitor = ((fn, reporter) => (() => {
var _ref = asyncToGenerator(function* (...args) {
const evt = reporter.newEvent && reporter.newEvent(fn, args);
if (reporter.start) {
reporter.start(evt);
}
try {
const result = yield fn(...args);
if (reporter.end) {
reporter.end(evt, result);
}
return result;
} catch (err) {
if (reporter.error) {
reporter.error(evt, err);
}
throw err;
}
});
return function () {
return _ref.apply(this, arguments);
};
})());
/*
* UUID-js: A js library to generate and parse UUIDs, TimeUUIDs and generate
* TimeUUID based on dates for range selections.
* @see http://www.ietf.org/rfc/rfc4122.txt
**/
function UUIDjs() {
}
UUIDjs.maxFromBits = function(bits) {
return Math.pow(2, bits);
};
UUIDjs.limitUI04 = UUIDjs.maxFromBits(4);
UUIDjs.limitUI06 = UUIDjs.maxFromBits(6);
UUIDjs.limitUI08 = UUIDjs.maxFromBits(8);
UUIDjs.limitUI12 = UUIDjs.maxFromBits(12);
UUIDjs.limitUI14 = UUIDjs.maxFromBits(14);
UUIDjs.limitUI16 = UUIDjs.maxFromBits(16);
UUIDjs.limitUI32 = UUIDjs.maxFromBits(32);
UUIDjs.limitUI40 = UUIDjs.maxFromBits(40);
UUIDjs.limitUI48 = UUIDjs.maxFromBits(48);
// Returns a random integer between min and max
// Using Math.round() will give you a non-uniform distribution!
// @see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/random
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
UUIDjs.randomUI04 = function() {
return getRandomInt(0, UUIDjs.limitUI04-1);
};
UUIDjs.randomUI06 = function() {
return getRandomInt(0, UUIDjs.limitUI06-1);
};
UUIDjs.randomUI08 = function() {
return getRandomInt(0, UUIDjs.limitUI08-1);
};
UUIDjs.randomUI12 = function() {
return getRandomInt(0, UUIDjs.limitUI12-1);
};
UUIDjs.randomUI14 = function() {
return getRandomInt(0, UUIDjs.limitUI14-1);
};
UUIDjs.randomUI16 = function() {
return getRandomInt(0, UUIDjs.limitUI16-1);
};
UUIDjs.randomUI32 = function() {
return getRandomInt(0, UUIDjs.limitUI32-1);
};
UUIDjs.randomUI40 = function() {
return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 40 - 30)) * (1 << 30);
};
UUIDjs.randomUI48 = function() {
return (0 | Math.random() * (1 << 30)) + (0 | Math.random() * (1 << 48 - 30)) * (1 << 30);
};
UUIDjs.paddedString = function(string, length, z) {
string = String(string);
z = (!z) ? '0' : z;
var i = length - string.length;
for (; i > 0; i >>>= 1, z += z) {
if (i & 1) {
string = z + string;
}
}
return string;
};
UUIDjs.prototype.fromParts = function(timeLow, timeMid, timeHiAndVersion, clockSeqHiAndReserved, clockSeqLow, node) {
this.version = (timeHiAndVersion >> 12) & 0xF;
this.hex = UUIDjs.paddedString(timeLow.toString(16), 8)
+ '-'
+ UUIDjs.paddedString(timeMid.toString(16), 4)
+ '-'
+ UUIDjs.paddedString(timeHiAndVersion.toString(16), 4)
+ '-'
+ UUIDjs.paddedString(clockSeqHiAndReserved.toString(16), 2)
+ UUIDjs.paddedString(clockSeqLow.toString(16), 2)
+ '-'
+ UUIDjs.paddedString(node.toString(16), 12);
return this;
};
UUIDjs.prototype.toString = function() {
return this.hex;
};
UUIDjs.prototype.toURN = function() {
return 'urn:uuid:' + this.hex;
};
UUIDjs.prototype.toBytes = function() {
var parts = this.hex.split('-');
var ints = [];
var intPos = 0;
for (var i = 0; i < parts.length; i++) {
for (var j = 0; j < parts[i].length; j+=2) {
ints[intPos++] = parseInt(parts[i].substr(j, 2), 16);
}
}
return ints;
};
UUIDjs.prototype.equals = function(uuid) {
if (!(uuid instanceof UUID)) {
return false;
}
if (this.hex !== uuid.hex) {
return false;
}
return true;
};
UUIDjs.getTimeFieldValues = function(time) {
var ts = time - Date.UTC(1582, 9, 15);
var hm = ((ts / 0x100000000) * 10000) & 0xFFFFFFF;
return { low: ((ts & 0xFFFFFFF) * 10000) % 0x100000000,
mid: hm & 0xFFFF, hi: hm >>> 16, timestamp: ts };
};
UUIDjs._create4 = function() {
return new UUIDjs().fromParts(
UUIDjs.randomUI32(),
UUIDjs.randomUI16(),
0x4000 | UUIDjs.randomUI12(),
0x80 | UUIDjs.randomUI06(),
UUIDjs.randomUI08(),
UUIDjs.randomUI48()
);
};
UUIDjs._create1 = function() {
var now = new Date().getTime();
var sequence = UUIDjs.randomUI14();
var node = (UUIDjs.randomUI08() | 1) * 0x10000000000 + UUIDjs.randomUI40();
var tick = UUIDjs.randomUI04();
var timestamp = 0;
var timestampRatio = 1/4;
if (now != timestamp) {
if (now < timestamp) {
sequence++;
}
timestamp = now;
tick = UUIDjs.randomUI04();
} else if (Math.random() < timestampRatio && tick < 9984) {
tick += 1 + UUIDjs.randomUI04();
} else {
sequence++;
}
var tf = UUIDjs.getTimeFieldValues(timestamp);
var tl = tf.low + tick;
var thav = (tf.hi & 0xFFF) | 0x1000;
sequence &= 0x3FFF;
var cshar = (sequence >>> 8) | 0x80;
var csl = sequence & 0xFF;
return new UUIDjs().fromParts(tl, tf.mid, thav, cshar, csl, node);
};
UUIDjs.create = function(version) {
version = version || 4;
return this['_create' + version]();
};
UUIDjs.fromTime = function(time, last) {
last = (!last) ? false : last;
var tf = UUIDjs.getTimeFieldValues(time);
var tl = tf.low;
var thav = (tf.hi & 0xFFF) | 0x1000; // set version '0001'
if (last === false) {
return new UUIDjs().fromParts(tl, tf.mid, thav, 0, 0, 0);
} else {
return new UUIDjs().fromParts(tl, tf.mid, thav, 0x80 | UUIDjs.limitUI06, UUIDjs.limitUI08 - 1, UUIDjs.limitUI48 - 1);
}
};
UUIDjs.firstFromTime = function(time) {
return UUIDjs.fromTime(time, false);
};
UUIDjs.lastFromTime = function(time) {
return UUIDjs.fromTime(time, true);
};
UUIDjs.fromURN = function(strId) {
var r, p = /^(?:urn:uuid:|\{)?([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})(?:\})?$/i;
if ((r = p.exec(strId))) {
return new UUIDjs().fromParts(parseInt(r[1], 16), parseInt(r[2], 16),
parseInt(r[3], 16), parseInt(r[4], 16),
parseInt(r[5], 16), parseInt(r[6], 16));
}
return null;
};
UUIDjs.fromBytes = function(ints) {
if (ints.length < 5) {
return null;
}
var str = '';
var pos = 0;
var parts = [4, 2, 2, 2, 6];
for (var i = 0; i < parts.length; i++) {
for (var j = 0; j < parts[i]; j++) {
var octet = ints[pos++].toString(16);
if (octet.length == 1) {
octet = '0' + octet;
}
str += octet;
}
if (parts[i] !== 6) {
str += '-';
}
}
return UUIDjs.fromURN(str);
};
UUIDjs.fromBinary = function(binary) {
var ints = [];
for (var i = 0; i < binary.length; i++) {
ints[i] = binary.charCodeAt(i);
if (ints[i] > 255 || ints[i] < 0) {
throw new Error('Unexpected byte in binary data.');
}
}
return UUIDjs.fromBytes(ints);
};
// Aliases to support legacy code. Do not use these when writing new code as
// they may be removed in future versions!
UUIDjs.new = function() {
return this.create(4);
};
UUIDjs.newTS = function() {
return this.create(1);
};
var uuid = UUIDjs;
const nullReporter = () => ({
newHit: () => {},
start: () => {},
end: () => {},
error: () => {},
getEvents: () => []
});
const memoryReporter = () => {
const events = [];
return {
newEvent: fn => {
const hit = { id: uuid.create(), name: fn.name };
events.push(hit);
return hit;
},
/* eslint-disable no-param-reassign */
start: hit => {
hit.start = new Date();
},
end: hit => {
hit.end = new Date();
},
error: (hit, _error) => {
hit.end = new Date();
hit.error = _error;
},
/* eslint-enable no-param-reassign */
getEvents: () => events
};
};
const nullReporter$1 = nullReporter;
const memoryReporter$1 = memoryReporter;
const traverseResolvers = (resolvers, reporter) => {
const wrapped = {};

@@ -28,5 +372,5 @@

if (typeof resolvers[key] === 'object') {
wrapped[key] = wrap(resolvers[key]);
wrapped[key] = traverseResolvers(resolvers[key], reporter);
} else if (typeof resolvers[key] === 'function') {
wrapped[key] = (0, _monitor2.default)(resolvers[key]);
wrapped[key] = monitor(resolvers[key], reporter);
} else {

@@ -40,3 +384,27 @@ wrapped[key] = resolvers[key];

exports.default = wrap;
module.exports = exports['default'];
const defaultOptions = {
enabled: true,
disableInProduction: true,
env: process && process.env && process.env.NODE_ENV === 'production',
reporter: nullReporter
};
const profileResolvers = (resolvers, options = {}) => {
const config = _extends({}, defaultOptions, options);
if (!config.enabled || config.disableInProduction && config.env === 'production') {
return resolvers;
}
const reporter = typeof config.reporter === 'function' ? config.reporter() : config.reporter;
return traverseResolvers(resolvers, reporter);
};
exports.nullReporter = nullReporter$1;
exports.memoryReporter = memoryReporter$1;
exports.profileResolvers = profileResolvers;
Object.defineProperty(exports, '__esModule', { value: true });
})));

25

package.json
{
"name": "gql-profiler",
"version": "0.0.1",
"version": "0.0.2",
"description": "A profiler for GraphQL resolvers",

@@ -10,10 +10,23 @@ "main": "lib/index.js",

"scripts": {
"build": "./node_modules/.bin/babel src -d lib"
"build": "./node_modules/.bin/rollup -c"
},
"devDependencies": {
"babel-cli": "6.26.0",
"babel-plugin-add-module-exports": "0.2.1",
"babel-plugin-transform-object-rest-spread": "6.26.0",
"babel-preset-env": "1.6.1"
"babel-core": "^6.26.0",
"babel-eslint": "^8.2.1",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-env": "^1.6.1",
"eslint": "^4.17.0",
"eslint-config-airbnb": "^16.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^6.0.2",
"eslint-plugin-react": "^7.4.0",
"rollup": "^0.55.3",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-commonjs": "^8.3.0",
"rollup-plugin-node-resolve": "^3.0.2"
},
"dependencies": {
"uuid-js": "^0.7.5"
}
}
import monitor from './monitor';
import {
nullReporter as nullReporterFactory,
memoryReporter as memoryReporterFactory,
} from './reporters';
const defaultOptions = { enabled: true };
export const nullReporter = nullReporterFactory;
export const memoryReporter = memoryReporterFactory;
const wrap = (resolvers, options = {}) => {
const config = { ...defaultOptions, ...options };
if (!config.enabled) {
return resolvers;
}
const traverseResolvers = (resolvers, reporter) => {
const wrapped = {};
Object.keys(resolvers).forEach(key => {
Object.keys(resolvers).forEach((key) => {
if (typeof resolvers[key] === 'object') {
wrapped[key] = wrap(resolvers[key]);
wrapped[key] = traverseResolvers(resolvers[key], reporter);
} else if (typeof resolvers[key] === 'function') {
wrapped[key] = monitor(resolvers[key]);
wrapped[key] = monitor(resolvers[key], reporter);
} else {

@@ -27,2 +26,19 @@ wrapped[key] = resolvers[key];

export default wrap;
const defaultOptions = {
enabled: true,
disableInProduction: true,
env: process && process.env && process.env.NODE_ENV === 'production',
reporter: nullReporterFactory,
};
export const profileResolvers = (resolvers, options = {}) => {
const config = { ...defaultOptions, ...options };
if (!config.enabled || (config.disableInProduction && config.env === 'production')) {
return resolvers;
}
const reporter = typeof config.reporter === 'function' ? config.reporter() : config.reporter;
return traverseResolvers(resolvers, reporter);
};

@@ -1,1 +0,23 @@

export default fn => async (...args) => await fn(...args);;
export default (fn, reporter) => async (...args) => {
const evt = reporter.newEvent && reporter.newEvent(fn, args);
if (reporter.start) {
reporter.start(evt);
}
try {
const result = await fn(...args);
if (reporter.end) {
reporter.end(evt, result);
}
return result;
} catch (err) {
if (reporter.error) {
reporter.error(evt, err);
}
throw err;
}
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc