[Pkg-javascript-commits] [node-asn1.js] 14/22: lib: port to ES6 const/let
Bastien Roucariès
rouca at moszumanska.debian.org
Thu Nov 9 11:07:34 UTC 2017
This is an automated email from the git hooks/post-receive script.
rouca pushed a commit to branch upstream
in repository node-asn1.js.
commit ddbca8b44fdc450d5a5898d507c64100dc5b7894
Author: Fedor Indutny <fedor at indutny.com>
Date: Tue Oct 31 15:52:46 2017 +0100
lib: port to ES6 const/let
---
.eslintrc.js | 27 +
lib/asn1.js | 4 +-
lib/asn1/api.js | 12 +-
lib/asn1/base/buffer.js | 18 +-
lib/asn1/base/index.js | 4 +-
lib/asn1/base/node.js | 161 +++---
lib/asn1/base/reporter.js | 30 +-
lib/asn1/constants/der.js | 4 +-
lib/asn1/constants/index.js | 8 +-
lib/asn1/decoders/der.js | 140 ++---
lib/asn1/decoders/index.js | 4 +-
lib/asn1/decoders/pem.js | 30 +-
lib/asn1/encoders/der.js | 84 +--
lib/asn1/encoders/index.js | 4 +-
lib/asn1/encoders/pem.js | 16 +-
package-lock.json | 1325 +++++++++++++++++++++++++++++++++++++++++++
package.json | 4 +
rfc/2560/index.js | 14 +-
rfc/2560/package-lock.json | 2 +-
rfc/2560/test/basic-test.js | 3 +
rfc/5280/index.js | 120 ++--
rfc/5280/package-lock.json | 2 +-
rfc/5280/test/basic-test.js | 55 +-
test/der-decode-test.js | 3 +
test/der-encode-test.js | 3 +
test/error-test.js | 3 +
test/fixtures.js | 3 +
test/pem-test.js | 3 +
test/ping-pong-test.js | 3 +
test/tracking-test.js | 3 +
test/use-test.js | 3 +
31 files changed, 1759 insertions(+), 336 deletions(-)
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..6b5dc44
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,27 @@
+module.exports = {
+ 'env': {
+ 'browser': false,
+ 'commonjs': true,
+ 'es6': true,
+ 'node': true
+ },
+ 'extends': 'eslint:recommended',
+ 'rules': {
+ 'indent': [
+ 'error',
+ 2
+ ],
+ 'linebreak-style': [
+ 'error',
+ 'unix'
+ ],
+ 'quotes': [
+ 'error',
+ 'single'
+ ],
+ 'semi': [
+ 'error',
+ 'always'
+ ]
+ }
+};
diff --git a/lib/asn1.js b/lib/asn1.js
index 02bbdc1..c7d70b8 100644
--- a/lib/asn1.js
+++ b/lib/asn1.js
@@ -1,4 +1,6 @@
-var asn1 = exports;
+'use strict';
+
+const asn1 = exports;
asn1.bignum = require('bn.js');
diff --git a/lib/asn1/api.js b/lib/asn1/api.js
index 7c223cc..1eb7370 100644
--- a/lib/asn1/api.js
+++ b/lib/asn1/api.js
@@ -1,7 +1,9 @@
-var asn1 = require('../asn1');
-var inherits = require('inherits');
+'use strict';
-var api = exports;
+const asn1 = require('../asn1');
+const inherits = require('inherits');
+
+const api = exports;
api.define = function define(name, body) {
return new Entity(name, body);
@@ -13,10 +15,10 @@ function Entity(name, body) {
this.decoders = {};
this.encoders = {};
-};
+}
Entity.prototype._createNamed = function createNamed(base) {
- var named;
+ let named;
try {
named = require('vm').runInThisContext(
'(function ' + this.name + '(entity) {\n' +
diff --git a/lib/asn1/base/buffer.js b/lib/asn1/base/buffer.js
index bc826e8..c8412b3 100644
--- a/lib/asn1/base/buffer.js
+++ b/lib/asn1/base/buffer.js
@@ -1,6 +1,8 @@
-var inherits = require('inherits');
-var Reporter = require('../base').Reporter;
-var Buffer = require('buffer').Buffer;
+'use strict';
+
+const inherits = require('inherits');
+const Reporter = require('../base').Reporter;
+const Buffer = require('buffer').Buffer;
function DecoderBuffer(base, options) {
Reporter.call(this, options);
@@ -22,7 +24,7 @@ DecoderBuffer.prototype.save = function save() {
DecoderBuffer.prototype.restore = function restore(save) {
// Return skipped data
- var res = new DecoderBuffer(this.base);
+ const res = new DecoderBuffer(this.base);
res.offset = save.offset;
res.length = this.offset;
@@ -41,13 +43,13 @@ DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {
return this.base.readUInt8(this.offset++, true);
else
return this.error(fail || 'DecoderBuffer overrun');
-}
+};
DecoderBuffer.prototype.skip = function skip(bytes, fail) {
if (!(this.offset + bytes <= this.length))
return this.error(fail || 'DecoderBuffer overrun');
- var res = new DecoderBuffer(this.base);
+ const res = new DecoderBuffer(this.base);
// Share reporter state
res._reporterState = this._reporterState;
@@ -56,11 +58,11 @@ DecoderBuffer.prototype.skip = function skip(bytes, fail) {
res.length = this.offset + bytes;
this.offset += bytes;
return res;
-}
+};
DecoderBuffer.prototype.raw = function raw(save) {
return this.base.slice(save ? save.offset : this.offset, this.length);
-}
+};
function EncoderBuffer(value, reporter) {
if (Array.isArray(value)) {
diff --git a/lib/asn1/base/index.js b/lib/asn1/base/index.js
index 935abde..8b92f20 100644
--- a/lib/asn1/base/index.js
+++ b/lib/asn1/base/index.js
@@ -1,4 +1,6 @@
-var base = exports;
+'use strict';
+
+const base = exports;
base.Reporter = require('./reporter').Reporter;
base.DecoderBuffer = require('./buffer').DecoderBuffer;
diff --git a/lib/asn1/base/node.js b/lib/asn1/base/node.js
index 539a832..ecea468 100644
--- a/lib/asn1/base/node.js
+++ b/lib/asn1/base/node.js
@@ -1,10 +1,12 @@
-var Reporter = require('../base').Reporter;
-var EncoderBuffer = require('../base').EncoderBuffer;
-var DecoderBuffer = require('../base').DecoderBuffer;
-var assert = require('minimalistic-assert');
+'use strict';
+
+const Reporter = require('../base').Reporter;
+const EncoderBuffer = require('../base').EncoderBuffer;
+const DecoderBuffer = require('../base').DecoderBuffer;
+const assert = require('minimalistic-assert');
// Supported tags
-var tags = [
+const tags = [
'seq', 'seqof', 'set', 'setof', 'objid', 'bool',
'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',
'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',
@@ -12,13 +14,13 @@ var tags = [
];
// Public methods list
-var methods = [
+const methods = [
'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',
'any', 'contains'
].concat(tags);
// Overrided methods list
-var overrided = [
+const overrided = [
'_peekTag', '_decodeTag', '_use',
'_decodeStr', '_decodeObjid', '_decodeTime',
'_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',
@@ -28,7 +30,7 @@ var overrided = [
];
function Node(enc, parent) {
- var state = {};
+ const state = {};
this._baseState = state;
state.enc = enc;
@@ -60,28 +62,28 @@ function Node(enc, parent) {
}
module.exports = Node;
-var stateProps = [
+const stateProps = [
'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',
'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',
'implicit', 'contains'
];
Node.prototype.clone = function clone() {
- var state = this._baseState;
- var cstate = {};
+ const state = this._baseState;
+ const cstate = {};
stateProps.forEach(function(prop) {
cstate[prop] = state[prop];
});
- var res = new this.constructor(cstate.parent);
+ const res = new this.constructor(cstate.parent);
res._baseState = cstate;
return res;
};
Node.prototype._wrap = function wrap() {
- var state = this._baseState;
+ const state = this._baseState;
methods.forEach(function(method) {
this[method] = function _wrappedMethod() {
- var clone = new this.constructor(this);
+ const clone = new this.constructor(this);
state.children.push(clone);
return clone[method].apply(clone, arguments);
};
@@ -89,7 +91,7 @@ Node.prototype._wrap = function wrap() {
};
Node.prototype._init = function init(body) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.parent === null);
body.call(this);
@@ -102,10 +104,10 @@ Node.prototype._init = function init(body) {
};
Node.prototype._useArgs = function useArgs(args) {
- var state = this._baseState;
+ const state = this._baseState;
// Filter children and args
- var children = args.filter(function(arg) {
+ const children = args.filter(function(arg) {
return arg instanceof this.constructor;
}, this);
args = args.filter(function(arg) {
@@ -128,11 +130,11 @@ Node.prototype._useArgs = function useArgs(args) {
if (typeof arg !== 'object' || arg.constructor !== Object)
return arg;
- var res = {};
+ const res = {};
Object.keys(arg).forEach(function(key) {
if (key == (key | 0))
key |= 0;
- var value = arg[key];
+ const value = arg[key];
res[value] = key;
});
return res;
@@ -146,7 +148,7 @@ Node.prototype._useArgs = function useArgs(args) {
overrided.forEach(function(method) {
Node.prototype[method] = function _overrided() {
- var state = this._baseState;
+ const state = this._baseState;
throw new Error(method + ' not implemented for encoding: ' + state.enc);
};
});
@@ -157,8 +159,8 @@ overrided.forEach(function(method) {
tags.forEach(function(tag) {
Node.prototype[tag] = function _tagMethod() {
- var state = this._baseState;
- var args = Array.prototype.slice.call(arguments);
+ const state = this._baseState;
+ const args = Array.prototype.slice.call(arguments);
assert(state.tag === null);
state.tag = tag;
@@ -171,7 +173,7 @@ tags.forEach(function(tag) {
Node.prototype.use = function use(item) {
assert(item);
- var state = this._baseState;
+ const state = this._baseState;
assert(state.use === null);
state.use = item;
@@ -180,7 +182,7 @@ Node.prototype.use = function use(item) {
};
Node.prototype.optional = function optional() {
- var state = this._baseState;
+ const state = this._baseState;
state.optional = true;
@@ -188,7 +190,7 @@ Node.prototype.optional = function optional() {
};
Node.prototype.def = function def(val) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state['default'] === null);
state['default'] = val;
@@ -198,7 +200,7 @@ Node.prototype.def = function def(val) {
};
Node.prototype.explicit = function explicit(num) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.explicit === null && state.implicit === null);
state.explicit = num;
@@ -207,7 +209,7 @@ Node.prototype.explicit = function explicit(num) {
};
Node.prototype.implicit = function implicit(num) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.explicit === null && state.implicit === null);
state.implicit = num;
@@ -216,8 +218,8 @@ Node.prototype.implicit = function implicit(num) {
};
Node.prototype.obj = function obj() {
- var state = this._baseState;
- var args = Array.prototype.slice.call(arguments);
+ const state = this._baseState;
+ const args = Array.prototype.slice.call(arguments);
state.obj = true;
@@ -228,7 +230,7 @@ Node.prototype.obj = function obj() {
};
Node.prototype.key = function key(newKey) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.key === null);
state.key = newKey;
@@ -237,7 +239,7 @@ Node.prototype.key = function key(newKey) {
};
Node.prototype.any = function any() {
- var state = this._baseState;
+ const state = this._baseState;
state.any = true;
@@ -245,7 +247,7 @@ Node.prototype.any = function any() {
};
Node.prototype.choice = function choice(obj) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.choice === null);
state.choice = obj;
@@ -257,7 +259,7 @@ Node.prototype.choice = function choice(obj) {
};
Node.prototype.contains = function contains(item) {
- var state = this._baseState;
+ const state = this._baseState;
assert(state.use === null);
state.contains = item;
@@ -270,22 +272,22 @@ Node.prototype.contains = function contains(item) {
//
Node.prototype._decode = function decode(input, options) {
- var state = this._baseState;
+ const state = this._baseState;
// Decode root node
if (state.parent === null)
return input.wrapResult(state.children[0]._decode(input, options));
- var result = state['default'];
- var present = true;
+ let result = state['default'];
+ let present = true;
- var prevKey = null;
+ let prevKey = null;
if (state.key !== null)
prevKey = input.enterKey(state.key);
// Check if tag is there
if (state.optional) {
- var tag = null;
+ let tag = null;
if (state.explicit !== null)
tag = state.explicit;
else if (state.implicit !== null)
@@ -295,7 +297,7 @@ Node.prototype._decode = function decode(input, options) {
if (tag === null && !state.any) {
// Trial and Error
- var save = input.save();
+ const save = input.save();
try {
if (state.choice === null)
this._decodeGeneric(state.tag, input, options);
@@ -315,26 +317,27 @@ Node.prototype._decode = function decode(input, options) {
}
// Push object on stack
- var prevObj;
+ let prevObj;
if (state.obj && present)
prevObj = input.enterObject();
if (present) {
// Unwrap explicit values
if (state.explicit !== null) {
- var explicit = this._decodeTag(input, state.explicit);
+ const explicit = this._decodeTag(input, state.explicit);
if (input.isError(explicit))
return explicit;
input = explicit;
}
- var start = input.offset;
+ const start = input.offset;
// Unwrap implicit and normal values
if (state.use === null && state.choice === null) {
+ let save;
if (state.any)
- var save = input.save();
- var body = this._decodeTag(
+ save = input.save();
+ const body = this._decodeTag(
input,
state.implicit !== null ? state.implicit : state.tag,
state.any
@@ -355,12 +358,13 @@ Node.prototype._decode = function decode(input, options) {
options.track(input.path(), input.offset, input.length, 'content');
// Select proper method for tag
- if (state.any)
- result = result;
- else if (state.choice === null)
+ if (state.any) {
+ // no-op
+ } else if (state.choice === null) {
result = this._decodeGeneric(state.tag, input, options);
- else
+ } else {
result = this._decodeChoice(input, options);
+ }
if (input.isError(result))
return result;
@@ -376,9 +380,9 @@ Node.prototype._decode = function decode(input, options) {
// Decode contained/encoded by schema, only in bit or octet strings
if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {
- var data = new DecoderBuffer(result);
+ const data = new DecoderBuffer(result);
result = this._getUse(state.contains, input._reporterState.obj)
- ._decode(data, options);
+ ._decode(data, options);
}
}
@@ -396,7 +400,7 @@ Node.prototype._decode = function decode(input, options) {
};
Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
- var state = this._baseState;
+ const state = this._baseState;
if (tag === 'seq' || tag === 'set')
return null;
@@ -421,7 +425,7 @@ Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
if (state.use !== null) {
return this._getUse(state.use, input._reporterState.obj)
- ._decode(input, options);
+ ._decode(input, options);
} else {
return input.error('unknown tag: ' + tag);
}
@@ -429,7 +433,7 @@ Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
Node.prototype._getUse = function _getUse(entity, obj) {
- var state = this._baseState;
+ const state = this._baseState;
// Create altered use decoder if implicit is set
state.useDecoder = this._use(entity, obj);
assert(state.useDecoder._baseState.parent === null);
@@ -442,15 +446,15 @@ Node.prototype._getUse = function _getUse(entity, obj) {
};
Node.prototype._decodeChoice = function decodeChoice(input, options) {
- var state = this._baseState;
- var result = null;
- var match = false;
+ const state = this._baseState;
+ let result = null;
+ let match = false;
Object.keys(state.choice).some(function(key) {
- var save = input.save();
- var node = state.choice[key];
+ const save = input.save();
+ const node = state.choice[key];
try {
- var value = node._decode(input, options);
+ const value = node._decode(input, options);
if (input.isError(value))
return false;
@@ -478,11 +482,11 @@ Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {
};
Node.prototype._encode = function encode(data, reporter, parent) {
- var state = this._baseState;
+ const state = this._baseState;
if (state['default'] !== null && state['default'] === data)
return;
- var result = this._encodeValue(data, reporter, parent);
+ const result = this._encodeValue(data, reporter, parent);
if (result === undefined)
return;
@@ -493,13 +497,13 @@ Node.prototype._encode = function encode(data, reporter, parent) {
};
Node.prototype._encodeValue = function encode(data, reporter, parent) {
- var state = this._baseState;
+ const state = this._baseState;
// Decode root node
if (state.parent === null)
return state.children[0]._encode(data, reporter || new Reporter());
- var result = null;
+ let result = null;
// Set reporter to share it with a child class
this.reporter = reporter;
@@ -507,14 +511,14 @@ Node.prototype._encodeValue = function encode(data, reporter, parent) {
// Check if data is there
if (state.optional && data === undefined) {
if (state['default'] !== null)
- data = state['default']
+ data = state['default'];
else
return;
}
// Encode children first
- var content = null;
- var primitive = false;
+ let content = null;
+ let primitive = false;
if (state.any) {
// Anything that was given is translated to buffer
result = this._createEncoderBuffer(data);
@@ -530,12 +534,12 @@ Node.prototype._encodeValue = function encode(data, reporter, parent) {
if (child._baseState.key === null)
return reporter.error('Child should have a key');
- var prevKey = reporter.enterKey(child._baseState.key);
+ const prevKey = reporter.enterKey(child._baseState.key);
if (typeof data !== 'object')
return reporter.error('Child expected, but input is not object');
- var res = child._encode(data[child._baseState.key], reporter, data);
+ const res = child._encode(data[child._baseState.key], reporter, data);
reporter.leaveKey(prevKey);
return res;
@@ -552,10 +556,10 @@ Node.prototype._encodeValue = function encode(data, reporter, parent) {
if (!Array.isArray(data))
return reporter.error('seqof/setof, but data is not Array');
- var child = this.clone();
+ const child = this.clone();
child._baseState.implicit = null;
content = this._createEncoderBuffer(data.map(function(item) {
- var state = this._baseState;
+ const state = this._baseState;
return this._getUse(state.args[0], data)._encode(item, reporter);
}, child));
@@ -568,10 +572,9 @@ Node.prototype._encodeValue = function encode(data, reporter, parent) {
}
// Encode data itself
- var result;
if (!state.any && state.choice === null) {
- var tag = state.implicit !== null ? state.implicit : state.tag;
- var cls = state.implicit === null ? 'universal' : 'context';
+ const tag = state.implicit !== null ? state.implicit : state.tag;
+ const cls = state.implicit === null ? 'universal' : 'context';
if (tag === null) {
if (state.use === null)
@@ -590,20 +593,20 @@ Node.prototype._encodeValue = function encode(data, reporter, parent) {
};
Node.prototype._encodeChoice = function encodeChoice(data, reporter) {
- var state = this._baseState;
+ const state = this._baseState;
- var node = state.choice[data.type];
+ const node = state.choice[data.type];
if (!node) {
assert(
- false,
- data.type + ' not found in ' +
+ false,
+ data.type + ' not found in ' +
JSON.stringify(Object.keys(state.choice)));
}
return node._encode(data.value, reporter);
};
Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {
- var state = this._baseState;
+ const state = this._baseState;
if (/str$/.test(tag))
return this._encodeStr(data, tag);
@@ -630,5 +633,5 @@ Node.prototype._isNumstr = function isNumstr(str) {
};
Node.prototype._isPrintstr = function isPrintstr(str) {
- return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str);
+ return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);
};
diff --git a/lib/asn1/base/reporter.js b/lib/asn1/base/reporter.js
index ec8b8b8..d05fe12 100644
--- a/lib/asn1/base/reporter.js
+++ b/lib/asn1/base/reporter.js
@@ -1,4 +1,6 @@
-var inherits = require('inherits');
+'use strict';
+
+const inherits = require('inherits');
function Reporter(options) {
this._reporterState = {
@@ -15,13 +17,13 @@ Reporter.prototype.isError = function isError(obj) {
};
Reporter.prototype.save = function save() {
- var state = this._reporterState;
+ const state = this._reporterState;
return { obj: state.obj, pathLen: state.path.length };
};
Reporter.prototype.restore = function restore(data) {
- var state = this._reporterState;
+ const state = this._reporterState;
state.obj = data.obj;
state.path = state.path.slice(0, data.pathLen);
@@ -32,13 +34,13 @@ Reporter.prototype.enterKey = function enterKey(key) {
};
Reporter.prototype.exitKey = function exitKey(index) {
- var state = this._reporterState;
+ const state = this._reporterState;
state.path = state.path.slice(0, index - 1);
};
Reporter.prototype.leaveKey = function leaveKey(index, key, value) {
- var state = this._reporterState;
+ const state = this._reporterState;
this.exitKey(index);
if (state.obj !== null)
@@ -50,26 +52,26 @@ Reporter.prototype.path = function path() {
};
Reporter.prototype.enterObject = function enterObject() {
- var state = this._reporterState;
+ const state = this._reporterState;
- var prev = state.obj;
+ const prev = state.obj;
state.obj = {};
return prev;
};
Reporter.prototype.leaveObject = function leaveObject(prev) {
- var state = this._reporterState;
+ const state = this._reporterState;
- var now = state.obj;
+ const now = state.obj;
state.obj = prev;
return now;
};
Reporter.prototype.error = function error(msg) {
- var err;
- var state = this._reporterState;
+ let err;
+ const state = this._reporterState;
- var inherited = msg instanceof ReporterError;
+ const inherited = msg instanceof ReporterError;
if (inherited) {
err = msg;
} else {
@@ -88,7 +90,7 @@ Reporter.prototype.error = function error(msg) {
};
Reporter.prototype.wrapResult = function wrapResult(result) {
- var state = this._reporterState;
+ const state = this._reporterState;
if (!state.options.partial)
return result;
@@ -101,7 +103,7 @@ Reporter.prototype.wrapResult = function wrapResult(result) {
function ReporterError(path, msg) {
this.path = path;
this.rethrow(msg);
-};
+}
inherits(ReporterError, Error);
ReporterError.prototype.rethrow = function rethrow(msg) {
diff --git a/lib/asn1/constants/der.js b/lib/asn1/constants/der.js
index 907dd39..c9a1e90 100644
--- a/lib/asn1/constants/der.js
+++ b/lib/asn1/constants/der.js
@@ -1,4 +1,6 @@
-var constants = require('../constants');
+'use strict';
+
+const constants = require('../constants');
exports.tagClass = {
0: 'universal',
diff --git a/lib/asn1/constants/index.js b/lib/asn1/constants/index.js
index c44e325..632cf3d 100644
--- a/lib/asn1/constants/index.js
+++ b/lib/asn1/constants/index.js
@@ -1,15 +1,17 @@
-var constants = exports;
+'use strict';
+
+const constants = exports;
// Helper
constants._reverse = function reverse(map) {
- var res = {};
+ const res = {};
Object.keys(map).forEach(function(key) {
// Convert key to integer if it is stringified
if ((key | 0) == key)
key = key | 0;
- var value = map[key];
+ const value = map[key];
res[value] = key;
});
diff --git a/lib/asn1/decoders/der.js b/lib/asn1/decoders/der.js
index 79a60ac..b2984aa 100644
--- a/lib/asn1/decoders/der.js
+++ b/lib/asn1/decoders/der.js
@@ -1,11 +1,13 @@
-var inherits = require('inherits');
+'use strict';
-var asn1 = require('../../asn1');
-var base = asn1.base;
-var bignum = asn1.bignum;
+const inherits = require('inherits');
+
+const asn1 = require('../../asn1');
+const base = asn1.base;
+const bignum = asn1.bignum;
// Import DER constants
-var der = asn1.constants.der;
+const der = asn1.constants.der;
function DERDecoder(entity) {
this.enc = 'der';
@@ -15,7 +17,7 @@ function DERDecoder(entity) {
// Construct base tree
this.tree = new DERNode();
this.tree._init(entity.body);
-};
+}
module.exports = DERDecoder;
DERDecoder.prototype.decode = function decode(data, options) {
@@ -36,8 +38,8 @@ DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
if (buffer.isEmpty())
return false;
- var state = buffer.save();
- var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
+ const state = buffer.save();
+ const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
if (buffer.isError(decodedTag))
return decodedTag;
@@ -48,14 +50,14 @@ DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
};
DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
- var decodedTag = derDecodeTag(buffer,
- 'Failed to decode tag of "' + tag + '"');
+ const decodedTag = derDecodeTag(buffer,
+ 'Failed to decode tag of "' + tag + '"');
if (buffer.isError(decodedTag))
return decodedTag;
- var len = derDecodeLen(buffer,
- decodedTag.primitive,
- 'Failed to get length of "' + tag + '"');
+ let len = derDecodeLen(buffer,
+ decodedTag.primitive,
+ 'Failed to get length of "' + tag + '"');
// Failure
if (buffer.isError(len))
@@ -72,10 +74,10 @@ DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
// Indefinite length... find END tag
- var state = buffer.save();
- var res = this._skipUntilEnd(
- buffer,
- 'Failed to skip indefinite length body: "' + this.tag + '"');
+ const state = buffer.save();
+ const res = this._skipUntilEnd(
+ buffer,
+ 'Failed to skip indefinite length body: "' + this.tag + '"');
if (buffer.isError(res))
return res;
@@ -85,17 +87,17 @@ DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
};
DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
- while (true) {
- var tag = derDecodeTag(buffer, fail);
+ for (;;) {
+ const tag = derDecodeTag(buffer, fail);
if (buffer.isError(tag))
return tag;
- var len = derDecodeLen(buffer, tag.primitive, fail);
+ const len = derDecodeLen(buffer, tag.primitive, fail);
if (buffer.isError(len))
return len;
- var res;
+ let res;
if (tag.primitive || len !== null)
- res = buffer.skip(len)
+ res = buffer.skip(len);
else
res = this._skipUntilEnd(buffer, fail);
@@ -109,14 +111,14 @@ DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
};
DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,
- options) {
- var result = [];
+ options) {
+ const result = [];
while (!buffer.isEmpty()) {
- var possibleEnd = this._peekTag(buffer, 'end');
+ const possibleEnd = this._peekTag(buffer, 'end');
if (buffer.isError(possibleEnd))
return possibleEnd;
- var res = decoder.decode(buffer, 'der', options);
+ const res = decoder.decode(buffer, 'der', options);
if (buffer.isError(res) && possibleEnd)
break;
result.push(res);
@@ -126,22 +128,22 @@ DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,
DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
if (tag === 'bitstr') {
- var unused = buffer.readUInt8();
+ const unused = buffer.readUInt8();
if (buffer.isError(unused))
return unused;
return { unused: unused, data: buffer.raw() };
} else if (tag === 'bmpstr') {
- var raw = buffer.raw();
+ const raw = buffer.raw();
if (raw.length % 2 === 1)
return buffer.error('Decoding of string type: bmpstr length mismatch');
- var str = '';
- for (var i = 0; i < raw.length / 2; i++) {
+ let str = '';
+ for (let i = 0; i < raw.length / 2; i++) {
str += String.fromCharCode(raw.readUInt16BE(i * 2));
}
return str;
} else if (tag === 'numstr') {
- var numstr = buffer.raw().toString('ascii');
+ const numstr = buffer.raw().toString('ascii');
if (!this._isNumstr(numstr)) {
return buffer.error('Decoding of string type: ' +
'numstr unsupported characters');
@@ -152,7 +154,7 @@ DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
} else if (tag === 'objDesc') {
return buffer.raw();
} else if (tag === 'printstr') {
- var printstr = buffer.raw().toString('ascii');
+ const printstr = buffer.raw().toString('ascii');
if (!this._isPrintstr(printstr)) {
return buffer.error('Decoding of string type: ' +
'printstr unsupported characters');
@@ -166,11 +168,12 @@ DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
};
DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {
- var result;
- var identifiers = [];
- var ident = 0;
+ let result;
+ const identifiers = [];
+ let ident = 0;
+ let subident = 0;
while (!buffer.isEmpty()) {
- var subident = buffer.readUInt8();
+ subident = buffer.readUInt8();
ident <<= 7;
ident |= subident & 0x7f;
if ((subident & 0x80) === 0) {
@@ -181,8 +184,8 @@ DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative)
if (subident & 0x80)
identifiers.push(ident);
- var first = (identifiers[0] / 40) | 0;
- var second = identifiers[0] % 40;
+ const first = (identifiers[0] / 40) | 0;
+ const second = identifiers[0] % 40;
if (relative)
result = identifiers;
@@ -190,7 +193,7 @@ DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative)
result = [first, second].concat(identifiers.slice(1));
if (values) {
- var tmp = values[result.join(' ')];
+ let tmp = values[result.join(' ')];
if (tmp === undefined)
tmp = values[result.join('.')];
if (tmp !== undefined)
@@ -201,21 +204,28 @@ DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative)
};
DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
- var str = buffer.raw().toString();
+ const str = buffer.raw().toString();
+
+ let year;
+ let mon;
+ let day;
+ let hour;
+ let min;
+ let sec;
if (tag === 'gentime') {
- var year = str.slice(0, 4) | 0;
- var mon = str.slice(4, 6) | 0;
- var day = str.slice(6, 8) | 0;
- var hour = str.slice(8, 10) | 0;
- var min = str.slice(10, 12) | 0;
- var sec = str.slice(12, 14) | 0;
+ year = str.slice(0, 4) | 0;
+ mon = str.slice(4, 6) | 0;
+ day = str.slice(6, 8) | 0;
+ hour = str.slice(8, 10) | 0;
+ min = str.slice(10, 12) | 0;
+ sec = str.slice(12, 14) | 0;
} else if (tag === 'utctime') {
- var year = str.slice(0, 2) | 0;
- var mon = str.slice(2, 4) | 0;
- var day = str.slice(4, 6) | 0;
- var hour = str.slice(6, 8) | 0;
- var min = str.slice(8, 10) | 0;
- var sec = str.slice(10, 12) | 0;
+ year = str.slice(0, 2) | 0;
+ mon = str.slice(2, 4) | 0;
+ day = str.slice(4, 6) | 0;
+ hour = str.slice(6, 8) | 0;
+ min = str.slice(8, 10) | 0;
+ sec = str.slice(10, 12) | 0;
if (year < 70)
year = 2000 + year;
else
@@ -227,12 +237,12 @@ DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
return Date.UTC(year, mon - 1, day, hour, min, sec, 0);
};
-DERNode.prototype._decodeNull = function decodeNull(buffer) {
+DERNode.prototype._decodeNull = function decodeNull() {
return null;
};
DERNode.prototype._decodeBool = function decodeBool(buffer) {
- var res = buffer.readUInt8();
+ const res = buffer.readUInt8();
if (buffer.isError(res))
return res;
else
@@ -241,8 +251,8 @@ DERNode.prototype._decodeBool = function decodeBool(buffer) {
DERNode.prototype._decodeInt = function decodeInt(buffer, values) {
// Bigint, return as it is (assume big endian)
- var raw = buffer.raw();
- var res = new bignum(raw);
+ const raw = buffer.raw();
+ let res = new bignum(raw);
if (values)
res = values[res.toString(10)] || res;
@@ -259,16 +269,16 @@ DERNode.prototype._use = function use(entity, obj) {
// Utility methods
function derDecodeTag(buf, fail) {
- var tag = buf.readUInt8(fail);
+ let tag = buf.readUInt8(fail);
if (buf.isError(tag))
return tag;
- var cls = der.tagClass[tag >> 6];
- var primitive = (tag & 0x20) === 0;
+ const cls = der.tagClass[tag >> 6];
+ const primitive = (tag & 0x20) === 0;
// Multi-octet tag - load
if ((tag & 0x1f) === 0x1f) {
- var oct = tag;
+ let oct = tag;
tag = 0;
while ((oct & 0x80) === 0x80) {
oct = buf.readUInt8(fail);
@@ -281,7 +291,7 @@ function derDecodeTag(buf, fail) {
} else {
tag &= 0x1f;
}
- var tagStr = der.tag[tag];
+ const tagStr = der.tag[tag];
return {
cls: cls,
@@ -292,7 +302,7 @@ function derDecodeTag(buf, fail) {
}
function derDecodeLen(buf, primitive, fail) {
- var len = buf.readUInt8(fail);
+ let len = buf.readUInt8(fail);
if (buf.isError(len))
return len;
@@ -307,14 +317,14 @@ function derDecodeLen(buf, primitive, fail) {
}
// Long form
- var num = len & 0x7f;
+ const num = len & 0x7f;
if (num > 4)
return buf.error('length octect is too long');
len = 0;
- for (var i = 0; i < num; i++) {
+ for (let i = 0; i < num; i++) {
len <<= 8;
- var j = buf.readUInt8(fail);
+ const j = buf.readUInt8(fail);
if (buf.isError(j))
return j;
len |= j;
diff --git a/lib/asn1/decoders/index.js b/lib/asn1/decoders/index.js
index e2583aa..14fb05a 100644
--- a/lib/asn1/decoders/index.js
+++ b/lib/asn1/decoders/index.js
@@ -1,4 +1,6 @@
-var decoders = exports;
+'use strict';
+
+const decoders = exports;
decoders.der = require('./der');
decoders.pem = require('./pem');
diff --git a/lib/asn1/decoders/pem.js b/lib/asn1/decoders/pem.js
index 301059c..5e524fd 100644
--- a/lib/asn1/decoders/pem.js
+++ b/lib/asn1/decoders/pem.js
@@ -1,25 +1,27 @@
-var inherits = require('inherits');
-var Buffer = require('buffer').Buffer;
+'use strict';
-var DERDecoder = require('./der');
+const inherits = require('inherits');
+const Buffer = require('buffer').Buffer;
+
+const DERDecoder = require('./der');
function PEMDecoder(entity) {
DERDecoder.call(this, entity);
this.enc = 'pem';
-};
+}
inherits(PEMDecoder, DERDecoder);
module.exports = PEMDecoder;
PEMDecoder.prototype.decode = function decode(data, options) {
- var lines = data.toString().split(/[\r\n]+/g);
+ const lines = data.toString().split(/[\r\n]+/g);
- var label = options.label.toUpperCase();
+ const label = options.label.toUpperCase();
- var re = /^-----(BEGIN|END) ([^-]+)-----$/;
- var start = -1;
- var end = -1;
- for (var i = 0; i < lines.length; i++) {
- var match = lines[i].match(re);
+ const re = /^-----(BEGIN|END) ([^-]+)-----$/;
+ let start = -1;
+ let end = -1;
+ for (let i = 0; i < lines.length; i++) {
+ const match = lines[i].match(re);
if (match === null)
continue;
@@ -40,10 +42,10 @@ PEMDecoder.prototype.decode = function decode(data, options) {
if (start === -1 || end === -1)
throw new Error('PEM section not found for: ' + label);
- var base64 = lines.slice(start + 1, end).join('');
+ const base64 = lines.slice(start + 1, end).join('');
// Remove excessive symbols
- base64.replace(/[^a-z0-9\+\/=]+/gi, '');
+ base64.replace(/[^a-z0-9+/=]+/gi, '');
- var input = new Buffer(base64, 'base64');
+ const input = new Buffer(base64, 'base64');
return DERDecoder.prototype.decode.call(this, input, options);
};
diff --git a/lib/asn1/encoders/der.js b/lib/asn1/encoders/der.js
index 721f802..ffbee1b 100644
--- a/lib/asn1/encoders/der.js
+++ b/lib/asn1/encoders/der.js
@@ -1,11 +1,13 @@
-var inherits = require('inherits');
-var Buffer = require('buffer').Buffer;
+'use strict';
-var asn1 = require('../../asn1');
-var base = asn1.base;
+const inherits = require('inherits');
+const Buffer = require('buffer').Buffer;
+
+const asn1 = require('../../asn1');
+const base = asn1.base;
// Import DER constants
-var der = asn1.constants.der;
+const der = asn1.constants.der;
function DEREncoder(entity) {
this.enc = 'der';
@@ -15,7 +17,7 @@ function DEREncoder(entity) {
// Construct base tree
this.tree = new DERNode();
this.tree._init(entity.body);
-};
+}
module.exports = DEREncoder;
DEREncoder.prototype.encode = function encode(data, reporter) {
@@ -30,14 +32,14 @@ function DERNode(parent) {
inherits(DERNode, base.Node);
DERNode.prototype._encodeComposite = function encodeComposite(tag,
- primitive,
- cls,
- content) {
- var encodedTag = encodeTag(tag, primitive, cls, this.reporter);
+ primitive,
+ cls,
+ content) {
+ const encodedTag = encodeTag(tag, primitive, cls, this.reporter);
// Short form
if (content.length < 0x80) {
- var header = new Buffer(2);
+ const header = new Buffer(2);
header[0] = encodedTag;
header[1] = content.length;
return this._createEncoderBuffer([ header, content ]);
@@ -45,15 +47,15 @@ DERNode.prototype._encodeComposite = function encodeComposite(tag,
// Long form
// Count octets required to store length
- var lenOctets = 1;
- for (var i = content.length; i >= 0x100; i >>= 8)
+ let lenOctets = 1;
+ for (let i = content.length; i >= 0x100; i >>= 8)
lenOctets++;
- var header = new Buffer(1 + 1 + lenOctets);
+ const header = new Buffer(1 + 1 + lenOctets);
header[0] = encodedTag;
header[1] = 0x80 | lenOctets;
- for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)
+ for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)
header[i] = j & 0xff;
return this._createEncoderBuffer([ header, content ]);
@@ -63,8 +65,8 @@ DERNode.prototype._encodeStr = function encodeStr(str, tag) {
if (tag === 'bitstr') {
return this._createEncoderBuffer([ str.unused | 0, str.data ]);
} else if (tag === 'bmpstr') {
- var buf = new Buffer(str.length * 2);
- for (var i = 0; i < str.length; i++) {
+ const buf = new Buffer(str.length * 2);
+ for (let i = 0; i < str.length; i++) {
buf.writeUInt16BE(str.charCodeAt(i), i * 2);
}
return this._createEncoderBuffer(buf);
@@ -100,12 +102,12 @@ DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
return this.reporter.error('string objid given, but no values map found');
if (!values.hasOwnProperty(id))
return this.reporter.error('objid not found in values map');
- id = values[id].split(/[\s\.]+/g);
- for (var i = 0; i < id.length; i++)
+ id = values[id].split(/[\s.]+/g);
+ for (let i = 0; i < id.length; i++)
id[i] |= 0;
} else if (Array.isArray(id)) {
id = id.slice();
- for (var i = 0; i < id.length; i++)
+ for (let i = 0; i < id.length; i++)
id[i] |= 0;
}
@@ -121,17 +123,17 @@ DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
}
// Count number of octets
- var size = 0;
- for (var i = 0; i < id.length; i++) {
- var ident = id[i];
+ let size = 0;
+ for (let i = 0; i < id.length; i++) {
+ let ident = id[i];
for (size++; ident >= 0x80; ident >>= 7)
size++;
}
- var objid = new Buffer(size);
- var offset = objid.length - 1;
- for (var i = id.length - 1; i >= 0; i--) {
- var ident = id[i];
+ const objid = new Buffer(size);
+ let offset = objid.length - 1;
+ for (let i = id.length - 1; i >= 0; i--) {
+ let ident = id[i];
objid[offset--] = ident & 0x7f;
while ((ident >>= 7) > 0)
objid[offset--] = 0x80 | (ident & 0x7f);
@@ -148,8 +150,8 @@ function two(num) {
}
DERNode.prototype._encodeTime = function encodeTime(time, tag) {
- var str;
- var date = new Date(time);
+ let str;
+ const date = new Date(time);
if (tag === 'gentime') {
str = [
@@ -195,7 +197,7 @@ DERNode.prototype._encodeInt = function encodeInt(num, values) {
// Bignum, assume big endian
if (typeof num !== 'number' && !Buffer.isBuffer(num)) {
- var numArray = num.toArray();
+ const numArray = num.toArray();
if (!num.sign && numArray[0] & 0x80) {
numArray.unshift(0);
}
@@ -203,14 +205,14 @@ DERNode.prototype._encodeInt = function encodeInt(num, values) {
}
if (Buffer.isBuffer(num)) {
- var size = num.length;
+ let size = num.length;
if (num.length === 0)
size++;
- var out = new Buffer(size);
+ const out = new Buffer(size);
num.copy(out);
if (num.length === 0)
- out[0] = 0
+ out[0] = 0;
return this._createEncoderBuffer(out);
}
@@ -220,12 +222,12 @@ DERNode.prototype._encodeInt = function encodeInt(num, values) {
if (num < 0x100)
return this._createEncoderBuffer([0, num]);
- var size = 1;
- for (var i = num; i >= 0x100; i >>= 8)
+ let size = 1;
+ for (let i = num; i >= 0x100; i >>= 8)
size++;
- var out = new Array(size);
- for (var i = out.length - 1; i >= 0; i--) {
+ const out = new Array(size);
+ for (let i = out.length - 1; i >= 0; i--) {
out[i] = num & 0xff;
num >>= 8;
}
@@ -247,12 +249,12 @@ DERNode.prototype._use = function use(entity, obj) {
};
DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {
- var state = this._baseState;
- var i;
+ const state = this._baseState;
+ let i;
if (state['default'] === null)
return false;
- var data = dataBuffer.join();
+ const data = dataBuffer.join();
if (state.defaultBuffer === undefined)
state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();
@@ -269,7 +271,7 @@ DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, pare
// Utility methods
function encodeTag(tag, primitive, cls, reporter) {
- var res;
+ let res;
if (tag === 'seqof')
tag = 'seq';
diff --git a/lib/asn1/encoders/index.js b/lib/asn1/encoders/index.js
index 6a5d29e..bb8ea34 100644
--- a/lib/asn1/encoders/index.js
+++ b/lib/asn1/encoders/index.js
@@ -1,4 +1,6 @@
-var encoders = exports;
+'use strict';
+
+const encoders = exports;
encoders.der = require('./der');
encoders.pem = require('./pem');
diff --git a/lib/asn1/encoders/pem.js b/lib/asn1/encoders/pem.js
index 864271f..77fbdb4 100644
--- a/lib/asn1/encoders/pem.js
+++ b/lib/asn1/encoders/pem.js
@@ -1,20 +1,22 @@
-var inherits = require('inherits');
+'use strict';
-var DEREncoder = require('./der');
+const inherits = require('inherits');
+
+const DEREncoder = require('./der');
function PEMEncoder(entity) {
DEREncoder.call(this, entity);
this.enc = 'pem';
-};
+}
inherits(PEMEncoder, DEREncoder);
module.exports = PEMEncoder;
PEMEncoder.prototype.encode = function encode(data, options) {
- var buf = DEREncoder.prototype.encode.call(this, data);
+ const buf = DEREncoder.prototype.encode.call(this, data);
- var p = buf.toString('base64');
- var out = [ '-----BEGIN ' + options.label + '-----' ];
- for (var i = 0; i < p.length; i += 64)
+ const p = buf.toString('base64');
+ const out = [ '-----BEGIN ' + options.label + '-----' ];
+ for (let i = 0; i < p.length; i += 64)
out.push(p.slice(i, i + 64));
out.push('-----END ' + options.label + '-----');
return out.join('\n');
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..823faa1
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1325 @@
+{
+ "name": "asn1.js",
+ "version": "4.9.2",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "acorn": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
+ "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "3.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
+ "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
+ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "http://npm.paypal.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
+ "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU="
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
+ "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "commander": {
+ "version": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
+ "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "readable-stream": "2.3.3",
+ "typedarray": "0.0.6"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "5.0.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "rimraf": "2.6.2"
+ }
+ },
+ "diff": {
+ "version": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
+ "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2",
+ "isarray": "1.0.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "http://npm.paypal.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=",
+ "dev": true
+ },
+ "eslint": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz",
+ "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.3.0",
+ "babel-code-frame": "6.26.0",
+ "chalk": "2.3.0",
+ "concat-stream": "1.6.0",
+ "cross-spawn": "5.1.0",
+ "debug": "3.1.0",
+ "doctrine": "2.0.0",
+ "eslint-scope": "3.7.1",
+ "espree": "3.5.1",
+ "esquery": "1.0.0",
+ "estraverse": "4.2.0",
+ "esutils": "2.0.2",
+ "file-entry-cache": "2.0.0",
+ "functional-red-black-tree": "1.0.1",
+ "glob": "7.1.2",
+ "globals": "9.18.0",
+ "ignore": "3.3.7",
+ "imurmurhash": "0.1.4",
+ "inquirer": "3.3.0",
+ "is-resolvable": "1.0.0",
+ "js-yaml": "3.10.0",
+ "json-stable-stringify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.4",
+ "minimatch": "3.0.4",
+ "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.2",
+ "path-is-inside": "1.0.2",
+ "pluralize": "7.0.0",
+ "progress": "2.0.0",
+ "require-uncached": "1.0.3",
+ "semver": "5.4.1",
+ "strip-ansi": "4.0.0",
+ "strip-json-comments": "2.0.1",
+ "table": "4.0.2",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "4.2.0",
+ "estraverse": "4.2.0"
+ }
+ },
+ "espree": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz",
+ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "acorn-jsx": "3.0.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
+ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "external-editor": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz",
+ "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.19",
+ "jschardet": "1.6.0",
+ "tmp": "0.0.33"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ }
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "1.3.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "0.3.3",
+ "del": "2.2.2",
+ "graceful-fs": "4.1.11",
+ "write": "0.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "glob": {
+ "version": "http://npm.paypal.com/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "minimatch": "http://npm.paypal.com/minimatch/-/minimatch-0.3.0.tgz"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "growl": {
+ "version": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
+ "dev": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
+ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "3.0.0",
+ "chalk": "2.3.0",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "2.0.5",
+ "figures": "2.0.0",
+ "lodash": "4.17.4",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rx-lite": "4.0.8",
+ "rx-lite-aggregates": "4.0.8",
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "through": "2.3.8"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
+ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-resolvable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
+ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
+ "dev": true,
+ "requires": {
+ "tryit": "1.0.3"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "jade": {
+ "version": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
+ "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
+ "dev": true,
+ "requires": {
+ "commander": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+ "mkdirp": "http://npm.paypal.com/mkdirp/-/mkdirp-0.3.0.tgz"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+ "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "http://npm.paypal.com/mkdirp/-/mkdirp-0.3.0.tgz",
+ "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
+ "dev": true
+ }
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
+ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "4.0.0"
+ }
+ },
+ "jschardet": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz",
+ "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
+ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M="
+ },
+ "minimatch": {
+ "version": "http://npm.paypal.com/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "sigmund": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
+ }
+ },
+ "minimist": {
+ "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
+ }
+ },
+ "mocha": {
+ "version": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz",
+ "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=",
+ "dev": true,
+ "requires": {
+ "commander": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz",
+ "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "diff": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+ "escape-string-regexp": "http://npm.paypal.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
+ "glob": "http://npm.paypal.com/glob/-/glob-3.2.11.tgz",
+ "growl": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "jade": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
+ "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
+ "to-iso-string": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz"
+ }
+ },
+ "ms": {
+ "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.1.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "0.1.0",
+ "resolve-from": "1.0.1"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "2.0.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "http://npm.paypal.com/inherits/-/inherits-2.0.3.tgz",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ }
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "2.1.0"
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "4.0.8"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ }
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
+ "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=",
+ "dev": true
+ },
+ "table": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
+ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.3.0",
+ "ajv-keywords": "2.1.1",
+ "chalk": "2.3.0",
+ "lodash": "4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "2.1.1"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "to-iso-string": {
+ "version": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz",
+ "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=",
+ "dev": true
+ },
+ "tryit": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
+ "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
index 2287bd8..9056382 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,9 @@
"description": "ASN.1 encoder and decoder",
"main": "lib/asn1.js",
"scripts": {
+ "lint-2560": "eslint --fix rfc/2560/*.js rfc/2560/test/*.js",
+ "lint-5280": "eslint --fix rfc/5280/*.js rfc/5280/test/*.js",
+ "lint": "eslint --fix lib/*.js lib/**/*.js lib/**/**/*.js && npm run lint-2560 && npm run lint-5280",
"test": "mocha --reporter spec test/*-test.js && cd rfc/2560 && npm i && npm test && cd ../../rfc/5280 && npm i && npm test"
},
"repository": {
@@ -21,6 +24,7 @@
},
"homepage": "https://github.com/indutny/asn1.js",
"devDependencies": {
+ "eslint": "^4.10.0",
"mocha": "^2.3.4"
},
"dependencies": {
diff --git a/rfc/2560/index.js b/rfc/2560/index.js
index 54c00f9..727a413 100644
--- a/rfc/2560/index.js
+++ b/rfc/2560/index.js
@@ -15,7 +15,7 @@ var TBSRequest = asn1.define('TBSRequest', function() {
this.key('requestorName').optional().explicit(1).use(rfc5280.GeneralName),
this.key('requestList').seqof(Request),
this.key('requestExtensions').optional().explicit(2)
- .seqof(rfc5280.Extension)
+ .seqof(rfc5280.Extension)
);
});
exports.TBSRequest = TBSRequest;
@@ -33,7 +33,7 @@ var Request = asn1.define('Request', function() {
this.seq().obj(
this.key('reqCert').use(CertID),
this.key('singleRequestExtensions').optional().explicit(0).seqof(
- rfc5280.Extension)
+ rfc5280.Extension)
);
});
exports.Request = Request;
@@ -42,10 +42,10 @@ var OCSPResponse = asn1.define('OCSPResponse', function() {
this.seq().obj(
this.key('responseStatus').use(ResponseStatus),
this.key('responseBytes').optional().explicit(0).seq().obj(
- this.key('responseType').objid({
- '1 3 6 1 5 5 7 48 1 1': 'id-pkix-ocsp-basic'
- }),
- this.key('response').octstr()
+ this.key('responseType').objid({
+ '1 3 6 1 5 5 7 48 1 1': 'id-pkix-ocsp-basic'
+ }),
+ this.key('response').octstr()
)
);
});
@@ -80,7 +80,7 @@ var ResponseData = asn1.define('ResponseData', function() {
this.key('producedAt').gentime(),
this.key('responses').seqof(SingleResponse),
this.key('responseExtensions').optional().explicit(0)
- .seqof(rfc5280.Extension)
+ .seqof(rfc5280.Extension)
);
});
exports.ResponseData = ResponseData;
diff --git a/rfc/2560/package-lock.json b/rfc/2560/package-lock.json
index b5388e7..691150c 100644
--- a/rfc/2560/package-lock.json
+++ b/rfc/2560/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "asn1.js-rfc2560",
- "version": "4.0.5",
+ "version": "4.0.6",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/rfc/2560/test/basic-test.js b/rfc/2560/test/basic-test.js
index 9d36193..3b1561f 100644
--- a/rfc/2560/test/basic-test.js
+++ b/rfc/2560/test/basic-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var rfc2560 = require('..');
diff --git a/rfc/5280/index.js b/rfc/5280/index.js
index 6ad4ffb..ffb302b 100644
--- a/rfc/5280/index.js
+++ b/rfc/5280/index.js
@@ -170,7 +170,7 @@ var RevokedCertificate = asn1.define('RevokedCertificate', function() {
this.key('userCertificate').use(CertificateSerialNumber),
this.key('revocationDate').use(Time),
this.key('crlEntryExtensions').optional().seqof(Extension)
- )
+ );
});
// Extension ::= SEQUENCE {
@@ -184,7 +184,7 @@ var Extension = asn1.define('Extension', function() {
this.key('extnValue').octstr().contains(function(obj) {
var out = x509Extensions[obj.extnID];
// Cope with unknown extensions
- return out ? out : asn1.define('OctString', function() { this.any() })
+ return out ? out : asn1.define('OctString', function() { this.any(); });
})
);
});
@@ -260,9 +260,9 @@ rfc5280.RDNSequence = RDNSequence;
// RelativeDistinguishedName ::=
// SET SIZE (1..MAX) OF AttributeTypeAndValue
var RelativeDistinguishedName = asn1.define('RelativeDistinguishedName',
- function() {
- this.setof(AttributeTypeAndValue);
-});
+ function() {
+ this.setof(AttributeTypeAndValue);
+ });
rfc5280.RelativeDistinguishedName = RelativeDistinguishedName;
// AttributeTypeAndValue ::= SEQUENCE {
@@ -325,7 +325,7 @@ var AuthorityKeyIdentifier = asn1.define('AuthorityKeyIdentifier', function() {
this.key('keyIdentifier').implicit(0).optional().use(KeyIdentifier),
this.key('authorityCertIssuer').implicit(1).optional().use(GeneralNames),
this.key('authorityCertSerialNumber').implicit(2).optional()
- .use(CertificateSerialNumber)
+ .use(CertificateSerialNumber)
);
});
rfc5280.AuthorityKeyIdentifier = AuthorityKeyIdentifier;
@@ -338,9 +338,9 @@ rfc5280.KeyIdentifier = KeyIdentifier;
// CertificateSerialNumber ::= INTEGER
var CertificateSerialNumber = asn1.define('CertificateSerialNumber',
- function() {
- this.int();
-});
+ function() {
+ this.int();
+ });
rfc5280.CertificateSerialNumber = CertificateSerialNumber;
// ORAddress ::= SEQUENCE {
@@ -352,7 +352,7 @@ var ORAddress = asn1.define('ORAddress', function() {
this.seq().obj(
this.key('builtInStandardAttributes').use(BuiltInStandardAttributes),
this.key('builtInDomainDefinedAttributes').optional()
- .use(BuiltInDomainDefinedAttributes),
+ .use(BuiltInDomainDefinedAttributes),
this.key('extensionAttributes').optional().use(ExtensionAttributes)
);
});
@@ -369,23 +369,23 @@ rfc5280.ORAddress = ORAddress;
// personal-name [5] IMPLICIT PersonalName OPTIONAL,
// organizational-unit-names [6] IMPLICIT OrganizationalUnitNames OPTIONAL }
var BuiltInStandardAttributes = asn1.define('BuiltInStandardAttributes',
- function() {
- this.seq().obj(
- this.key('countryName').optional().use(CountryName),
- this.key('administrationDomainName').optional()
- .use(AdministrationDomainName),
- this.key('networkAddress').implicit(0).optional().use(NetworkAddress),
- this.key('terminalIdentifier').implicit(1).optional()
+ function() {
+ this.seq().obj(
+ this.key('countryName').optional().use(CountryName),
+ this.key('administrationDomainName').optional()
+ .use(AdministrationDomainName),
+ this.key('networkAddress').implicit(0).optional().use(NetworkAddress),
+ this.key('terminalIdentifier').implicit(1).optional()
.use(TerminalIdentifier),
- this.key('privateDomainName').explicit(2).optional().use(PrivateDomainName),
- this.key('organizationName').implicit(3).optional().use(OrganizationName),
- this.key('numericUserIdentifier').implicit(4).optional()
+ this.key('privateDomainName').explicit(2).optional().use(PrivateDomainName),
+ this.key('organizationName').implicit(3).optional().use(OrganizationName),
+ this.key('numericUserIdentifier').implicit(4).optional()
.use(NumericUserIdentifier),
- this.key('personalName').implicit(5).optional().use(PersonalName),
- this.key('organizationalUnitNames').implicit(6).optional()
+ this.key('personalName').implicit(5).optional().use(PersonalName),
+ this.key('organizationalUnitNames').implicit(6).optional()
.use(OrganizationalUnitNames)
- );
-});
+ );
+ });
rfc5280.BuiltInStandardAttributes = BuiltInStandardAttributes;
// CountryName ::= CHOICE {
@@ -404,12 +404,12 @@ rfc5280.CountryName = CountryName;
// numeric NumericString,
// printable PrintableString }
var AdministrationDomainName = asn1.define('AdministrationDomainName',
- function() {
- this.choice({
- numeric: this.numstr(),
- printable: this.printstr()
+ function() {
+ this.choice({
+ numeric: this.numstr(),
+ printable: this.printstr()
+ });
});
-});
rfc5280.AdministrationDomainName = AdministrationDomainName;
// NetworkAddress ::= X121Address
@@ -471,9 +471,9 @@ rfc5280.PersonalName = PersonalName;
// OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
// OF OrganizationalUnitName
var OrganizationalUnitNames = asn1.define('OrganizationalUnitNames',
- function() {
- this.seqof(OrganizationalUnitName);
-});
+ function() {
+ this.seqof(OrganizationalUnitName);
+ });
rfc5280.OrganizationalUnitNames = OrganizationalUnitNames;
// OrganizationalUnitName ::= PrintableString (SIZE
@@ -488,8 +488,8 @@ rfc5280.OrganizationalUnitName = OrganizationalUnitName;
// OF BuiltInDomainDefinedAttribute
var BuiltInDomainDefinedAttributes = asn1.define(
'BuiltInDomainDefinedAttributes', function() {
- this.seqof(BuiltInDomainDefinedAttribute);
-});
+ this.seqof(BuiltInDomainDefinedAttribute);
+ });
rfc5280.BuiltInDomainDefinedAttributes = BuiltInDomainDefinedAttributes;
// BuiltInDomainDefinedAttribute ::= SEQUENCE {
@@ -497,12 +497,12 @@ rfc5280.BuiltInDomainDefinedAttributes = BuiltInDomainDefinedAttributes;
// value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length))
//}
var BuiltInDomainDefinedAttribute = asn1.define('BuiltInDomainDefinedAttribute',
- function() {
- this.seq().obj(
- this.key('type').printstr(),
- this.key('value').printstr()
- );
-});
+ function() {
+ this.seq().obj(
+ this.key('type').printstr(),
+ this.key('value').printstr()
+ );
+ });
rfc5280.BuiltInDomainDefinedAttribute = BuiltInDomainDefinedAttribute;
@@ -622,9 +622,9 @@ rfc5280.IssuerAlternativeName = IssuerAlternativeName;
// SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
var SubjectDirectoryAttributes = asn1.define('SubjectDirectoryAttributes',
- function() {
- this.seqof(Attribute);
-});
+ function() {
+ this.seqof(Attribute);
+ });
rfc5280.SubjectDirectoryAttributes = SubjectDirectoryAttributes;
// BasicConstraints ::= SEQUENCE {
@@ -716,7 +716,7 @@ rfc5280.CRLDistributionPoints = CRLDistributionPoints;
var DistributionPoint = asn1.define('DistributionPoint', function() {
this.seq().obj(
this.key('distributionPoint').optional().explicit(0)
- .use(DistributionPointName),
+ .use(DistributionPointName),
this.key('reasons').optional().implicit(1).use(ReasonFlags),
this.key('cRLIssuer').optional().implicit(2).use(GeneralNames)
);
@@ -764,9 +764,9 @@ rfc5280.FreshestCRL = FreshestCRL;
// AuthorityInfoAccessSyntax ::=
// SEQUENCE SIZE (1..MAX) OF AccessDescription
var AuthorityInfoAccessSyntax = asn1.define('AuthorityInfoAccessSyntax',
- function() {
- this.seqof(AccessDescription);
-});
+ function() {
+ this.seqof(AccessDescription);
+ });
rfc5280.AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax;
// AccessDescription ::= SEQUENCE {
@@ -783,9 +783,9 @@ rfc5280.AccessDescription = AccessDescription;
// SubjectInfoAccessSyntax ::=
// SEQUENCE SIZE (1..MAX) OF AccessDescription
var SubjectInformationAccess = asn1.define('SubjectInformationAccess',
- function() {
- this.seqof(AccessDescription);
-});
+ function() {
+ this.seqof(AccessDescription);
+ });
rfc5280.SubjectInformationAccess = SubjectInformationAccess;
/**
@@ -811,17 +811,17 @@ rfc5280.DeltaCRLIndicator = DeltaCRLIndicator;
// indirectCRL [4] BOOLEAN DEFAULT FALSE,
// onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
var IssuingDistributionPoint = asn1.define('IssuingDistributionPoint',
- function() {
- this.seq().obj(
- this.key('distributionPoint').explicit(0).optional()
+ function() {
+ this.seq().obj(
+ this.key('distributionPoint').explicit(0).optional()
.use(DistributionPointName),
- this.key('onlyContainsUserCerts').implicit(1).def(false).bool(),
- this.key('onlyContainsCACerts').implicit(2).def(false).bool(),
- this.key('onlySomeReasons').implicit(3).optional().use(ReasonFlags),
- this.key('indirectCRL').implicit(4).def(false).bool(),
- this.key('onlyContainsAttributeCerts').implicit(5).def(false).bool()
- );
-});
+ this.key('onlyContainsUserCerts').implicit(1).def(false).bool(),
+ this.key('onlyContainsCACerts').implicit(2).def(false).bool(),
+ this.key('onlySomeReasons').implicit(3).optional().use(ReasonFlags),
+ this.key('indirectCRL').implicit(4).def(false).bool(),
+ this.key('onlyContainsAttributeCerts').implicit(5).def(false).bool()
+ );
+ });
rfc5280.IssuingDistributionPoint = IssuingDistributionPoint;
// CRLReason ::= ENUMERATED {
diff --git a/rfc/5280/package-lock.json b/rfc/5280/package-lock.json
index 147d2d4..96cd7e7 100644
--- a/rfc/5280/package-lock.json
+++ b/rfc/5280/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "asn1.js-rfc5280",
- "version": "2.0.0",
+ "version": "2.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/rfc/5280/test/basic-test.js b/rfc/5280/test/basic-test.js
index 35ec251..327676b 100644
--- a/rfc/5280/test/basic-test.js
+++ b/rfc/5280/test/basic-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var fs = require('fs');
var asn1 = require('../../../');
@@ -14,9 +17,9 @@ describe('asn1.js RFC5280', function() {
var tbs = res.tbsCertificate;
assert.equal(tbs.version, 'v3');
assert.deepEqual(tbs.serialNumber,
- new asn1.bignum('462e4256bb1194dc', 16));
+ new asn1.bignum('462e4256bb1194dc', 16));
assert.equal(tbs.signature.algorithm.join('.'),
- '1.2.840.113549.1.1.5');
+ '1.2.840.113549.1.1.5');
assert.equal(tbs.signature.parameters.toString('hex'), '0500');
});
@@ -29,19 +32,19 @@ describe('asn1.js RFC5280', function() {
var tbs = res.tbsCertificate;
assert.equal(tbs.version, 'v3');
assert.deepEqual(tbs.serialNumber,
- new asn1.bignum('4d955d20af85c49f6925fbab7c665f89', 16));
+ new asn1.bignum('4d955d20af85c49f6925fbab7c665f89', 16));
assert.equal(tbs.signature.algorithm.join('.'),
- '1.2.840.10045.4.3.3'); // RFC5754
+ '1.2.840.10045.4.3.3'); // RFC5754
var spki = rfc5280.SubjectPublicKeyInfo.encode(tbs.subjectPublicKeyInfo,
- 'der');
-// spki check to the output of
-// openssl x509 -in ecc_cert.pem -pubkey -noout |
-// openssl pkey -pubin -outform der | openssl base64
+ 'der');
+ // spki check to the output of
+ // openssl x509 -in ecc_cert.pem -pubkey -noout |
+ // openssl pkey -pubin -outform der | openssl base64
assert.equal(spki.toString('base64'),
- 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3QQ9svKQk5fG6bu8kdtR8KO' +
+ 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3QQ9svKQk5fG6bu8kdtR8KO' +
'G7fvG04WTMgVJ4ASDYZZR/1chrgvaDucEoX/bKhy9ypg1xXFzQM3oaqtUhE' +
'Mm4g=='
- );
+ );
});
it('should decode AuthorityInfoAccess', function() {
@@ -49,7 +52,7 @@ describe('asn1.js RFC5280', function() {
'6b692e676f6f676c652e636f6d2f47494147322e63727430' +
'2b06082b06010505073001861f687474703a2f2f636c6965' +
'6e7473312e676f6f676c652e636f6d2f6f637370',
- 'hex');
+ 'hex');
var info = rfc5280.AuthorityInfoAccessSyntax.decode(data, 'der');
@@ -67,38 +70,38 @@ describe('asn1.js RFC5280', function() {
var data;
var cert;
- var extensions = {}
+ var extensions = {};
data = fs.readFileSync(__dirname + '/fixtures/cert3.crt');
cert = rfc5280.Certificate.decode(data, 'der');
cert.tbsCertificate.extensions.forEach(function(e) {
- extensions[e.extnID] = e
+ extensions[e.extnID] = e;
});
assert.equal(extensions.basicConstraints.extnValue.cA, false);
assert.equal(extensions.extendedKeyUsage.extnValue.length, 2);
- extensions = {}
+ extensions = {};
data = fs.readFileSync(__dirname + '/fixtures/cert4.crt');
cert = rfc5280.Certificate.decode(data, 'der');
cert.tbsCertificate.extensions.forEach(function(e) {
- extensions[e.extnID] = e
+ extensions[e.extnID] = e;
});
assert.equal(extensions.basicConstraints.extnValue.cA, true);
assert.equal(extensions.authorityInformationAccess.extnValue[0]
- .accessLocation.value, 'http://ocsp.godaddy.com/')
+ .accessLocation.value, 'http://ocsp.godaddy.com/');
- extensions = {}
+ extensions = {};
data = fs.readFileSync(__dirname + '/fixtures/cert5.crt');
cert = rfc5280.Certificate.decode(data, 'der');
cert.tbsCertificate.extensions.forEach(function(e) {
- extensions[e.extnID] = e
+ extensions[e.extnID] = e;
});
assert.equal(extensions.basicConstraints.extnValue.cA, true);
- extensions = {}
+ extensions = {};
data = fs.readFileSync(__dirname + '/fixtures/cert6.crt');
cert = rfc5280.Certificate.decode(data, 'der');
cert.tbsCertificate.extensions.forEach(function(e) {
- extensions[e.extnID] = e
+ extensions[e.extnID] = e;
});
assert.equal(extensions.basicConstraints.extnValue.cA, true);
});
@@ -116,7 +119,7 @@ describe('asn1.js RFC5280', function() {
var decoded = rfc5280.IssuingDistributionPoint.decode(data);
assert.deepEqual(decoded, input);
- var input = {
+ input = {
onlyContainsUserCerts: true,
onlyContainsCACerts: false,
indirectCRL: true,
@@ -124,9 +127,9 @@ describe('asn1.js RFC5280', function() {
onlySomeReasons: { unused: 0, data: new Buffer('asdf') }
};
- var data = rfc5280.IssuingDistributionPoint.encode(input);
+ data = rfc5280.IssuingDistributionPoint.encode(input);
- var decoded = rfc5280.IssuingDistributionPoint.decode(data);
+ decoded = rfc5280.IssuingDistributionPoint.decode(data);
assert.deepEqual(decoded, input);
});
@@ -138,13 +141,13 @@ describe('asn1.js RFC5280', function() {
data = fs.readFileSync(__dirname + '/fixtures/cert1.crl');
crl = rfc5280.CertificateList.decode(data, 'der');
- assert.equal(crl.tbsCertList.revokedCertificates.length, 2)
+ assert.equal(crl.tbsCertList.revokedCertificates.length, 2);
assert.deepEqual(crl.tbsCertList.revokedCertificates[0].userCertificate,
- new asn1.bignum('764bedd38afd51f7', 16));
+ new asn1.bignum('764bedd38afd51f7', 16));
var cert1 = crl.tbsCertList.revokedCertificates[1];
assert.deepEqual(cert1.userCertificate,
- new asn1.bignum('31da3380182af9b2', 16));
+ new asn1.bignum('31da3380182af9b2', 16));
assert.equal(cert1.crlEntryExtensions.length, 1);
var ext1 = cert1.crlEntryExtensions[0];
diff --git a/test/der-decode-test.js b/test/der-decode-test.js
index 768d2e3..87e5cdd 100644
--- a/test/der-decode-test.js
+++ b/test/der-decode-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
diff --git a/test/der-encode-test.js b/test/der-encode-test.js
index 06003b9..9130d50 100644
--- a/test/der-encode-test.js
+++ b/test/der-encode-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var BN = require('bn.js');
diff --git a/test/error-test.js b/test/error-test.js
index 9892905..2584478 100644
--- a/test/error-test.js
+++ b/test/error-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var bn = asn1.bignum;
diff --git a/test/fixtures.js b/test/fixtures.js
index 9ee4db6..ea3a024 100644
--- a/test/fixtures.js
+++ b/test/fixtures.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
function jsonEqual(a, b) {
diff --git a/test/pem-test.js b/test/pem-test.js
index dfbe7db..f98ae40 100644
--- a/test/pem-test.js
+++ b/test/pem-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var BN = require('bn.js');
diff --git a/test/ping-pong-test.js b/test/ping-pong-test.js
index 5a1e250..2ee66fc 100644
--- a/test/ping-pong-test.js
+++ b/test/ping-pong-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var fixtures = require('./fixtures');
diff --git a/test/tracking-test.js b/test/tracking-test.js
index 1f9b4f6..0d693f1 100644
--- a/test/tracking-test.js
+++ b/test/tracking-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var fixtures = require('./fixtures');
diff --git a/test/use-test.js b/test/use-test.js
index 93e088a..35f3283 100644
--- a/test/use-test.js
+++ b/test/use-test.js
@@ -1,3 +1,6 @@
+'use strict';
+/* global describe it */
+
var assert = require('assert');
var asn1 = require('..');
var bn = asn1.bignum;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-asn1.js.git
More information about the Pkg-javascript-commits
mailing list