aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/vim-mode/node_modules/grim/lib
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2015-09-28 12:39:59 -0500
committerBen Beltran <ben@nsovocal.com>2015-09-28 12:39:59 -0500
commit455f099b504ec07dd492ab31987ae05a6f6774c7 (patch)
tree22b0c7fd8e492733b97e661750a2d79c46da451d /atom/packages/vim-mode/node_modules/grim/lib
parent24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a (diff)
Adds atom packages
Diffstat (limited to 'atom/packages/vim-mode/node_modules/grim/lib')
-rw-r--r--atom/packages/vim-mode/node_modules/grim/lib/deprecation.js149
-rw-r--r--atom/packages/vim-mode/node_modules/grim/lib/grim.js105
2 files changed, 254 insertions, 0 deletions
diff --git a/atom/packages/vim-mode/node_modules/grim/lib/deprecation.js b/atom/packages/vim-mode/node_modules/grim/lib/deprecation.js
new file mode 100644
index 0000000..fa39865
--- /dev/null
+++ b/atom/packages/vim-mode/node_modules/grim/lib/deprecation.js
@@ -0,0 +1,149 @@
+(function() {
+ var Deprecation, SourceMapCache;
+
+ SourceMapCache = {};
+
+ module.exports = Deprecation = (function() {
+ Deprecation.getFunctionNameFromCallsite = function(callsite) {};
+
+ Deprecation.deserialize = function(_arg) {
+ var deprecation, fileName, lineNumber, message, stack, stacks, _i, _len;
+ message = _arg.message, fileName = _arg.fileName, lineNumber = _arg.lineNumber, stacks = _arg.stacks;
+ deprecation = new Deprecation(message, fileName, lineNumber);
+ for (_i = 0, _len = stacks.length; _i < _len; _i++) {
+ stack = stacks[_i];
+ deprecation.addStack(stack, stack.metadata);
+ }
+ return deprecation;
+ };
+
+ function Deprecation(message, fileName, lineNumber) {
+ this.message = message;
+ this.fileName = fileName;
+ this.lineNumber = lineNumber;
+ this.callCount = 0;
+ this.stackCount = 0;
+ this.stacks = {};
+ this.stackCallCounts = {};
+ }
+
+ Deprecation.prototype.getFunctionNameFromCallsite = function(callsite) {
+ var _ref, _ref1, _ref2;
+ if (callsite.functionName != null) {
+ return callsite.functionName;
+ }
+ if (callsite.isToplevel()) {
+ return (_ref = callsite.getFunctionName()) != null ? _ref : '<unknown>';
+ } else {
+ if (callsite.isConstructor()) {
+ return "new " + (callsite.getFunctionName());
+ } else if (callsite.getMethodName() && !callsite.getFunctionName()) {
+ return callsite.getMethodName();
+ } else {
+ return "" + (callsite.getTypeName()) + "." + ((_ref1 = (_ref2 = callsite.getMethodName()) != null ? _ref2 : callsite.getFunctionName()) != null ? _ref1 : '<anonymous>');
+ }
+ }
+ };
+
+ Deprecation.prototype.getLocationFromCallsite = function(callsite) {
+ var column, fileName, line;
+ if (callsite.location != null) {
+ return callsite.location;
+ }
+ if (callsite.isNative()) {
+ return "native";
+ } else if (callsite.isEval()) {
+ return "eval at " + (this.getLocationFromCallsite(callsite.getEvalOrigin()));
+ } else {
+ fileName = callsite.getFileName();
+ line = callsite.getLineNumber();
+ column = callsite.getColumnNumber();
+ return "" + fileName + ":" + line + ":" + column;
+ }
+ };
+
+ Deprecation.prototype.getFileNameFromCallSite = function(callsite) {
+ var _ref;
+ return (_ref = callsite.fileName) != null ? _ref : callsite.getFileName();
+ };
+
+ Deprecation.prototype.getOriginName = function() {
+ return this.originName;
+ };
+
+ Deprecation.prototype.getMessage = function() {
+ return this.message;
+ };
+
+ Deprecation.prototype.getStacks = function() {
+ var location, parsedStack, parsedStacks, stack, _ref;
+ parsedStacks = [];
+ _ref = this.stacks;
+ for (location in _ref) {
+ stack = _ref[location];
+ parsedStack = this.parseStack(stack);
+ parsedStack.callCount = this.stackCallCounts[location];
+ parsedStack.metadata = stack.metadata;
+ parsedStacks.push(parsedStack);
+ }
+ return parsedStacks;
+ };
+
+ Deprecation.prototype.getStackCount = function() {
+ return this.stackCount;
+ };
+
+ Deprecation.prototype.getCallCount = function() {
+ return this.callCount;
+ };
+
+ Deprecation.prototype.addStack = function(stack, metadata) {
+ var callerLocation, _base, _base1;
+ if (this.originName == null) {
+ this.originName = this.getFunctionNameFromCallsite(stack[0]);
+ }
+ if (this.fileName == null) {
+ this.fileName = this.getFileNameFromCallSite(stack[0]);
+ }
+ if (this.lineNumber == null) {
+ this.lineNumber = typeof (_base = stack[0]).getLineNumber === "function" ? _base.getLineNumber() : void 0;
+ }
+ this.callCount++;
+ stack.metadata = metadata;
+ callerLocation = this.getLocationFromCallsite(stack[1]);
+ if (this.stacks[callerLocation] == null) {
+ this.stacks[callerLocation] = stack;
+ this.stackCount++;
+ }
+ if ((_base1 = this.stackCallCounts)[callerLocation] == null) {
+ _base1[callerLocation] = 0;
+ }
+ return this.stackCallCounts[callerLocation]++;
+ };
+
+ Deprecation.prototype.parseStack = function(stack) {
+ return stack.map((function(_this) {
+ return function(callsite) {
+ return {
+ functionName: _this.getFunctionNameFromCallsite(callsite),
+ location: _this.getLocationFromCallsite(callsite),
+ fileName: _this.getFileNameFromCallSite(callsite)
+ };
+ };
+ })(this));
+ };
+
+ Deprecation.prototype.serialize = function() {
+ return {
+ message: this.getMessage(),
+ lineNumber: this.lineNumber,
+ fileName: this.fileName,
+ stacks: this.getStacks()
+ };
+ };
+
+ return Deprecation;
+
+ })();
+
+}).call(this);
diff --git a/atom/packages/vim-mode/node_modules/grim/lib/grim.js b/atom/packages/vim-mode/node_modules/grim/lib/grim.js
new file mode 100644
index 0000000..52ca968
--- /dev/null
+++ b/atom/packages/vim-mode/node_modules/grim/lib/grim.js
@@ -0,0 +1,105 @@
+(function() {
+ var Deprecation, Emitter, grim;
+
+ Emitter = require('emissary').Emitter;
+
+ Deprecation = require('./deprecation');
+
+ if (global.__grim__ == null) {
+ grim = global.__grim__ = {
+ deprecations: {},
+ includeDeprecatedAPIs: true,
+ getDeprecations: function() {
+ var deprecation, deprecations, deprecationsByLineNumber, deprecationsByPackage, fileName, lineNumber, packageName, _ref;
+ deprecations = [];
+ _ref = grim.deprecations;
+ for (fileName in _ref) {
+ deprecationsByLineNumber = _ref[fileName];
+ for (lineNumber in deprecationsByLineNumber) {
+ deprecationsByPackage = deprecationsByLineNumber[lineNumber];
+ for (packageName in deprecationsByPackage) {
+ deprecation = deprecationsByPackage[packageName];
+ deprecations.push(deprecation);
+ }
+ }
+ }
+ return deprecations;
+ },
+ getDeprecationsLength: function() {
+ return this.getDeprecations().length;
+ },
+ clearDeprecations: function() {
+ grim.deprecations = {};
+ },
+ logDeprecations: function() {
+ var deprecation, deprecations, _i, _len;
+ deprecations = this.getDeprecations();
+ deprecations.sort(function(a, b) {
+ return b.getCallCount() - a.getCallCount();
+ });
+ console.warn("\nCalls to deprecated functions\n-----------------------------");
+ for (_i = 0, _len = deprecations.length; _i < _len; _i++) {
+ deprecation = deprecations[_i];
+ console.warn("(" + (deprecation.getCallCount()) + ") " + (deprecation.getOriginName()) + " : " + (deprecation.getMessage()), deprecation);
+ }
+ },
+ deprecate: function(message, metadata) {
+ var deprecation, deprecationSite, error, fileName, lineNumber, originalPrepareStackTrace, originalStackTraceLimit, packageName, stack, _base, _base1, _base2, _ref;
+ originalStackTraceLimit = Error.stackTraceLimit;
+ Error.stackTraceLimit = 7;
+ error = new Error;
+ Error.captureStackTrace(error);
+ Error.stackTraceLimit = originalStackTraceLimit;
+ originalPrepareStackTrace = Error.prepareStackTrace;
+ Error.prepareStackTrace = function(error, stack) {
+ return stack;
+ };
+ stack = error.stack.slice(1);
+ Error.prepareStackTrace = originalPrepareStackTrace;
+ deprecationSite = stack[0];
+ fileName = deprecationSite.getFileName();
+ lineNumber = deprecationSite.getLineNumber();
+ packageName = (_ref = metadata != null ? metadata.packageName : void 0) != null ? _ref : "";
+ if ((_base = grim.deprecations)[fileName] == null) {
+ _base[fileName] = {};
+ }
+ if ((_base1 = grim.deprecations[fileName])[lineNumber] == null) {
+ _base1[lineNumber] = {};
+ }
+ if ((_base2 = grim.deprecations[fileName][lineNumber])[packageName] == null) {
+ _base2[packageName] = new Deprecation(message);
+ }
+ deprecation = grim.deprecations[fileName][lineNumber][packageName];
+ deprecation.addStack(stack, metadata);
+ grim.emit("updated", deprecation);
+ },
+ addSerializedDeprecation: function(serializedDeprecation) {
+ var deprecation, fileName, lineNumber, message, packageName, stack, stacks, _base, _base1, _base2, _i, _len, _ref, _ref1, _ref2;
+ deprecation = Deprecation.deserialize(serializedDeprecation);
+ message = deprecation.getMessage();
+ fileName = deprecation.fileName, lineNumber = deprecation.lineNumber;
+ stacks = deprecation.getStacks();
+ packageName = (_ref = (_ref1 = stacks[0]) != null ? (_ref2 = _ref1.metadata) != null ? _ref2.packageName : void 0 : void 0) != null ? _ref : "";
+ if ((_base = grim.deprecations)[fileName] == null) {
+ _base[fileName] = {};
+ }
+ if ((_base1 = grim.deprecations[fileName])[lineNumber] == null) {
+ _base1[lineNumber] = {};
+ }
+ if ((_base2 = grim.deprecations[fileName][lineNumber])[packageName] == null) {
+ _base2[packageName] = new Deprecation(message, fileName, lineNumber);
+ }
+ deprecation = grim.deprecations[fileName][lineNumber][packageName];
+ for (_i = 0, _len = stacks.length; _i < _len; _i++) {
+ stack = stacks[_i];
+ deprecation.addStack(stack, stack.metadata);
+ }
+ grim.emit("updated", deprecation);
+ }
+ };
+ Emitter.extend(grim);
+ }
+
+ module.exports = global.__grim__;
+
+}).call(this);