diff --git a/esdoc-integrate-manual-plugin/src/Plugin.js b/esdoc-integrate-manual-plugin/src/Plugin.js index aa8cdb8..e92be51 100644 --- a/esdoc-integrate-manual-plugin/src/Plugin.js +++ b/esdoc-integrate-manual-plugin/src/Plugin.js @@ -63,14 +63,27 @@ class Plugin { } for (const filePath of manual.files) { - results.push({ - kind: 'manual', - longname: path.resolve(filePath), - name: filePath, - content: fs.readFileSync(filePath).toString(), - static: true, - access: 'public' - }); + if (typeof filePath === "string") { + results.push({ + kind: 'manual', + longname: path.resolve(filePath), + name: filePath, + content: fs.readFileSync(filePath).toString(), + static: true, + access: 'public' + }); + } else if (typeof filePath === "object") { + const {src, destPrefix} = filePath; + results.push({ + kind: 'manual', + longname: path.resolve(src), + name: src, + destPrefix: destPrefix, + content: fs.readFileSync(src).toString(), + static: true, + access: 'public' + }); + } } return results; diff --git a/esdoc-integrate-manual-plugin/test/esdoc.json b/esdoc-integrate-manual-plugin/test/esdoc.json index 7337db6..e9f719a 100644 --- a/esdoc-integrate-manual-plugin/test/esdoc.json +++ b/esdoc-integrate-manual-plugin/test/esdoc.json @@ -20,7 +20,15 @@ "./test/manual/example.md", "./test/manual/advanced.md", "./test/manual/faq.md", - "./test/CHANGELOG.md" + "./test/CHANGELOG.md", + { + "src": "./test/manual/destPrefixChange.md", + "destPrefix": "dest1" + }, + { + "src": "./test/manual/destPrefixChange.md", + "destPrefix": "dest2" + } ] } } diff --git a/esdoc-integrate-manual-plugin/test/manual/all.test.js b/esdoc-integrate-manual-plugin/test/manual/all.test.js index a35f346..a788923 100644 --- a/esdoc-integrate-manual-plugin/test/manual/all.test.js +++ b/esdoc-integrate-manual-plugin/test/manual/all.test.js @@ -63,4 +63,12 @@ describe('test/manual:', ()=>{ const doc = find('longname', /CHANGELOG.md$/); assert.equal(doc.content, file(doc.name)); }); + + it('has manual file(s) with destination prefix', () => { + const [doc1, doc2] = find('destPrefix', /dest1/, /dest2/); + assert.equal(doc1.content, file(doc1.name)); + assert.equal(doc1.destPrefix, 'dest1'); + assert.equal(doc2.content, file(doc2.name)); + assert.equal(doc2.destPrefix, 'dest2'); + }); }); diff --git a/esdoc-integrate-manual-plugin/test/manual/destPrefixChange.md b/esdoc-integrate-manual-plugin/test/manual/destPrefixChange.md new file mode 100644 index 0000000..35cc62f --- /dev/null +++ b/esdoc-integrate-manual-plugin/test/manual/destPrefixChange.md @@ -0,0 +1,2 @@ +# Destination Prefix +this file is generated in different prefix locations diff --git a/esdoc-integrate-manual-plugin/test/util.js b/esdoc-integrate-manual-plugin/test/util.js index 5b9a81e..1c1dca7 100644 --- a/esdoc-integrate-manual-plugin/test/util.js +++ b/esdoc-integrate-manual-plugin/test/util.js @@ -12,7 +12,7 @@ exports.find = function(key, ...values) { for (const value of values) { const result = global.docs.find(doc => { if (typeof value === 'string') return doc[key] === value; - if (value instanceof RegExp) return doc[key].match(value); + if (value instanceof RegExp) return doc[key] && doc[key].match(value); }); results.push(result); diff --git a/esdoc-publish-html-plugin/out/src/Builder/ClassDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/ClassDocBuilder.js new file mode 100644 index 0000000..8c11a07 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/ClassDocBuilder.js @@ -0,0 +1,284 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _util = require('./util.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Class Output Builder class. + */ +class ClassDocBuilder extends _DocBuilder2.default { + exec(writeFile) { + const ice = this._buildLayoutDoc(); + ice.autoDrop = false; + const docs = this._find({ kind: ['class'] }); + for (const doc of docs) { + const fileName = this._getOutputFileName(doc); + const baseUrl = this._getBaseUrl(fileName); + const title = this._getTitle(doc); + ice.load('content', this._buildClassDoc(doc), _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile(fileName, ice.html); + } + } + + /** + * build class output. + * @param {DocObject} doc - class doc object. + * @returns {IceCap} built output. + * @private + */ + _buildClassDoc(doc) { + const expressionExtends = this._buildExpressionExtendsHTML(doc); + const mixinClasses = this._buildMixinClassesHTML(doc); + const extendsChain = this._buildExtendsChainHTML(doc); + const directSubclass = this._buildDirectSubclassHTML(doc); + const indirectSubclass = this._buildIndirectSubclassHTML(doc); + const instanceDocs = this._find({ kind: 'variable' }).filter(v => { + return v.type && v.type.types.includes(doc.longname); + }); + + const ice = new _iceCap2.default(this._readTemplate('class.html')); + + // header + if (doc.export && doc.importPath && doc.importStyle) { + const link = this._buildFileDocLinkHTML(doc, doc.importPath); + ice.into('importPath', `import ${doc.importStyle} from '${link}'`, (code, ice) => { + ice.load('importPathCode', code); + }); + } + ice.text('access', doc.access); + ice.text('kind', doc.interface ? 'interface' : 'class'); + ice.load('source', this._buildFileDocLinkHTML(doc, 'source'), 'append'); + ice.text('since', doc.since, 'append'); + ice.text('version', doc.version, 'append'); + ice.load('variation', this._buildVariationHTML(doc), 'append'); + + ice.into('expressionExtends', expressionExtends, (expressionExtends, ice) => ice.load('expressionExtendsCode', expressionExtends)); + ice.load('mixinExtends', mixinClasses, 'append'); + ice.load('extendsChain', extendsChain, 'append'); + ice.load('directSubclass', directSubclass, 'append'); + ice.load('indirectSubclass', indirectSubclass, 'append'); + ice.load('implements', this._buildDocsLinkHTML(doc.implements, null, false, ', '), 'append'); + ice.load('indirectImplements', this._buildDocsLinkHTML(doc._custom_indirect_implements, null, false, ', '), 'append'); + ice.load('directImplemented', this._buildDocsLinkHTML(doc._custom_direct_implemented, null, false, ', '), 'append'); + ice.load('indirectImplemented', this._buildDocsLinkHTML(doc._custom_indirect_implemented, null, false, ', '), 'append'); + + // self + ice.text('name', doc.name); + ice.load('description', doc.description); + ice.load('deprecated', this._buildDeprecatedHTML(doc)); + ice.load('experimental', this._buildExperimentalHTML(doc)); + ice.load('see', this._buildDocsLinkHTML(doc.see), 'append'); + ice.load('todo', this._buildDocsLinkHTML(doc.todo), 'append'); + ice.load('decorator', this._buildDecoratorHTML(doc), 'append'); + + ice.into('instanceDocs', instanceDocs, (instanceDocs, ice) => { + ice.loop('instanceDoc', instanceDocs, (i, instanceDoc, ice) => { + ice.load('instanceDoc', this._buildDocLinkHTML(instanceDoc.longname)); + }); + }); + + ice.into('exampleDocs', doc.examples, (examples, ice) => { + ice.loop('exampleDoc', examples, (i, example, ice) => { + const parsed = (0, _util.parseExample)(example); + ice.text('exampleCode', parsed.body); + ice.text('exampleCaption', parsed.caption); + }); + }); + + ice.into('tests', doc._custom_tests, (tests, ice) => { + ice.loop('test', tests, (i, test, ice) => { + const testDoc = this._find({ longname: test })[0]; + ice.load('test', this._buildFileDocLinkHTML(testDoc, testDoc.testFullDescription)); + }); + }); + + // summary + ice.load('staticMemberSummary', this._buildSummaryHTML(doc, 'member', 'Members', true)); + ice.load('staticMethodSummary', this._buildSummaryHTML(doc, 'method', 'Methods', true)); + ice.load('constructorSummary', this._buildSummaryHTML(doc, 'constructor', 'Constructor', false)); + ice.load('memberSummary', this._buildSummaryHTML(doc, 'member', 'Members', false)); + ice.load('methodSummary', this._buildSummaryHTML(doc, 'method', 'Methods', false)); + + ice.load('inheritedSummary', this._buildInheritedSummaryHTML(doc), 'append'); + + // detail + ice.load('staticMemberDetails', this._buildDetailHTML(doc, 'member', 'Members', true)); + ice.load('staticMethodDetails', this._buildDetailHTML(doc, 'method', 'Methods', true)); + ice.load('constructorDetails', this._buildDetailHTML(doc, 'constructor', 'Constructors', false)); + ice.load('memberDetails', this._buildDetailHTML(doc, 'member', 'Members', false)); + ice.load('methodDetails', this._buildDetailHTML(doc, 'method', 'Methods', false)); + + return ice; + } + + /** + * build variation of doc. + * @param {DocObject} doc - target doc object. + * @returns {string} variation links html. + * @private + * @experimental + */ + _buildVariationHTML(doc) { + const variationDocs = this._find({ memberof: doc.memberof, name: doc.name }); + const html = []; + for (const variationDoc of variationDocs) { + if (variationDoc.variation === doc.variation) continue; + + html.push(this._buildDocLinkHTML(variationDoc.longname, `(${variationDoc.variation || 1})`)); + } + + return html.join(', '); + } + + /** + * build mixin extends html. + * @param {DocObject} doc - target class doc. + * @return {string} mixin extends html. + */ + _buildMixinClassesHTML(doc) { + if (!doc.extends) return ''; + if (doc.extends.length <= 1) return ''; + + const links = []; + for (const longname of doc.extends) { + links.push(this._buildDocLinkHTML(longname)); + } + + return `
${links.join(', ')}
`; + } + + /** + * build expression extends html. + * @param {DocObject} doc - target class doc. + * @return {string} expression extends html. + */ + _buildExpressionExtendsHTML(doc) { + if (!doc.expressionExtends) return ''; + + const html = doc.expressionExtends.replace(/[A-Z_$][a-zA-Z0-9_$]*/g, v => { + return this._buildDocLinkHTML(v); + }); + + return `class ${doc.name} extends ${html}`; + } + + /** + * build class ancestor extends chain. + * @param {DocObject} doc - target class doc. + * @returns {string} extends chain links html. + * @private + */ + _buildExtendsChainHTML(doc) { + if (!doc._custom_extends_chains) return ''; + if (doc.extends.length > 1) return ''; + + const links = []; + for (const longname of doc._custom_extends_chains) { + links.push(this._buildDocLinkHTML(longname)); + } + + links.push(doc.name); + + return `
${links.join(' → ')}
`; + } + + /** + * build in-direct subclass list. + * @param {DocObject} doc - target class doc. + * @returns {string} html of in-direct subclass links. + * @private + */ + _buildIndirectSubclassHTML(doc) { + if (!doc._custom_indirect_subclasses) return ''; + + const links = []; + for (const longname of doc._custom_indirect_subclasses) { + links.push(this._buildDocLinkHTML(longname)); + } + + return `
${links.join(', ')}
`; + } + + /** + * build direct subclass list. + * @param {DocObject} doc - target class doc. + * @returns {string} html of direct subclass links. + * @private + */ + _buildDirectSubclassHTML(doc) { + if (!doc._custom_direct_subclasses) return ''; + + const links = []; + for (const longname of doc._custom_direct_subclasses) { + links.push(this._buildDocLinkHTML(longname)); + } + + return `
${links.join(', ')}
`; + } + + /** + * build inherited method/member summary. + * @param {DocObject} doc - target class doc. + * @returns {string} html of inherited method/member from ancestor classes. + * @private + */ + _buildInheritedSummaryHTML(doc) { + if (['class', 'interface'].indexOf(doc.kind) === -1) return ''; + + const longnames = [...(doc._custom_extends_chains || []) + // ...doc.implements || [], + // ...doc._custom_indirect_implements || [], + ]; + + const html = []; + for (const longname of longnames) { + const superDoc = this._find({ longname })[0]; + + if (!superDoc) continue; + + const targetDocs = this._find({ memberof: longname, kind: ['member', 'method', 'get', 'set'] }); + + targetDocs.sort((a, b) => { + if (a.static !== b.static) return -(a.static - b.static); + + let order = { get: 0, set: 0, member: 1, method: 2 }; + if (order[a.kind] !== order[b.kind]) { + return order[a.kind] - order[b.kind]; + } + + order = { public: 0, protected: 1, private: 2 }; + if (a.access !== b.access) return order[a.access] - order[b.access]; + + if (a.name !== b.name) return a.name < b.name ? -1 : 1; + + order = { get: 0, set: 1, member: 2 }; + return order[a.kind] - order[b.kind]; + }); + + const title = ` From ${superDoc.kind} ${this._buildDocLinkHTML(longname, superDoc.name)}`; + const result = this._buildSummaryDoc(targetDocs, '----------'); + if (result) { + result.load('title', title, _iceCap2.default.MODE_WRITE); + html.push(result.html); + } + } + + return html.join('\n'); + } +} +exports.default = ClassDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/DocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/DocBuilder.js new file mode 100644 index 0000000..049a8fb --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/DocBuilder.js @@ -0,0 +1,1061 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _fs = require('fs'); + +var _fs2 = _interopRequireDefault(_fs); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _escapeHtml = require('escape-html'); + +var _escapeHtml2 = _interopRequireDefault(_escapeHtml); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _util = require('./util.js'); + +var _DocResolver = require('./DocResolver.js'); + +var _DocResolver2 = _interopRequireDefault(_DocResolver); + +var _NPMUtil = require('esdoc/out/src/Util/NPMUtil.js'); + +var _NPMUtil2 = _interopRequireDefault(_NPMUtil); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Builder base class. + */ +class DocBuilder { + /** + * create instance. + * @param {String} template - template absolute path + * @param {Taffy} data - doc object database. + */ + constructor(template, data, tags) { + this._template = template; + this._data = data; + this._tags = tags; + new _DocResolver2.default(this).resolve(); + } + + /* eslint-disable no-unused-vars */ + /** + * execute building output. + * @abstract + * @param {function(html: string, filePath: string)} writeFile - is called each manual. + * @param {function(src: string, dest: string)} copyDir - is called asset. + */ + exec(writeFile, copyDir) {} + + /** + * find doc object. + * @param {...Object} cond - find condition. + * @returns {DocObject[]} found doc objects. + * @private + */ + _find(...cond) { + return this._orderedFind(null, ...cond); + } + + /** + * find all identifiers with kind grouping. + * @returns {{class: DocObject[], interface: DocObject[], function: DocObject[], variable: DocObject[], typedef: DocObject[], external: DocObject[]}} found doc objects. + * @private + */ + _findAllIdentifiersKindGrouping() { + const result = { + class: this._find([{ kind: 'class', interface: false }]), + interface: this._find([{ kind: 'class', interface: true }]), + function: this._find([{ kind: 'function' }]), + variable: this._find([{ kind: 'variable' }]), + typedef: this._find([{ kind: 'typedef' }]), + external: this._find([{ kind: 'external' }]).filter(v => !v.builtinExternal) + }; + return result; + } + + /** + * fuzzy find doc object by name. + * - equal with longname + * - equal with name + * - include in longname + * - include in ancestor + * + * @param {string} name - target identifier name. + * @param {string} [kind] - target kind. + * @returns {DocObject[]} found doc objects. + * @private + */ + _findByName(name, kind = null) { + let docs; + + if (kind) { + docs = this._orderedFind(null, { longname: name, kind: kind }); + } else { + docs = this._orderedFind(null, { longname: name }); + } + if (docs.length) return docs; + + if (kind) { + docs = this._orderedFind(null, { name: name, kind: kind }); + } else { + docs = this._orderedFind(null, { name: name }); + } + if (docs.length) return docs; + + const regexp = new RegExp(`[~]${name.replace('*', '\\*')}$`); // if name is `*`, need to escape. + if (kind) { + docs = this._orderedFind(null, { longname: { regex: regexp }, kind: kind }); + } else { + docs = this._orderedFind(null, { longname: { regex: regexp } }); + } + if (docs.length) return docs; + + // inherited method? + const matched = name.match(/(.*)[.#](.*)$/); // instance method(Foo#bar) or static method(Foo.baz) + if (matched) { + const parent = matched[1]; + const childName = matched[2]; + const parentDoc = this._findByName(parent, 'class')[0]; + if (parentDoc && parentDoc._custom_extends_chains) { + for (const superLongname of parentDoc._custom_extends_chains) { + const docs = this._find({ memberof: superLongname, name: childName }); + if (docs.length) return docs; + } + } + } + + return []; + } + + /** + * find doc objects that is ordered. + * @param {string} order - doc objects order(``column asec`` or ``column desc``). + * @param {...Object} cond - condition objects + * @returns {DocObject[]} found doc objects. + * @private + */ + _orderedFind(order, ...cond) { + const data = this._data(...cond); + + if (order) { + return data.order(`${order}, name asec`).map(v => v); + } else { + return data.order('name asec').map(v => v); + } + } + + /** + * read html template. + * @param {string} fileName - template file name. + * @return {string} html of template. + * @protected + */ + _readTemplate(fileName) { + const filePath = _path2.default.resolve(this._template, `./${fileName}`); + return _fs2.default.readFileSync(filePath, { encoding: 'utf-8' }); + } + + /** + * build common layout output. + * @return {IceCap} layout output. + * @private + */ + _buildLayoutDoc() { + const ice = new _iceCap2.default(this._readTemplate('layout.html'), { autoClose: false }); + + const packageObj = _NPMUtil2.default.findPackage(); + if (packageObj) { + ice.text('esdocVersion', `(${packageObj.version})`); + } else { + ice.drop('esdocVersion'); + } + + const existTest = this._tags.find(tag => tag.kind.indexOf('test') === 0); + ice.drop('testLink', !existTest); + + const existManual = this._tags.find(tag => tag.kind.indexOf('manual') === 0); + ice.drop('manualHeaderLink', !existManual); + + const manualIndex = this._tags.find(tag => tag.kind === 'manualIndex'); + if (manualIndex && manualIndex.globalIndex) { + ice.drop('manualHeaderLink'); + } + + ice.load('nav', this._buildNavDoc()); + return ice; + } + + /** + * build common navigation output. + * @return {IceCap} navigation output. + * @private + */ + _buildNavDoc() { + const html = this._readTemplate('nav.html'); + const ice = new _iceCap2.default(html); + + const kinds = ['class', 'function', 'variable', 'typedef', 'external']; + const allDocs = this._find({ kind: kinds }).filter(v => !v.builtinExternal); + const kindOrder = { class: 0, interface: 1, function: 2, variable: 3, typedef: 4, external: 5 }; + + // see: IdentifiersDocBuilder#_buildIdentifierDoc + allDocs.sort((a, b) => { + const filePathA = a.longname.split('~')[0]; + const filePathB = b.longname.split('~')[0]; + const dirPathA = _path2.default.dirname(filePathA); + const dirPathB = _path2.default.dirname(filePathB); + const kindA = a.interface ? 'interface' : a.kind; + const kindB = b.interface ? 'interface' : b.kind; + if (dirPathA === dirPathB) { + if (kindA === kindB) { + return a.longname > b.longname ? 1 : -1; + } else { + return kindOrder[kindA] > kindOrder[kindB] ? 1 : -1; + } + } else { + return dirPathA > dirPathB ? 1 : -1; + } + }); + let lastDirPath = '.'; + ice.loop('doc', allDocs, (i, doc, ice) => { + const filePath = doc.longname.split('~')[0].replace(/^.*?[/]/, ''); + const dirPath = _path2.default.dirname(filePath); + const kind = doc.interface ? 'interface' : doc.kind; + const kindText = kind.charAt(0).toUpperCase(); + const kindClass = `kind-${kind}`; + ice.load('name', this._buildDocLinkHTML(doc.longname)); + ice.load('kind', kindText); + ice.attr('kind', 'class', kindClass); + ice.text('dirPath', dirPath); + ice.attr('dirPath', 'href', `identifiers.html#${(0, _util.escapeURLHash)(dirPath)}`); + ice.drop('dirPath', lastDirPath === dirPath); + lastDirPath = dirPath; + }); + + return ice; + } + + /** + * find doc object for each access. + * @param {DocObject} doc - parent doc object. + * @param {string} kind - kind property condition. + * @param {boolean} isStatic - static property condition + * @returns {Array[]} found doc objects. + * @property {Array[]} 0 - ['Public', DocObject[]] + * @property {Array[]} 1 - ['Protected', DocObject[]] + * @property {Array[]} 2 - ['Private', DocObject[]] + * @private + */ + _findAccessDocs(doc, kind, isStatic = true) { + const cond = { kind: kind, static: isStatic }; + + if (doc) cond.memberof = doc.longname; + + /* eslint-disable default-case */ + switch (kind) { + case 'class': + cond.interface = false; + break; + case 'interface': + cond.kind = 'class'; + cond.interface = true; + break; + case 'member': + cond.kind = ['member', 'get', 'set']; + break; + } + + const publicDocs = this._find(cond, { access: 'public' }).filter(v => !v.builtinExternal); + const protectedDocs = this._find(cond, { access: 'protected' }).filter(v => !v.builtinExternal); + const privateDocs = this._find(cond, { access: 'private' }).filter(v => !v.builtinExternal); + const accessDocs = [['Public', publicDocs], ['Protected', protectedDocs], ['Private', privateDocs]]; + + return accessDocs; + } + + /** + * build summary output html by parent doc. + * @param {DocObject} doc - parent doc object. + * @param {string} kind - target kind property. + * @param {string} title - summary title. + * @param {boolean} [isStatic=true] - target static property. + * @returns {string} html of summary. + * @private + */ + _buildSummaryHTML(doc, kind, title, isStatic = true) { + const accessDocs = this._findAccessDocs(doc, kind, isStatic); + let html = ''; + for (const accessDoc of accessDocs) { + const docs = accessDoc[1]; + if (!docs.length) continue; + + let prefix = ''; + if (docs[0].static) prefix = 'Static '; + const _title = `${prefix}${accessDoc[0]} ${title}`; + + const result = this._buildSummaryDoc(docs, _title); + if (result) { + html += result.html; + } + } + + return html; + } + + /** + * build summary output html by docs. + * @param {DocObject[]} docs - target docs. + * @param {string} title - summary title. + * @param {boolean} innerLink - if true, link in summary is inner link. + * @param {boolean} kindIcon - use kind icon. + * @return {IceCap} summary output. + * @protected + */ + _buildSummaryDoc(docs, title, innerLink = false, kindIcon = false) { + if (docs.length === 0) return null; + + const ice = new _iceCap2.default(this._readTemplate('summary.html')); + + ice.text('title', title); + ice.loop('target', docs, (i, doc, ice) => { + ice.text('generator', doc.generator ? '*' : ''); + ice.text('async', doc.async ? 'async' : ''); + ice.load('name', this._buildDocLinkHTML(doc.longname, null, innerLink, doc.kind)); + ice.load('signature', this._buildSignatureHTML(doc)); + ice.load('description', (0, _util.shorten)(doc, true)); + ice.text('abstract', doc.abstract ? 'abstract' : ''); + ice.text('access', doc.access); + if (['get', 'set'].includes(doc.kind)) { + ice.text('kind', doc.kind); + } else { + ice.drop('kind'); + } + + if (['member', 'method', 'get', 'set'].includes(doc.kind)) { + ice.text('static', doc.static ? 'static' : ''); + } else { + ice.drop('static'); + } + + if (kindIcon) { + const kind = doc.interface ? 'interface' : doc.kind; + ice.text('kind-icon', kind.charAt(0).toUpperCase()); + ice.attr('kind-icon', 'class', `kind-${kind}`, _iceCap2.default.MODE_APPEND); + } else { + ice.drop('kind-icon'); + } + + ice.text('since', doc.since); + ice.load('deprecated', this._buildDeprecatedHTML(doc)); + ice.load('experimental', this._buildExperimentalHTML(doc)); + ice.text('version', doc.version); + }); + + return ice; + } + + /** + * build detail output html by parent doc. + * @param {DocObject} doc - parent doc object. + * @param {string} kind - target kind property. + * @param {string} title - detail title. + * @param {boolean} [isStatic=true] - target static property. + * @returns {string} html of detail. + * @private + */ + _buildDetailHTML(doc, kind, title, isStatic = true) { + const accessDocs = this._findAccessDocs(doc, kind, isStatic); + let html = ''; + for (const accessDoc of accessDocs) { + const docs = accessDoc[1]; + if (!docs.length) continue; + + let prefix = ''; + if (docs[0].static) prefix = 'Static '; + const _title = `${prefix}${accessDoc[0]} ${title}`; + + const result = this._buildDetailDocs(docs, _title); + if (result) html += result.html; + } + + return html; + } + + /* eslint-disable max-statements */ + /** + * build detail output html by docs. + * @param {DocObject[]} docs - target docs. + * @param {string} title - detail title. + * @return {IceCap} detail output. + * @private + */ + _buildDetailDocs(docs, title) { + const ice = new _iceCap2.default(this._readTemplate('details.html')); + + ice.text('title', title); + ice.drop('title', !docs.length); + + ice.loop('detail', docs, (i, doc, ice) => { + const scope = doc.static ? 'static' : 'instance'; + ice.attr('anchor', 'id', `${scope}-${doc.kind}-${doc.name}`); + ice.text('generator', doc.generator ? '*' : ''); + ice.text('async', doc.async ? 'async' : ''); + ice.text('name', doc.name); + ice.load('signature', this._buildSignatureHTML(doc)); + ice.load('description', doc.description || this._buildOverrideMethodDescription(doc)); + ice.text('abstract', doc.abstract ? 'abstract' : ''); + ice.text('access', doc.access); + if (['get', 'set'].includes(doc.kind)) { + ice.text('kind', doc.kind); + } else { + ice.drop('kind'); + } + if (doc.export && doc.importPath && doc.importStyle) { + const link = this._buildFileDocLinkHTML(doc, doc.importPath); + ice.into('importPath', `import ${doc.importStyle} from '${link}'`, (code, ice) => { + ice.load('importPathCode', code); + }); + } else { + ice.drop('importPath'); + } + + if (['member', 'method', 'get', 'set'].includes(doc.kind)) { + ice.text('static', doc.static ? 'static' : ''); + } else { + ice.drop('static'); + } + + ice.load('source', this._buildFileDocLinkHTML(doc, 'source')); + ice.text('since', doc.since, 'append'); + ice.load('deprecated', this._buildDeprecatedHTML(doc)); + ice.load('experimental', this._buildExperimentalHTML(doc)); + ice.text('version', doc.version, 'append'); + ice.load('see', this._buildDocsLinkHTML(doc.see), 'append'); + ice.load('todo', this._buildDocsLinkHTML(doc.todo), 'append'); + ice.load('override', this._buildOverrideMethod(doc)); + ice.load('decorator', this._buildDecoratorHTML(doc), 'append'); + + let isFunction = false; + if (['method', 'constructor', 'function'].indexOf(doc.kind) !== -1) isFunction = true; + if (doc.kind === 'typedef' && doc.params && doc.type.types[0] === 'function') isFunction = true; + + if (isFunction) { + ice.load('properties', this._buildProperties(doc.params, 'Params:')); + } else { + ice.load('properties', this._buildProperties(doc.properties, 'Properties:')); + } + + // return + if (doc.return) { + ice.load('returnDescription', doc.return.description); + const typeNames = []; + for (const typeName of doc.return.types) { + typeNames.push(this._buildTypeDocLinkHTML(typeName)); + } + if (typeof doc.return.nullable === 'boolean') { + const nullable = doc.return.nullable; + ice.load('returnType', `${typeNames.join(' | ')} (nullable: ${nullable})`); + } else { + ice.load('returnType', typeNames.join(' | ')); + } + + ice.load('returnProperties', this._buildProperties(doc.properties, 'Return Properties:')); + } else { + ice.drop('returnParams'); + } + + // throws + if (doc.throws) { + ice.loop('throw', doc.throws, (i, exceptionDoc, ice) => { + ice.load('throwName', this._buildDocLinkHTML(exceptionDoc.types[0])); + ice.load('throwDesc', exceptionDoc.description); + }); + } else { + ice.drop('throwWrap'); + } + + // fires + if (doc.emits) { + ice.loop('emit', doc.emits, (i, emitDoc, ice) => { + ice.load('emitName', this._buildDocLinkHTML(emitDoc.types[0])); + ice.load('emitDesc', emitDoc.description); + }); + } else { + ice.drop('emitWrap'); + } + + // listens + if (doc.listens) { + ice.loop('listen', doc.listens, (i, listenDoc, ice) => { + ice.load('listenName', this._buildDocLinkHTML(listenDoc.types[0])); + ice.load('listenDesc', listenDoc.description); + }); + } else { + ice.drop('listenWrap'); + } + + // example + ice.into('example', doc.examples, (examples, ice) => { + ice.loop('exampleDoc', examples, (i, exampleDoc, ice) => { + const parsed = (0, _util.parseExample)(exampleDoc); + ice.text('exampleCode', parsed.body); + ice.text('exampleCaption', parsed.caption); + }); + }); + + // tests + ice.into('tests', doc._custom_tests, (tests, ice) => { + ice.loop('test', tests, (i, test, ice) => { + const testDoc = this._find({ longname: test })[0]; + ice.load('test', this._buildFileDocLinkHTML(testDoc, testDoc.testFullDescription)); + }); + }); + }); + + return ice; + } + + /** + * get output html page title. + * @param {DocObject} doc - target doc object. + * @returns {string} page title. + * @private + */ + _getTitle(doc = '') { + const name = doc.name || doc.toString(); + + if (name) { + return `${name}`; + } else { + return ''; + } + } + + /** + * get base url html page. it is used html base tag. + * @param {string} fileName - output file path. + * @returns {string} base url. + * @protected + */ + _getBaseUrl(fileName) { + const baseUrl = '../'.repeat(fileName.split('/').length - 1); + return baseUrl; + } + + /** + * gat url of output html page. + * @param {DocObject} doc - target doc object. + * @returns {string} url of output html. it is relative path from output root dir. + * @private + */ + _getURL(doc) { + let inner = false; + if (['variable', 'function', 'member', 'typedef', 'method', 'constructor', 'get', 'set'].includes(doc.kind)) { + inner = true; + } + + if (inner) { + const scope = doc.static ? 'static' : 'instance'; + const fileName = this._getOutputFileName(doc); + return `${fileName}#${scope}-${doc.kind}-${doc.name}`; + } else { + const fileName = this._getOutputFileName(doc); + return fileName; + } + } + + /** + * get file name of output html page. + * @param {DocObject} doc - target doc object. + * @returns {string} file name. + * @private + */ + _getOutputFileName(doc) { + switch (doc.kind) { + case 'variable': + return 'variable/index.html'; + case 'function': + return 'function/index.html'; + case 'member': // fall + case 'method': // fall + case 'constructor': // fall + case 'set': // fall + case 'get': + { + // fal + const parentDoc = this._find({ longname: doc.memberof })[0]; + return this._getOutputFileName(parentDoc); + } + case 'external': + return 'external/index.html'; + case 'typedef': + return 'typedef/index.html'; + case 'class': + return `class/${doc.longname}.html`; + case 'file': + return `file/${doc.name}.html`; + case 'testFile': + return `test-file/${doc.name}.html`; + case 'test': + return 'test.html'; + default: + throw new Error('DocBuilder: can not resolve file name.'); + } + } + + /** + * build html link to file page. + * @param {DocObject} doc - target doc object. + * @param {string} text - link text. + * @returns {string} html of link. + * @private + */ + _buildFileDocLinkHTML(doc, text = null) { + if (!doc) return ''; + + let fileDoc; + if (doc.kind === 'file' || doc.kind === 'testFile') { + fileDoc = doc; + } else { + const filePath = doc.longname.split('~')[0]; + fileDoc = this._find({ kind: ['file', 'testFile'], name: filePath })[0]; + } + + if (!fileDoc) return ''; + + if (!text) text = fileDoc.name; + + if (doc.kind === 'file' || doc.kind === 'testFile') { + return `${text}`; + } else { + return `${text}`; + } + } + + /** + * build html link of type. + * @param {string} typeName - type name(e.g. ``number[]``, ``Map``) + * @returns {string} html of link. + * @private + * @todo re-implement with parser combinator. + */ + _buildTypeDocLinkHTML(typeName) { + // e.g. number[] + let matched = typeName.match(/^(.*?)\[\]$/); + if (matched) { + typeName = matched[1]; + return `${this._buildDocLinkHTML(typeName, typeName)}[]`; + } + + // e.g. function(a: number, b: string): boolean + matched = typeName.match(/function *\((.*?)\)(.*)/); + if (matched) { + const functionLink = this._buildDocLinkHTML('function'); + if (!matched[1] && !matched[2]) return `${functionLink}()`; + + let innerTypes = []; + if (matched[1]) { + // bad hack: Map. => Map. + // bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean} + const inner = matched[1].replace(/<.*?>/g, a => a.replace(/,/g, '\\Z')).replace(/{.*?}/g, a => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y')); + innerTypes = inner.split(',').map(v => { + const tmp = v.split(':').map(v => v.trim()); + if (tmp.length !== 2) throw new SyntaxError(`Invalid function type annotation: \`${matched[0]}\``); + + const paramName = tmp[0]; + const typeName = tmp[1].replace(/\\Z/g, ',').replace(/\\Y/g, ':'); + return `${paramName}: ${this._buildTypeDocLinkHTML(typeName)}`; + }); + } + + let returnType = ''; + if (matched[2]) { + const type = matched[2].split(':')[1]; + if (type) returnType = `: ${this._buildTypeDocLinkHTML(type.trim())}`; + } + + return `${functionLink}(${innerTypes.join(', ')})${returnType}`; + } + + // e.g. {a: number, b: string} + matched = typeName.match(/^\{(.*?)\}$/); + if (matched) { + if (!matched[1]) return '{}'; + + // bad hack: Map. => Map. + // bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean} + const inner = matched[1].replace(/<.*?>/g, a => a.replace(/,/g, '\\Z')).replace(/{.*?}/g, a => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y')); + + let broken = false; + + const innerTypes = inner.split(',').map(v => { + const tmp = v.split(':').map(v => v.trim()); + + // edge case: if object key includes comma, this parsing is broken. + // e.g. {"a,b": 10} + // https://github.com/esdoc/esdoc-plugins/pull/49 + if (!tmp[0] || !tmp[1]) { + broken = true; + return; + } + + const paramName = tmp[0]; + let typeName = tmp[1].replace(/\\Z/g, ',').replace(/\\Y/g, ':'); + if (typeName.includes('|')) { + typeName = typeName.replace(/^\(/, '').replace(/\)$/, ''); + const typeNames = typeName.split('|').map(v => v.trim()); + const html = []; + for (const unionType of typeNames) { + html.push(this._buildTypeDocLinkHTML(unionType)); + } + return `${paramName}: ${html.join('|')}`; + } else { + return `${paramName}: ${this._buildTypeDocLinkHTML(typeName)}`; + } + }); + + if (broken) return `*`; + + return `{${innerTypes.join(', ')}}`; + } + + // e.g. Map + matched = typeName.match(/^(.*?)\.?<(.*?)>$/); + if (matched) { + const mainType = matched[1]; + // bad hack: Map. => Map. + // bad hack: {a: string, b: boolean} => {a\Y string\Z b\Y boolean} + const inner = matched[2].replace(/<.*?>/g, a => a.replace(/,/g, '\\Z')).replace(/{.*?}/g, a => a.replace(/,/g, '\\Z').replace(/:/g, '\\Y')); + const innerTypes = inner.split(',').map(v => { + return v.split('|').map(vv => { + vv = vv.trim().replace(/\\Z/g, ',').replace(/\\Y/g, ':'); + return this._buildTypeDocLinkHTML(vv); + }).join('|'); + }); + + const html = `${this._buildDocLinkHTML(mainType, mainType)}<${innerTypes.join(', ')}>`; + return html; + } + + if (typeName.indexOf('...') === 0) { + typeName = typeName.replace('...', ''); + if (typeName.includes('|')) { + const typeNames = typeName.replace('(', '').replace(')', '').split('|'); + const typeLinks = typeNames.map(v => this._buildDocLinkHTML(v)); + return `...(${typeLinks.join('|')})`; + } else { + return `...${this._buildDocLinkHTML(typeName)}`; + } + } else if (typeName.indexOf('?') === 0) { + typeName = typeName.replace('?', ''); + return `?${this._buildDocLinkHTML(typeName)}`; + } else { + return this._buildDocLinkHTML(typeName); + } + } + + /** + * build html link to identifier. + * @param {string} longname - link to this. + * @param {string} [text] - link text. default is name property of doc object. + * @param {boolean} [inner=false] - if true, use inner link. + * @param {string} [kind] - specify target kind property. + * @returns {string} html of link. + * @private + */ + _buildDocLinkHTML(longname, text = null, inner = false, kind = null) { + if (!longname) return ''; + + if (typeof longname !== 'string') throw new Error(JSON.stringify(longname)); + + const doc = this._findByName(longname, kind)[0]; + + if (!doc) { + // if longname is HTML tag, not escape. + if (longname.indexOf('<') === 0) { + return `${longname}`; + } else { + return `${(0, _escapeHtml2.default)(text || longname)}`; + } + } + + if (doc.kind === 'external') { + text = doc.name; + return `${text}`; + } else { + text = (0, _escapeHtml2.default)(text || doc.name); + const url = this._getURL(doc, inner); + if (url) { + return `${text}`; + } else { + return `${text}`; + } + } + } + + /** + * build html links to identifiers + * @param {string[]} longnames - link to these. + * @param {string} [text] - link text. default is name property of doc object. + * @param {boolean} [inner=false] - if true, use inner link. + * @param {string} [separator='\n'] - used link separator. + * @returns {string} html links. + * @private + */ + _buildDocsLinkHTML(longnames, text = null, inner = false, separator = '\n') { + if (!longnames) return ''; + if (!longnames.length) return ''; + + const links = []; + for (const longname of longnames) { + if (!longname) continue; + const link = this._buildDocLinkHTML(longname, text, inner); + links.push(`
  • ${link}
  • `); + } + + if (!links.length) return ''; + + return `
      ${links.join(separator)}
    `; + } + + /** + * build identifier signature html. + * @param {DocObject} doc - target doc object. + * @returns {string} signature html. + * @private + */ + _buildSignatureHTML(doc) { + // call signature + const callSignatures = []; + if (doc.params) { + for (const param of doc.params) { + const paramName = param.name; + if (paramName.indexOf('.') !== -1) continue; // for object property + if (paramName.indexOf('[') !== -1) continue; // for array property + + const types = []; + for (const typeName of param.types) { + types.push(this._buildTypeDocLinkHTML(typeName)); + } + + callSignatures.push(`${paramName}: ${types.join(' | ')}`); + } + } + + // return signature + const returnSignatures = []; + if (doc.return) { + for (const typeName of doc.return.types) { + returnSignatures.push(this._buildTypeDocLinkHTML(typeName)); + } + } + + // type signature + let typeSignatures = []; + if (doc.type) { + for (const typeName of doc.type.types) { + typeSignatures.push(this._buildTypeDocLinkHTML(typeName)); + } + } + + // callback is not need type. because type is always function. + if (doc.kind === 'function') { + typeSignatures = []; + } + + let html = ''; + if (callSignatures.length) { + html = `(${callSignatures.join(', ')})`; + } else if (['function', 'method', 'constructor'].includes(doc.kind)) { + html = '()'; + } + if (returnSignatures.length) html = `${html}: ${returnSignatures.join(' | ')}`; + if (typeSignatures.length) html = `${html}: ${typeSignatures.join(' | ')}`; + + return html; + } + + /** + * build properties output. + * @param {ParsedParam[]} [properties=[]] - properties in doc object. + * @param {string} title - output title. + * @return {IceCap} built properties output. + * @private + */ + _buildProperties(properties = [], title = 'Properties:') { + const ice = new _iceCap2.default(this._readTemplate('properties.html')); + + ice.text('title', title); + + ice.loop('property', properties, (i, prop, ice) => { + ice.autoDrop = false; + ice.attr('property', 'data-depth', prop.name.split('.').length - 1); + ice.text('name', prop.name); + ice.attr('name', 'data-depth', prop.name.split('.').length - 1); + ice.load('description', prop.description); + + const typeNames = []; + for (const typeName of prop.types) { + typeNames.push(this._buildTypeDocLinkHTML(typeName)); + } + ice.load('type', typeNames.join(' | ')); + + // appendix + const appendix = []; + if (prop.optional) { + appendix.push('
  • optional
  • '); + } + if ('defaultValue' in prop) { + appendix.push(`
  • default: ${prop.defaultValue}
  • `); + } + if (typeof prop.nullable === 'boolean') { + appendix.push(`
  • nullable: ${prop.nullable}
  • `); + } + if (appendix.length) { + ice.load('appendix', `
      ${appendix.join('\n')}
    `); + } else { + ice.text('appendix', ''); + } + }); + + if (!properties || properties.length === 0) { + ice.drop('properties'); + } + + return ice; + } + + /** + * build deprecated html. + * @param {DocObject} doc - target doc object. + * @returns {string} if doc is not deprecated, returns empty. + * @private + */ + _buildDeprecatedHTML(doc) { + if (doc.deprecated) { + const deprecated = [`this ${doc.kind} was deprecated.`]; + if (typeof doc.deprecated === 'string') deprecated.push(doc.deprecated); + return deprecated.join(' '); + } else { + return ''; + } + } + + /** + * build experimental html. + * @param {DocObject} doc - target doc object. + * @returns {string} if doc is not experimental, returns empty. + * @private + */ + _buildExperimentalHTML(doc) { + if (doc.experimental) { + const experimental = [`this ${doc.kind} is experimental.`]; + if (typeof doc.experimental === 'string') experimental.push(doc.experimental); + return experimental.join(' '); + } else { + return ''; + } + } + + /** + * build method of ancestor class link html. + * @param {DocObject} doc - target doc object. + * @returns {string} html link. if doc does not override ancestor method, returns empty. + * @private + */ + _buildOverrideMethod(doc) { + const parentDoc = this._findByName(doc.memberof)[0]; + if (!parentDoc) return ''; + if (!parentDoc._custom_extends_chains) return ''; + + const chains = [...parentDoc._custom_extends_chains].reverse(); + for (const longname of chains) { + const superClassDoc = this._findByName(longname)[0]; + if (!superClassDoc) continue; + + const superMethodDoc = this._find({ name: doc.name, memberof: superClassDoc.longname })[0]; + if (!superMethodDoc) continue; + + return this._buildDocLinkHTML(superMethodDoc.longname, `${superClassDoc.name}#${superMethodDoc.name}`, true); + } + + return ''; + } + + /** + * build method of ancestor class description. + * @param {DocObject} doc - target doc object. + * @returns {string} description. if doc does not override ancestor method, returns empty. + * @private + */ + _buildOverrideMethodDescription(doc) { + const parentDoc = this._findByName(doc.memberof)[0]; + if (!parentDoc) return ''; + if (!parentDoc._custom_extends_chains) return ''; + + const chains = [...parentDoc._custom_extends_chains].reverse(); + for (const longname of chains) { + const superClassDoc = this._findByName(longname)[0]; + if (!superClassDoc) continue; + + const superMethodDoc = this._find({ name: doc.name, memberof: superClassDoc.longname })[0]; + if (!superMethodDoc) continue; + + if (superMethodDoc.description) return superMethodDoc.description; + } + + return ''; + } + + _buildDecoratorHTML(doc) { + if (!doc.decorators) return ''; + + const links = []; + for (const decorator of doc.decorators) { + const link = this._buildDocLinkHTML(decorator.name, decorator.name, false, 'function'); + if (decorator.arguments) { + links.push(`
  • ${link}${decorator.arguments}
  • `); + } else { + links.push(`
  • ${link}
  • `); + } + } + + if (!links.length) return ''; + + return `
      ${links.join('\n')}
    `; + } + + // _buildAuthorHTML(doc, separator = '\n') { + // if (!doc.author) return ''; + // + // var html = []; + // for (var author of doc.author) { + // var matched = author.match(/(.*?) *<(.*?)>/); + // if (matched) { + // var name = matched[1]; + // var link = matched[2]; + // if (link.indexOf('http') === 0) { + // html.push(`
  • ${name}
  • `) + // } else { + // html.push(`
  • ${name}
  • `) + // } + // } else { + // html.push(`
  • ${author}
  • `) + // } + // } + // + // return `
      ${html.join(separator)}
    `; + // } +} +exports.default = DocBuilder; /* eslint-disable max-lines */ \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/DocResolver.js b/esdoc-publish-html-plugin/out/src/Builder/DocResolver.js new file mode 100644 index 0000000..ecc341b --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/DocResolver.js @@ -0,0 +1,367 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _util = require('./util.js'); + +/** + * Resolve various properties in doc object. + */ +class DocResolver { + /** + * create instance. + * @param {DocBuilder} builder - target doc builder. + */ + constructor(builder) { + this._builder = builder; + this._data = builder._data; + } + + /** + * resolve various properties. + */ + resolve() { + if (this._data.__RESOLVED_ALL__) return; + + console.log('resolve: extends chain'); + this._resolveExtendsChain(); + + console.log('resolve: necessary'); + this._resolveNecessary(); + + console.log('resolve: ignore'); + this._resolveIgnore(); + + console.log('resolve: link'); + this._resolveLink(); + + console.log('resolve: markdown in description'); + this._resolveMarkdown(); + + console.log('resolve: test relation'); + this._resolveTestRelation(); + + this._data.__RESOLVED_ALL__ = true; + } + + /** + * resolve ignore property. + * remove docs that has ignore property. + * @private + */ + _resolveIgnore() { + if (this._data.__RESOLVED_IGNORE__) return; + + const docs = this._builder._find({ ignore: true }); + for (const doc of docs) { + const longname = doc.longname.replace(/[$]/g, '\\$'); + const regex = new RegExp(`^${longname}[.~#]`); + this._data({ longname: { regex: regex } }).remove(); + } + this._data({ ignore: true }).remove(); + + this._data.__RESOLVED_IGNORE__ = true; + } + + /** + * resolve description as markdown. + * @private + */ + _resolveMarkdown() { + if (this._data.__RESOLVED_MARKDOWN__) return; + + function convert(obj) { + for (const key of Object.keys(obj)) { + const value = obj[key]; + if (key === 'description' && typeof value === 'string') { + obj[`${key}Raw`] = obj[key]; + obj[key] = (0, _util.markdown)(value, false); + } else if (typeof value === 'object' && value) { + convert(value); + } + } + } + + const docs = this._builder._find(); + for (const doc of docs) { + convert(doc); + } + + this._data.__RESOLVED_MARKDOWN__ = true; + } + + /** + * resolve @link as html link. + * @private + * @todo resolve all ``description`` property. + */ + _resolveLink() { + if (this._data.__RESOLVED_LINK__) return; + + const link = str => { + if (!str) return str; + + return str.replace(/\{@link ([\w#_\-.:~\/$]+)}/g, (str, longname) => { + return this._builder._buildDocLinkHTML(longname, longname); + }); + }; + + this._data().each(v => { + v.description = link(v.description); + + if (v.params) { + for (const param of v.params) { + param.description = link(param.description); + } + } + + if (v.properties) { + for (const property of v.properties) { + property.description = link(property.description); + } + } + + if (v.return) { + v.return.description = link(v.return.description); + } + + if (v.throws) { + for (const _throw of v.throws) { + _throw.description = link(_throw.description); + } + } + + if (v.see) { + for (let i = 0; i < v.see.length; i++) { + if (v.see[i].indexOf('{@link') === 0) { + v.see[i] = link(v.see[i]); + } else if (v.see[i].indexOf('${v.see[i]}`; + } + } + } + }); + + this._data.__RESOLVED_LINK__ = true; + } + + /** + * resolve class extends chain. + * add following special property. + * - ``_custom_extends_chain``: ancestor class chain. + * - ``_custom_direct_subclasses``: class list that direct extends target doc. + * - ``_custom_indirect_subclasses``: class list that indirect extends target doc. + * - ``_custom_indirect_implements``: class list that target doc indirect implements. + * - ``_custom_direct_implemented``: class list that direct implements target doc. + * - ``_custom_indirect_implemented``: class list that indirect implements target doc. + * + * @private + */ + _resolveExtendsChain() { + if (this._data.__RESOLVED_EXTENDS_CHAIN__) return; + + const extendsChain = doc => { + if (!doc.extends) return; + + const selfDoc = doc; + + // traverse super class. + const chains = []; + + /* eslint-disable */ + while (1) { + if (!doc.extends) break; + + let superClassDoc = this._builder._findByName(doc.extends[0])[0]; + + if (superClassDoc) { + // this is circular extends + if (superClassDoc.longname === selfDoc.longname) { + break; + } + + chains.push(superClassDoc.longname); + doc = superClassDoc; + } else { + chains.push(doc.extends[0]); + break; + } + } + + if (chains.length) { + // direct subclass + let superClassDoc = this._builder._findByName(chains[0])[0]; + if (superClassDoc) { + if (!superClassDoc._custom_direct_subclasses) superClassDoc._custom_direct_subclasses = []; + superClassDoc._custom_direct_subclasses.push(selfDoc.longname); + } + + // indirect subclass + for (let superClassLongname of chains.slice(1)) { + superClassDoc = this._builder._findByName(superClassLongname)[0]; + if (superClassDoc) { + if (!superClassDoc._custom_indirect_subclasses) superClassDoc._custom_indirect_subclasses = []; + superClassDoc._custom_indirect_subclasses.push(selfDoc.longname); + } + } + + // indirect implements and mixes + for (let superClassLongname of chains) { + superClassDoc = this._builder._findByName(superClassLongname)[0]; + if (!superClassDoc) continue; + + // indirect implements + if (superClassDoc.implements) { + if (!selfDoc._custom_indirect_implements) selfDoc._custom_indirect_implements = []; + selfDoc._custom_indirect_implements.push(...superClassDoc.implements); + } + + // indirect mixes + //if (superClassDoc.mixes) { + // if (!selfDoc._custom_indirect_mixes) selfDoc._custom_indirect_mixes = []; + // selfDoc._custom_indirect_mixes.push(...superClassDoc.mixes); + //} + } + + // extends chains + selfDoc._custom_extends_chains = chains.reverse(); + } + }; + + let implemented = doc => { + let selfDoc = doc; + + // direct implemented (like direct subclass) + for (let superClassLongname of selfDoc.implements || []) { + let superClassDoc = this._builder._findByName(superClassLongname)[0]; + if (!superClassDoc) continue; + if (!superClassDoc._custom_direct_implemented) superClassDoc._custom_direct_implemented = []; + superClassDoc._custom_direct_implemented.push(selfDoc.longname); + } + + // indirect implemented (like indirect subclass) + for (let superClassLongname of selfDoc._custom_indirect_implements || []) { + let superClassDoc = this._builder._findByName(superClassLongname)[0]; + if (!superClassDoc) continue; + if (!superClassDoc._custom_indirect_implemented) superClassDoc._custom_indirect_implemented = []; + superClassDoc._custom_indirect_implemented.push(selfDoc.longname); + } + }; + + //var mixed = (doc) =>{ + // var selfDoc = doc; + // + // // direct mixed (like direct subclass) + // for (var superClassLongname of selfDoc.mixes || []) { + // var superClassDoc = this._builder._find({longname: superClassLongname})[0]; + // if (!superClassDoc) continue; + // if(!superClassDoc._custom_direct_mixed) superClassDoc._custom_direct_mixed = []; + // superClassDoc._custom_direct_mixed.push(selfDoc.longname); + // } + // + // // indirect mixed (like indirect subclass) + // for (var superClassLongname of selfDoc._custom_indirect_mixes || []) { + // var superClassDoc = this._builder._find({longname: superClassLongname})[0]; + // if (!superClassDoc) continue; + // if(!superClassDoc._custom_indirect_mixed) superClassDoc._custom_indirect_mixed = []; + // superClassDoc._custom_indirect_mixed.push(selfDoc.longname); + // } + //}; + + let docs = this._builder._find({ kind: 'class' }); + for (let doc of docs) { + extendsChain(doc); + implemented(doc); + //mixed(doc); + } + + this._data.__RESOLVED_EXTENDS_CHAIN__ = true; + } + + /** + * resolve necessary identifier. + * + * ```javascript + * class Foo {} + * + * export default Bar extends Foo {} + * ``` + * + * ``Foo`` is not exported, but ``Bar`` extends ``Foo``. + * ``Foo`` is necessary. + * So, ``Foo`` must be exported by force. + * + * @private + */ + _resolveNecessary() { + let builder = this._builder; + this._data({ export: false }).update(function () { + let doc = this; + let childNames = []; + if (doc._custom_direct_subclasses) childNames.push(...doc._custom_direct_subclasses); + if (doc._custom_indirect_subclasses) childNames.push(...doc._custom_indirect_subclasses); + if (doc._custom_direct_implemented) childNames.push(...doc._custom_direct_implemented); + if (doc._custom_indirect_implemented) childNames.push(...doc._custom_indirect_implemented); + + for (let childName of childNames) { + let childDoc = builder._find({ longname: childName })[0]; + if (!childDoc) continue; + if (!childDoc.ignore && childDoc.export) { + doc.ignore = false; + return doc; + } + } + }); + } + + /** + * resolve test and identifier relation. add special property. + * - ``_custom_tests``: longnames of test doc. + * - ``_custom_test_targets``: longnames of identifier. + * + * @private + */ + _resolveTestRelation() { + if (this._data.__RESOLVED_TEST_RELATION__) return; + + let testDocs = this._builder._find({ kind: 'test' }); + for (let testDoc of testDocs) { + let testTargets = testDoc.testTargets; + if (!testTargets) continue; + + for (let testTarget of testTargets) { + let doc = this._builder._findByName(testTarget)[0]; + if (doc) { + if (!doc._custom_tests) doc._custom_tests = []; + doc._custom_tests.push(testDoc.longname); + + if (!testDoc._custom_test_targets) testDoc._custom_test_targets = []; + testDoc._custom_test_targets.push([doc.longname, testTarget]); + } else { + if (!testDoc._custom_test_targets) testDoc._custom_test_targets = []; + testDoc._custom_test_targets.push([testTarget, testTarget]); + } + } + } + + // test full description + for (let testDoc of testDocs) { + let desc = []; + let parents = (testDoc.memberof.split('~')[1] || '').split('.'); + for (let parent of parents) { + let doc = this._builder._find({ kind: 'test', name: parent })[0]; + if (!doc) continue; + desc.push(doc.descriptionRaw); + } + desc.push(testDoc.descriptionRaw); + testDoc.testFullDescription = desc.join(' '); + } + + this._data.__RESOLVED_TEST_RELATION__ = true; + } +} +exports.default = DocResolver; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/FileDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/FileDocBuilder.js new file mode 100644 index 0000000..dec166d --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/FileDocBuilder.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * File output builder class. + */ +class FileDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const ice = this._buildLayoutDoc(); + + const docs = this._find({ kind: 'file' }); + for (const doc of docs) { + const fileName = this._getOutputFileName(doc); + const baseUrl = this._getBaseUrl(fileName); + const title = this._getTitle(doc); + ice.load('content', this._buildFileDoc(doc), _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile(fileName, ice.html); + } + } + + /** + * build file output html. + * @param {DocObject} doc - target file doc object. + * @returns {string} html of file page. + * @private + */ + _buildFileDoc(doc) { + const ice = new _iceCap2.default(this._readTemplate('file.html')); + ice.text('title', doc.name); + ice.text('content', doc.content); + ice.drop('emptySourceCode', !!doc.content); + return ice.html; + } +} +exports.default = FileDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/IdentifiersDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/IdentifiersDocBuilder.js new file mode 100644 index 0000000..84730e4 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/IdentifiersDocBuilder.js @@ -0,0 +1,101 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _util = require('./util'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Identifier output builder class. + */ +class IdentifiersDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const ice = this._buildLayoutDoc(); + const title = this._getTitle('Reference'); + ice.load('content', this._buildIdentifierDoc()); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile('identifiers.html', ice.html); + } + + /** + * build identifier output. + * @return {IceCap} built output. + * @private + */ + _buildIdentifierDoc() { + const ice = new _iceCap2.default(this._readTemplate('identifiers.html')); + + // traverse docs and create Map + const dirDocs = new Map(); + const kinds = ['class', 'interface', 'function', 'variable', 'typedef', 'external']; + for (const doc of this._tags) { + if (!kinds.includes(doc.kind)) continue; + if (doc.builtinExternal) continue; + if (doc.ignore) continue; + + const filePath = doc.memberof.replace(/^.*?[/]/, ''); + const dirPath = _path2.default.dirname(filePath); + if (!dirDocs.has(dirPath)) dirDocs.set(dirPath, []); + dirDocs.get(dirPath).push(doc); + } + + // create a summary of dir + const dirPaths = Array.from(dirDocs.keys()).sort((a, b) => a > b ? 1 : -1); + const kindOrder = { class: 0, interface: 1, function: 2, variable: 3, typedef: 4, external: 5 }; + ice.loop('dirSummaryWrap', dirPaths, (i, dirPath, ice) => { + const docs = dirDocs.get(dirPath); + + // see: DocBuilder#_buildNavDoc + docs.sort((a, b) => { + const kindA = a.interface ? 'interface' : a.kind; + const kindB = b.interface ? 'interface' : b.kind; + if (kindA === kindB) { + return a.longname > b.longname ? 1 : -1; + } else { + return kindOrder[kindA] > kindOrder[kindB] ? 1 : -1; + } + }); + + const dirPathLabel = dirPath === '.' ? '' : dirPath; + const summary = this._buildSummaryDoc(docs, `summary`, false, true); + ice.text('dirPath', dirPathLabel); + ice.attr('dirPath', 'id', (0, _util.escapeURLHash)(dirPath)); + ice.load('dirSummary', summary); + }); + + const dirTree = this._buildDirTree(dirPaths); + ice.load('dirTree', dirTree); + ice.drop('dirTreeWrap', !dirTree); + + return ice; + } + + _buildDirTree(dirPaths) { + const lines = []; + for (const dirPath of dirPaths) { + const padding = dirPath.split('/').length - 1; + const dirName = _path2.default.basename(dirPath); + if (dirName === '.') continue; + const hash = (0, _util.escapeURLHash)(dirPath); + lines.push(``); + } + + return lines.join('\n'); + } +} +exports.default = IdentifiersDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/IndexDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/IndexDocBuilder.js new file mode 100644 index 0000000..a675810 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/IndexDocBuilder.js @@ -0,0 +1,58 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _util = require('./util.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Index output builder class. + */ +class IndexDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const ice = this._buildLayoutDoc(); + const title = this._getTitle('Home'); + ice.load('content', this._buildIndexDoc()); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile('index.html', ice.html); + } + + /** + * build index output. + * @returns {string} html of index output. + * @private + */ + _buildIndexDoc() { + const indexTag = this._tags.find(tag => tag.kind === 'index'); + if (!indexTag) return 'Please create README.md'; + + const indexContent = indexTag.content; + + const html = this._readTemplate('index.html'); + const ice = new _iceCap2.default(html); + const ext = _path2.default.extname(indexTag.name); + if (['.md', '.markdown'].includes(ext)) { + ice.load('index', (0, _util.markdown)(indexContent)); + } else { + ice.load('index', indexContent); + } + + return ice.html; + } +} +exports.default = IndexDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/ManualDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/ManualDocBuilder.js new file mode 100644 index 0000000..dc4bdf2 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/ManualDocBuilder.js @@ -0,0 +1,246 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _buffer = require('buffer'); + +var _cheerio = require('cheerio'); + +var _cheerio2 = _interopRequireDefault(_cheerio); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _util = require('./util.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Manual Output Builder class. + */ +class ManualDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir, readFile) { + + const manuals = this._tags.filter(tag => tag.kind === 'manual'); + const manualIndex = this._tags.find(tag => tag.kind === 'manualIndex'); + const manualAsset = this._tags.find(tag => tag.kind === 'manualAsset'); + + if (manuals.length === 0) return; + + const ice = this._buildLayoutDoc(); + ice.autoDrop = false; + ice.attr('rootContainer', 'class', ' manual-root'); + + { + const fileName = 'manual/index.html'; + const baseUrl = this._getBaseUrl(fileName); + const badge = this._writeBadge(manuals, writeFile); + ice.load('content', this._buildManualCardIndex(manuals, manualIndex, badge), _iceCap2.default.MODE_WRITE); + ice.load('nav', this._buildManualNav(manuals), _iceCap2.default.MODE_WRITE); + ice.text('title', 'Manual', _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + ice.attr('rootContainer', 'class', ' manual-index'); + writeFile(fileName, ice.html); + + if (manualIndex.globalIndex) { + ice.attr('baseUrl', 'href', './', _iceCap2.default.MODE_WRITE); + writeFile('index.html', ice.html); + } + + ice.attr('rootContainer', 'class', ' manual-index', _iceCap2.default.MODE_REMOVE); + } + + for (const manual of manuals) { + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); + const baseUrl = this._getBaseUrl(fileName); + ice.load('content', this._buildManual(manual), _iceCap2.default.MODE_WRITE); + ice.load('nav', this._buildManualNav(manuals), _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + writeFile(fileName, ice.html); + } + + if (manualAsset) { + copyDir(manualAsset.name, 'manual/asset'); + } + } + + /** + * this is + * @param {manual[]} manuals + * @param {function(filePath:string, content:string)} writeFile + * @returns {boolean} + * @private + */ + _writeBadge(manuals, writeFile) { + const specialFileNamePatterns = ['(overview.*)', '(design.*)', '(installation.*)|(install.*)', '(usage.*)', '(configuration.*)|(config.*)', '(example.*)', '(faq.*)', '(changelog.*)']; + + let count = 0; + for (const pattern of specialFileNamePatterns) { + const regexp = new RegExp(pattern, 'i'); + for (const manual of manuals) { + const fileName = _path2.default.parse(manual.name).name; + if (fileName.match(regexp)) { + count++; + break; + } + } + } + + if (count !== specialFileNamePatterns.length) return false; + + let badge = this._readTemplate('image/manual-badge.svg'); + badge = badge.replace(/@value@/g, 'perfect'); + badge = badge.replace(/@color@/g, '#4fc921'); + writeFile('manual-badge.svg', badge); + + return true; + } + + /** + * build manual navigation. + * @param {Manual[]} manuals - target manuals. + * @return {IceCap} built navigation + * @private + */ + _buildManualNav(manuals) { + const ice = new _iceCap2.default(this._readTemplate('manualIndex.html')); + + ice.loop('manual', manuals, (i, manual, ice) => { + const toc = []; + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); + const html = (0, _util.markdown)(manual.content); + const $root = _cheerio2.default.load(html).root(); + const h1Count = $root.find('h1').length; + + $root.find('h1,h2,h3,h4,h5').each((i, el) => { + const $el = (0, _cheerio2.default)(el); + const label = $el.text(); + const indent = `indent-${el.tagName.toLowerCase()}`; + + let link = `${fileName}#${$el.attr('id')}`; + if (el.tagName.toLowerCase() === 'h1' && h1Count === 1) link = fileName; + + toc.push({ label, link, indent }); + }); + + ice.loop('manualNav', toc, (i, tocItem, ice) => { + ice.attr('manualNav', 'class', tocItem.indent); + ice.attr('manualNav', 'data-link', tocItem.link.split('#')[0]); + ice.text('link', tocItem.label); + ice.attr('link', 'href', tocItem.link); + }); + }); + + return ice; + } + + /** + * build manual. + * @param {Object} manual - target manual. + * @return {IceCap} built manual. + * @private + */ + _buildManual(manual) { + const html = (0, _util.markdown)(manual.content); + const ice = new _iceCap2.default(this._readTemplate('manual.html')); + ice.load('content', html); + + // convert relative src to base url relative src. + const $root = _cheerio2.default.load(ice.html).root(); + $root.find('img').each((i, el) => { + const $el = (0, _cheerio2.default)(el); + const src = $el.attr('src'); + if (!src) return; + if (src.match(/^http[s]?:/)) return; + if (src.charAt(0) === '/') return; + $el.attr('src', `./manual/${src}`); + }); + $root.find('a').each((i, el) => { + const $el = (0, _cheerio2.default)(el); + const href = $el.attr('href'); + if (!href) return; + if (href.match(/^http[s]?:/)) return; + if (href.charAt(0) === '/') return; + if (href.charAt(0) === '#') return; + $el.attr('href', `./manual/${href}`); + }); + + return $root.html(); + } + + /** + * built manual card style index. + * @param {Object[]} manuals - target manual. + * @return {IceCap} built index. + * @private + */ + _buildManualCardIndex(manuals, manualIndex, badgeFlag) { + const cards = []; + for (const manual of manuals) { + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); + const html = this._buildManual(manual); + const $root = _cheerio2.default.load(html).root(); + const h1Count = $root.find('h1').length; + + $root.find('h1').each((i, el) => { + const $el = (0, _cheerio2.default)(el); + const label = $el.text(); + const link = h1Count === 1 ? fileName : `${fileName}#${$el.attr('id')}`; + let card = `

    ${label}

    `; + const nextAll = $el.nextAll(); + + for (let i = 0; i < nextAll.length; i++) { + const next = nextAll.get(i); + const tagName = next.tagName.toLowerCase(); + if (tagName === 'h1') return; + const $next = (0, _cheerio2.default)(next); + card += `<${tagName}>${$next.html()}`; + } + + cards.push({ label, link, card }); + }); + } + + const ice = new _iceCap2.default(this._readTemplate('manualCardIndex.html')); + ice.loop('cards', cards, (i, card, ice) => { + ice.attr('link', 'href', card.link); + ice.load('card', card.card); + }); + + if (manualIndex && manualIndex.content) { + const userIndex = (0, _util.markdown)(manualIndex.content); + ice.load('manualUserIndex', userIndex); + } else { + ice.drop('manualUserIndex', true); + } + + // fixme? + ice.drop('manualBadge', !manualIndex.coverage || !badgeFlag); + + return ice; + } + + /** + * get manual file name. + * @param {string} filePath - target manual markdown file path. + * @returns {string} file name. + * @private + */ + _getManualOutputFileName(filePath, destPrefix) { + const fileName = _path2.default.parse(filePath).name; + const prefixedPath = destPrefix ? _path2.default.join(destPrefix, fileName) : fileName; + return `manual/${prefixedPath}.html`; + } +} +exports.default = ManualDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/SearchIndexBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/SearchIndexBuilder.js new file mode 100644 index 0000000..8e57cce --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/SearchIndexBuilder.js @@ -0,0 +1,85 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Search index of identifier builder class. + */ +class SearchIndexBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const searchIndex = []; + const docs = this._find({}); + + for (const doc of docs) { + if (doc.kind === 'index') continue; + if (doc.kind.indexOf('manual') === 0) continue; + + let indexText; + let url; + let displayText; + + if (doc.importPath) { + displayText = `${doc.name} ${doc.importPath}`; + indexText = `${doc.importPath}~${doc.name}`.toLowerCase(); + url = this._getURL(doc); + } else if (doc.kind === 'test') { + displayText = doc.testFullDescription; + indexText = [...(doc.testTargets || []), ...(doc._custom_test_targets || [])].join(' ').toLowerCase(); + const filePath = doc.longname.split('~')[0]; + const fileDoc = this._find({ kind: 'testFile', name: filePath })[0]; + url = `${this._getURL(fileDoc)}#lineNumber${doc.lineNumber}`; + } else if (doc.kind === 'external') { + displayText = doc.longname; + indexText = displayText.toLowerCase(); + url = doc.externalLink; + } else if (doc.kind === 'file' || doc.kind === 'testFile') { + displayText = doc.name; + indexText = displayText.toLowerCase(); + url = this._getURL(doc); + } else if (doc.kind === 'packageJSON') { + continue; + } else { + displayText = doc.longname; + indexText = displayText.toLowerCase(); + url = this._getURL(doc); + } + + let kind = doc.kind; + /* eslint-disable default-case */ + switch (kind) { + case 'constructor': + kind = 'method'; + break; + case 'get': + case 'set': + kind = 'member'; + break; + } + + searchIndex.push([indexText, url, displayText, kind]); + } + + searchIndex.sort((a, b) => { + if (a[2] === b[2]) { + return 0; + } else if (a[2] < b[2]) { + return -1; + } else { + return 1; + } + }); + + const javascript = `window.esdocSearchIndex = ${JSON.stringify(searchIndex, null, 2)}`; + + writeFile('script/search_index.js', javascript); + } +} +exports.default = SearchIndexBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/SingleDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/SingleDocBuilder.js new file mode 100644 index 0000000..c34b670 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/SingleDocBuilder.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Single output builder class. + * "single" means function, variable, typedef, external, etc... + */ +class SingleDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const ice = this._buildLayoutDoc(); + ice.autoClose = false; + + const kinds = ['function', 'variable', 'typedef']; + for (const kind of kinds) { + const docs = this._find({ kind: kind }); + if (!docs.length) continue; + const fileName = this._getOutputFileName(docs[0]); + const baseUrl = this._getBaseUrl(fileName); + let title = kind.replace(/^(\w)/, c => c.toUpperCase()); + title = this._getTitle(title); + + ice.load('content', this._buildSingleDoc(kind), _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile(fileName, ice.html); + } + } + + /** + * build single output. + * @param {string} kind - target kind property. + * @returns {string} html of single output + * @private + */ + _buildSingleDoc(kind) { + const title = kind.replace(/^(\w)/, c => c.toUpperCase()); + const ice = new _iceCap2.default(this._readTemplate('single.html')); + ice.text('title', title); + ice.load('summaries', this._buildSummaryHTML(null, kind, 'Summary'), 'append'); + ice.load('details', this._buildDetailHTML(null, kind, '')); + return ice.html; + } +} +exports.default = SingleDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/SourceDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/SourceDocBuilder.js new file mode 100644 index 0000000..1485b73 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/SourceDocBuilder.js @@ -0,0 +1,106 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _fs = require('fs'); + +var _fs2 = _interopRequireDefault(_fs); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _util = require('./util.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Source output html builder class. + */ +class SourceDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir, coverage) { + this._coverage = coverage; + const ice = this._buildLayoutDoc(); + const fileName = 'source.html'; + const baseUrl = this._getBaseUrl(fileName); + const title = this._getTitle('Source'); + + ice.attr('baseUrl', 'href', baseUrl); + ice.load('content', this._buildSourceHTML()); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + + writeFile(fileName, ice.html); + } + + /** + * build source list output html. + * @returns {string} html of source list. + * @private + */ + _buildSourceHTML() { + const ice = new _iceCap2.default(this._readTemplate('source.html')); + const docs = this._find({ kind: 'file' }); + let coverage; + if (this._coverage) coverage = this._coverage.files; + + ice.drop('coverageBadge', !coverage); + ice.attr('files', 'data-use-coverage', !!coverage); + + if (coverage) { + const actual = this._coverage.actualCount; + const expect = this._coverage.expectCount; + const coverageCount = `${actual}/${expect}`; + ice.text('totalCoverageCount', coverageCount); + } + + ice.loop('file', docs, (i, doc, ice) => { + const filePath = doc.name; + const content = doc.content; + const lines = content.split('\n').length - 1; + const stat = _fs2.default.statSync(doc.longname); + const date = (0, _util.dateForUTC)(stat.ctime); + let coverageRatio; + let coverageCount; + let undocumentLines; + if (coverage && coverage[filePath]) { + const actual = coverage[filePath].actualCount; + const expect = coverage[filePath].expectCount; + coverageRatio = `${Math.floor(100 * actual / expect)} %`; + coverageCount = `${actual}/${expect}`; + undocumentLines = coverage[filePath].undocumentLines.sort().join(','); + } else { + coverageRatio = '-'; + } + + const identifierDocs = this._find({ + longname: { left: `${doc.name}~` }, + kind: ['class', 'function', 'variable'] + }); + const identifiers = identifierDocs.map(doc => { + return this._buildDocLinkHTML(doc.longname); + }); + + if (undocumentLines) { + const url = this._getURL(doc); + const link = this._buildFileDocLinkHTML(doc).replace(/href=".*\.html"/, `href="${url}#errorLines=${undocumentLines}"`); + ice.load('filePath', link); + } else { + ice.load('filePath', this._buildFileDocLinkHTML(doc)); + } + ice.text('coverage', coverageRatio); + ice.text('coverageCount', coverageCount); + ice.text('lines', lines); + ice.text('updated', date); + ice.text('size', `${stat.size} byte`); + ice.load('identifier', identifiers.join('\n') || '-'); + }); + return ice.html; + } +} +exports.default = SourceDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/StaticFileBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/StaticFileBuilder.js new file mode 100644 index 0000000..17be8e4 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/StaticFileBuilder.js @@ -0,0 +1,27 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Static file output builder class. + */ +class StaticFileBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + copyDir(_path2.default.resolve(this._template, 'css'), './css'); + copyDir(_path2.default.resolve(this._template, 'script'), './script'); + copyDir(_path2.default.resolve(this._template, 'image'), './image'); + } +} +exports.default = StaticFileBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/TestDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/TestDocBuilder.js new file mode 100644 index 0000000..42d18b7 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/TestDocBuilder.js @@ -0,0 +1,92 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Test file output html builder class. + */ +class TestDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const testDoc = this._find({ kind: 'test' })[0]; + if (!testDoc) return; + + const ice = this._buildLayoutDoc(); + const fileName = this._getOutputFileName(testDoc); + const baseUrl = this._getBaseUrl(fileName); + const title = this._getTitle('Test'); + + ice.load('content', this._buildTestDocHTML()); + ice.attr('baseUrl', 'href', baseUrl); + ice.text('title', title); + writeFile(fileName, ice.html); + } + + /** + * build whole test file output html. + * @returns {string} html of whole test file. + * @private + */ + _buildTestDocHTML() { + const ice = new _iceCap2.default(this._readTemplate('test.html')); + const testDocHTML = this._buildTestInterfaceDocHTML(); + ice.load('tests', testDocHTML); + return ice.html; + } + + /** + * build test describe list html. + * @param {number} [depth=0] - test depth. + * @param {string} [memberof] - target test. + * @returns {string} html of describe list. + * @private + */ + _buildTestInterfaceDocHTML(depth = 0, memberof = null) { + const cond = { kind: 'test', testDepth: depth }; + if (memberof) cond.memberof = memberof; + const docs = this._orderedFind('testId asec', cond); + + const resultHTMLs = []; + for (const doc of docs) { + const childHTML = this._buildTestInterfaceDocHTML(depth + 1, doc.longname); + + const ice = new _iceCap2.default(this._readTemplate('testInterface.html')); + const padding = 10 * (depth + 1); + ice.attr('testInterface', 'data-test-depth', depth); + ice.into('testInterface', doc, (doc, ice) => { + // description + const descriptionHTML = this._buildFileDocLinkHTML(doc, doc.description); + + // identifier + let testTargetsHTML = []; + for (const testTarget of doc._custom_test_targets || []) { + testTargetsHTML.push(this._buildDocLinkHTML(testTarget[0], testTarget[1])); + } + testTargetsHTML = testTargetsHTML.join('\n') || '-'; + + // apply + ice.drop('testInterfaceToggle', !childHTML); + ice.load('testDescription', descriptionHTML); + ice.attr('testDescription', 'style', `padding-left: ${padding}px`); + ice.load('testTarget', testTargetsHTML); + }); + + resultHTMLs.push(ice.html); + if (childHTML) resultHTMLs.push(childHTML); + } + + return resultHTMLs.join('\n'); + } +} +exports.default = TestDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/TestFileDocBuilder.js b/esdoc-publish-html-plugin/out/src/Builder/TestFileDocBuilder.js new file mode 100644 index 0000000..82caac3 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/TestFileDocBuilder.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./DocBuilder.js'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * File output html builder class. + */ +class TestFileDocBuilder extends _DocBuilder2.default { + exec(writeFile, copyDir) { + const ice = this._buildLayoutDoc(); + + const docs = this._find({ kind: 'testFile' }); + for (const doc of docs) { + const fileName = this._getOutputFileName(doc); + const baseUrl = this._getBaseUrl(fileName); + const title = this._getTitle(doc); + ice.load('content', this._buildFileDoc(doc), _iceCap2.default.MODE_WRITE); + ice.attr('baseUrl', 'href', baseUrl, _iceCap2.default.MODE_WRITE); + ice.text('title', title, _iceCap2.default.MODE_WRITE); + writeFile(fileName, ice.html); + } + } + + /** + * build file output html. + * @param {DocObject} doc - target file doc object. + * @returns {string} html of file output. + * @private + */ + _buildFileDoc(doc) { + const ice = new _iceCap2.default(this._readTemplate('file.html')); + ice.text('title', doc.name); + ice.text('content', doc.content); + ice.drop('emptySourceCode', !!doc.content); + return ice.html; + } +} +exports.default = TestFileDocBuilder; \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/class.html b/esdoc-publish-html-plugin/out/src/Builder/template/class.html new file mode 100644 index 0000000..9f4d80e --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/class.html @@ -0,0 +1,66 @@ +
    +
    + + + | variation + | version + | since + | +
    + +
    +

    + +
    + You can directly use an instance of this class. + +
    + +

    Expression Extends:

    +

    Mixin Extends:

    +

    Extends:

    +

    Direct Subclass:

    +

    Indirect Subclass:

    +

    Implements:

    +

    Indirect Implements:

    +

    Direct Implemented:

    +

    Indirect Implemented:

    + +
    +
    +
    +

    Decorators:

    + +

    See:

    + +
    +

    Example:

    +
    +
    +
    +
    +
    + +
    +

    Test:

    +
      +
    • +
    +
    + +

    TODO:

    +
    + +

    Static Member Summary

    +

    Static Method Summary

    +

    Constructor Summary

    +

    Member Summary

    +

    Method Summary

    + +

    Inherited Summary

    + +
    +
    +
    +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/github.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/github.css new file mode 100644 index 0000000..db9ca23 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/github.css @@ -0,0 +1,83 @@ +/* github markdown */ +.github-markdown { + font-size: 16px; +} + +.github-markdown h1, +.github-markdown h2, +.github-markdown h3, +.github-markdown h4, +.github-markdown h5 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + padding: 0; +} + +.github-markdown h1:nth-of-type(1) { + margin-top: 0; +} + +.github-markdown h1 { + font-size: 2em; + padding-bottom: 0.3em; +} + +.github-markdown h2 { + font-size: 1.75em; + padding-bottom: 0.3em; +} + +.github-markdown h3 { + font-size: 1.5em; +} + +.github-markdown h4 { + font-size: 1.25em; +} + +.github-markdown h5 { + font-size: 1em; +} + +.github-markdown ul, .github-markdown ol { + padding-left: 2em; +} + +.github-markdown pre > code { + font-size: 0.85em; +} + +.github-markdown table { + margin-bottom: 1em; + border-collapse: collapse; + border-spacing: 0; +} + +.github-markdown table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +.github-markdown table th, +.github-markdown table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +.github-markdown table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.github-markdown hr { + border-right: 0; + border-bottom: 1px solid #e5e5e5; + border-left: 0; + border-top: 0; +} + +/** badge(.svg) does not have border */ +.github-markdown img:not([src*=".svg"]) { + max-width: 100%; + box-shadow: 1px 1px 1px rgba(0,0,0,0.5); +} diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/identifiers.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/identifiers.css new file mode 100644 index 0000000..52c8461 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/identifiers.css @@ -0,0 +1,37 @@ +.identifiers-wrap { + display: flex; + align-items: flex-start; +} + +.identifier-dir-tree { + background: #fff; + border: solid 1px #ddd; + border-radius: 0.25em; + top: 52px; + position: -webkit-sticky; + position: sticky; + max-height: calc(100vh - 155px); + overflow-y: scroll; + min-width: 200px; + margin-left: 1em; +} + +.identifier-dir-tree-header { + padding: 0.5em; + background-color: #fafafa; + border-bottom: solid 1px #ddd; +} + +.identifier-dir-tree-content { + padding: 0 0.5em 0; +} + +.identifier-dir-tree-content > div { + padding-top: 0.25em; + padding-bottom: 0.25em; +} + +.identifier-dir-tree-content a { + color: inherit; +} + diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/manual.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/manual.css new file mode 100644 index 0000000..138a07f --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/manual.css @@ -0,0 +1,134 @@ +.github-markdown .manual-toc { + padding-left: 0; +} + +.manual-index .manual-cards { + display: flex; + flex-wrap: wrap; +} + +.manual-index .manual-card-wrap { + width: 280px; + padding: 10px 20px 10px 0; + box-sizing: border-box; +} + +.manual-index .manual-card-wrap > h1 { + margin: 0; + font-size: 1em; + font-weight: 600; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em 0.1em 0 0; + border: none; +} + +.manual-index .manual-card-wrap > h1 span { + color: #555; +} + +.manual-index .manual-card { + height: 200px; + overflow: hidden; + border: solid 1px rgba(230, 230, 230, 0.84); + border-radius: 0 0 0.1em 0.1em; + padding: 8px; + position: relative; +} + +.manual-index .manual-card > div { + transform: scale(0.4); + transform-origin: 0 0; + width: 250%; +} + +.manual-index .manual-card > a { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(210, 210, 210, 0.1); +} + +.manual-index .manual-card > a:hover { + background: none; +} + +.manual-index .manual-badge { + margin: 0; +} + +.manual-index .manual-user-index { + margin-bottom: 1em; + border-bottom: solid 1px #ddd; +} + +.manual-root .navigation { + padding-left: 4px; + margin-top: 4px; +} + +.navigation .manual-toc-root > div { + padding-left: 0.25em; + padding-right: 0.75em; +} + +.github-markdown .manual-toc-title a { + color: inherit; +} + +.manual-breadcrumb-list { + font-size: 0.8em; + margin-bottom: 1em; +} + +.manual-toc-title a:hover { + color: #039BE5; +} + +.manual-toc li { + margin: 0.75em 0; + list-style-type: none; +} + +.navigation .manual-toc [class^="indent-h"] a { + color: #666; +} + +.navigation .manual-toc .indent-h1 a { + color: #555; + font-weight: 600; + display: block; +} + +.manual-toc .indent-h1 { + display: block; + margin: 0.4em 0 0 0.25em; + padding: 0.2em 0 0.2em 0.5em; + border-radius: 0.1em; +} + +.manual-root .navigation .manual-toc li:not(.indent-h1) { + margin-top: 0.5em; +} + +.manual-toc .indent-h2 { + display: none; + margin-left: 1.5em; +} +.manual-toc .indent-h3 { + display: none; + margin-left: 2.5em; +} +.manual-toc .indent-h4 { + display: none; + margin-left: 3.5em; +} +.manual-toc .indent-h5 { + display: none; + margin-left: 4.5em; +} + +.manual-nav li { + margin: 0.75em 0; +} diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/prettify-tomorrow.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/search.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/search.css new file mode 100644 index 0000000..9940a54 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/search.css @@ -0,0 +1,84 @@ +/* search box */ +.search-box { + position: absolute; + top: 10px; + right: 50px; + padding-right: 8px; + padding-bottom: 10px; + line-height: normal; + font-size: 12px; +} + +.search-box img { + width: 20px; + vertical-align: top; +} + +.search-input { + display: inline; + visibility: hidden; + width: 0; + padding: 2px; + height: 1.5em; + outline: none; + background: transparent; + border: 1px #0af; + border-style: none none solid none; + vertical-align: bottom; +} + +.search-input-edge { + display: none; + width: 1px; + height: 5px; + background-color: #0af; + vertical-align: bottom; +} + +.search-result { + position: absolute; + display: none; + height: 600px; + width: 100%; + padding: 0; + margin-top: 5px; + margin-left: 24px; + background: white; + box-shadow: 1px 1px 4px rgb(0,0,0); + white-space: nowrap; + overflow-y: scroll; +} + +.search-result-import-path { + color: #aaa; + font-size: 12px; +} + +.search-result li { + list-style: none; + padding: 2px 4px; +} + +.search-result li a { + display: block; +} + +.search-result li.selected { + background: #ddd; +} + +.search-result li.search-separator { + background: rgb(37, 138, 175); + color: white; +} + +.search-box.active .search-input { + visibility: visible; + transition: width 0.2s ease-out; + width: 300px; +} + +.search-box.active .search-input-edge { + display: inline-block; +} + diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/source.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/source.css new file mode 100644 index 0000000..3b9c92d --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/source.css @@ -0,0 +1,55 @@ +table.files-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; + text-align: right; +} + +table.files-summary tbody tr:hover { + background: #eee; +} + +table.files-summary td:first-child, +table.files-summary td:nth-of-type(2) { + text-align: left; +} + +table.files-summary[data-use-coverage="false"] td.coverage { + display: none; +} + +table.files-summary thead { + background: #fafafa; +} + +table.files-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.files-summary td.identifiers > span { + display: block; + margin-top: 4px; +} +table.files-summary td.identifiers > span:first-child { + margin-top: 0; +} + +table.files-summary .coverage-count { + font-size: 12px; + color: #aaa; + display: inline-block; + min-width: 40px; +} + +.total-coverage-count { + position: relative; + bottom: 2px; + font-size: 12px; + color: #666; + font-weight: 500; + padding-left: 5px; +} diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/style.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/style.css new file mode 100644 index 0000000..fe3b2d9 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/style.css @@ -0,0 +1,608 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,600,700); +@import url(./manual.css); +@import url(./source.css); +@import url(./test.css); +@import url(./identifiers.css); +@import url(./github.css); +@import url(./search.css); + +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +html +{ + font-family: 'Source Sans Pro', 'Roboto', sans-serif; + overflow: auto; + /*font-size: 14px;*/ + /*color: #4d4e53;*/ + /*color: rgba(0, 0, 0, .68);*/ + color: #555; + background-color: #fff; +} + +a { + /*color: #0095dd;*/ + /*color:rgb(37, 138, 175);*/ + color: #039BE5; +} + +code a:hover { + text-decoration: underline; +} + +ul, ol { + padding-left: 20px; +} + +ul li { + list-style: disc; + margin: 4px 0; +} + +ol li { + margin: 4px 0; +} + +h1 { + margin-bottom: 10px; + font-size: 34px; + font-weight: 300; + border-bottom: solid 1px #ddd; +} + +h2 { + margin-top: 24px; + margin-bottom: 10px; + font-size: 20px; + border-bottom: solid 1px #ddd; + font-weight: 300; +} + +h3 { + position: relative; + font-size: 16px; + margin-bottom: 12px; + padding: 4px; + font-weight: 300; +} + +details { + cursor: pointer; +} + +del { + text-decoration: line-through; +} + +p { + margin-bottom: 15px; + line-height: 1.5; +} + +code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +pre > code { + display: block; +} + +pre.prettyprint, pre > code { + padding: 4px; + margin: 1em 0; + background-color: #f5f5f5; + border-radius: 3px; +} + +pre.prettyprint > code { + margin: 0; +} + +p > code, +li > code { + padding: 0.2em 0.5em; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +.code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 13px; +} + +.import-path pre.prettyprint, +.import-path pre.prettyprint code { + margin: 0; + padding: 0; + border: none; + background: white; +} + +.layout-container { + /*display: flex;*/ + /*flex-direction: row;*/ + /*justify-content: flex-start;*/ + /*align-items: stretch;*/ +} + +.layout-container > header { + display: flex; + height: 40px; + line-height: 40px; + font-size: 16px; + padding: 0 10px; + margin: 0; + position: fixed; + width: 100%; + z-index: 1; + background-color: #fafafa; + top: 0; + border-bottom: solid 1px #ddd; +} +.layout-container > header > a{ + margin: 0 5px; + color: #444; +} + +.layout-container > header > a.repo-url-github { + font-size: 0; + display: inline-block; + width: 20px; + height: 38px; + background: url("../image/github.png") no-repeat center; + background-size: 20px; + vertical-align: top; +} + +.navigation { + position: fixed; + top: 0; + left: 0; + box-sizing: border-box; + width: 250px; + height: 100%; + padding-top: 40px; + padding-left: 15px; + padding-bottom: 2em; + margin-top:1em; + overflow-x: scroll; + box-shadow: rgba(255, 255, 255, 1) -1px 0 0 inset; + border-right: 1px solid #ddd; +} + +.navigation ul { + padding: 0; +} + +.navigation li { + list-style: none; + margin: 4px 0; + white-space: nowrap; +} + +.navigation li a { + color: #666; +} + +.navigation .nav-dir-path { + display: block; + margin-top: 0.7em; + margin-bottom: 0.25em; + font-weight: 600; +} + +.kind-class, +.kind-interface, +.kind-function, +.kind-typedef, +.kind-variable, +.kind-external { + margin-left: 0.75em; + width: 1.2em; + height: 1.2em; + display: inline-block; + text-align: center; + border-radius: 0.2em; + margin-right: 0.2em; + font-weight: bold; + line-height: 1.2em; +} + +.kind-class { + color: #009800; + background-color: #bfe5bf; +} + +.kind-interface { + color: #fbca04; + background-color: #fef2c0; +} + +.kind-function { + color: #6b0090; + background-color: #d6bdde; +} + +.kind-variable { + color: #eb6420; + background-color: #fad8c7; +} + +.kind-typedef { + color: #db001e; + background-color: #edbec3; +} + +.kind-external { + color: #0738c3; + background-color: #bbcbea; +} + +.summary span[class^="kind-"] { + margin-left: 0; +} + +h1 .version, +h1 .url a { + font-size: 14px; + color: #aaa; +} + +.content { + margin-top: 40px; + margin-left: 250px; + padding: 10px 50px 10px 20px; +} + +.header-notice { + font-size: 14px; + color: #aaa; + margin: 0; +} + +.expression-extends .prettyprint { + margin-left: 10px; + background: white; +} + +.extends-chain { + border-bottom: 1px solid#ddd; + padding-bottom: 10px; + margin-bottom: 10px; +} + +.extends-chain span:nth-of-type(1) { + padding-left: 10px; +} + +.extends-chain > div { + margin: 5px 0; +} + +.description table { + font-size: 14px; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +.description thead { + background: #999; + color: white; +} + +.description table td, +.description table th { + border: solid 1px #ddd; + padding: 4px; + font-weight: normal; +} + +.flat-list ul { + padding-left: 0; +} + +.flat-list li { + display: inline; + list-style: none; +} + +table.summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.summary thead { + background: #fafafa; +} + +table.summary td { + border: solid 1px #ddd; + padding: 4px 10px; +} + +table.summary tbody td:nth-child(1) { + text-align: right; + white-space: nowrap; + min-width: 64px; + vertical-align: top; +} + +table.summary tbody td:nth-child(2) { + width: 100%; + border-right: none; +} + +table.summary tbody td:nth-child(3) { + white-space: nowrap; + border-left: none; + vertical-align: top; +} + +table.summary td > div:nth-of-type(2) { + padding-top: 4px; + padding-left: 15px; +} + +table.summary td p { + margin-bottom: 0; +} + +.inherited-summary thead td { + padding-left: 2px; +} + +.inherited-summary thead a { + color: white; +} + +.inherited-summary .summary tbody { + display: none; +} + +.inherited-summary .summary .toggle { + padding: 0 4px; + font-size: 12px; + cursor: pointer; +} +.inherited-summary .summary .toggle.closed:before { + content: "▶"; +} +.inherited-summary .summary .toggle.opened:before { + content: "▼"; +} + +.member, .method { + margin-bottom: 24px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #eee; + color: #aaa; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.content .detail > * { + margin: 15px 0; +} + +.content .detail > h3 { + color: black; + background-color: #f0f0f0; +} + +.content .detail > div { + margin-left: 10px; +} + +.content .detail > .import-path { + margin-top: -8px; +} + +.content .detail + .detail { + margin-top: 30px; +} + +.content .detail .throw td:first-child { + padding-right: 10px; +} + +.content .detail h4 + :not(pre) { + padding-left: 0; + margin-left: 10px; +} + +.content .detail h4 + ul li { + list-style: none; +} + +.return-param * { + display: inline; +} + +.argument-params { + margin-bottom: 20px; +} + +.return-type { + padding-right: 10px; + font-weight: normal; +} + +.return-desc { + margin-left: 10px; + margin-top: 4px; +} + +.return-desc p { + margin: 0; +} + +.deprecated, .experimental, .instance-docs { + border-left: solid 5px orange; + padding-left: 4px; + margin: 4px 0; +} + +tr.listen p, +tr.throw p, +tr.emit p{ + margin-bottom: 10px; +} + +.version, .since { + color: #aaa; +} + +h3 .right-info { + position: absolute; + right: 4px; + font-size: 14px; +} + +.version + .since:before { + content: '| '; +} + +.see { + margin-top: 10px; +} + +.see h4 { + margin: 4px 0; +} + +.content .detail h4 + .example-doc { + margin: 6px 0; +} + +.example-caption { + position: relative; + bottom: -1px; + display: inline-block; + padding: 4px; + font-style: italic; + background-color: #f5f5f5; + font-weight: bold; + border-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.example-caption + pre.source-code { + margin-top: 0; + border-top-left-radius: 0; +} + +footer, .file-footer { + text-align: right; + font-style: italic; + font-weight: 100; + font-size: 13px; + margin-right: 50px; + margin-left: 270px; + border-top: 1px solid #ddd; + padding-top: 30px; + margin-top: 20px; + padding-bottom: 10px; +} + +footer img { + width: 24px; + vertical-align: middle; + padding-left: 4px; + position: relative; + top: -3px; + opacity: 0.6; +} + +pre.source-code { + padding: 4px; +} + +pre.raw-source-code > code { + padding: 0; + margin: 0; + font-size: 12px; + background: #fff; + border: solid 1px #ddd; + line-height: 1.5; +} + +pre.raw-source-code > code > ol { + counter-reset:number; + list-style:none; + margin:0; + padding:0; + overflow: hidden; +} + +pre.raw-source-code > code > ol li:before { + counter-increment: number; + content: counter(number); + display: inline-block; + min-width: 3em; + color: #aaa; + text-align: right; + padding-right: 1em; +} + +pre.source-code.line-number { + padding: 0; +} + +pre.source-code ol { + background: #eee; + padding-left: 40px; +} + +pre.source-code li { + background: white; + padding-left: 4px; + list-style: decimal; + margin: 0; +} + +pre.source-code.line-number li.active { + background: rgb(255, 255, 150) !important; +} + +pre.source-code.line-number li.error-line { + background: #ffb8bf; +} + +.inner-link-active { + /*background: rgb(255, 255, 150) !important;*/ + background: #039BE5 !important; + color: #fff !important; + padding-left: 0.1em !important; +} + +.inner-link-active a { + color: inherit; +} diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/css/test.css b/esdoc-publish-html-plugin/out/src/Builder/template/css/test.css new file mode 100644 index 0000000..8ce1266 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/css/test.css @@ -0,0 +1,58 @@ +table.test-summary thead { + background: #fafafa; +} + +table.test-summary thead .test-description { + width: 50%; +} + +table.test-summary { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.test-summary thead .test-count { + width: 3em; +} + +table.test-summary tbody tr:hover { + background-color: #eee; +} + +table.test-summary td { + border: solid 1px #ddd; + padding: 4px 10px; + vertical-align: top; +} + +table.test-summary td p { + margin: 0; +} + +table.test-summary tr.test-interface .toggle { + display: inline-block; + float: left; + margin-right: 4px; + cursor: pointer; + font-size: 0.8em; + padding-top: 0.25em; +} + +table.test-summary tr.test-interface .toggle.opened:before { + content: '▼'; +} + +table.test-summary tr.test-interface .toggle.closed:before { + content: '▶'; +} + +table.test-summary .test-target > span { + display: block; + margin-top: 4px; +} +table.test-summary .test-target > span:first-child { + margin-top: 0; +} diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/details.html b/esdoc-publish-html-plugin/out/src/Builder/template/details.html new file mode 100644 index 0000000..9faaec7 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/details.html @@ -0,0 +1,95 @@ +

    +
    +

    + + + + + + + + + version + since + + +

    + +
    +
    +
    +
    + +

    Override:

    + +
    + +
    +

    Return:

    + + + + + + + +
    +
    +
    + +
    +

    Emit:

    + + + + + + + +

    +
    + +
    +

    Listen:

    + + + + + + + +

    +
    + +
    +

    Throw:

    + + + + + + + +

    +
    + +

    Decorators:

    + +
    +

    Example:

    +
    +
    +
    +
    +
    + +
    +

    Test:

    +
      +
    • +
    +
    + +

    See:

    +

    TODO:

    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/file.html b/esdoc-publish-html-plugin/out/src/Builder/template/file.html new file mode 100644 index 0000000..7764123 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/file.html @@ -0,0 +1,3 @@ +

    +
    +

    Sorry, this documentation does not provide source code.

    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/identifiers.html b/esdoc-publish-html-plugin/out/src/Builder/template/identifiers.html new file mode 100644 index 0000000..11c5239 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/identifiers.html @@ -0,0 +1,15 @@ +

    References

    + +
    +
    +
    +

    +
    +
    +
    + +
    +
    Directories
    +
    +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/image/badge.svg b/esdoc-publish-html-plugin/out/src/Builder/template/image/badge.svg new file mode 100644 index 0000000..b18426b --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/image/badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + document + document + @ratio@ + @ratio@ + + diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini-black.png b/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini-black.png new file mode 100644 index 0000000..5d5f9a2 Binary files /dev/null and b/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini-black.png differ diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini.png b/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini.png new file mode 100644 index 0000000..76ba5b7 Binary files /dev/null and b/esdoc-publish-html-plugin/out/src/Builder/template/image/esdoc-logo-mini.png differ diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/image/manual-badge.svg b/esdoc-publish-html-plugin/out/src/Builder/template/image/manual-badge.svg new file mode 100644 index 0000000..4029606 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/image/manual-badge.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + manual + manual + @value@ + @value@ + + diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/image/search.png b/esdoc-publish-html-plugin/out/src/Builder/template/image/search.png new file mode 100644 index 0000000..f5d84b6 Binary files /dev/null and b/esdoc-publish-html-plugin/out/src/Builder/template/image/search.png differ diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/index.html b/esdoc-publish-html-plugin/out/src/Builder/template/index.html new file mode 100644 index 0000000..16cdc0b --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/index.html @@ -0,0 +1 @@ +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/layout.html b/esdoc-publish-html-plugin/out/src/Builder/template/layout.html new file mode 100644 index 0000000..e24336c --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/layout.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + +
    + Home + Manual + Reference + Source + Test + +
    + + + +
    + + + + + + + + + + + + diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/manual.html b/esdoc-publish-html-plugin/out/src/Builder/template/manual.html new file mode 100644 index 0000000..b8a732c --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/manual.html @@ -0,0 +1 @@ +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/manualCardIndex.html b/esdoc-publish-html-plugin/out/src/Builder/template/manualCardIndex.html new file mode 100644 index 0000000..2960997 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/manualCardIndex.html @@ -0,0 +1,14 @@ +
    +
    + +

    + +
    +
    +
    +
    + +
    +
    +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/manualIndex.html b/esdoc-publish-html-plugin/out/src/Builder/template/manualIndex.html new file mode 100644 index 0000000..7536583 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/manualIndex.html @@ -0,0 +1,7 @@ +
    +
    +
      +
    • +
    +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/nav.html b/esdoc-publish-html-plugin/out/src/Builder/template/nav.html new file mode 100644 index 0000000..8c685e6 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/nav.html @@ -0,0 +1,5 @@ +
    +
      +
    • +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/properties.html b/esdoc-publish-html-plugin/out/src/Builder/template/properties.html new file mode 100644 index 0000000..147db1d --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/properties.html @@ -0,0 +1,16 @@ +
    +

    + + + + + + + + + + + + +
    NameTypeAttributeDescription
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/inherited-summary.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/inherited-summary.js new file mode 100644 index 0000000..0a35b6d --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/inherited-summary.js @@ -0,0 +1,28 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TABLE' && parent.classList.contains('summary')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var tbody = parent.querySelector('tbody'); + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + tbody.style.display = 'none'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + tbody.style.display = 'block'; + } + } + + var buttons = document.querySelectorAll('.inherited-summary thead .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/inner-link.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/inner-link.js new file mode 100644 index 0000000..ad1c942 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/inner-link.js @@ -0,0 +1,32 @@ +// inner link(#foo) can not correctly scroll, because page has fixed header, +// so, I manually scroll. +(function(){ + var matched = location.hash.match(/errorLines=([\d,]+)/); + if (matched) return; + + function adjust() { + window.scrollBy(0, -55); + var el = document.querySelector('.inner-link-active'); + if (el) el.classList.remove('inner-link-active'); + + // ``[ ] . ' " @`` are not valid in DOM id. so must escape these. + var id = location.hash.replace(/([\[\].'"@$])/g, '\\$1'); + var el = document.querySelector(id); + if (el) el.classList.add('inner-link-active'); + } + + window.addEventListener('hashchange', adjust); + + if (location.hash) { + setTimeout(adjust, 0); + } +})(); + +(function(){ + var els = document.querySelectorAll('[href^="#"]'); + var href = location.href.replace(/#.*$/, ''); // remove existed hash + for (var i = 0; i < els.length; i++) { + var el = els[i]; + el.href = href + el.getAttribute('href'); // because el.href is absolute path + } +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/manual.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/manual.js new file mode 100644 index 0000000..de0bfe2 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/manual.js @@ -0,0 +1,12 @@ +(function(){ + var matched = location.pathname.match(/\/(manual\/.*\.html)$/); + if (!matched) return; + + var currentName = matched[1]; + var cssClass = '.navigation .manual-toc li[data-link="' + currentName + '"]'; + var styleText = cssClass + '{ display: block; }\n'; + styleText += cssClass + '.indent-h1 a { color: #039BE5 }'; + var style = document.createElement('style'); + style.textContent = styleText; + document.querySelector('head').appendChild(style); +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/patch-for-local.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/patch-for-local.js new file mode 100644 index 0000000..5756d13 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/patch-for-local.js @@ -0,0 +1,8 @@ +(function(){ + if (location.protocol === 'file:') { + var elms = document.querySelectorAll('a[href="./"]'); + for (var i = 0; i < elms.length; i++) { + elms[i].href = './index.html'; + } + } +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/Apache-License-2.0.txt b/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/prettify.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/prettify.js new file mode 100755 index 0000000..3b74b5b --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/prettify/prettify.js @@ -0,0 +1,46 @@ +!function(){/* + + Copyright (C) 2006 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e= +[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;ak||122k||90k||122h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(f(h[1])));c.push("]");return c.join("")}function v(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],g=0,h=0;g/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+ +("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+v+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+v+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i, +null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if("br"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&& +a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\s)nocode(?:\s|$)/,n=/\r\n?|\n/,l=a.ownerDocument,m=l.createElement("li");a.firstChild;)m.appendChild(a.firstChild); +for(var c=[m],p=0;p=+v[1],d=/\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"], +F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], +O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"], +F=[F,"abstract,async,await,constructor,debugger,enum,eval,export,function,get,implements,instanceof,interface,let,null,set,undefined,var,with,yield,Infinity,NaN"],Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"], +S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));t(G([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null, +"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);t(G([],[["atv",/^[\s\S]+/]]),["uq.val"]);t(y({keywords:H, +hashComments:!0,cStyleComments:!0,types:S}),"c cc cpp cxx cyc m".split(" "));t(y({keywords:"null,true,false"}),["json"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:S}),["cs"]);t(y({keywords:O,cStyleComments:!0}),["java"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);t(y({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", +hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),["javascript","js","ts","typescript"]);t(y({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0, +regexLiterals:!0}),["coffee"]);t(G([],[["str",/^[\s\S]+/]]),["regex"]);var Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="
    "+a+"
    "; +b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p' + pair[2] + ''); + } + } + + var innerHTML = ''; + for (kind in html) { + var list = html[kind]; + if (!list.length) continue; + innerHTML += '
  • ' + kind + '
  • \n' + list.join('\n'); + } + result.innerHTML = innerHTML; + if (innerHTML) result.style.display = 'block'; + selectedIndex = -1; + }); + + // down, up and enter key are pressed, select search result. + input.addEventListener('keydown', function(ev){ + if (ev.keyCode === 40) { + // arrow down + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex + 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex + 2]; + selectedIndex++; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex++; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 38) { + // arrow up + var current = result.children[selectedIndex]; + var selected = result.children[selectedIndex - 1]; + if (selected && selected.classList.contains('search-separator')) { + var selected = result.children[selectedIndex - 2]; + selectedIndex--; + } + + if (selected) { + if (current) current.classList.remove('selected'); + selectedIndex--; + selected.classList.add('selected'); + } + } else if (ev.keyCode === 13) { + // enter + var current = result.children[selectedIndex]; + if (current) { + var link = current.querySelector('a'); + if (link) location.href = link.href; + } + } else { + return; + } + + ev.preventDefault(); + }); + + // select search result when search result is mouse over. + result.addEventListener('mousemove', function(ev){ + var current = result.children[selectedIndex]; + if (current) current.classList.remove('selected'); + + var li = ev.target; + while (li) { + if (li.nodeName === 'LI') break; + li = li.parentElement; + } + + if (li) { + selectedIndex = Array.prototype.indexOf.call(result.children, li); + li.classList.add('selected'); + } + }); + + // clear search result when body is clicked. + document.body.addEventListener('click', function(ev){ + selectedIndex = -1; + result.style.display = 'none'; + result.innerHTML = ''; + }); + +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/script/test-summary.js b/esdoc-publish-html-plugin/out/src/Builder/template/script/test-summary.js new file mode 100644 index 0000000..2abad3b --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/script/test-summary.js @@ -0,0 +1,54 @@ +(function(){ + function toggle(ev) { + var button = ev.target; + var parent = ev.target.parentElement; + while(parent) { + if (parent.tagName === 'TR' && parent.classList.contains('test-interface')) break; + parent = parent.parentElement; + } + + if (!parent) return; + + var direction; + if (button.classList.contains('opened')) { + button.classList.remove('opened'); + button.classList.add('closed'); + direction = 'closed'; + } else { + button.classList.remove('closed'); + button.classList.add('opened'); + direction = 'opened'; + } + + var targetDepth = parseInt(parent.dataset.testDepth, 10) + 1; + var nextElement = parent.nextElementSibling; + while (nextElement) { + var depth = parseInt(nextElement.dataset.testDepth, 10); + if (depth >= targetDepth) { + if (direction === 'opened') { + if (depth === targetDepth) nextElement.style.display = ''; + } else if (direction === 'closed') { + nextElement.style.display = 'none'; + var innerButton = nextElement.querySelector('.toggle'); + if (innerButton && innerButton.classList.contains('opened')) { + innerButton.classList.remove('opened'); + innerButton.classList.add('closed'); + } + } + } else { + break; + } + nextElement = nextElement.nextElementSibling; + } + } + + var buttons = document.querySelectorAll('.test-summary tr.test-interface .toggle'); + for (var i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', toggle); + } + + var topDescribes = document.querySelectorAll('.test-summary tr[data-test-depth="0"]'); + for (var i = 0; i < topDescribes.length; i++) { + topDescribes[i].style.display = ''; + } +})(); diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/single.html b/esdoc-publish-html-plugin/out/src/Builder/template/single.html new file mode 100644 index 0000000..8395a2a --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/single.html @@ -0,0 +1,3 @@ +

    +
    +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/source.html b/esdoc-publish-html-plugin/out/src/Builder/template/source.html new file mode 100644 index 0000000..4b52a07 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/source.html @@ -0,0 +1,24 @@ +

    Source

    + + + + + + + + + + + + + + + + + + + + + + +
    FileIdentifierDocumentSizeLinesUpdated
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/summary.html b/esdoc-publish-html-plugin/out/src/Builder/template/summary.html new file mode 100644 index 0000000..608791d --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/summary.html @@ -0,0 +1,33 @@ + + + + + + + + + +
    + + + + + + +
    +

    + + + + +

    +
    +
    +
    +
    +
    +
    +
    + version + since +
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/test.html b/esdoc-publish-html-plugin/out/src/Builder/template/test.html new file mode 100644 index 0000000..5c2f448 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/test.html @@ -0,0 +1,11 @@ +

    Test

    + + + + + + + + + +
    DescriptionIdentifier
    diff --git a/esdoc-publish-html-plugin/out/src/Builder/template/testInterface.html b/esdoc-publish-html-plugin/out/src/Builder/template/testInterface.html new file mode 100644 index 0000000..8dcd123 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/template/testInterface.html @@ -0,0 +1,4 @@ + + + + diff --git a/esdoc-publish-html-plugin/out/src/Builder/util.js b/esdoc-publish-html-plugin/out/src/Builder/util.js new file mode 100644 index 0000000..ddceafa --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Builder/util.js @@ -0,0 +1,171 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shorten = shorten; +exports.markdown = markdown; +exports.dateForUTC = dateForUTC; +exports.parseExample = parseExample; +exports.escapeURLHash = escapeURLHash; + +var _marked = require('marked'); + +var _marked2 = _interopRequireDefault(_marked); + +var _escapeHtml = require('escape-html'); + +var _escapeHtml2 = _interopRequireDefault(_escapeHtml); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * shorten description. + * e.g. ``this is JavaScript. this is Java.`` => ``this is JavaScript.``. + * + * @param {DocObject} doc - target doc object. + * @param {boolean} [asMarkdown=false] - is true, test as markdown and convert to html. + * @returns {string} shorten description. + * @todo shorten before process markdown. + */ +function shorten(doc, asMarkdown = false) { + if (!doc) return ''; + + if (doc.summary) return doc.summary; + + const desc = doc.descriptionRaw; + if (!desc) return ''; + + let len = desc.length; + let inSQuote = false; + let inWQuote = false; + let inCode = false; + for (let i = 0; i < desc.length; i++) { + const char1 = desc.charAt(i); + const char2 = desc.charAt(i + 1); + const char4 = desc.substr(i, 6); + const char5 = desc.substr(i, 7); + if (char1 === '\'') inSQuote = !inSQuote;else if (char1 === '"') inWQuote = !inWQuote;else if (char4 === '') inCode = true;else if (char5 === '') inCode = false; + + if (inSQuote || inCode || inWQuote) continue; + + if (char1 === '.') { + if (char2 === ' ' || char2 === '\n' || char2 === '<') { + len = i + 1; + break; + } + } else if (char1 === '\n' && char2 === '\n') { + len = i + 1; + break; + } + } + + let result = desc.substr(0, len); + if (asMarkdown) { + result = markdown(result); + } + + return result; +} + +/** + * convert markdown text to html. + * @param {string} text - markdown text. + * @param {boolean} [breaks=false] if true, break line. FYI gfm is not breaks. + * @return {string} html. + */ +function markdown(text, breaks = false) { + // original render does not support multi-byte anchor + const renderer = new _marked2.default.Renderer(); + renderer.heading = function (text, level) { + const id = escapeURLHash(text); + return `${text}`; + }; + + const availableTags = ['span', 'a', 'p', 'div', 'img', 'h1', 'h2', 'h3', 'h4', 'h5', 'br', 'hr', 'li', 'ul', 'ol', 'code', 'pre', 'details', 'summary', 'kbd']; + const availableAttributes = ['src', 'href', 'title', 'class', 'id', 'name', 'width', 'height', 'target']; + + const compiled = (0, _marked2.default)(text, { + renderer: renderer, + gfm: true, + tables: true, + breaks: breaks, + sanitize: true, + sanitizer: tag => { + if (tag.match(//)) { + return tag; + } + const tagName = tag.match(/^<\/?(\w+)/)[1]; + if (!availableTags.includes(tagName)) { + return (0, _escapeHtml2.default)(tag); + } + + const sanitizedTag = tag.replace(/([\w\-]+)=(["'].*?["'])/g, (_, attr, val) => { + if (!availableAttributes.includes(attr)) return ''; + /* eslint-disable no-script-url */ + if (val.indexOf('javascript:') !== -1) return ''; + return `${attr}=${val}`; + }); + + return sanitizedTag; + }, + highlight: function (code) { + // return `
    ${escape(code)}
    `; + return `${(0, _escapeHtml2.default)(code)}`; + } + }); + + return compiled; +} + +/** + * get UTC date string. + * @param {Date} date - target date object. + * @returns {string} UTC date string(yyyy-mm-dd hh:mm:ss) + */ +function dateForUTC(date) { + function pad(num, len) { + const count = Math.max(0, len - `${num}`.length); + return '0'.repeat(count) + num; + } + + const year = date.getUTCFullYear(); + const month = pad(date.getUTCMonth() + 1, 2); + const day = pad(date.getUTCDay() + 1, 2); + const hours = pad(date.getUTCHours(), 2); + const minutes = pad(date.getUTCMinutes(), 2); + const seconds = pad(date.getUTCSeconds(), 2); + + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds} (UTC)`; +} + +/** + * parse ``@example`` value. + * ``@example`` value can have ```` tag. + * + * @param {string} example - target example value. + * @returns {{body: string, caption: string}} parsed example value. + */ +function parseExample(example) { + let body = example; + let caption = ''; + + /* eslint-disable no-control-regex */ + const regexp = new RegExp('^(.*?)\n'); + const matched = example.match(regexp); + if (matched) { + body = example.replace(regexp, ''); + caption = matched[1].trim(); + } + + return { body, caption }; +} + +/** + * escape URL hash. + * @param {string} hash - URL hash for HTML a tag and id tag + * @returns {string} escaped URL hash + */ +function escapeURLHash(hash) { + return hash.toLowerCase().replace(/[~!@#$%^&*()_+=\[\]\\{}|;':"<>?,.\/ ]/g, '-'); +} \ No newline at end of file diff --git a/esdoc-publish-html-plugin/out/src/Plugin.js b/esdoc-publish-html-plugin/out/src/Plugin.js new file mode 100644 index 0000000..ac11f66 --- /dev/null +++ b/esdoc-publish-html-plugin/out/src/Plugin.js @@ -0,0 +1,109 @@ +'use strict'; + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _taffydb = require('taffydb'); + +var _iceCap = require('ice-cap'); + +var _iceCap2 = _interopRequireDefault(_iceCap); + +var _DocBuilder = require('./Builder/DocBuilder'); + +var _DocBuilder2 = _interopRequireDefault(_DocBuilder); + +var _StaticFileBuilder = require('./Builder/StaticFileBuilder.js'); + +var _StaticFileBuilder2 = _interopRequireDefault(_StaticFileBuilder); + +var _IdentifiersDocBuilder = require('./Builder/IdentifiersDocBuilder.js'); + +var _IdentifiersDocBuilder2 = _interopRequireDefault(_IdentifiersDocBuilder); + +var _IndexDocBuilder = require('./Builder/IndexDocBuilder.js'); + +var _IndexDocBuilder2 = _interopRequireDefault(_IndexDocBuilder); + +var _ClassDocBuilder = require('./Builder/ClassDocBuilder.js'); + +var _ClassDocBuilder2 = _interopRequireDefault(_ClassDocBuilder); + +var _SingleDocBuilder = require('./Builder/SingleDocBuilder.js'); + +var _SingleDocBuilder2 = _interopRequireDefault(_SingleDocBuilder); + +var _FileDocBuilder = require('./Builder/FileDocBuilder.js'); + +var _FileDocBuilder2 = _interopRequireDefault(_FileDocBuilder); + +var _SearchIndexBuilder = require('./Builder/SearchIndexBuilder.js'); + +var _SearchIndexBuilder2 = _interopRequireDefault(_SearchIndexBuilder); + +var _SourceDocBuilder = require('./Builder/SourceDocBuilder.js'); + +var _SourceDocBuilder2 = _interopRequireDefault(_SourceDocBuilder); + +var _TestDocBuilder = require('./Builder/TestDocBuilder.js'); + +var _TestDocBuilder2 = _interopRequireDefault(_TestDocBuilder); + +var _TestFileDocBuilder = require('./Builder/TestFileDocBuilder.js'); + +var _TestFileDocBuilder2 = _interopRequireDefault(_TestFileDocBuilder); + +var _ManualDocBuilder = require('./Builder/ManualDocBuilder.js'); + +var _ManualDocBuilder2 = _interopRequireDefault(_ManualDocBuilder); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +class Plugin { + onHandleDocs(ev) { + this._docs = ev.data.docs; + } + + onPublish(ev) { + this._option = ev.data.option || {}; + this._template = typeof this._option.template === 'string' ? _path2.default.resolve(process.cwd(), this._option.template) : _path2.default.resolve(__dirname, './Builder/template'); + this._exec(this._docs, ev.data.writeFile, ev.data.copyDir, ev.data.readFile); + } + + _exec(tags, writeFile, copyDir, readFile) { + _iceCap2.default.debug = !!this._option.debug; + + const data = (0, _taffydb.taffy)(tags); + + //bad hack: for other plugin uses builder. + _DocBuilder2.default.createDefaultBuilder = () => { + return new _DocBuilder2.default(this._template, data, tags); + }; + + let coverage = null; + try { + coverage = JSON.parse(readFile('coverage.json')); + } catch (e) { + // nothing + } + + new _IdentifiersDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _IndexDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _ClassDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _SingleDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _FileDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _StaticFileBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _SearchIndexBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _SourceDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir, coverage); + new _ManualDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir, readFile); + + const existTest = tags.find(tag => tag.kind.indexOf('test') === 0); + if (existTest) { + new _TestDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + new _TestFileDocBuilder2.default(this._template, data, tags).exec(writeFile, copyDir); + } + } +} + +module.exports = new Plugin(); \ No newline at end of file diff --git a/esdoc-publish-html-plugin/package-lock.json b/esdoc-publish-html-plugin/package-lock.json index ba3efd2..d17f1d4 100644 --- a/esdoc-publish-html-plugin/package-lock.json +++ b/esdoc-publish-html-plugin/package-lock.json @@ -1,6 +1,6 @@ { "name": "esdoc-publish-html-plugin", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -11,736 +11,829 @@ "dev": true }, "abab": { - "version": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", "optional": true }, "acorn": { - "version": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=" }, "acorn-globals": { - "version": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", "optional": true, "requires": { - "acorn": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz" + "acorn": "^2.1.0" } }, "ajv": { - "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "amdefine": { - "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, "ansi-regex": { - "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "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": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "anymatch": { - "version": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", "dev": true, "optional": true, "requires": { - "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + "arrify": "^1.0.0", + "micromatch": "^2.1.5" } }, "arr-diff": { - "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "optional": true, "requires": { - "arr-flatten": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { - "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", "dev": true, "optional": true }, "array-find-index": { - "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, "array-uniq": { - "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, "array-unique": { - "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true, "optional": true }, "arrify": { - "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true, "optional": true }, "asn1": { - "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" }, "async-each": { - "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true, "optional": true }, "asynckit": { - "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { - "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" }, "aws4": { - "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" }, "babel-cli": { - "version": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.11.4.tgz", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.11.4.tgz", "integrity": "sha1-VDWiiuxLgKCpANSTW8LoLwQAeK0=", "dev": true, "requires": { - "babel-core": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz", - "babel-polyfill": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "babel-register": "https://registry.npmjs.org/babel-register/-/babel-register-6.11.6.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "bin-version-check": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "fs-readdir-recursive": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", - "glob": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "log-symbols": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "output-file-sync": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" + "babel-core": "^6.11.4", + "babel-polyfill": "^6.9.0", + "babel-register": "^6.9.0", + "babel-runtime": "^6.9.0", + "bin-version-check": "^2.1.0", + "chalk": "1.1.1", + "chokidar": "^1.0.0", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^0.1.0", + "glob": "^5.0.5", + "lodash": "^4.2.0", + "log-symbols": "^1.0.2", + "output-file-sync": "^1.1.0", + "path-exists": "^1.0.0", + "path-is-absolute": "^1.0.0", + "request": "^2.65.0", + "slash": "^1.0.0", + "source-map": "^0.5.0", + "v8flags": "^2.0.10" } }, "babel-code-frame": { - "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", "dev": true, "requires": { - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" + "chalk": "^1.1.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "babel-core": { - "version": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz", "integrity": "sha1-jEKFZNzh4fQfszfsNPTDsCK1rYM=", "dev": true, "requires": { - "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "babel-generator": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.1.tgz", - "babel-helpers": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-register": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz", - "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.24.1.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", - "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz", - "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "debug": "https://registry.npmjs.org/debug/-/debug-2.6.6.tgz", - "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "private": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + "babel-code-frame": "^6.22.0", + "babel-generator": "^6.24.1", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1", + "babylon": "^6.11.0", + "convert-source-map": "^1.1.0", + "debug": "^2.1.1", + "json5": "^0.5.0", + "lodash": "^4.2.0", + "minimatch": "^3.0.2", + "path-is-absolute": "^1.0.0", + "private": "^0.1.6", + "slash": "^1.0.0", + "source-map": "^0.5.0" }, "dependencies": { "babel-generator": { - "version": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.1.tgz", "integrity": "sha1-5xX0hsWN7SVknYiJRNUqoHxdlJc=", "dev": true, "requires": { - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", - "detect-indent": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "trim-right": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, "babel-register": { - "version": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", "dev": true, "requires": { - "babel-core": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "home-or-tmp": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" + "babel-core": "^6.24.1", + "babel-runtime": "^6.22.0", + "core-js": "^2.4.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.2" } }, "detect-indent": { - "version": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + "repeating": "^2.0.0" } }, "repeating": { - "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + "is-finite": "^1.0.0" } } } }, "babel-generator": { - "version": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.11.4.tgz", "integrity": "sha1-FPaTOrsgxiZm0n47e59bncBxKpo=", "requires": { - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", - "detect-indent": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + "babel-messages": "^6.8.0", + "babel-runtime": "^6.9.0", + "babel-types": "^6.10.2", + "detect-indent": "^3.0.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0" } }, "babel-helpers": { - "version": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-messages": { - "version": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.11.5.tgz", + "version": "6.11.5", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.11.5.tgz", "integrity": "sha1-ICWAwk8oY1nq3mdoW+9uLGQWVYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz" + "babel-plugin-transform-strict-mode": "^6.8.0", + "babel-runtime": "^6.0.0", + "babel-template": "^6.8.0", + "babel-types": "^6.8.0" } }, "babel-plugin-transform-strict-mode": { - "version": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-polyfill": { - "version": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", "dev": true, "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + "babel-runtime": "^6.22.0", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" } }, "babel-register": { - "version": "https://registry.npmjs.org/babel-register/-/babel-register-6.11.6.tgz", + "version": "6.11.6", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.11.6.tgz", "integrity": "sha1-0jX2ECuTUPzmOEBk4MEtaJJoDEY=", "dev": true, "requires": { - "babel-core": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "home-or-tmp": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", - "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz" + "babel-core": "^6.9.0", + "babel-runtime": "^6.11.6", + "core-js": "^2.4.0", + "home-or-tmp": "^1.0.0", + "lodash": "^4.2.0", + "mkdirp": "^0.5.1", + "path-exists": "^1.0.0", + "source-map-support": "^0.2.10" }, "dependencies": { "home-or-tmp": { - "version": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=", "dev": true, "requires": { - "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + "os-tmpdir": "^1.0.1", + "user-home": "^1.1.1" } }, "source-map": { - "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", "dev": true, "requires": { - "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + "amdefine": ">=0.0.4" } }, "source-map-support": { - "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", "dev": true, "requires": { - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz" + "source-map": "0.1.32" } } } }, "babel-runtime": { - "version": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" } }, "babel-template": { - "version": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz", "integrity": "sha1-BK5RTx+Ts6JTfyoPYKWkX7gwgzM=", "dev": true, "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.24.1.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", - "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1", + "babylon": "^6.11.0", + "lodash": "^4.2.0" } }, "babel-traverse": { - "version": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.24.1.tgz", "integrity": "sha1-qzZnP9NW+aCUhlnnszjV/q2zFpU=", "dev": true, "requires": { - "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", - "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz", - "debug": "https://registry.npmjs.org/debug/-/debug-2.6.6.tgz", - "globals": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", - "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + "babel-code-frame": "^6.22.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1", + "babylon": "^6.15.0", + "debug": "^2.2.0", + "globals": "^9.0.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" } }, "babel-types": { - "version": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz", "integrity": "sha1-oTaHncFbNga9oNkMH8dDBML/CXU=", "requires": { - "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + "babel-runtime": "^6.22.0", + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^1.0.1" } }, "babylon": { - "version": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz", + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.1.tgz", "integrity": "sha1-F/FP3fNhtpWYH+Z5OF5PHAHr2G8=", "dev": true }, "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, "bcrypt-pbkdf": { - "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "tweetnacl": "^0.14.3" } }, "bin-version": { - "version": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", "dev": true, "requires": { - "find-versions": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz" + "find-versions": "^1.0.0" } }, "bin-version-check": { - "version": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", "dev": true, "requires": { - "bin-version": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", - "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "semver": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "semver-truncate": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz" + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" } }, "binary-extensions": { - "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", "dev": true, "optional": true }, "boolbase": { - "version": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "boom": { - "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "hoek": "2.x.x" } }, "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { - "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" } }, "braces": { - "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "optional": true, "requires": { - "expand-range": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "preserve": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "buffer-shims": { - "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" }, "builtin-modules": { - "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "camelcase": { - "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, "camelcase-keys": { - "version": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caseless": { - "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", "dev": true, "requires": { - "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "ansi-styles": "^2.1.0", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cheerio": { - "version": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", "requires": { - "css-select": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "htmlparser2": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "lodash.assignin": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "lodash.bind": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "lodash.defaults": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "lodash.filter": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "lodash.flatten": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "lodash.foreach": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "lodash.map": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "lodash.merge": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "lodash.pick": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "lodash.reduce": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "lodash.reject": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "lodash.some": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" } }, "chokidar": { - "version": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "optional": true, "requires": { - "anymatch": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "async-each": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "fsevents": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", - "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "is-binary-path": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "readdirp": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "co": { - "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "color-logger": { - "version": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", "integrity": "sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg=" }, "combined-stream": { - "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "delayed-stream": "~1.0.0" } }, "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { - "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", "dev": true }, "core-js": { - "version": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" }, "core-util-is": { - "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cryptiles": { - "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "boom": "2.x.x" } }, "css-select": { - "version": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "css-what": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "nth-check": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz" + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" } }, "css-what": { - "version": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" }, "cssom": { - "version": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" }, "cssstyle": { - "version": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "optional": true, "requires": { - "cssom": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz" + "cssom": "0.3.x" } }, "currently-unhandled": { - "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + "array-find-index": "^1.0.1" } }, "dashdash": { - "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-2.6.6.tgz", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.6.tgz", "integrity": "sha1-qfpvvpykPPHnn3O3XAGJy7fW21o=", "dev": true, "requires": { - "ms": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz" + "ms": "0.7.3" } }, "decamelize": { - "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "deep-is": { - "version": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "optional": true }, "delayed-stream": { - "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "detect-indent": { - "version": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=", "requires": { - "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "repeating": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz" + "get-stdin": "^4.0.1", + "minimist": "^1.1.0", + "repeating": "^1.1.0" } }, "diff": { - "version": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, "dom-serializer": { - "version": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { - "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" } } }, "domelementtype": { - "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" }, "domhandler": { - "version": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", "requires": { - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + "domelementtype": "1" } }, "domutils": { - "version": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + "dom-serializer": "0", + "domelementtype": "1" } }, "ecc-jsbn": { - "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "jsbn": "~0.1.0" } }, "entities": { - "version": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, "error-ex": { - "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "is-arrayish": "^0.2.1" } }, "escape-html": { - "version": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "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 }, "escodegen": { - "version": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "optional": true, "requires": { - "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { "source-map": { - "version": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "optional": true, "requires": { - "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + "amdefine": ">=0.0.4" } } } @@ -756,11 +849,11 @@ "babylon": "6.18.0", "cheerio": "1.0.0-rc.2", "color-logger": "0.0.6", - "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "escape-html": "1.0.3", "fs-extra": "5.0.0", - "ice-cap": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", + "ice-cap": "0.0.4", "marked": "0.3.19", - "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "minimist": "1.2.0", "taffydb": "2.7.3" }, "dependencies": { @@ -770,9 +863,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-generator": { @@ -781,14 +874,14 @@ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "source-map": "0.5.7", - "trim-right": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" } }, "babel-runtime": { @@ -797,8 +890,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-traverse": { @@ -807,15 +900,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -824,10 +917,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -842,11 +935,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cheerio": { @@ -855,12 +948,12 @@ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "dev": true, "requires": { - "css-select": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "htmlparser2": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "parse5": "3.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, "color-logger": { @@ -884,7 +977,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "fs-extra": { @@ -893,9 +986,9 @@ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "globals": { @@ -916,7 +1009,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "graceful-fs": "^4.1.6" } }, "ms": { @@ -931,7 +1024,7 @@ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "10.0.0" + "@types/node": "*" } }, "regenerator-runtime": { @@ -946,7 +1039,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + "is-finite": "^1.0.0" } }, "source-map": { @@ -975,7 +1068,7 @@ "integrity": "sha1-niFtc15i/OxJ96M5u0Eh2mfMYDM=", "dev": true, "requires": { - "cheerio": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz" + "cheerio": "0.22.0" } }, "esdoc-coverage-plugin": { @@ -996,7 +1089,7 @@ "integrity": "sha1-ePVl1KDFGFrGMVJhTc4f4ahmiNs=", "dev": true, "requires": { - "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz" + "fs-extra": "1.0.0" } }, "esdoc-integrate-manual-plugin": { @@ -1030,343 +1123,392 @@ "dev": true }, "esprima": { - "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "optional": true }, "estraverse": { - "version": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", "optional": true }, "esutils": { - "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "expand-brackets": { - "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "optional": true, "requires": { - "is-posix-bracket": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { - "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "optional": true, "requires": { - "fill-range": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" + "fill-range": "^2.1.0" } }, "extend": { - "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "extglob": { - "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "optional": true, "requires": { - "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + "is-extglob": "^1.0.0" } }, "extsprintf": { - "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, "fast-levenshtein": { - "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "optional": true }, "filename-regex": { - "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true, "optional": true }, "fill-range": { - "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "optional": true, "requires": { - "is-number": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "isobject": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "randomatic": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", - "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-up": { - "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "path-exists": { - "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "pinkie-promise": "^2.0.0" } } } }, "find-versions": { - "version": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", "dev": true, "requires": { - "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "semver-regex": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz" + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" } }, "for-in": { - "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true, "optional": true }, "for-own": { - "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "optional": true, "requires": { - "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + "for-in": "^1.0.1" } }, "forever-agent": { - "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs-extra": { - "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "klaw": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" } }, "fs-readdir-recursive": { - "version": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=", "dev": true }, "fsevents": { - "version": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", "dev": true, "optional": true, "requires": { - "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "node-pre-gyp": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.29" }, "dependencies": { "abbrev": { - "version": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "optional": true }, "ansi-regex": { - "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "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": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true, "optional": true }, "aproba": { - "version": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", "dev": true, "optional": true }, "are-we-there-yet": { - "version": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", "integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=", "dev": true, "optional": true, "requires": { - "delegates": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + "delegates": "^1.0.0", + "readable-stream": "^2.0.0 || ^1.1.13" } }, "asn1": { - "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true, "optional": true }, "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true, "optional": true }, "asynckit": { - "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "optional": true }, "aws-sign2": { - "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true, "optional": true }, "aws4": { - "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true, "optional": true }, "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, "bcrypt-pbkdf": { - "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { - "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "tweetnacl": "^0.14.3" } }, "block-stream": { - "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "inherits": "~2.0.0" } }, "boom": { - "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "hoek": "2.x.x" } }, "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", "dev": true, "requires": { - "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" } }, "buffer-shims": { - "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { - "version": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true, "optional": true }, "chalk": { - "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "optional": true, "requires": { - "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "code-point-at": { - "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "combined-stream": { - "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, + "optional": true, "requires": { - "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "delayed-stream": "~1.0.0" } }, "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "optional": true, "requires": { - "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { - "version": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { - "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cryptiles": { - "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "optional": true, "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "boom": "2.x.x" } }, "dashdash": { - "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true @@ -1374,143 +1516,162 @@ } }, "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", "dev": true, "optional": true, "requires": { - "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "ms": "0.7.1" } }, "deep-extend": { - "version": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=", "dev": true, "optional": true }, "delayed-stream": { - "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "dev": true, + "optional": true }, "delegates": { - "version": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "ecc-jsbn": { - "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "jsbn": "~0.1.0" } }, "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "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, "optional": true }, "extend": { - "version": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=", "dev": true, "optional": true }, "extsprintf": { - "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "forever-agent": { - "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, "optional": true }, "form-data": { - "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", "integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=", "dev": true, "optional": true, "requires": { - "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.14" } }, "fs.realpath": { - "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fstream": { - "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", "integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { - "version": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "optional": true, "requires": { - "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { - "version": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz", "integrity": "sha1-HCOFX5YvF7OtPQ3HRD8wRULt/gk=", "dev": true, "optional": true, "requires": { - "aproba": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "console-control-strings": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "has-unicode": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "wide-align": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "generate-function": { - "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", "dev": true, "optional": true }, "generate-object-property": { - "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "optional": true, "requires": { - "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + "is-property": "^1.0.0" } }, "getpass": { - "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=", "dev": true, "optional": true, "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true @@ -1518,345 +1679,393 @@ } }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "graceful-readlink": { - "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true, "optional": true }, "har-validator": { - "version": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "optional": true, "requires": { - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", - "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" } }, "has-ansi": { - "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "optional": true, "requires": { - "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "has-unicode": { - "version": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "hawk": { - "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "optional": true, "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { - "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { - "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "optional": true, "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", - "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { - "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true, "optional": true }, "is-fullwidth-code-point": { - "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "number-is-nan": "1.0.1" } }, "is-my-json-valid": { - "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", "integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=", "dev": true, "optional": true, "requires": { - "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-property": { - "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true, "optional": true }, "is-typedarray": { - "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true, "optional": true }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isstream": { - "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true, "optional": true }, "jodid25519": { - "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true, "requires": { - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "jsbn": "~0.1.0" } }, "jsbn": { - "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { - "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true, "optional": true }, "json-stringify-safe": { - "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true, "optional": true }, "jsonpointer": { - "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "dev": true, "optional": true }, "jsprim": { - "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", "integrity": "sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=", "dev": true, "optional": true, "requires": { - "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" } }, "mime-db": { - "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz", "integrity": "sha1-6v/NDk/Gk1z4E02iRuLmw1MFrf8=", - "dev": true + "dev": true, + "optional": true }, "mime-types": { - "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", "integrity": "sha1-9+99l1g/yvO30oK2+LVnnaselO4=", "dev": true, + "optional": true, "requires": { - "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz" + "mime-db": "1.26.0" } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "dev": true, "requires": { - "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" + "brace-expansion": "1.1.6" } }, "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "version": "0.0.8", + "resolved": "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", + "version": "0.5.1", + "resolved": "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" + "minimist": "0.0.8" } }, "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true, "optional": true }, "node-pre-gyp": { - "version": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz", + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz", "integrity": "sha1-ZArFUZj2qSWXLgwWxKwmoDTV7Mk=", "dev": true, "optional": true, "requires": { - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "nopt": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "npmlog": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", - "rc": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", - "request": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "tar": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "tar-pack": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz" + "mkdirp": "~0.5.1", + "nopt": "~3.0.6", + "npmlog": "^4.0.1", + "rc": "~1.1.6", + "request": "^2.79.0", + "rimraf": "~2.5.4", + "semver": "~5.3.0", + "tar": "~2.2.1", + "tar-pack": "~3.3.0" } }, "nopt": { - "version": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "optional": true, "requires": { - "abbrev": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz" + "abbrev": "1.1.0" } }, "npmlog": { - "version": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", "integrity": "sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=", "dev": true, "optional": true, "requires": { - "are-we-there-yet": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "console-control-strings": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "gauge": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz", - "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.1", + "set-blocking": "~2.0.0" } }, "number-is-nan": { - "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "optional": true }, "oauth-sign": { - "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true, "optional": true }, "object-assign": { - "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "wrappy": "1" } }, "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "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 }, "pinkie": { - "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true, "optional": true }, "pinkie-promise": { - "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "optional": true, "requires": { - "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "pinkie": "2.0.4" } }, "process-nextick-args": { - "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "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 }, "punycode": { - "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "optional": true }, "qs": { - "version": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz", "integrity": "sha1-kYwLO802Z5dyuvE1say0wWUe150=", "dev": true, "optional": true }, "rc": { - "version": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", "integrity": "sha1-xepWS7B6/5/TpbMukGwdOmWUD+o=", "dev": true, "optional": true, "requires": { - "deep-extend": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "ini": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -1864,102 +2073,111 @@ } }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=", "dev": true, "optional": true, "requires": { - "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" } }, "request": { - "version": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "optional": true, "requires": { - "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "extend": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", - "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", - "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "qs": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz", - "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" } }, "rimraf": { - "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", "dev": true, "requires": { - "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" + "glob": "^7.0.5" } }, "semver": { - "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true, "optional": true }, "set-blocking": { - "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { - "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "sntp": { - "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "optional": true, "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "hoek": "2.x.x" } }, "sshpk": { - "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz", "integrity": "sha1-1agEziJpVRVjjnmNviMnPeBwpfo=", "dev": true, "optional": true, "requires": { - "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "jodid25519": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true @@ -1967,161 +2185,181 @@ } }, "string-width": { - "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { - "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "stringstream": { - "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "optional": true }, "strip-ansi": { - "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "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": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { - "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true, "optional": true }, "tar": { - "version": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { - "version": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", "integrity": "sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=", "dev": true, "optional": true, "requires": { - "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "fstream-ignore": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "tar": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "uid-number": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "debug": "~2.2.0", + "fstream": "~1.0.10", + "fstream-ignore": "~1.0.5", + "once": "~1.3.3", + "readable-stream": "~2.1.4", + "rimraf": "~2.5.1", + "tar": "~2.2.1", + "uid-number": "~0.0.6" }, "dependencies": { "once": { - "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "optional": true, "requires": { - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "wrappy": "1" } }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", "dev": true, "optional": true, "requires": { - "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" } } } }, "tough-cookie": { - "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "optional": true, "requires": { - "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "punycode": "^1.4.1" } }, "tunnel-agent": { - "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true, "optional": true }, "tweetnacl": { - "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "uid-number": { - "version": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true, "optional": true }, "util-deprecate": { - "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { - "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", "dev": true, "optional": true }, "verror": { - "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "optional": true, "requires": { - "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "extsprintf": "1.0.2" } }, "wide-align": { - "version": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", "integrity": "sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=", "dev": true, "optional": true, "requires": { - "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + "string-width": "^1.0.1" } }, "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "xtend": { - "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true, "optional": true @@ -2129,589 +2367,677 @@ } }, "get-stdin": { - "version": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" }, "getpass": { - "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { - "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "optional": true, "requires": { - "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { - "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + "is-glob": "^2.0.0" } }, "globals": { - "version": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", "integrity": "sha1-DAymltm5u2lNLlRwvTd3fKrVAoY=", "dev": true }, "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "graceful-readlink": { - "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, "growl": { - "version": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, "har-schema": { - "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" }, "har-validator": { - "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "har-schema": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-ansi": { - "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "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": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "hawk": { - "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { - "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "home-or-tmp": { - "version": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { - "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", "dev": true }, "htmlparser2": { - "version": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "domhandler": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-signature": { - "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "ice-cap": { - "version": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", "integrity": "sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg=", "requires": { - "cheerio": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "color-logger": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz" + "cheerio": "0.20.0", + "color-logger": "0.0.3" }, "dependencies": { "cheerio": { - "version": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", "requires": { - "css-select": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "htmlparser2": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "jsdom": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "~3.8.1", + "jsdom": "^7.0.2", + "lodash": "^4.1.0" } }, "domhandler": { - "version": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "requires": { - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + "domelementtype": "1" } }, "htmlparser2": { - "version": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "requires": { - "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "domhandler": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "entities": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" }, "dependencies": { "entities": { - "version": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" } } }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "string_decoder": { - "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, "indent-string": { - "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + "repeating": "^2.0.0" }, "dependencies": { "repeating": { - "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + "is-finite": "^1.0.0" } } } }, "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "invariant": { - "version": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz" + "loose-envify": "^1.0.0" } }, "is-arrayish": { - "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-binary-path": { - "version": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "optional": true, "requires": { - "binary-extensions": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz" + "binary-extensions": "^1.0.0" } }, "is-buffer": { - "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "dev": true }, "is-builtin-module": { - "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + "builtin-modules": "^1.0.0" } }, "is-dotfile": { - "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=", "dev": true, "optional": true }, "is-equal-shallow": { - "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "optional": true, "requires": { - "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + "is-primitive": "^2.0.0" } }, "is-extendable": { - "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true, "optional": true }, "is-extglob": { - "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { - "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "number-is-nan": "^1.0.0" } }, "is-glob": { - "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + "is-extglob": "^1.0.0" } }, "is-number": { - "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz" + "kind-of": "^3.0.2" } }, "is-posix-bracket": { - "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true, "optional": true }, "is-primitive": { - "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, "is-typedarray": { - "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-utf8": { - "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isobject": { - "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "optional": true, "requires": { - "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "isarray": "1.0.0" } }, "isstream": { - "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "jade": { - "version": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "version": "0.26.3", + "resolved": "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": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "commander": "0.6.1", + "mkdirp": "0.3.0" }, "dependencies": { "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", "dev": true }, "mkdirp": { - "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", "dev": true } } }, "jodid25519": { - "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "optional": true, "requires": { - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "jsbn": "~0.1.0" } }, "js-tokens": { - "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", "dev": true }, "jsbn": { - "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, "jsdom": { - "version": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", "optional": true, "requires": { - "abab": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", - "acorn": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "acorn-globals": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "cssom": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "cssstyle": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "escodegen": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "nwmatcher": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", - "parse5": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "sax": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz", - "symbol-tree": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "webidl-conversions": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "whatwg-url-compat": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "xml-name-validator": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz" + "abab": "^1.0.0", + "acorn": "^2.4.0", + "acorn-globals": "^1.0.4", + "cssom": ">= 0.3.0 < 0.4.0", + "cssstyle": ">= 0.2.29 < 0.3.0", + "escodegen": "^1.6.1", + "nwmatcher": ">= 1.3.7 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.55.0", + "sax": "^1.1.4", + "symbol-tree": ">= 3.1.0 < 4.0.0", + "tough-cookie": "^2.2.0", + "webidl-conversions": "^2.0.0", + "whatwg-url-compat": "~0.6.5", + "xml-name-validator": ">= 2.0.1 < 3.0.0" } }, "jsesc": { - "version": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "json-schema": { - "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-stable-stringify": { - "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "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=", "requires": { - "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { - "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, "jsonfile": { - "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "graceful-fs": "^4.1.6" } }, "jsonify": { - "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsprim": { - "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "requires": { - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, "kind-of": { - "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz", "integrity": "sha1-tYq+TVwEStM3JqjBUltIz4kb/wc=", "dev": true, "requires": { - "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + "is-buffer": "^1.1.5" } }, "klaw": { - "version": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "graceful-fs": "^4.1.9" } }, "levn": { - "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "optional": true, "requires": { - "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { - "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, "lodash.assignin": { - "version": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" }, "lodash.bind": { - "version": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" }, "lodash.defaults": { - "version": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, "lodash.filter": { - "version": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" }, "lodash.flatten": { - "version": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, "lodash.foreach": { - "version": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" }, "lodash.map": { - "version": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, "lodash.merge": { - "version": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" }, "lodash.pick": { - "version": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" }, "lodash.reduce": { - "version": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" }, "lodash.reject": { - "version": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" }, "lodash.some": { - "version": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, "log-symbols": { - "version": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" + "chalk": "^1.0.0" } }, "loose-envify": { - "version": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" + "js-tokens": "^3.0.0" } }, "loud-rejection": { - "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lru-cache": { - "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, "map-obj": { - "version": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, @@ -2721,686 +3047,781 @@ "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" }, "meow": { - "version": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "loud-rejection": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "redent": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "trim-newlines": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, "micromatch": { - "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "optional": true, "requires": { - "arr-diff": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "array-unique": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "braces": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "expand-brackets": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "extglob": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "filename-regex": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz", - "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "object.omit": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "parse-glob": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "regex-cache": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime-db": { - "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" }, "mime-types": { - "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "requires": { - "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + "mime-db": "~1.27.0" } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { - "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mkdirp": { - "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "version": "0.5.1", + "resolved": "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" + "minimist": "0.0.8" }, "dependencies": { "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } } }, "mocha": { - "version": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "version": "2.5.3", + "resolved": "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": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "glob": "https://registry.npmjs.org/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" + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" }, "dependencies": { "commander": { - "version": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", "dev": true }, "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.2.0", + "resolved": "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" + "ms": "0.7.1" } }, "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", "dev": true }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz" + "inherits": "2", + "minimatch": "0.3" } }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/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" + "lru-cache": "2", + "sigmund": "~1.0.0" } }, "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true }, "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", "dev": true } } }, "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", "dev": true }, "nan": { - "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", "dev": true, "optional": true }, "normalize-package-data": { - "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", "dev": true, "requires": { - "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "semver": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { - "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "optional": true, "requires": { - "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz" + "remove-trailing-separator": "^1.0.1" } }, "nth-check": { - "version": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "boolbase": "~1.0.0" } }, "number-is-nan": { - "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwmatcher": { - "version": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz", "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=", "optional": true }, "oauth-sign": { - "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" }, "object-assign": { - "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object.omit": { - "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "optional": true, "requires": { - "for-own": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "wrappy": "1" } }, "optionator": { - "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "optional": true, "requires": { - "deep-is": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "fast-levenshtein": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "os-homedir": { - "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-tmpdir": { - "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "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 }, "output-file-sync": { - "version": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" } }, "parse-glob": { - "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "optional": true, "requires": { - "glob-base": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "is-dotfile": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { - "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" + "error-ex": "^1.2.0" } }, "parse5": { - "version": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", "optional": true }, "path-exists": { - "version": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=", "dev": true }, "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "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-type": { - "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "performance-now": { - "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" }, "pify": { - "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "pinkie": { - "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "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": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "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": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "pinkie": "^2.0.0" } }, "prelude-ls": { - "version": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "preserve": { - "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true, "optional": true }, "private": { - "version": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", "dev": true }, "process-nextick-args": { - "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "punycode": { - "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" }, "randomatic": { - "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=", "dev": true, "optional": true, "requires": { - "is-number": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.0.tgz" + "is-number": "^2.0.2", + "kind-of": "^3.0.2" } }, "read-pkg": { - "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "path-type": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "requires": { - "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz", - "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "readdirp": { - "version": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "optional": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "set-immediate-shim": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "redent": { - "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "strip-indent": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "regenerator-runtime": { - "version": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" }, "regex-cache": { - "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", "dev": true, "optional": true, "requires": { - "is-equal-shallow": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + "is-equal-shallow": "^0.1.3", + "is-primitive": "^2.0.0" } }, "remove-trailing-separator": { - "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=", "dev": true, "optional": true }, "repeat-element": { - "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, "repeat-string": { - "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true, "optional": true }, "repeating": { - "version": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", "requires": { - "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + "is-finite": "^1.0.0" } }, "request": { - "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "requires": { - "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "performance-now": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "safe-buffer": { - "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" }, "sax": { - "version": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz", "integrity": "sha1-/YYxojvHgmvvXYcb24c3jJVkeCg=", "optional": true }, "semver": { - "version": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, "semver-regex": { - "version": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", "dev": true }, "semver-truncate": { - "version": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", "dev": true, "requires": { - "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "semver": "^5.3.0" }, "dependencies": { "semver": { - "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } } }, "set-immediate-shim": { - "version": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true, "optional": true }, "sigmund": { - "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, "signal-exit": { - "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slash": { - "version": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, "sntp": { - "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "hoek": "2.x.x" } }, "source-map": { - "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" }, "source-map-support": { - "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", "dev": true, "requires": { - "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + "source-map": "^0.5.6" } }, "spdx-correct": { - "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { - "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true }, "spdx-license-ids": { - "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, "sshpk": { - "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "requires": { - "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "jodid25519": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { - "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" } } }, "string_decoder": { - "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz", "integrity": "sha1-8G9BFXtmTYYGn4S9vcmw2KsoFmc=", "requires": { - "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "buffer-shims": "~1.0.0" } }, "stringstream": { - "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" }, "strip-ansi": { - "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "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": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "strip-bom": { - "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + "is-utf8": "^0.2.0" } }, "strip-indent": { - "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + "get-stdin": "^4.0.1" } }, "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "symbol-tree": { - "version": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "optional": true }, "taffydb": { - "version": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.2.tgz", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.2.tgz", "integrity": "sha1-e/gQalwaSCUbPjvAoOFzJIn9Dcg=" }, "to-fast-properties": { - "version": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "to-iso-string": { - "version": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", "dev": true }, "tough-cookie": { - "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "requires": { - "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "punycode": "^1.4.1" } }, "tr46": { - "version": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "optional": true }, "trim-newlines": { - "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, "trim-right": { - "version": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "tunnel-agent": { - "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { - "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, "type-check": { - "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { - "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + "prelude-ls": "~1.1.2" } }, "universalify": { @@ -3410,67 +3831,78 @@ "dev": true }, "user-home": { - "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", "dev": true }, "util-deprecate": { - "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" }, "v8flags": { - "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + "user-home": "^1.1.1" } }, "validate-npm-package-license": { - "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "verror": { - "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "requires": { - "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "extsprintf": "1.0.2" } }, "webidl-conversions": { - "version": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", "optional": true }, "whatwg-url-compat": { - "version": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", "optional": true, "requires": { - "tr46": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "tr46": "~0.0.1" } }, "wordwrap": { - "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "optional": true }, "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "xml-name-validator": { - "version": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "optional": true } diff --git a/esdoc-publish-html-plugin/src/Builder/ManualDocBuilder.js b/esdoc-publish-html-plugin/src/Builder/ManualDocBuilder.js index 09a4013..134dcb1 100644 --- a/esdoc-publish-html-plugin/src/Builder/ManualDocBuilder.js +++ b/esdoc-publish-html-plugin/src/Builder/ManualDocBuilder.js @@ -41,7 +41,7 @@ export default class ManualDocBuilder extends DocBuilder { } for (const manual of manuals) { - const fileName = this._getManualOutputFileName(manual.name); + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); const baseUrl = this._getBaseUrl(fileName); ice.load('content', this._buildManual(manual), IceCap.MODE_WRITE); ice.load('nav', this._buildManualNav(manuals), IceCap.MODE_WRITE); @@ -106,7 +106,7 @@ export default class ManualDocBuilder extends DocBuilder { ice.loop('manual', manuals, (i, manual, ice)=>{ const toc = []; - const fileName = this._getManualOutputFileName(manual.name); + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); const html = markdown(manual.content); const $root = cheerio.load(html).root(); const h1Count = $root.find('h1').length; @@ -176,7 +176,7 @@ export default class ManualDocBuilder extends DocBuilder { _buildManualCardIndex(manuals, manualIndex, badgeFlag) { const cards = []; for (const manual of manuals) { - const fileName = this._getManualOutputFileName(manual.name); + const fileName = this._getManualOutputFileName(manual.name, manual.destPrefix); const html = this._buildManual(manual); const $root = cheerio.load(html).root(); const h1Count = $root.find('h1').length; @@ -225,8 +225,9 @@ export default class ManualDocBuilder extends DocBuilder { * @returns {string} file name. * @private */ - _getManualOutputFileName(filePath) { + _getManualOutputFileName(filePath, destPrefix) { const fileName = path.parse(filePath).name; - return `manual/${fileName}.html`; + const prefixedPath = destPrefix ? path.join(destPrefix, fileName) : fileName + return `manual/${prefixedPath}.html`; } } diff --git a/esdoc-publish-html-plugin/test/fixture/esdoc.json b/esdoc-publish-html-plugin/test/fixture/esdoc.json index b836b48..e3685c1 100644 --- a/esdoc-publish-html-plugin/test/fixture/esdoc.json +++ b/esdoc-publish-html-plugin/test/fixture/esdoc.json @@ -25,7 +25,15 @@ "./test/fixture/manual/example.md", "./test/fixture/manual/advanced.md", "./test/fixture/manual/faq.md", - "./test/fixture/CHANGELOG.md" + "./test/fixture/CHANGELOG.md", + { + "src": "./test/fixture/manual/destPrefixChange.md", + "destPrefix": "dest1" + }, + { + "src": "./test/fixture/manual/destPrefixChange.md", + "destPrefix": "dest2" + } ] }}, {"name": "esdoc-integrate-test-plugin", "option": { diff --git a/esdoc-publish-html-plugin/test/fixture/manual/destPrefixChange.md b/esdoc-publish-html-plugin/test/fixture/manual/destPrefixChange.md new file mode 100644 index 0000000..35cc62f --- /dev/null +++ b/esdoc-publish-html-plugin/test/fixture/manual/destPrefixChange.md @@ -0,0 +1,2 @@ +# Destination Prefix +this file is generated in different prefix locations diff --git a/esdoc-publish-html-plugin/test/src/ManualTest/ManualTest.js b/esdoc-publish-html-plugin/test/src/ManualTest/ManualTest.js index 9faf76a..4e9fec0 100644 --- a/esdoc-publish-html-plugin/test/src/ManualTest/ManualTest.js +++ b/esdoc-publish-html-plugin/test/src/ManualTest/ManualTest.js @@ -95,6 +95,14 @@ describe('test manual', ()=>{ assert.includes(doc, '[data-ice="manualNav"]:nth-of-type(1) a', 'manual/CHANGELOG.html', 'href'); assert.includes(doc, '[data-ice="manualNav"]:nth-of-type(2) a', 'manual/CHANGELOG.html#0-0-1', 'href'); }); + // dest1/destPrefixChange.md + find(doc, '[data-ice="manual"]:nth-of-type(12)', (doc)=>{ + assert.includes(doc, '[data-ice="manualNav"]:nth-of-type(1) a', 'manual/dest1/destPrefixChange.html', 'href'); + }); + // dest2/destPrefixChange.md + find(doc, '[data-ice="manual"]:nth-of-type(13)', (doc)=>{ + assert.includes(doc, '[data-ice="manualNav"]:nth-of-type(1) a', 'manual/dest2/destPrefixChange.html', 'href'); + }); }); }); }); @@ -163,11 +171,23 @@ describe('test manual', ()=>{ }); }); - it('has changelog heading tags', ()=>{ - find(doc, '.manual-card-wrap:nth-of-type(11)', (doc)=>{ + it('has changelog heading tags', () => { + find(doc, '.manual-card-wrap:nth-of-type(11)', (doc) => { assert.includes(doc, '.manual-card > a', 'manual/CHANGELOG.html', 'href'); }); }); + + it('has dest1/destinationPrefixChange heading tags', () => { + find(doc, '.manual-card-wrap:nth-of-type(12)', (doc) => { + assert.includes(doc, '.manual-card > a', 'manual/dest1/destPrefixChange.html', 'href'); + }); + }); + + it('has dest2/destinationPrefixChange heading tags', () => { + find(doc, '.manual-card-wrap:nth-of-type(13)', (doc) => { + assert.includes(doc, '.manual-card > a', 'manual/dest2/destPrefixChange.html', 'href'); + }); + }); }); /** @test {ManualDocBuilder#_buildManual} */ @@ -219,5 +239,17 @@ describe('test manual', ()=>{ assert.includes(doc, '.github-markdown h1', 'Changelog'); assert.includes(doc, '.github-markdown[data-ice="content"] h2:nth-of-type(1)', '0.0.1'); }); + + it('has dest1/destPrefixChange', () => { + const doc = readDoc('manual/dest1/destPrefixChange.html'); + assert.includes(doc, '.github-markdown h1', 'Destination Prefix'); + assert.includes(doc, '.github-markdown[data-ice="content"]', 'this file is generated in different prefix locations'); + }); + + it('has dest2/destPrefixChange', () => { + const doc = readDoc('manual/dest2/destPrefixChange.html'); + assert.includes(doc, '.github-markdown h1', 'Destination Prefix'); + assert.includes(doc, '.github-markdown[data-ice="content"]', 'this file is generated in different prefix locations'); + }); }); });