Socket
Socket
Sign inDemoInstall

axe

Package Overview
Dependencies
Maintainers
1
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

axe - npm Package Compare versions

Comparing version 0.3.7 to 1.0.0

dist/axe.js

270

lib/index.js

@@ -1,134 +0,221 @@

'use strict';
"use strict";
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; };
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
var _objectPath = require('object-path');
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
var _objectPath2 = _interopRequireDefault(_objectPath);
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
var _cryptoExtra = require('crypto-extra');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _cryptoExtra2 = _interopRequireDefault(_cryptoExtra);
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
var _deepAssign = require('deep-assign');
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var _deepAssign2 = _interopRequireDefault(_deepAssign);
var format = require('format-util');
var _types = require('./components/types');
var superagent = require('superagent');
var _types2 = _interopRequireDefault(_types);
var parseErr = require('parse-err');
var _intrinsics = require('./components/intrinsics');
var safeStringify = require('fast-safe-stringify'); // <https://lacke.mn/reduce-your-bundle-js-file-size/>
// <https://github.com/lodash/babel-plugin-lodash/issues/221>
var _intrinsics2 = _interopRequireDefault(_intrinsics);
var _pseudos = require('./components/pseudos');
var isError = require('lodash/isError');
var _pseudos2 = _interopRequireDefault(_pseudos);
var isObject = require('lodash/isObject');
var _apply = require('./components/apply');
var isString = require('lodash/isString');
var _apply2 = _interopRequireDefault(_apply);
var includes = require('lodash/includes');
var _emit = require('./utils/emit');
var omit = require('lodash/omit');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var isEmpty = require('lodash/isEmpty');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var isPlainObject = require('lodash/isPlainObject');
var Axe = function () {
var isUndefined = require('lodash/isUndefined');
var isNull = require('lodash/isNull'); // add retry logic to superagent
require('superagent-retry')(superagent); // eslint-disable-next-line import/no-unassigned-import
require('console-polyfill'); // these are known as "placeholder tokens", see this link for more info:
// <https://nodejs.org/api/util.html#util_util_format_format_args>
//
// since they aren't exposed (or don't seem to be) by node (at least not yet)
// we just define an array that contains them for now
// <https://github.com/nodejs/node/issues/17601>
var tokens = ['%s', '%d', '%i', '%f', '%j', '%o', '%O', '%%'];
var levels = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];
var endpoint = 'https://api.cabinjs.com';
var Axe =
/*#__PURE__*/
function () {
function Axe() {
var _this = this;
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Axe);
this._name = opts.name || 'axe-' + _cryptoExtra2.default.randomString(15, '0123456789');
if (!opts.name) {
(0, _emit.warn)('Stacks with generated names cannot be updated! Provide your own name to remedy this.');
}
this.config = Object.assign({
key: '',
endpoint: endpoint,
headers: {},
timeout: 5000,
retry: 3,
showStack: true,
showMeta: false,
silent: false,
logger: console,
levels: ['info', 'warn', 'error', 'fatal'],
capture: true
}, config); // we could have used `auto-bind` but it's not compiled for browser
this._params = opts.params || {};
this.envParam = opts.envParam !== undefined ? opts.envParam : true;
this.hiddenParams = opts.hiddenParams !== undefined ? opts.hiddenParams : true;
this.log = this.log.bind(this); // bind helper functions for each log level
if (opts.appendEnv) {
if (process.env.NODE_ENV) {
this.baseName = this._name;
this._name += '--' + process.env.NODE_ENV;
} else {
(0, _emit.warn)('"appendEnv" is set to true, but environment was not found!');
}
}
levels.forEach(function (level) {
_this[level] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
this._stack = {
Mappings: {},
Conditions: {},
Resources: {},
Outputs: {},
Parameters: {}
};
return _this.log.apply(_this, _toConsumableArray([level].concat([].slice.call(args))));
};
}); // aliases
this.addMapping = function (data) {
return _this._add('Mappings', data);
};
this.addCondition = function (data) {
return _this._add('Conditions', data);
};
this.addResource = function (data) {
return _this._add('Resources', data);
};
this.addOutput = function (data) {
return _this._add('Outputs', data);
};
this.err = this.error;
this.warning = this.warn;
} // eslint-disable-next-line complexity
this.apply = _apply2.default;
}
_createClass(Axe, [{
key: '_add',
value: function _add(type, data) {
key: "log",
value: function log(level, message) {
var _this2 = this;
if (typeof data === 'function') {
data = data(this);
var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
args[_key2 - 3] = arguments[_key2];
}
if (Array.isArray(data)) {
data = data.filter(Boolean);
var originalArgs = [level, message, meta].concat(_toConsumableArray([].slice.call(args)));
var config = this.config;
var modifier = 0;
if (level === 'warning') level = 'warn';
if (level === 'err') level = 'error';
return data.forEach(function (i) {
return _this2._add(type, i);
});
}
if (isError(level)) {
meta = message;
message = level;
level = 'error';
} else if (!isString(level) || !includes(levels, level)) {
meta = message;
message = level;
level = 'info';
modifier = -1;
} // if there are four or more args
// then infer to use util.format on everything
var key = Object.keys(data)[0];
if (this._stack[type][key]) {
throw new Error('Duplicate ' + type.toLowerCase() + ' ID was found: ' + key);
if (arguments.length >= 4 + modifier) {
message = format.apply(void 0, _toConsumableArray(originalArgs.slice(1 + modifier)));
meta = {};
} else if (arguments.length === 3 + modifier && isString(message) && tokens.some(function (t) {
return includes(message, t);
})) {
// otherwise if there are three args and if the `message` contains
// a placeholder token (e.g. '%s' or '%d' - see above `tokens` variable)
// then we can infer that the `meta` arg passed is used for formatting
message = format(message, meta);
meta = {};
} else if (!isError(message)) {
if (isError(meta)) {
meta = {
err: parseErr(meta)
};
} else if (!isPlainObject(meta) && !isUndefined(meta) && !isNull(meta)) {
// if the `meta` variable passed was not an Object then convert it
message = format(message, meta);
meta = {};
} else if (!isString(message)) {
// if the message is not a string then we should run `util.format` on it
// assuming we're formatting it like it was another argument
// (as opposed to using something like fast-json-stringify)
message = format(message);
}
}
if (type === 'Resources') {
(function () {
var tags = _objectPath2.default.get(data[key], 'Properties.Tags');
if (tags && !Array.isArray(tags)) {
data[key].Properties.Tags = Object.keys(tags).map(function (tag) {
return {
Key: tag,
Value: tags[tag]
};
});
if (!isPlainObject(meta)) meta = {};
var err;
if (isError(message)) {
err = message;
if (!isObject(meta.err)) meta.err = parseErr(err);
var _message = message;
message = _message.message;
} // set default level on meta
meta.level = level; // set the body used for returning with and sending logs
// (and also remove circular references)
var body = safeStringify({
message: message,
meta: meta
}); // send to Cabin or other logging service here the `message` and `meta`
if (config.capture && includes(config.levels, level) && (!isError(err) || !err._captureFailed)) {
// if the user didn't specify a key
// and they are using the default endpoint
// then we should throw an error to them
if (config.endpoint === endpoint && !config.key) throw new Error("Please provide your Cabin API key as `new Axe({ key: 'YOUR-CABIN-API-KEY' })`.\nVisit <https://cabinjs.com> to sign up for free!\nHide this message with `new Axe({ capture: false })`."); // capture the log over HTTP
var req = superagent.post(config.endpoint).timeout(config.timeout); // basic auth (e.g. Cabin API key)
if (config.key) req.auth(config.key); // set headers if any
if (!isEmpty(config.headers)) req.set(config.headers);
req.retry(config.retry).send(body).end(function (err) {
if (err) {
err._captureFailed = true;
_this2.config.logger.error(err);
}
})();
}
});
} // Suppress logs if it was silent
(0, _deepAssign2.default)(this._stack[type], data);
if (config.silent) return body; // if there was meta information then output it
var omitted = omit(meta, ['level', 'err']); // fatal should use error (e.g. in browser)
if (level === 'fatal') level = 'error'; // if we didn't pass a level as a method
// (e.g. console.info), then we should still
// use the logger's `log` method to output
if (modifier === -1) level = 'log'; // show stack trace if necessary (along with any metadata)
if (level === 'error' && isError(err) && config.showStack) {
if (!config.showMeta || isEmpty(omitted)) this.config.logger.error(err);else this.config.logger.error(err, omitted);
} else if (!config.showMeta || isEmpty(omitted)) {
this.config.logger[level](message);
} else {
this.config.logger[level](message, omitted);
} // return the parsed body in case we need it
return body;
}
}, {
key: 'toJSON',
value: function toJSON(pretty) {
return pretty ? JSON.stringify(this._stack, null, 2) : JSON.stringify(this._stack);
}
}]);

@@ -139,4 +226,3 @@

module.exports = _extends({
Stack: Axe
}, _types2.default, _intrinsics2.default, _pseudos2.default);
module.exports = Axe;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJmb3JtYXQiLCJyZXF1aXJlIiwic3VwZXJhZ2VudCIsInBhcnNlRXJyIiwic2FmZVN0cmluZ2lmeSIsImlzRXJyb3IiLCJpc09iamVjdCIsImlzU3RyaW5nIiwiaW5jbHVkZXMiLCJvbWl0IiwiaXNFbXB0eSIsImlzUGxhaW5PYmplY3QiLCJpc1VuZGVmaW5lZCIsImlzTnVsbCIsInRva2VucyIsImxldmVscyIsImVuZHBvaW50IiwiQXhlIiwiY29uZmlnIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5IiwiaGVhZGVycyIsInRpbWVvdXQiLCJyZXRyeSIsInNob3dTdGFjayIsInNob3dNZXRhIiwic2lsZW50IiwibG9nZ2VyIiwiY29uc29sZSIsImNhcHR1cmUiLCJsb2ciLCJiaW5kIiwiZm9yRWFjaCIsImxldmVsIiwiYXJncyIsImNvbmNhdCIsInNsaWNlIiwiY2FsbCIsImVyciIsImVycm9yIiwid2FybmluZyIsIndhcm4iLCJtZXNzYWdlIiwibWV0YSIsIm9yaWdpbmFsQXJncyIsIm1vZGlmaWVyIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic29tZSIsInQiLCJib2R5IiwiX2NhcHR1cmVGYWlsZWQiLCJFcnJvciIsInJlcSIsInBvc3QiLCJhdXRoIiwic2V0Iiwic2VuZCIsImVuZCIsIm9taXR0ZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBTUEsU0FBU0MsUUFBUSxhQUFSLENBQWY7O0FBQ0EsSUFBTUMsYUFBYUQsUUFBUSxZQUFSLENBQW5COztBQUNBLElBQU1FLFdBQVdGLFFBQVEsV0FBUixDQUFqQjs7QUFDQSxJQUFNRyxnQkFBZ0JILFFBQVEscUJBQVIsQ0FBdEIsQyxDQUNBO0FBQ0E7OztBQUNBLElBQU1JLFVBQVVKLFFBQVEsZ0JBQVIsQ0FBaEI7O0FBQ0EsSUFBTUssV0FBV0wsUUFBUSxpQkFBUixDQUFqQjs7QUFDQSxJQUFNTSxXQUFX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RUFBMEJTLE9BQTFCLEVBQW1DaUIsT0FBbkM7QUFDRCxPQXpIcUMsQ0EySHRDOzs7QUFDQSxhQUFPVCxJQUFQO0FBQ0Q7Ozs7OztBQUdIVSxPQUFPQyxPQUFQLEdBQWlCN0MsR0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBmb3JtYXQgPSByZXF1aXJlKCdmb3JtYXQtdXRpbCcpO1xuY29uc3Qgc3VwZXJhZ2VudCA9IHJlcXVpcmUoJ3N1cGVyYWdlbnQnKTtcbmNvbnN0IHBhcnNlRXJyID0gcmVxdWlyZSgncGFyc2UtZXJyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuLy8gPGh0dHBzOi8vbGFja2UubW4vcmVkdWNlLXlvdXItYnVuZGxlLWpzLWZpbGUtc2l6ZS8+XG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9iYWJlbC1wbHVnaW4tbG9kYXNoL2lzc3Vlcy8yMjE+XG5jb25zdCBpc0Vycm9yID0gcmVxdWlyZSgnbG9kYXNoL2lzRXJyb3InKTtcbmNvbnN0IGlzT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzT2JqZWN0Jyk7XG5jb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJ2xvZGFzaC9pc1N0cmluZycpO1xuY29uc3QgaW5jbHVkZXMgPSByZXF1aXJlKCdsb2Rhc2gvaW5jbHVkZXMnKTtcbmNvbnN0IG9taXQgPSByZXF1aXJlKCdsb2Rhc2gvb21pdCcpO1xuY29uc3QgaXNFbXB0eSA9IHJlcXVpcmUoJ2xvZGFzaC9pc0VtcHR5Jyk7XG5jb25zdCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKTtcbmNvbnN0IGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnbG9kYXNoL2lzVW5kZWZpbmVkJyk7XG5jb25zdCBpc051bGwgPSByZXF1aXJlKCdsb2Rhc2gvaXNOdWxsJyk7XG5cbi8vIGFkZCByZXRyeSBsb2dpYyB0byBzdXBlcmFnZW50XG5yZXF1aXJlKCdzdXBlcmFnZW50LXJldHJ5Jykoc3VwZXJhZ2VudCk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW5hc3NpZ25lZC1pbXBvcnRcbnJlcXVpcmUoJ2NvbnNvbGUtcG9seWZpbGwnKTtcblxuLy8gdGhlc2UgYXJlIGtub3duIGFzIFwicGxhY2Vob2xkZXIgdG9rZW5zXCIsIHNlZSB0aGlzIGxpbmsgZm9yIG1vcmUgaW5mbzpcbi8vIDxodHRwczovL25vZGVqcy5vcmcvYXBpL3V0aWwuaHRtbCN1dGlsX3V0aWxfZm9ybWF0X2Zvcm1hdF9hcmdzPlxuLy9cbi8vIHNpbmNlIHRoZXkgYXJlbid0IGV4cG9zZWQgKG9yIGRvbid0IHNlZW0gdG8gYmUpIGJ5IG5vZGUgKGF0IGxlYXN0IG5vdCB5ZXQpXG4vLyB3ZSBqdXN0IGRlZmluZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZW0gZm9yIG5vd1xuLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMTc2MDE+XG5jb25zdCB0b2tlbnMgPSBbJyVzJywgJyVkJywgJyVpJywgJyVmJywgJyVqJywgJyVvJywgJyVPJywgJyUlJ107XG5jb25zdCBsZXZlbHMgPSBbJ3RyYWNlJywgJ2RlYnVnJywgJ2luZm8nLCAnd2FybicsICdlcnJvcicsICdmYXRhbCddO1xuY29uc3QgZW5kcG9pbnQgPSAnaHR0cHM6Ly9hcGkuY2FiaW5qcy5jb20nO1xuXG5jbGFzcyBBeGUge1xuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAga2V5OiAnJyxcbiAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICB0aW1lb3V0OiA1MDAwLFxuICAgICAgICByZXRyeTogMyxcbiAgICAgICAgc2hvd1N0YWNrOiB0cnVlLFxuICAgICAgICBzaG93TWV0YTogZmFsc2UsXG4gICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgIGxvZ2dlcjogY29uc29sZSxcbiAgICAgICAgbGV2ZWxzOiBbJ2luZm8nLCAnd2FybicsICdlcnJvcicsICdmYXRhbCddLFxuICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICB9LFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIC8vIHdlIGNvdWxkIGhhdmUgdXNlZCBgYXV0by1iaW5kYCBidXQgaXQncyBub3QgY29tcGlsZWQgZm9yIGJyb3dzZXJcbiAgICB0aGlzLmxvZyA9IHRoaXMubG9nLmJpbmQodGhpcyk7XG5cbiAgICAvLyBiaW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIGVhY2ggbG9nIGxldmVsXG4gICAgbGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xuICAgICAgdGhpc1tsZXZlbF0gPSAoLi4uYXJncykgPT5cbiAgICAgICAgdGhpcy5sb2coLi4uW2xldmVsXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmdzKSkpO1xuICAgIH0pO1xuXG4gICAgLy8gYWxpYXNlc1xuICAgIHRoaXMuZXJyID0gdGhpcy5lcnJvcjtcbiAgICB0aGlzLndhcm5pbmcgPSB0aGlzLndhcm47XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBsb2cobGV2ZWwsIG1lc3NhZ2UsIG1ldGEgPSB7fSwgLi4uYXJncykge1xuICAgIGNvbnN0IG9yaWdpbmFsQXJncyA9IFtsZXZlbCwgbWVzc2FnZSwgbWV0YSwgLi4uW10uc2xpY2UuY2FsbChhcmdzKV07XG4gICAgY29uc3QgeyBjb25maWcgfSA9IHRoaXM7XG4gICAgbGV0IG1vZGlmaWVyID0gMDtcblxuICAgIGlmIChsZXZlbCA9PT0gJ3dhcm5pbmcnKSBsZXZlbCA9ICd3YXJuJztcbiAgICBpZiAobGV2ZWwgPT09ICdlcnInKSBsZXZlbCA9ICdlcnJvcic7XG5cbiAgICBpZiAoaXNFcnJvcihsZXZlbCkpIHtcbiAgICAgIG1ldGEgPSBtZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9IGxldmVsO1xuICAgICAgbGV2ZWwgPSAnZXJyb3InO1xuICAgIH0gZWxzZSBpZiAoIWlzU3RyaW5nKGxldmVsKSB8fCAhaW5jbHVkZXMobGV2ZWxzLCBsZXZlbCkpIHtcbiAgICAgIG1ldGEgPSBtZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9IGxldmVsO1xuICAgICAgbGV2ZWwgPSAnaW5mbyc7XG4gICAgICBtb2RpZmllciA9IC0xO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZXJlIGFyZSBmb3VyIG9yIG1vcmUgYXJnc1xuICAgIC8vIHRoZW4gaW5mZXIgdG8gdXNlIHV0aWwuZm9ybWF0IG9uIGV2ZXJ5dGhpbmdcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0ICsgbW9kaWZpZXIpIHtcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoLi4ub3JpZ2luYWxBcmdzLnNsaWNlKDEgKyBtb2RpZmllcikpO1xuICAgICAgbWV0YSA9IHt9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAzICsgbW9kaWZpZXIgJiZcbiAgICAgIGlzU3RyaW5nKG1lc3NhZ2UpICYmXG4gICAgICB0b2tlbnMuc29tZSh0ID0+IGluY2x1ZGVzKG1lc3NhZ2UsIHQpKVxuICAgICkge1xuICAgICAgLy8gb3RoZXJ3aXNlIGlmIHRoZXJlIGFyZSB0aHJlZSBhcmdzIGFuZCBpZiB0aGUgYG1lc3NhZ2VgIGNvbnRhaW5zXG4gICAgICAvLyBhIHBsYWNlaG9sZGVyIHRva2VuIChlLmcuICclcycgb3IgJyVkJyAtIHNlZSBhYm92ZSBgdG9rZW5zYCB2YXJpYWJsZSlcbiAgICAgIC8vIHRoZW4gd2UgY2FuIGluZmVyIHRoYXQgdGhlIGBtZXRhYCBhcmcgcGFzc2VkIGlzIHVzZWQgZm9yIGZvcm1hdHRpbmdcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSwgbWV0YSk7XG4gICAgICBtZXRhID0ge307XG4gICAgfSBlbHNlIGlmICghaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgaWYgKGlzRXJyb3IobWV0YSkpIHtcbiAgICAgICAgbWV0YSA9IHsgZXJyOiBwYXJzZUVycihtZXRhKSB9O1xuICAgICAgfSBlbHNlIGlmICghaXNQbGFpbk9iamVjdChtZXRhKSAmJiAhaXNVbmRlZmluZWQobWV0YSkgJiYgIWlzTnVsbChtZXRhKSkge1xuICAgICAgICAvLyBpZiB0aGUgYG1ldGFgIHZhcmlhYmxlIHBhc3NlZCB3YXMgbm90IGFuIE9iamVjdCB0aGVuIGNvbnZlcnQgaXRcbiAgICAgICAgbWVzc2FnZSA9IGZvcm1hdChtZXNzYWdlLCBtZXRhKTtcbiAgICAgICAgbWV0YSA9IHt9O1xuICAgICAgfSBlbHNlIGlmICghaXNTdHJpbmcobWVzc2FnZSkpIHtcbiAgICAgICAgLy8gaWYgdGhlIG1lc3NhZ2UgaXMgbm90IGEgc3RyaW5nIHRoZW4gd2Ugc2hvdWxkIHJ1biBgdXRpbC5mb3JtYXRgIG9uIGl0XG4gICAgICAgIC8vIGFzc3VtaW5nIHdlJ3JlIGZvcm1hdHRpbmcgaXQgbGlrZSBpdCB3YXMgYW5vdGhlciBhcmd1bWVudFxuICAgICAgICAvLyAoYXMgb3Bwb3NlZCB0byB1c2luZyBzb21ldGhpbmcgbGlrZSBmYXN0LWpzb24tc3RyaW5naWZ5KVxuICAgICAgICBtZXNzYWdlID0gZm9ybWF0KG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaXNQbGFpbk9iamVjdChtZXRhKSkgbWV0YSA9IHt9O1xuXG4gICAgbGV0IGVycjtcbiAgICBpZiAoaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgZXJyID0gbWVzc2FnZTtcbiAgICAgIGlmICghaXNPYmplY3QobWV0YS5lcnIpKSBtZXRhLmVyciA9IHBhcnNlRXJyKGVycik7XG4gICAgICAoeyBtZXNzYWdlIH0gPSBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgZGVmYXVsdCBsZXZlbCBvbiBtZXRhXG4gICAgbWV0YS5sZXZlbCA9IGxldmVsO1xuXG4gICAgLy8gc2V0IHRoZSBib2R5IHVzZWQgZm9yIHJldHVybmluZyB3aXRoIGFuZCBzZW5kaW5nIGxvZ3NcbiAgICAvLyAoYW5kIGFsc28gcmVtb3ZlIGNpcmN1bGFyIHJlZmVyZW5jZXMpXG4gICAgY29uc3QgYm9keSA9IHNhZmVTdHJpbmdpZnkoeyBtZXNzYWdlLCBtZXRhIH0pO1xuXG4gICAgLy8gc2VuZCB0byBDYWJpbiBvciBvdGhlciBsb2dnaW5nIHNlcnZpY2UgaGVyZSB0aGUgYG1lc3NhZ2VgIGFuZCBgbWV0YWBcbiAgICBpZiAoXG4gICAgICBjb25maWcuY2FwdHVyZSAmJlxuICAgICAgaW5jbHVkZXMoY29uZmlnLmxldmVscywgbGV2ZWwpICYmXG4gICAgICAoIWlzRXJyb3IoZXJyKSB8fCAhZXJyLl9jYXB0dXJlRmFpbGVkKVxuICAgICkge1xuICAgICAgLy8gaWYgdGhlIHVzZXIgZGlkbid0IHNwZWNpZnkgYSBrZXlcbiAgICAgIC8vIGFuZCB0aGV5IGFyZSB1c2luZyB0aGUgZGVmYXVsdCBlbmRwb2ludFxuICAgICAgLy8gdGhlbiB3ZSBzaG91bGQgdGhyb3cgYW4gZXJyb3IgdG8gdGhlbVxuICAgICAgaWYgKGNvbmZpZy5lbmRwb2ludCA9PT0gZW5kcG9pbnQgJiYgIWNvbmZpZy5rZXkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIlBsZWFzZSBwcm92aWRlIHlvdXIgQ2FiaW4gQVBJIGtleSBhcyBgbmV3IEF4ZSh7IGtleTogJ1lPVVItQ0FCSU4tQVBJLUtFWScgfSlgLlxcblZpc2l0IDxodHRwczovL2NhYmluanMuY29tPiB0byBzaWduIHVwIGZvciBmcmVlIVxcbkhpZGUgdGhpcyBtZXNzYWdlIHdpdGggYG5ldyBBeGUoeyBjYXB0dXJlOiBmYWxzZSB9KWAuXCJcbiAgICAgICAgKTtcblxuICAgICAgLy8gY2FwdHVyZSB0aGUgbG9nIG92ZXIgSFRUUFxuICAgICAgY29uc3QgcmVxID0gc3VwZXJhZ2VudC5wb3N0KGNvbmZpZy5lbmRwb2ludCkudGltZW91dChjb25maWcudGltZW91dCk7XG5cbiAgICAgIC8vIGJhc2ljIGF1dGggKGUuZy4gQ2FiaW4gQVBJIGtleSlcbiAgICAgIGlmIChjb25maWcua2V5KSByZXEuYXV0aChjb25maWcua2V5KTtcblxuICAgICAgLy8gc2V0IGhlYWRlcnMgaWYgYW55XG4gICAgICBpZiAoIWlzRW1wdHkoY29uZmlnLmhlYWRlcnMpKSByZXEuc2V0KGNvbmZpZy5oZWFkZXJzKTtcblxuICAgICAgcmVxXG4gICAgICAgIC5yZXRyeShjb25maWcucmV0cnkpXG4gICAgICAgIC5zZW5kKGJvZHkpXG4gICAgICAgIC5lbmQoZXJyID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBlcnIuX2NhcHR1cmVGYWlsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmVycm9yKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTdXBwcmVzcyBsb2dzIGlmIGl0IHdhcyBzaWxlbnRcbiAgICBpZiAoY29uZmlnLnNpbGVudCkgcmV0dXJuIGJvZHk7XG5cbiAgICAvLyBpZiB0aGVyZSB3YXMgbWV0YSBpbmZvcm1hdGlvbiB0aGVuIG91dHB1dCBpdFxuICAgIGNvbnN0IG9taXR0ZWQgPSBvbWl0KG1ldGEsIFsnbGV2ZWwnLCAnZXJyJ10pO1xuXG4gICAgLy8gZmF0YWwgc2hvdWxkIHVzZSBlcnJvciAoZS5nLiBpbiBicm93c2VyKVxuICAgIGlmIChsZXZlbCA9PT0gJ2ZhdGFsJykgbGV2ZWwgPSAnZXJyb3InO1xuXG4gICAgLy8gaWYgd2UgZGlkbid0IHBhc3MgYSBsZXZlbCBhcyBhIG1ldGhvZFxuICAgIC8vIChlLmcuIGNvbnNvbGUuaW5mbyksIHRoZW4gd2Ugc2hvdWxkIHN0aWxsXG4gICAgLy8gdXNlIHRoZSBsb2dnZXIncyBgbG9nYCBtZXRob2QgdG8gb3V0cHV0XG4gICAgaWYgKG1vZGlmaWVyID09PSAtMSkgbGV2ZWwgPSAnbG9nJztcblxuICAgIC8vIHNob3cgc3RhY2sgdHJhY2UgaWYgbmVjZXNzYXJ5IChhbG9uZyB3aXRoIGFueSBtZXRhZGF0YSlcbiAgICBpZiAobGV2ZWwgPT09ICdlcnJvcicgJiYgaXNFcnJvcihlcnIpICYmIGNvbmZpZy5zaG93U3RhY2spIHtcbiAgICAgIGlmICghY29uZmlnLnNob3dNZXRhIHx8IGlzRW1wdHkob21pdHRlZCkpIHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgZWxzZSB0aGlzLmNvbmZpZy5sb2dnZXIuZXJyb3IoZXJyLCBvbWl0dGVkKTtcbiAgICB9IGVsc2UgaWYgKCFjb25maWcuc2hvd01ldGEgfHwgaXNFbXB0eShvbWl0dGVkKSkge1xuICAgICAgdGhpcy5jb25maWcubG9nZ2VyW2xldmVsXShtZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maWcubG9nZ2VyW2xldmVsXShtZXNzYWdlLCBvbWl0dGVkKTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gdGhlIHBhcnNlZCBib2R5IGluIGNhc2Ugd2UgbmVlZCBpdFxuICAgIHJldHVybiBib2R5O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXhlO1xuIl19
{
"name": "axe",
"version": "0.3.7",
"description": "Create AWS infrastructure with Javascript",
"author": "Jason Maurer",
"license": "MIT",
"homepage": "https://github.com/jsonmaur/axe#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/jsonmaur/axe.git"
"description": "Logging add-on to send logs over HTTP to your server in Node and Browser environments. Works with any logger! Chop up your logs consistently! Made for Cabin and Lad.",
"version": "1.0.0",
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
"ava": {
"serial": true
},
"bugs": {
"url": "https://github.com/cabinjs/axe/issues"
},
"contributors": [
"Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
"Alexis Tyler <xo@wvvw.me> (https://wvvw.me/)"
],
"dependencies": {
"console-polyfill": "^0.3.0",
"fast-safe-stringify": "^2.0.4",
"format-util": "^1.0.3",
"lodash": "^4.17.10",
"parse-err": "^0.0.2",
"superagent": "^3.8.3",
"superagent-retry": "^0.6.0"
},
"devDependencies": {
"@babel/cli": "^7.0.0-beta.51",
"@babel/core": "^7.0.0-beta.51",
"@babel/preset-env": "^7.0.0-beta.51",
"ava": "^1.0.0-beta.6",
"babelify": "^9.0.0",
"browserify": "^16.2.2",
"caniuse-lite": "^1.0.30000856",
"codecov": "^3.0.2",
"cross-env": "^5.2.0",
"eslint": "^5.0.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-compat": "^2.4.0",
"eslint-plugin-prettier": "^2.6.0",
"express": "^4.16.3",
"husky": "^0.14.3",
"jsdom": "^11.11.0",
"koa": "^2.5.1",
"lint-staged": "^7.2.0",
"nyc": "^12.0.2",
"prettier": "^1.13.5",
"remark-cli": "^5.0.0",
"remark-preset-github": "^0.0.8",
"rimraf": "^2.6.2",
"sinon": "^6.0.0",
"tinyify": "^2.4.3",
"xo": "^0.21.1"
},
"engines": {
"node": ">=4"
"node": ">=6.4"
},
"files": [
"lib",
"dist"
],
"homepage": "https://github.com/cabinjs/axe",
"keywords": [
"airbrake",
"analytic",
"analytics",
"api",
"axe",
"aws",
"amazon web services",
"hosting",
"cloudformation",
"stack",
"infra",
"infrastructure",
"devops",
"server"
"bugsnag",
"bunyan",
"cabin",
"cabinjs",
"chalk",
"color",
"colored",
"connect",
"console",
"express",
"hackable",
"hapi",
"koa",
"lad",
"ladjs",
"lass",
"log",
"logger",
"logging",
"loggly",
"middleware",
"official",
"raven",
"sentry",
"signale",
"timber",
"transport",
"winston",
"wrapper"
],
"files": [
"bin/",
"lib/",
"license",
"readme.md"
],
"license": "MIT",
"lint-staged": {
"*.{js,jsx,mjs,ts,tsx,css,less,scss,json,graphql}": [
"prettier --write --single-quote --trailing-comma none",
"git add"
],
"*.md": [
"remark . -qfo",
"git add"
]
},
"main": "lib/index.js",
"bin": {
"axe": "bin/axe"
"remarkConfig": {
"plugins": [
"preset-github"
]
},
"repository": {
"type": "git",
"url": "https://github.com/cabinjs/axe"
},
"scripts": {
"test:lint": "standard --verbose | snazzy",
"test:unit": "mocha 'src/**/*.test.js' -R dot -r babel-register -r babel-polyfill",
"test": "npm-run-all test:*",
"prebuild": "rm -rf lib",
"build": "babel src -d lib --no-comments --ignore '*.test.js'",
"watch": "npm run build -- -w",
"prepublish": "npm run build"
"ava": "cross-env NODE_ENV=test ava",
"browserify": "browserify src/index.js -o dist/axe.js -s Axe -d -t babelify",
"build": "npm run build:clean && npm run build:lib && npm run build:dist",
"build:clean": "rimraf lib dist",
"build:dist": "npm run browserify && npm run minify",
"build:lib": "babel src --out-dir lib",
"coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov",
"lint": "xo && remark . -qfo && eslint lib && eslint dist",
"minify": "cross-env NODE_ENV=production browserify src/index.js -o dist/axe.min.js -s Axe -d -t babelify -p tinyify",
"nyc": "cross-env NODE_ENV=test nyc ava",
"precommit": "lint-staged && npm test",
"test": "npm run build && npm run lint && npm run ava",
"test-coverage": "npm run build && npm run lint && npm run nyc"
},
"dependencies": {
"aws-sdk": "2.6.12",
"chalk": "1.1.3",
"crypto-extra": "0.4.0",
"deep-assign": "2.0.0",
"minimist": "1.2.0",
"object-path": "0.11.2"
},
"devDependencies": {
"babel-cli": "6.18.0",
"babel-plugin-transform-object-rest-spread": "6.16.0",
"babel-polyfill": "6.16.0",
"babel-preset-latest": "6.16.0",
"babel-register": "6.18.0",
"chai": "3.5.0",
"mocha": "3.1.2",
"npm-run-all": "3.1.1",
"pre-commit": "1.1.3",
"proxyquire": "1.7.10",
"sinon": "1.17.6",
"snazzy": "5.0.0",
"standard": "8.5.0"
},
"standard": {
"globals": [
"describe",
"it"
]
},
"babel": {
"presets": [
"latest"
"unpkg": "dist/axe.min.js",
"xo": {
"extends": "prettier",
"plugins": [
"prettier"
],
"plugins": [
"transform-object-rest-spread"
"parserOptions": {
"sourceType": "script"
},
"rules": {
"prettier/prettier": [
"error",
{
"singleQuote": true,
"bracketSpacing": true,
"trailingComma": "none"
}
],
"max-len": [
"error",
{
"code": 80,
"ignoreUrls": true
}
],
"capitalized-comments": "off",
"camelcase": "off",
"no-warning-comments": "off"
},
"space": true,
"ignore": [
"config.js"
]
},
"precommit": [
"test:lint"
]
}
}
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