Last active
September 30, 2019 11:10
-
-
Save kmoskwiak/98ceddca3ea4acdd0ddaccdbbe0a4fbc to your computer and use it in GitHub Desktop.
Parse HTML into mobiledoc format. Just run `npm install` and `npm start`. Original code in issue: https://github.com/bustle/mobiledoc-kit/issues/631
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//import refetchMediaCards from './refetch-media-cards' //refetch media cards is our logic for rehosting images and refetching embeds. Totally up to you what to do here | |
function refetchMediaCards(item) { | |
return Promise.resolve(item); | |
} | |
export async function convertHTMLToMobiledoc(post, domContext) { | |
try { | |
return domContext.evaluate(postObject => window.tzrPostContentToMobiledoc(postObject), post) | |
.then((bodies) => { | |
return bodies | |
}) | |
.then((bodies) => { | |
return Promise | |
.all(bodies.map(refetchMediaCards)) | |
.catch(error => { | |
throw new Error(error.message) | |
}) | |
} | |
) | |
} catch (error) { | |
throw new Error(`Error converting post content to Mobiledoc: ${error.message}`) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-env browser */ | |
const camelizeString = str => str.replace(/[_-](\w|$)/g, (separator, character) => character.toUpperCase()) | |
const camelizeKeys = object => | |
object && Object.assign(...Object.keys(object).map(key => ({ [camelizeString(key)]: object[key] }))) | |
const pruneObject = (object) => { | |
return object && | |
Object.keys(object).reduce((accumulator, key) => { | |
console.log(accumulator) | |
return { | |
...accumulator, | |
...(object[key] ? { [key]: object[key] } : null) | |
}}); | |
} | |
const getAttachmentContent = attachmentData => { | |
// Unless the content is a placeholder like “[Embed]” | |
if (attachmentData.content && !/^\s*\[[A-z]+\]/.test(attachmentData.content)) { | |
return attachmentData.content | |
} | |
return decodeURIComponent(attachmentData.providerId) || '' | |
} | |
const normalizeAttachmentData = embeddedData => { | |
const data = { | |
...camelizeKeys(pruneObject(embeddedData)) // don't overwrite with falsy values | |
} | |
return { ...data, content: getAttachmentContent(data) } | |
} | |
const getAttachmentFragment = attachmentData => { | |
try { | |
return new DOMParser().parseFromString( | |
attachmentData.content.replace(/<(\/)?script\b/gi, '<$1script-placeholder'), | |
'text/html' | |
).body | |
} catch (e) { | |
throw new Error(`Could not interpret attachment as HTML for parsing: ${JSON.stringify(attachmentData)}`) | |
} | |
} | |
const extractSrcProperty = attachmentData => { | |
// Special case for hotlinked images: | |
if (/^https?:\/\//.test(attachmentData.src)) { | |
return { url: attachmentData.src.replace(/^https?:/, '') } // strip the protocol | |
} | |
const fragment = getAttachmentFragment(attachmentData) | |
const pathParser = document.createElement('a') | |
const imgElement = fragment.querySelector('img') | |
const imgElementSrc = imgElement && (imgElement.src || imgElement.getAttribute('data-src')) | |
pathParser.href = imgElement && imgElementSrc | |
return { key: pathParser.pathname } | |
} | |
const extractEmbedUrl = attachmentData => { | |
// Attachment providerId is already a URL: | |
if (/^(https?:)?\/\//.test(attachmentData.providerId)) { | |
return attachmentData.providerId | |
} | |
const fragment = getAttachmentFragment(attachmentData) | |
const urlElement = | |
fragment.querySelector('iframe') || // 0. iframe src | |
fragment.querySelector('a[href*="/status/"]') || // 1. Permalink to Twitter status | |
fragment.querySelector('blockquote[cite]') || // 2. Facebook citation | |
fragment.querySelector('img') || // 3. It’s an image | |
fragment.querySelector('embed') || // 4. It’s a Flash embed | |
fragment.querySelector('[data-href]') || // 5. some Facebook embeds | |
fragment.querySelector('a') || // finally, fallback to any link found | |
fragment.querySelector('script-placeholder') // *or* might be *just* a script | |
const url = | |
urlElement && | |
( | |
urlElement.getAttribute('src') || // getAttribute, because it may be a custom `<script-placeholder>` element | |
urlElement.href || | |
urlElement.cite || | |
urlElement.getAttribute('data-src') || | |
urlElement.getAttribute('data-href') || | |
'' | |
).replace(/&/g, '&') | |
// Many Facebook embeds use root-relative paths instead of URLs: | |
if (urlElement && (urlElement.getAttribute('cite') || urlElement.getAttribute('data-href')) && /^\/[^/]/.test(url)) { | |
return `//facebook.com${url}` | |
} | |
if (url && url.includes('giphy.com/embed/')) { | |
return url.replace('/embed/', '/gifs/') | |
} | |
if (!url) { | |
return null // couldn’t get a URL, so force a legacy embed | |
} | |
return url | |
} | |
const extractLinkUrl = attachmentData => { | |
const fragment = getAttachmentFragment(attachmentData) | |
const link = fragment.querySelector('a') | |
if (link) { | |
return { link_url: link.href } | |
} | |
} | |
const stubMediaCard = attachmentData => { | |
if (attachmentData.type === 'image') { | |
try { | |
return [ | |
'image-card', | |
{ | |
...extractSrcProperty(attachmentData), | |
...extractLinkUrl(attachmentData), | |
attribution: attachmentData.attribution && attachmentData.attribution.trim() | |
} | |
] | |
} catch (error) { | |
return stubMediaCard({ ...attachmentData, type: 'legacy' }) | |
} | |
} | |
return [ | |
'embed-card', | |
{ | |
url: extractEmbedUrl(attachmentData), | |
attribution: attachmentData.attribution && attachmentData.attribution.trim(), | |
html: attachmentData.content.replace(/article-body-(free-)?embed/, 'legacy-embed') | |
} | |
] | |
} | |
export default () => { | |
return (node, builder, { addSection, nodeFinished }) => { | |
if (node.tagName !== 'ATTACHMENT') { | |
return | |
} | |
const embeddedAttachmentData = node.dataset | |
const attachmentData = normalizeAttachmentData(embeddedAttachmentData) | |
const [cardName, payload] = stubMediaCard(attachmentData) | |
const cardSection = builder.createCardSection(cardName, payload) | |
addSection(cardSection) | |
nodeFinished() | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import vm from 'vm' | |
import { JSDOM, VirtualConsole } from 'jsdom' | |
import browserify from 'browserify' | |
import { collect } from 'bluestream' | |
const escapeEmoji = str => | |
str.replace(/[\u007f-\uffff]/g, char => '\\u' + ('0000' + char.charCodeAt(0).toString(16)).slice(-4)) | |
const JSONStringifyWithEmoji = str => escapeEmoji(JSON.stringify(str)) | |
// filename => promise for code | |
const compileCache = {} | |
const compile = async entryFile => { | |
if (compileCache[entryFile]) { | |
return compileCache[entryFile] | |
} | |
compileCache[entryFile] = collect( | |
browserify(entryFile) | |
.transform('babelify', { | |
presets: [ | |
['stage-2'], | |
[ | |
'env', | |
{ | |
targets: { chrome: 62 } | |
} | |
] | |
] | |
}) | |
.bundle() | |
).then(buffer => buffer.toString()) | |
return compileCache[entryFile] | |
} | |
export default async entryFile => { | |
const virtualConsole = new VirtualConsole() | |
virtualConsole.sendTo(console, { omitJSDOMErrors: true }) | |
const scripts = await compile(entryFile) | |
const script = new vm.Script(scripts) | |
return { | |
evaluate: async (evalFn, ...args) => { | |
const jsdom = new JSDOM(``, { runScripts: 'outside-only', virtualConsole }) | |
jsdom.runVMScript(script) | |
const fn = new vm.Script(`(${evalFn.toString()})(...${JSONStringifyWithEmoji(args)})`) | |
const output = jsdom.runVMScript(fn) | |
jsdom.window.close() | |
return output | |
}, | |
destroy: () => console.log('Destroyed Dom context') // eslint-disable-line | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import htmlToMobiledoc from './html-to-mobiledoc' | |
import sanitizeBody from './sanitize-body' | |
import createAttachmentParserPlugin from './create-mobiledoc-attachment-parser-plugin' | |
window.MutationObserver = require('./mutation-observer').MutationObserver | |
const bodyToMobiledoc = (body, mobiledocOptions) => { | |
try { | |
const html = sanitizeBody(body) | |
return htmlToMobiledoc(html, mobiledocOptions) | |
} catch (error) { | |
throw new Error(`Error running \`tzrPostBodyToMobiledoc\`: ${error.message}`) | |
} | |
} | |
window.tzrPostContentToMobiledoc = post => { | |
let body = post.content.renderer.body; | |
const mobiledocOptions = { parserPlugins: [createAttachmentParserPlugin()] } | |
const firstBody = bodyToMobiledoc(body, mobiledocOptions) // body is the html | |
return [firstBody] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-env browser */ | |
import MobiledocKit from 'mobiledoc-kit' | |
export default (html, editorOptions) => { | |
const el = document.createElement('div') | |
document.body.appendChild(el) | |
const editor = new MobiledocKit.Editor({ ...editorOptions, html: html }) | |
const mobiledoc = editor.serialize() | |
editor.destroy() | |
document.body.removeChild(el) | |
return mobiledoc | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// task | |
import DomContext from './dom-context' | |
import { convertHTMLToMobiledoc } from './convert-html-to-mobiledoc' | |
async function run(params) { | |
const metadata = { | |
content: { | |
renderer: { | |
body: ` | |
<p>Pellentesque habitant morbi tristique senectus | |
et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, | |
ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. | |
Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p> | |
<img src="cat.jpg" width="200" /> | |
<p>Some text <a href="/">homepage</a> | |
` | |
} | |
} | |
} | |
try { | |
const domContext = await DomContext('html-to-mobiledoc-context.js') | |
const bodies = await convertHTMLToMobiledoc(metadata, domContext) //metadata is an object with the html, in our case `metadata is { content: html }` | |
console.log(JSON.stringify(bodies)); | |
} catch (err) { | |
console.log(err) | |
} | |
// dependencies in files below | |
// nb: we never got this bundling with webpack, but never tried to. Just ran with our task running in node in the command line | |
} | |
run() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-disable */ | |
// https://github.com/aurelia/pal-nodejs/blob/master/src/polyfills/mutation-observer.ts | |
const events = require('events') | |
const exports = module.exports | |
/* | |
* Based on Shim for MutationObserver interface | |
* Author: Graeme Yeates (github.com/megawac) | |
* Repository: https://github.com/megawac/MutationObserver.js | |
*/ | |
var __extends = (this && this.__extends) || (function () { | |
var extendStatics = Object.setPrototypeOf || | |
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | |
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | |
return function (d, b) { | |
extendStatics(d, b); | |
function __() { this.constructor = d; } | |
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | |
}; | |
})(); | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
var Util = /** @class */ (function () { | |
function Util() { | |
} | |
Util.clone = function ($target, config) { | |
var recurse = true; // set true so childList we'll always check the first level | |
return (function copy($target) { | |
var elestruct = { | |
/** @type {Node} */ | |
node: $target, | |
charData: null, | |
attr: null, | |
kids: null, | |
}; | |
// Store current character data of target text or comment node if the config requests | |
// those properties to be observed. | |
if (config.charData && ($target.nodeType === 3 || $target.nodeType === 8)) { | |
elestruct.charData = $target.nodeValue; | |
} | |
else { | |
// Add attr only if subtree is specified or top level and avoid if | |
// attributes is a document object (#13). | |
if (config.attr && recurse && $target.nodeType === 1) { | |
/** | |
* clone live attribute list to an object structure {name: val} | |
* @type {Object.<string, string>} | |
*/ | |
elestruct.attr = Util.reduce($target.attributes, function (memo, attr) { | |
if (!config.afilter || config.afilter[attr.name]) { | |
memo[attr.name] = attr.value; | |
} | |
return memo; | |
}, {}); | |
} | |
// whether we should iterate the children of $target node | |
if (recurse && ((config.kids || config.charData) || (config.attr && config.descendents))) { | |
/** @type {Array.<!Object>} : Array of custom clone */ | |
elestruct.kids = Util.map($target.childNodes, copy); | |
} | |
recurse = config.descendents; | |
} | |
return elestruct; | |
})($target); | |
}; | |
/** | |
* indexOf an element in a collection of custom nodes | |
* | |
* @param {NodeList} set | |
* @param {!Object} $node : A custom cloned nodeg333 | |
* @param {number} idx : index to start the loop | |
* @return {number} | |
*/ | |
Util.indexOfCustomNode = function (set, $node, idx) { | |
var JSCompiler_renameProperty = function (a) { return a; }; | |
return this.indexOf(set, $node, idx, JSCompiler_renameProperty('node')); | |
}; | |
/** | |
* Attempt to uniquely id an element for hashing. We could optimize this for legacy browsers but it hopefully wont be called enough to be a concern | |
* | |
* @param {Node} $ele | |
* @return {(string|number)} | |
*/ | |
Util.getElementId = function ($ele) { | |
try { | |
return $ele.id || ($ele[this.expando] = $ele[this.expando] || this.counter++); | |
} | |
catch (e) { | |
try { | |
return $ele.nodeValue; // naive | |
} | |
catch (shitie) { | |
return this.counter++; | |
} | |
} | |
}; | |
/** | |
* **map** Apply a mapping function to each item of a set | |
* @param {Array|NodeList} set | |
* @param {Function} iterator | |
*/ | |
Util.map = function (set, iterator) { | |
var results = []; | |
for (var index = 0; index < set.length; index++) { | |
results[index] = iterator(set[index], index, set); | |
} | |
return results; | |
}; | |
/** | |
* **Reduce** builds up a single result from a list of values | |
* @param {Array|NodeList|NamedNodeMap} set | |
* @param {Function} iterator | |
* @param {*} [memo] Initial value of the memo. | |
*/ | |
Util.reduce = function (set, iterator, memo) { | |
for (var index = 0; index < set.length; index++) { | |
memo = iterator(memo, set[index], index, set); | |
} | |
return memo; | |
}; | |
/** | |
* **indexOf** find index of item in collection. | |
* @param {Array|NodeList} set | |
* @param {Object} item | |
* @param {number} idx | |
* @param {string} [prop] Property on set item to compare to item | |
*/ | |
Util.indexOf = function (set, item, idx, prop) { | |
for (; idx < set.length; idx++) { | |
if ((prop ? set[idx][prop] : set[idx]) === item) | |
return idx; | |
} | |
return -1; | |
}; | |
/** | |
* @param {Object} obj | |
* @param {(string|number)} prop | |
* @return {boolean} | |
*/ | |
Util.has = function (obj, prop) { | |
return obj[prop] !== undefined; // will be nicely inlined by gcc | |
}; | |
Util.counter = 1; | |
Util.expando = 'mo_id'; | |
return Util; | |
}()); | |
exports.Util = Util; | |
var MutationObserver = /** @class */ (function () { | |
function MutationObserver(listener) { | |
var _this = this; | |
this._watched = []; | |
this._listener = null; | |
this._period = 30; | |
this._timeout = null; | |
this._disposed = false; | |
this._notifyListener = null; | |
this._watched = []; | |
this._listener = listener; | |
this._period = 30; | |
this._notifyListener = function () { _this.scheduleMutationCheck(_this); }; | |
} | |
MutationObserver.prototype.observe = function ($target, config) { | |
var settings = { | |
attr: !!(config.attributes || config.attributeFilter || config.attributeOldValue), | |
// some browsers enforce that subtree must be set with childList, attributes or characterData. | |
// We don't care as spec doesn't specify this rule. | |
kids: !!config.childList, | |
descendents: !!config.subtree, | |
charData: !!(config.characterData || config.characterDataOldValue), | |
afilter: null | |
}; | |
MutationNotifier.getInstance().on("changed", this._notifyListener); | |
var watched = this._watched; | |
// remove already observed target element from pool | |
for (var i = 0; i < watched.length; i++) { | |
if (watched[i].tar === $target) | |
watched.splice(i, 1); | |
} | |
if (config.attributeFilter) { | |
/** | |
* converts to a {key: true} dict for faster lookup | |
* @type {Object.<String,Boolean>} | |
*/ | |
settings.afilter = Util.reduce(config.attributeFilter, function (a, b) { | |
a[b] = true; | |
return a; | |
}, {}); | |
} | |
watched.push({ | |
tar: $target, | |
fn: this.createMutationSearcher($target, settings) | |
}); | |
}; | |
MutationObserver.prototype.takeRecords = function () { | |
var mutations = []; | |
var watched = this._watched; | |
for (var i = 0; i < watched.length; i++) { | |
watched[i].fn(mutations); | |
} | |
return mutations; | |
}; | |
MutationObserver.prototype.disconnect = function () { | |
this._watched = []; // clear the stuff being observed | |
MutationNotifier.getInstance().removeListener("changed", this._notifyListener); | |
this._disposed = true; | |
clearTimeout(this._timeout); // ready for garbage collection | |
this._timeout = null; | |
}; | |
MutationObserver.prototype.createMutationSearcher = function ($target, config) { | |
var _this = this; | |
/** type {Elestuct} */ | |
var $oldstate = Util.clone($target, config); // create the cloned datastructure | |
/** | |
* consumes array of mutations we can push to | |
* | |
* @param {Array.<MutationRecord>} mutations | |
*/ | |
return function (mutations) { | |
var olen = mutations.length; | |
var dirty; | |
if (config.charData && $target.nodeType === 3 && $target.nodeValue !== $oldstate.charData) { | |
mutations.push(new MutationRecord({ | |
type: 'characterData', | |
target: $target, | |
oldValue: $oldstate.charData | |
})); | |
} | |
// Alright we check base level changes in attributes... easy | |
if (config.attr && $oldstate.attr) { | |
_this.findAttributeMutations(mutations, $target, $oldstate.attr, config.afilter); | |
} | |
// check childlist or subtree for mutations | |
if (config.kids || config.descendents) { | |
dirty = _this.searchSubtree(mutations, $target, $oldstate, config); | |
} | |
// reclone data structure if theres changes | |
if (dirty || mutations.length !== olen) { | |
/** type {Elestuct} */ | |
$oldstate = Util.clone($target, config); | |
} | |
}; | |
}; | |
MutationObserver.prototype.scheduleMutationCheck = function (observer) { | |
var _this = this; | |
// Only schedule if there isn't already a timer. | |
if (!observer._timeout) { | |
observer._timeout = setTimeout(function () { return _this.mutationChecker(observer); }, this._period); | |
} | |
}; | |
MutationObserver.prototype.mutationChecker = function (observer) { | |
// allow scheduling a new timer. | |
observer._timeout = null; | |
var mutations = observer.takeRecords(); | |
if (mutations.length) { | |
// calling the listener with context is not spec but currently consistent with FF and WebKit | |
observer._listener(mutations, observer); | |
} | |
}; | |
MutationObserver.prototype.searchSubtree = function (mutations, $target, $oldstate, config) { | |
var _this = this; | |
// Track if the tree is dirty and has to be recomputed (#14). | |
var dirty; | |
/* | |
* Helper to identify node rearrangment and stuff... | |
* There is no gaurentee that the same node will be identified for both added and removed nodes | |
* if the positions have been shuffled. | |
* conflicts array will be emptied by end of operation | |
*/ | |
var _resolveConflicts = function (conflicts, node, $kids, $oldkids, numAddedNodes) { | |
// the distance between the first conflicting node and the last | |
var distance = conflicts.length - 1; | |
// prevents same conflict being resolved twice consider when two nodes switch places. | |
// only one should be given a mutation event (note -~ is used as a math.ceil shorthand) | |
var counter = -~((distance - numAddedNodes) / 2); | |
var $cur; | |
var oldstruct; | |
var conflict; | |
while ((conflict = conflicts.pop())) { | |
$cur = $kids[conflict.i]; | |
oldstruct = $oldkids[conflict.j]; | |
// attempt to determine if there was node rearrangement... won't gaurentee all matches | |
// also handles case where added/removed nodes cause nodes to be identified as conflicts | |
if (config.kids && counter && Math.abs(conflict.i - conflict.j) >= distance) { | |
mutations.push(new MutationRecord({ | |
type: 'childList', | |
target: node, | |
addedNodes: [$cur], | |
removedNodes: [$cur], | |
// haha don't rely on this please | |
nextSibling: $cur.nextSibling, | |
previousSibling: $cur.previousSibling | |
})); | |
counter--; // found conflict | |
} | |
// Alright we found the resorted nodes now check for other types of mutations | |
if (config.attr && oldstruct.attr) | |
_this.findAttributeMutations(mutations, $cur, oldstruct.attr, config.afilter); | |
if (config.charData && $cur.nodeType === 3 && $cur.nodeValue !== oldstruct.charData) { | |
mutations.push(new MutationRecord({ | |
type: 'characterData', | |
target: $cur, | |
oldValue: oldstruct.charData | |
})); | |
} | |
// now look @ subtree | |
if (config.descendents) | |
_findMutations($cur, oldstruct); | |
} | |
}; | |
/** | |
* Main worker. Finds and adds mutations if there are any | |
* @param {Node} node | |
* @param {!Object} old : A cloned data structure using internal clone | |
*/ | |
var _findMutations = function (node, old) { | |
var $kids = node.childNodes; | |
var $oldkids = old.kids; | |
var klen = $kids.length; | |
// $oldkids will be undefined for text and comment nodes | |
var olen = $oldkids ? $oldkids.length : 0; | |
// if (!olen && !klen) return; // both empty; clearly no changes | |
// we delay the intialization of these for marginal performance in the expected case (actually quite signficant on large subtrees when these would be otherwise unused) | |
// map of checked element of ids to prevent registering the same conflict twice | |
var map; | |
// array of potential conflicts (ie nodes that may have been re arranged) | |
var conflicts; | |
var id; // element id from getElementId helper | |
var idx; // index of a moved or inserted element | |
var oldstruct; | |
// current and old nodes | |
var $cur; | |
var $old; | |
// track the number of added nodes so we can resolve conflicts more accurately | |
var numAddedNodes = 0; | |
// iterate over both old and current child nodes at the same time | |
var i = 0; | |
var j = 0; | |
// while there is still anything left in $kids or $oldkids (same as i < $kids.length || j < $oldkids.length;) | |
while (i < klen || j < olen) { | |
// current and old nodes at the indexs | |
$cur = $kids[i]; | |
oldstruct = $oldkids[j]; | |
$old = oldstruct && oldstruct.node; | |
if ($cur === $old) { | |
// check attributes as specified by config | |
if (config.attr && oldstruct.attr) { | |
_this.findAttributeMutations(mutations, $cur, oldstruct.attr, config.afilter); | |
} | |
// check character data if node is a comment or textNode and it's being observed | |
if (config.charData && oldstruct.charData !== undefined && $cur.nodeValue !== oldstruct.charData) { | |
mutations.push(new MutationRecord({ | |
type: 'characterData', | |
target: $cur | |
})); | |
} | |
// resolve conflicts; it will be undefined if there are no conflicts - otherwise an array | |
if (conflicts) | |
_resolveConflicts(conflicts, node, $kids, $oldkids, numAddedNodes); | |
// recurse on next level of children. Avoids the recursive call when there are no children left to iterate | |
if (config.descendents && ($cur.childNodes.length || oldstruct.kids && oldstruct.kids.length)) | |
_findMutations($cur, oldstruct); | |
i++; | |
j++; | |
} | |
else { | |
dirty = true; | |
if (!map) { | |
map = {}; | |
conflicts = []; | |
} | |
if ($cur) { | |
// check id is in the location map otherwise do a indexOf search | |
if (!(map[id = Util.getElementId($cur)])) { | |
// mark id as found | |
map[id] = true; | |
// custom indexOf using comparitor checking oldkids[i].node === $cur | |
if ((idx = Util.indexOfCustomNode($oldkids, $cur, j)) === -1) { | |
if (config.kids) { | |
mutations.push(new MutationRecord({ | |
type: 'childList', | |
target: node, | |
addedNodes: [$cur], | |
nextSibling: $cur.nextSibling, | |
previousSibling: $cur.previousSibling | |
})); | |
numAddedNodes++; | |
} | |
} | |
else { | |
conflicts.push({ | |
i: i, | |
j: idx | |
}); | |
} | |
} | |
i++; | |
} | |
if ($old && | |
// special case: the changes may have been resolved: i and j appear congurent so we can continue using the expected case | |
$old !== $kids[i]) { | |
if (!(map[id = Util.getElementId($old)])) { | |
map[id] = true; | |
if ((idx = Util.indexOf($kids, $old, i)) === -1) { | |
if (config.kids) { | |
mutations.push(new MutationRecord({ | |
type: 'childList', | |
target: old.node, | |
removedNodes: [$old], | |
nextSibling: $oldkids[j + 1], | |
previousSibling: $oldkids[j - 1] | |
})); | |
numAddedNodes--; | |
} | |
} | |
else { | |
conflicts.push({ | |
i: idx, | |
j: j | |
}); | |
} | |
} | |
j++; | |
} | |
} // end uncommon case | |
} // end loop | |
// resolve any remaining conflicts | |
if (conflicts) | |
_resolveConflicts(conflicts, node, $kids, $oldkids, numAddedNodes); | |
}; | |
_findMutations($target, $oldstate); | |
return dirty; | |
}; | |
MutationObserver.prototype.findAttributeMutations = function (mutations, $target, $oldstate, filter) { | |
var checked = {}; | |
var attributes = $target.attributes; | |
var attr; | |
var name; | |
var i = attributes.length; | |
while (i--) { | |
attr = attributes[i]; | |
name = attr.name; | |
if (!filter || Util.has(filter, name)) { | |
if (attr.value !== $oldstate[name]) { | |
// The pushing is redundant but gzips very nicely | |
mutations.push(new MutationRecord({ | |
type: 'attributes', | |
target: $target, | |
attributeName: name, | |
oldValue: $oldstate[name], | |
attributeNamespace: attr.namespaceURI // in ie<8 it incorrectly will return undefined | |
})); | |
} | |
checked[name] = true; | |
} | |
} | |
for (name in $oldstate) { | |
if (!(checked[name])) { | |
mutations.push(new MutationRecord({ | |
target: $target, | |
type: 'attributes', | |
attributeName: name, | |
oldValue: $oldstate[name] | |
})); | |
} | |
} | |
}; | |
return MutationObserver; | |
}()); | |
exports.MutationObserver = MutationObserver; | |
var MutationRecord = /** @class */ (function () { | |
function MutationRecord(data) { | |
var settings = { | |
type: null, | |
target: null, | |
addedNodes: [], | |
removedNodes: [], | |
previousSibling: null, | |
nextSibling: null, | |
attributeName: null, | |
attributeNamespace: null, | |
oldValue: null | |
}; | |
for (var prop in data) { | |
if (Util.has(settings, prop) && data[prop] !== undefined) | |
settings[prop] = data[prop]; | |
} | |
return settings; | |
} | |
return MutationRecord; | |
}()); | |
exports.MutationRecord = MutationRecord; | |
var MutationNotifier = /** @class */ (function (_super) { | |
__extends(MutationNotifier, _super); | |
function MutationNotifier() { | |
var _this = _super.call(this) || this; | |
_this.setMaxListeners(100); | |
return _this; | |
} | |
MutationNotifier.getInstance = function () { | |
if (!MutationNotifier._instance) { | |
MutationNotifier._instance = new MutationNotifier(); | |
} | |
return MutationNotifier._instance; | |
}; | |
MutationNotifier.prototype.destruct = function () { | |
this.removeAllListeners("changed"); | |
}; | |
MutationNotifier.prototype.notifyChanged = function (node) { | |
this.emit("changed", node); | |
}; | |
MutationNotifier._instance = null; | |
return MutationNotifier; | |
}(events.EventEmitter)); | |
exports.MutationNotifier = MutationNotifier; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "mobiledoc-parser", | |
"version": "1.0.0", | |
"lockfileVersion": 1, | |
"requires": true, | |
"dependencies": { | |
"JSONStream": { | |
"version": "1.3.3", | |
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.3.tgz", | |
"integrity": "sha512-3Sp6WZZ/lXl+nTDoGpGWHEpTnnC6X5fnkolYZR6nwIfzbxxvA8utPWe1gCt7i0m9uVGsSz2IS8K8mJ7HmlduMg==", | |
"requires": { | |
"jsonparse": "^1.2.0", | |
"through": ">=2.2.7 <3" | |
} | |
}, | |
"abab": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", | |
"integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" | |
}, | |
"acorn": { | |
"version": "5.7.1", | |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", | |
"integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" | |
}, | |
"acorn-dynamic-import": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", | |
"integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", | |
"requires": { | |
"acorn": "^5.0.0" | |
} | |
}, | |
"acorn-globals": { | |
"version": "4.1.0", | |
"resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", | |
"integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", | |
"requires": { | |
"acorn": "^5.0.0" | |
} | |
}, | |
"acorn-node": { | |
"version": "1.5.2", | |
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz", | |
"integrity": "sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==", | |
"requires": { | |
"acorn": "^5.7.1", | |
"acorn-dynamic-import": "^3.0.0", | |
"xtend": "^4.0.1" | |
} | |
}, | |
"ajv": { | |
"version": "5.5.2", | |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", | |
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", | |
"requires": { | |
"co": "^4.6.0", | |
"fast-deep-equal": "^1.0.0", | |
"fast-json-stable-stringify": "^2.0.0", | |
"json-schema-traverse": "^0.3.0" | |
} | |
}, | |
"ansi-regex": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", | |
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" | |
}, | |
"ansi-styles": { | |
"version": "2.2.1", | |
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", | |
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" | |
}, | |
"anymatch": { | |
"version": "1.3.2", | |
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", | |
"integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"micromatch": "^2.1.5", | |
"normalize-path": "^2.0.0" | |
} | |
}, | |
"arr-diff": { | |
"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": "^1.0.1" | |
} | |
}, | |
"arr-flatten": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", | |
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", | |
"dev": true, | |
"optional": true | |
}, | |
"array-equal": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", | |
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" | |
}, | |
"array-filter": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", | |
"integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" | |
}, | |
"array-map": { | |
"version": "0.0.0", | |
"resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", | |
"integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" | |
}, | |
"array-reduce": { | |
"version": "0.0.0", | |
"resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", | |
"integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" | |
}, | |
"array-unique": { | |
"version": "0.2.1", | |
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", | |
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", | |
"dev": true, | |
"optional": true | |
}, | |
"asn1": { | |
"version": "0.2.3", | |
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", | |
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" | |
}, | |
"asn1.js": { | |
"version": "4.10.1", | |
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", | |
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", | |
"requires": { | |
"bn.js": "^4.0.0", | |
"inherits": "^2.0.1", | |
"minimalistic-assert": "^1.0.0" | |
} | |
}, | |
"assert": { | |
"version": "1.4.1", | |
"resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", | |
"integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", | |
"requires": { | |
"util": "0.10.3" | |
}, | |
"dependencies": { | |
"inherits": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", | |
"integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" | |
}, | |
"util": { | |
"version": "0.10.3", | |
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", | |
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", | |
"requires": { | |
"inherits": "2.0.1" | |
} | |
} | |
} | |
}, | |
"assert-plus": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | |
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" | |
}, | |
"async-each": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", | |
"integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", | |
"dev": true, | |
"optional": true | |
}, | |
"async-limiter": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", | |
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" | |
}, | |
"asynckit": { | |
"version": "0.4.0", | |
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | |
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | |
}, | |
"aws-sign2": { | |
"version": "0.7.0", | |
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", | |
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" | |
}, | |
"aws4": { | |
"version": "1.7.0", | |
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", | |
"integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" | |
}, | |
"babel-cli": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", | |
"integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", | |
"dev": true, | |
"requires": { | |
"babel-core": "^6.26.0", | |
"babel-polyfill": "^6.26.0", | |
"babel-register": "^6.26.0", | |
"babel-runtime": "^6.26.0", | |
"chokidar": "^1.6.1", | |
"commander": "^2.11.0", | |
"convert-source-map": "^1.5.0", | |
"fs-readdir-recursive": "^1.0.0", | |
"glob": "^7.1.2", | |
"lodash": "^4.17.4", | |
"output-file-sync": "^1.1.2", | |
"path-is-absolute": "^1.0.1", | |
"slash": "^1.0.0", | |
"source-map": "^0.5.6", | |
"v8flags": "^2.1.1" | |
}, | |
"dependencies": { | |
"convert-source-map": { | |
"version": "1.5.1", | |
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", | |
"integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", | |
"dev": true | |
} | |
} | |
}, | |
"babel-code-frame": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", | |
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", | |
"requires": { | |
"chalk": "^1.1.3", | |
"esutils": "^2.0.2", | |
"js-tokens": "^3.0.2" | |
} | |
}, | |
"babel-core": { | |
"version": "6.26.3", | |
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", | |
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", | |
"dev": true, | |
"requires": { | |
"babel-code-frame": "^6.26.0", | |
"babel-generator": "^6.26.0", | |
"babel-helpers": "^6.24.1", | |
"babel-messages": "^6.23.0", | |
"babel-register": "^6.26.0", | |
"babel-runtime": "^6.26.0", | |
"babel-template": "^6.26.0", | |
"babel-traverse": "^6.26.0", | |
"babel-types": "^6.26.0", | |
"babylon": "^6.18.0", | |
"convert-source-map": "^1.5.1", | |
"debug": "^2.6.9", | |
"json5": "^0.5.1", | |
"lodash": "^4.17.4", | |
"minimatch": "^3.0.4", | |
"path-is-absolute": "^1.0.1", | |
"private": "^0.1.8", | |
"slash": "^1.0.0", | |
"source-map": "^0.5.7" | |
}, | |
"dependencies": { | |
"convert-source-map": { | |
"version": "1.5.1", | |
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", | |
"integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", | |
"dev": true | |
} | |
} | |
}, | |
"babel-generator": { | |
"version": "6.26.1", | |
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", | |
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", | |
"dev": true, | |
"requires": { | |
"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-helper-bindify-decorators": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", | |
"integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", | |
"dev": true, | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-builder-binary-assignment-operator-visitor": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", | |
"integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", | |
"requires": { | |
"babel-helper-explode-assignable-expression": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-call-delegate": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", | |
"integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", | |
"requires": { | |
"babel-helper-hoist-variables": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-define-map": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", | |
"integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", | |
"requires": { | |
"babel-helper-function-name": "^6.24.1", | |
"babel-runtime": "^6.26.0", | |
"babel-types": "^6.26.0", | |
"lodash": "^4.17.4" | |
} | |
}, | |
"babel-helper-explode-assignable-expression": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", | |
"integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-explode-class": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", | |
"integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", | |
"dev": true, | |
"requires": { | |
"babel-helper-bindify-decorators": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-function-name": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", | |
"integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", | |
"requires": { | |
"babel-helper-get-function-arity": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-get-function-arity": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", | |
"integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-hoist-variables": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", | |
"integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-optimise-call-expression": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", | |
"integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-regex": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", | |
"integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", | |
"requires": { | |
"babel-runtime": "^6.26.0", | |
"babel-types": "^6.26.0", | |
"lodash": "^4.17.4" | |
} | |
}, | |
"babel-helper-remap-async-to-generator": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", | |
"integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", | |
"requires": { | |
"babel-helper-function-name": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helper-replace-supers": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", | |
"integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", | |
"requires": { | |
"babel-helper-optimise-call-expression": "^6.24.1", | |
"babel-messages": "^6.23.0", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-helpers": { | |
"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": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-messages": { | |
"version": "6.23.0", | |
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", | |
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-check-es2015-constants": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", | |
"integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-syntax-async-functions": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", | |
"integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" | |
}, | |
"babel-plugin-syntax-async-generators": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", | |
"integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", | |
"dev": true | |
}, | |
"babel-plugin-syntax-class-properties": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", | |
"integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", | |
"dev": true | |
}, | |
"babel-plugin-syntax-decorators": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", | |
"integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", | |
"dev": true | |
}, | |
"babel-plugin-syntax-dynamic-import": { | |
"version": "6.18.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", | |
"integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", | |
"dev": true | |
}, | |
"babel-plugin-syntax-exponentiation-operator": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", | |
"integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" | |
}, | |
"babel-plugin-syntax-object-rest-spread": { | |
"version": "6.13.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", | |
"integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", | |
"dev": true | |
}, | |
"babel-plugin-syntax-trailing-function-commas": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", | |
"integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" | |
}, | |
"babel-plugin-transform-async-generator-functions": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", | |
"integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", | |
"dev": true, | |
"requires": { | |
"babel-helper-remap-async-to-generator": "^6.24.1", | |
"babel-plugin-syntax-async-generators": "^6.5.0", | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-async-to-generator": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", | |
"integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", | |
"requires": { | |
"babel-helper-remap-async-to-generator": "^6.24.1", | |
"babel-plugin-syntax-async-functions": "^6.8.0", | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-class-properties": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", | |
"integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", | |
"dev": true, | |
"requires": { | |
"babel-helper-function-name": "^6.24.1", | |
"babel-plugin-syntax-class-properties": "^6.8.0", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-decorators": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", | |
"integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", | |
"dev": true, | |
"requires": { | |
"babel-helper-explode-class": "^6.24.1", | |
"babel-plugin-syntax-decorators": "^6.13.0", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-arrow-functions": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", | |
"integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-block-scoped-functions": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", | |
"integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-block-scoping": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", | |
"integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", | |
"requires": { | |
"babel-runtime": "^6.26.0", | |
"babel-template": "^6.26.0", | |
"babel-traverse": "^6.26.0", | |
"babel-types": "^6.26.0", | |
"lodash": "^4.17.4" | |
} | |
}, | |
"babel-plugin-transform-es2015-classes": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", | |
"integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", | |
"requires": { | |
"babel-helper-define-map": "^6.24.1", | |
"babel-helper-function-name": "^6.24.1", | |
"babel-helper-optimise-call-expression": "^6.24.1", | |
"babel-helper-replace-supers": "^6.24.1", | |
"babel-messages": "^6.23.0", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-computed-properties": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", | |
"integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-destructuring": { | |
"version": "6.23.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", | |
"integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-duplicate-keys": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", | |
"integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-for-of": { | |
"version": "6.23.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", | |
"integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-function-name": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", | |
"integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", | |
"requires": { | |
"babel-helper-function-name": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-literals": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", | |
"integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-modules-amd": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", | |
"integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", | |
"requires": { | |
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-modules-commonjs": { | |
"version": "6.26.2", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", | |
"integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", | |
"requires": { | |
"babel-plugin-transform-strict-mode": "^6.24.1", | |
"babel-runtime": "^6.26.0", | |
"babel-template": "^6.26.0", | |
"babel-types": "^6.26.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-modules-systemjs": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", | |
"integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", | |
"requires": { | |
"babel-helper-hoist-variables": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-modules-umd": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", | |
"integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", | |
"requires": { | |
"babel-plugin-transform-es2015-modules-amd": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-object-super": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", | |
"integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", | |
"requires": { | |
"babel-helper-replace-supers": "^6.24.1", | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-parameters": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", | |
"integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", | |
"requires": { | |
"babel-helper-call-delegate": "^6.24.1", | |
"babel-helper-get-function-arity": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-template": "^6.24.1", | |
"babel-traverse": "^6.24.1", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-shorthand-properties": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", | |
"integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-spread": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", | |
"integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-sticky-regex": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", | |
"integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", | |
"requires": { | |
"babel-helper-regex": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-plugin-transform-es2015-template-literals": { | |
"version": "6.22.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", | |
"integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-typeof-symbol": { | |
"version": "6.23.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", | |
"integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", | |
"requires": { | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-es2015-unicode-regex": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", | |
"integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", | |
"requires": { | |
"babel-helper-regex": "^6.24.1", | |
"babel-runtime": "^6.22.0", | |
"regexpu-core": "^2.0.0" | |
} | |
}, | |
"babel-plugin-transform-exponentiation-operator": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", | |
"integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", | |
"requires": { | |
"babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", | |
"babel-plugin-syntax-exponentiation-operator": "^6.8.0", | |
"babel-runtime": "^6.22.0" | |
} | |
}, | |
"babel-plugin-transform-object-rest-spread": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", | |
"integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", | |
"dev": true, | |
"requires": { | |
"babel-plugin-syntax-object-rest-spread": "^6.8.0", | |
"babel-runtime": "^6.26.0" | |
} | |
}, | |
"babel-plugin-transform-regenerator": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", | |
"integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", | |
"requires": { | |
"regenerator-transform": "^0.10.0" | |
} | |
}, | |
"babel-plugin-transform-strict-mode": { | |
"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=", | |
"requires": { | |
"babel-runtime": "^6.22.0", | |
"babel-types": "^6.24.1" | |
} | |
}, | |
"babel-polyfill": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", | |
"integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", | |
"dev": true, | |
"requires": { | |
"babel-runtime": "^6.26.0", | |
"core-js": "^2.5.0", | |
"regenerator-runtime": "^0.10.5" | |
}, | |
"dependencies": { | |
"regenerator-runtime": { | |
"version": "0.10.5", | |
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", | |
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", | |
"dev": true | |
} | |
} | |
}, | |
"babel-preset-env": { | |
"version": "1.7.0", | |
"resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", | |
"integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", | |
"requires": { | |
"babel-plugin-check-es2015-constants": "^6.22.0", | |
"babel-plugin-syntax-trailing-function-commas": "^6.22.0", | |
"babel-plugin-transform-async-to-generator": "^6.22.0", | |
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0", | |
"babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", | |
"babel-plugin-transform-es2015-block-scoping": "^6.23.0", | |
"babel-plugin-transform-es2015-classes": "^6.23.0", | |
"babel-plugin-transform-es2015-computed-properties": "^6.22.0", | |
"babel-plugin-transform-es2015-destructuring": "^6.23.0", | |
"babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", | |
"babel-plugin-transform-es2015-for-of": "^6.23.0", | |
"babel-plugin-transform-es2015-function-name": "^6.22.0", | |
"babel-plugin-transform-es2015-literals": "^6.22.0", | |
"babel-plugin-transform-es2015-modules-amd": "^6.22.0", | |
"babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", | |
"babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", | |
"babel-plugin-transform-es2015-modules-umd": "^6.23.0", | |
"babel-plugin-transform-es2015-object-super": "^6.22.0", | |
"babel-plugin-transform-es2015-parameters": "^6.23.0", | |
"babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", | |
"babel-plugin-transform-es2015-spread": "^6.22.0", | |
"babel-plugin-transform-es2015-sticky-regex": "^6.22.0", | |
"babel-plugin-transform-es2015-template-literals": "^6.22.0", | |
"babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", | |
"babel-plugin-transform-es2015-unicode-regex": "^6.22.0", | |
"babel-plugin-transform-exponentiation-operator": "^6.22.0", | |
"babel-plugin-transform-regenerator": "^6.22.0", | |
"browserslist": "^3.2.6", | |
"invariant": "^2.2.2", | |
"semver": "^5.3.0" | |
} | |
}, | |
"babel-preset-es2015": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", | |
"integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", | |
"dev": true, | |
"requires": { | |
"babel-plugin-check-es2015-constants": "^6.22.0", | |
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0", | |
"babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", | |
"babel-plugin-transform-es2015-block-scoping": "^6.24.1", | |
"babel-plugin-transform-es2015-classes": "^6.24.1", | |
"babel-plugin-transform-es2015-computed-properties": "^6.24.1", | |
"babel-plugin-transform-es2015-destructuring": "^6.22.0", | |
"babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", | |
"babel-plugin-transform-es2015-for-of": "^6.22.0", | |
"babel-plugin-transform-es2015-function-name": "^6.24.1", | |
"babel-plugin-transform-es2015-literals": "^6.22.0", | |
"babel-plugin-transform-es2015-modules-amd": "^6.24.1", | |
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", | |
"babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", | |
"babel-plugin-transform-es2015-modules-umd": "^6.24.1", | |
"babel-plugin-transform-es2015-object-super": "^6.24.1", | |
"babel-plugin-transform-es2015-parameters": "^6.24.1", | |
"babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", | |
"babel-plugin-transform-es2015-spread": "^6.22.0", | |
"babel-plugin-transform-es2015-sticky-regex": "^6.24.1", | |
"babel-plugin-transform-es2015-template-literals": "^6.22.0", | |
"babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", | |
"babel-plugin-transform-es2015-unicode-regex": "^6.24.1", | |
"babel-plugin-transform-regenerator": "^6.24.1" | |
} | |
}, | |
"babel-preset-stage-2": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", | |
"integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", | |
"dev": true, | |
"requires": { | |
"babel-plugin-syntax-dynamic-import": "^6.18.0", | |
"babel-plugin-transform-class-properties": "^6.24.1", | |
"babel-plugin-transform-decorators": "^6.24.1", | |
"babel-preset-stage-3": "^6.24.1" | |
} | |
}, | |
"babel-preset-stage-3": { | |
"version": "6.24.1", | |
"resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", | |
"integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", | |
"dev": true, | |
"requires": { | |
"babel-plugin-syntax-trailing-function-commas": "^6.22.0", | |
"babel-plugin-transform-async-generator-functions": "^6.24.1", | |
"babel-plugin-transform-async-to-generator": "^6.24.1", | |
"babel-plugin-transform-exponentiation-operator": "^6.24.1", | |
"babel-plugin-transform-object-rest-spread": "^6.22.0" | |
} | |
}, | |
"babel-register": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", | |
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", | |
"dev": true, | |
"requires": { | |
"babel-core": "^6.26.0", | |
"babel-runtime": "^6.26.0", | |
"core-js": "^2.5.0", | |
"home-or-tmp": "^2.0.0", | |
"lodash": "^4.17.4", | |
"mkdirp": "^0.5.1", | |
"source-map-support": "^0.4.15" | |
} | |
}, | |
"babel-runtime": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", | |
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", | |
"requires": { | |
"core-js": "^2.4.0", | |
"regenerator-runtime": "^0.11.0" | |
} | |
}, | |
"babel-template": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", | |
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", | |
"requires": { | |
"babel-runtime": "^6.26.0", | |
"babel-traverse": "^6.26.0", | |
"babel-types": "^6.26.0", | |
"babylon": "^6.18.0", | |
"lodash": "^4.17.4" | |
} | |
}, | |
"babel-traverse": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", | |
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", | |
"requires": { | |
"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": { | |
"version": "6.26.0", | |
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", | |
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", | |
"requires": { | |
"babel-runtime": "^6.26.0", | |
"esutils": "^2.0.2", | |
"lodash": "^4.17.4", | |
"to-fast-properties": "^1.0.3" | |
} | |
}, | |
"babelify": { | |
"version": "8.0.0", | |
"resolved": "https://registry.npmjs.org/babelify/-/babelify-8.0.0.tgz", | |
"integrity": "sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw==" | |
}, | |
"babylon": { | |
"version": "6.18.0", | |
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", | |
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" | |
}, | |
"balanced-match": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | |
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" | |
}, | |
"base64-js": { | |
"version": "1.3.0", | |
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", | |
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" | |
}, | |
"bcrypt-pbkdf": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | |
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", | |
"optional": true, | |
"requires": { | |
"tweetnacl": "^0.14.3" | |
} | |
}, | |
"binary-extensions": { | |
"version": "1.11.0", | |
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", | |
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", | |
"dev": true, | |
"optional": true | |
}, | |
"bluestream": { | |
"version": "9.0.0", | |
"resolved": "https://registry.npmjs.org/bluestream/-/bluestream-9.0.0.tgz", | |
"integrity": "sha512-6YvtObXLQZC8dkfuJYu5BYYc6nuGLSoc7d7GQ1L/PJeMBNXE8XqEPPAfPttLSKEoq9lKXdVDOfkJXe9tFeKrLQ==" | |
}, | |
"bn.js": { | |
"version": "4.11.8", | |
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", | |
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" | |
}, | |
"brace-expansion": { | |
"version": "1.1.11", | |
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | |
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | |
"requires": { | |
"balanced-match": "^1.0.0", | |
"concat-map": "0.0.1" | |
} | |
}, | |
"braces": { | |
"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": "^1.8.1", | |
"preserve": "^0.2.0", | |
"repeat-element": "^1.1.2" | |
} | |
}, | |
"brorand": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", | |
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" | |
}, | |
"browser-pack": { | |
"version": "6.1.0", | |
"resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", | |
"integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", | |
"requires": { | |
"JSONStream": "^1.0.3", | |
"combine-source-map": "~0.8.0", | |
"defined": "^1.0.0", | |
"safe-buffer": "^5.1.1", | |
"through2": "^2.0.0", | |
"umd": "^3.0.0" | |
} | |
}, | |
"browser-process-hrtime": { | |
"version": "0.1.2", | |
"resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", | |
"integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=" | |
}, | |
"browser-resolve": { | |
"version": "1.11.3", | |
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", | |
"integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", | |
"requires": { | |
"resolve": "1.1.7" | |
}, | |
"dependencies": { | |
"resolve": { | |
"version": "1.1.7", | |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", | |
"integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" | |
} | |
} | |
}, | |
"browserify": { | |
"version": "16.2.2", | |
"resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.2.tgz", | |
"integrity": "sha512-fMES05wq1Oukts6ksGUU2TMVHHp06LyQt0SIwbXIHm7waSrQmNBZePsU0iM/4f94zbvb/wHma+D1YrdzWYnF/A==", | |
"requires": { | |
"JSONStream": "^1.0.3", | |
"assert": "^1.4.0", | |
"browser-pack": "^6.0.1", | |
"browser-resolve": "^1.11.0", | |
"browserify-zlib": "~0.2.0", | |
"buffer": "^5.0.2", | |
"cached-path-relative": "^1.0.0", | |
"concat-stream": "^1.6.0", | |
"console-browserify": "^1.1.0", | |
"constants-browserify": "~1.0.0", | |
"crypto-browserify": "^3.0.0", | |
"defined": "^1.0.0", | |
"deps-sort": "^2.0.0", | |
"domain-browser": "^1.2.0", | |
"duplexer2": "~0.1.2", | |
"events": "^2.0.0", | |
"glob": "^7.1.0", | |
"has": "^1.0.0", | |
"htmlescape": "^1.1.0", | |
"https-browserify": "^1.0.0", | |
"inherits": "~2.0.1", | |
"insert-module-globals": "^7.0.0", | |
"labeled-stream-splicer": "^2.0.0", | |
"mkdirp": "^0.5.0", | |
"module-deps": "^6.0.0", | |
"os-browserify": "~0.3.0", | |
"parents": "^1.0.1", | |
"path-browserify": "~0.0.0", | |
"process": "~0.11.0", | |
"punycode": "^1.3.2", | |
"querystring-es3": "~0.2.0", | |
"read-only-stream": "^2.0.0", | |
"readable-stream": "^2.0.2", | |
"resolve": "^1.1.4", | |
"shasum": "^1.0.0", | |
"shell-quote": "^1.6.1", | |
"stream-browserify": "^2.0.0", | |
"stream-http": "^2.0.0", | |
"string_decoder": "^1.1.1", | |
"subarg": "^1.0.0", | |
"syntax-error": "^1.1.1", | |
"through2": "^2.0.0", | |
"timers-browserify": "^1.0.1", | |
"tty-browserify": "0.0.1", | |
"url": "~0.11.0", | |
"util": "~0.10.1", | |
"vm-browserify": "^1.0.0", | |
"xtend": "^4.0.0" | |
} | |
}, | |
"browserify-aes": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", | |
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", | |
"requires": { | |
"buffer-xor": "^1.0.3", | |
"cipher-base": "^1.0.0", | |
"create-hash": "^1.1.0", | |
"evp_bytestokey": "^1.0.3", | |
"inherits": "^2.0.1", | |
"safe-buffer": "^5.0.1" | |
} | |
}, | |
"browserify-cipher": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", | |
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", | |
"requires": { | |
"browserify-aes": "^1.0.4", | |
"browserify-des": "^1.0.0", | |
"evp_bytestokey": "^1.0.0" | |
} | |
}, | |
"browserify-des": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", | |
"integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", | |
"requires": { | |
"cipher-base": "^1.0.1", | |
"des.js": "^1.0.0", | |
"inherits": "^2.0.1" | |
} | |
}, | |
"browserify-rsa": { | |
"version": "4.0.1", | |
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", | |
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", | |
"requires": { | |
"bn.js": "^4.1.0", | |
"randombytes": "^2.0.1" | |
} | |
}, | |
"browserify-sign": { | |
"version": "4.0.4", | |
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", | |
"integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", | |
"requires": { | |
"bn.js": "^4.1.1", | |
"browserify-rsa": "^4.0.0", | |
"create-hash": "^1.1.0", | |
"create-hmac": "^1.1.2", | |
"elliptic": "^6.0.0", | |
"inherits": "^2.0.1", | |
"parse-asn1": "^5.0.0" | |
} | |
}, | |
"browserify-zlib": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", | |
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", | |
"requires": { | |
"pako": "~1.0.5" | |
} | |
}, | |
"browserslist": { | |
"version": "3.2.8", | |
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", | |
"integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", | |
"requires": { | |
"caniuse-lite": "^1.0.30000844", | |
"electron-to-chromium": "^1.3.47" | |
} | |
}, | |
"buffer": { | |
"version": "5.1.0", | |
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz", | |
"integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==", | |
"requires": { | |
"base64-js": "^1.0.2", | |
"ieee754": "^1.1.4" | |
} | |
}, | |
"buffer-from": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", | |
"integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" | |
}, | |
"buffer-xor": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", | |
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" | |
}, | |
"builtin-status-codes": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", | |
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" | |
}, | |
"cached-path-relative": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", | |
"integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=" | |
}, | |
"caniuse-lite": { | |
"version": "1.0.30000861", | |
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000861.tgz", | |
"integrity": "sha512-aeEQ4kyd41qCl8XFbCjWgVBI3EOd66M9sC43MFn0kuD/vcrNqvoIAlKon4xdp8yMCYvVjdCltI3lgArj8I6cNA==" | |
}, | |
"caseless": { | |
"version": "0.12.0", | |
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", | |
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" | |
}, | |
"chalk": { | |
"version": "1.1.3", | |
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", | |
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", | |
"requires": { | |
"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" | |
} | |
}, | |
"chokidar": { | |
"version": "1.7.0", | |
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", | |
"integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"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" | |
} | |
}, | |
"cipher-base": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", | |
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", | |
"requires": { | |
"inherits": "^2.0.1", | |
"safe-buffer": "^5.0.1" | |
} | |
}, | |
"co": { | |
"version": "4.6.0", | |
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", | |
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" | |
}, | |
"combine-source-map": { | |
"version": "0.8.0", | |
"resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", | |
"integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", | |
"requires": { | |
"convert-source-map": "~1.1.0", | |
"inline-source-map": "~0.6.0", | |
"lodash.memoize": "~3.0.3", | |
"source-map": "~0.5.3" | |
} | |
}, | |
"combined-stream": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", | |
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", | |
"requires": { | |
"delayed-stream": "~1.0.0" | |
} | |
}, | |
"commander": { | |
"version": "2.16.0", | |
"resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", | |
"integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", | |
"dev": true | |
}, | |
"concat-map": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | |
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | |
}, | |
"concat-stream": { | |
"version": "1.6.2", | |
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", | |
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", | |
"requires": { | |
"buffer-from": "^1.0.0", | |
"inherits": "^2.0.3", | |
"readable-stream": "^2.2.2", | |
"typedarray": "^0.0.6" | |
} | |
}, | |
"console-browserify": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", | |
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", | |
"requires": { | |
"date-now": "^0.1.4" | |
} | |
}, | |
"constants-browserify": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", | |
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" | |
}, | |
"convert-source-map": { | |
"version": "1.1.3", | |
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", | |
"integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" | |
}, | |
"core-js": { | |
"version": "2.5.7", | |
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", | |
"integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" | |
}, | |
"core-util-is": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | |
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | |
}, | |
"create-ecdh": { | |
"version": "4.0.3", | |
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", | |
"integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", | |
"requires": { | |
"bn.js": "^4.1.0", | |
"elliptic": "^6.0.0" | |
} | |
}, | |
"create-hash": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", | |
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", | |
"requires": { | |
"cipher-base": "^1.0.1", | |
"inherits": "^2.0.1", | |
"md5.js": "^1.3.4", | |
"ripemd160": "^2.0.1", | |
"sha.js": "^2.4.0" | |
} | |
}, | |
"create-hmac": { | |
"version": "1.1.7", | |
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", | |
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", | |
"requires": { | |
"cipher-base": "^1.0.3", | |
"create-hash": "^1.1.0", | |
"inherits": "^2.0.1", | |
"ripemd160": "^2.0.0", | |
"safe-buffer": "^5.0.1", | |
"sha.js": "^2.4.8" | |
} | |
}, | |
"crypto-browserify": { | |
"version": "3.12.0", | |
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", | |
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", | |
"requires": { | |
"browserify-cipher": "^1.0.0", | |
"browserify-sign": "^4.0.0", | |
"create-ecdh": "^4.0.0", | |
"create-hash": "^1.1.0", | |
"create-hmac": "^1.1.0", | |
"diffie-hellman": "^5.0.0", | |
"inherits": "^2.0.1", | |
"pbkdf2": "^3.0.3", | |
"public-encrypt": "^4.0.0", | |
"randombytes": "^2.0.0", | |
"randomfill": "^1.0.3" | |
} | |
}, | |
"cssom": { | |
"version": "0.3.3", | |
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.3.tgz", | |
"integrity": "sha512-pjE/I/NSp3iyeoxXN5QaoJpgzYUMj2dJHx9OSufoTliJLDx+kuOQaMCJW8OwvrKJswhXUHnHN6eUmUSETN0msg==" | |
}, | |
"cssstyle": { | |
"version": "0.3.1", | |
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz", | |
"integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==", | |
"requires": { | |
"cssom": "0.3.x" | |
} | |
}, | |
"dashdash": { | |
"version": "1.14.1", | |
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | |
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", | |
"requires": { | |
"assert-plus": "^1.0.0" | |
} | |
}, | |
"data-urls": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", | |
"integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", | |
"requires": { | |
"abab": "^1.0.4", | |
"whatwg-mimetype": "^2.0.0", | |
"whatwg-url": "^6.4.0" | |
} | |
}, | |
"date-now": { | |
"version": "0.1.4", | |
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", | |
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" | |
}, | |
"debug": { | |
"version": "2.6.9", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | |
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", | |
"requires": { | |
"ms": "2.0.0" | |
} | |
}, | |
"deep-is": { | |
"version": "0.1.3", | |
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", | |
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" | |
}, | |
"defined": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", | |
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" | |
}, | |
"delayed-stream": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | |
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | |
}, | |
"deps-sort": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", | |
"integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", | |
"requires": { | |
"JSONStream": "^1.0.3", | |
"shasum": "^1.0.0", | |
"subarg": "^1.0.0", | |
"through2": "^2.0.0" | |
} | |
}, | |
"des.js": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", | |
"integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", | |
"requires": { | |
"inherits": "^2.0.1", | |
"minimalistic-assert": "^1.0.0" | |
} | |
}, | |
"detect-indent": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", | |
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", | |
"dev": true, | |
"requires": { | |
"repeating": "^2.0.0" | |
} | |
}, | |
"detective": { | |
"version": "5.1.0", | |
"resolved": "https://registry.npmjs.org/detective/-/detective-5.1.0.tgz", | |
"integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==", | |
"requires": { | |
"acorn-node": "^1.3.0", | |
"defined": "^1.0.0", | |
"minimist": "^1.1.1" | |
} | |
}, | |
"diffie-hellman": { | |
"version": "5.0.3", | |
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", | |
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", | |
"requires": { | |
"bn.js": "^4.1.0", | |
"miller-rabin": "^4.0.0", | |
"randombytes": "^2.0.0" | |
} | |
}, | |
"domain-browser": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", | |
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" | |
}, | |
"domexception": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", | |
"integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", | |
"requires": { | |
"webidl-conversions": "^4.0.2" | |
} | |
}, | |
"duplexer2": { | |
"version": "0.1.4", | |
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", | |
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", | |
"requires": { | |
"readable-stream": "^2.0.2" | |
} | |
}, | |
"ecc-jsbn": { | |
"version": "0.1.1", | |
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", | |
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", | |
"optional": true, | |
"requires": { | |
"jsbn": "~0.1.0" | |
} | |
}, | |
"electron-to-chromium": { | |
"version": "1.3.50", | |
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz", | |
"integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=" | |
}, | |
"elliptic": { | |
"version": "6.4.0", | |
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", | |
"integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", | |
"requires": { | |
"bn.js": "^4.4.0", | |
"brorand": "^1.0.1", | |
"hash.js": "^1.0.0", | |
"hmac-drbg": "^1.0.0", | |
"inherits": "^2.0.1", | |
"minimalistic-assert": "^1.0.0", | |
"minimalistic-crypto-utils": "^1.0.0" | |
} | |
}, | |
"escape-string-regexp": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | |
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | |
}, | |
"escodegen": { | |
"version": "1.10.0", | |
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", | |
"integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", | |
"requires": { | |
"esprima": "^3.1.3", | |
"estraverse": "^4.2.0", | |
"esutils": "^2.0.2", | |
"optionator": "^0.8.1", | |
"source-map": "~0.6.1" | |
}, | |
"dependencies": { | |
"source-map": { | |
"version": "0.6.1", | |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | |
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | |
"optional": true | |
} | |
} | |
}, | |
"esprima": { | |
"version": "3.1.3", | |
"resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", | |
"integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" | |
}, | |
"estraverse": { | |
"version": "4.2.0", | |
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", | |
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" | |
}, | |
"esutils": { | |
"version": "2.0.2", | |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", | |
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" | |
}, | |
"events": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", | |
"integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==" | |
}, | |
"evp_bytestokey": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", | |
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", | |
"requires": { | |
"md5.js": "^1.3.4", | |
"safe-buffer": "^5.1.1" | |
} | |
}, | |
"expand-brackets": { | |
"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": "^0.1.0" | |
} | |
}, | |
"expand-range": { | |
"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": "^2.1.0" | |
} | |
}, | |
"extend": { | |
"version": "3.0.1", | |
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", | |
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" | |
}, | |
"extglob": { | |
"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": "^1.0.0" | |
} | |
}, | |
"extsprintf": { | |
"version": "1.3.0", | |
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | |
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" | |
}, | |
"fast-deep-equal": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", | |
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" | |
}, | |
"fast-json-stable-stringify": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", | |
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" | |
}, | |
"fast-levenshtein": { | |
"version": "2.0.6", | |
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", | |
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" | |
}, | |
"filename-regex": { | |
"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": "2.2.4", | |
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", | |
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"is-number": "^2.1.0", | |
"isobject": "^2.0.0", | |
"randomatic": "^3.0.0", | |
"repeat-element": "^1.1.2", | |
"repeat-string": "^1.5.2" | |
} | |
}, | |
"for-in": { | |
"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": "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": "^1.0.1" | |
} | |
}, | |
"forever-agent": { | |
"version": "0.6.1", | |
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | |
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" | |
}, | |
"form-data": { | |
"version": "2.3.2", | |
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", | |
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", | |
"requires": { | |
"asynckit": "^0.4.0", | |
"combined-stream": "1.0.6", | |
"mime-types": "^2.1.12" | |
} | |
}, | |
"fs-readdir-recursive": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", | |
"integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", | |
"dev": true | |
}, | |
"fs.realpath": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | |
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" | |
}, | |
"fsevents": { | |
"version": "1.2.4", | |
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", | |
"integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"nan": "^2.9.2", | |
"node-pre-gyp": "^0.10.0" | |
}, | |
"dependencies": { | |
"abbrev": { | |
"version": "1.1.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"ansi-regex": { | |
"version": "2.1.1", | |
"bundled": true, | |
"dev": true | |
}, | |
"aproba": { | |
"version": "1.2.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"are-we-there-yet": { | |
"version": "1.1.4", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"delegates": "^1.0.0", | |
"readable-stream": "^2.0.6" | |
} | |
}, | |
"balanced-match": { | |
"version": "1.0.0", | |
"bundled": true, | |
"dev": true | |
}, | |
"brace-expansion": { | |
"version": "1.1.11", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"balanced-match": "^1.0.0", | |
"concat-map": "0.0.1" | |
} | |
}, | |
"chownr": { | |
"version": "1.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"code-point-at": { | |
"version": "1.1.0", | |
"bundled": true, | |
"dev": true | |
}, | |
"concat-map": { | |
"version": "0.0.1", | |
"bundled": true, | |
"dev": true | |
}, | |
"console-control-strings": { | |
"version": "1.1.0", | |
"bundled": true, | |
"dev": true | |
}, | |
"core-util-is": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"debug": { | |
"version": "2.6.9", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"ms": "2.0.0" | |
} | |
}, | |
"deep-extend": { | |
"version": "0.5.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"delegates": { | |
"version": "1.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"detect-libc": { | |
"version": "1.0.3", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"fs-minipass": { | |
"version": "1.2.5", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"minipass": "^2.2.1" | |
} | |
}, | |
"fs.realpath": { | |
"version": "1.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"gauge": { | |
"version": "2.7.4", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"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" | |
} | |
}, | |
"glob": { | |
"version": "7.1.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"fs.realpath": "^1.0.0", | |
"inflight": "^1.0.4", | |
"inherits": "2", | |
"minimatch": "^3.0.4", | |
"once": "^1.3.0", | |
"path-is-absolute": "^1.0.0" | |
} | |
}, | |
"has-unicode": { | |
"version": "2.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"iconv-lite": { | |
"version": "0.4.21", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"safer-buffer": "^2.1.0" | |
} | |
}, | |
"ignore-walk": { | |
"version": "3.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"minimatch": "^3.0.4" | |
} | |
}, | |
"inflight": { | |
"version": "1.0.6", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"once": "^1.3.0", | |
"wrappy": "1" | |
} | |
}, | |
"inherits": { | |
"version": "2.0.3", | |
"bundled": true, | |
"dev": true | |
}, | |
"ini": { | |
"version": "1.3.5", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"is-fullwidth-code-point": { | |
"version": "1.0.0", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"number-is-nan": "^1.0.0" | |
} | |
}, | |
"isarray": { | |
"version": "1.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"minimatch": { | |
"version": "3.0.4", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"brace-expansion": "^1.1.7" | |
} | |
}, | |
"minimist": { | |
"version": "0.0.8", | |
"bundled": true, | |
"dev": true | |
}, | |
"minipass": { | |
"version": "2.2.4", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"safe-buffer": "^5.1.1", | |
"yallist": "^3.0.0" | |
} | |
}, | |
"minizlib": { | |
"version": "1.1.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"minipass": "^2.2.1" | |
} | |
}, | |
"mkdirp": { | |
"version": "0.5.1", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"minimist": "0.0.8" | |
} | |
}, | |
"ms": { | |
"version": "2.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"needle": { | |
"version": "2.2.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"debug": "^2.1.2", | |
"iconv-lite": "^0.4.4", | |
"sax": "^1.2.4" | |
} | |
}, | |
"node-pre-gyp": { | |
"version": "0.10.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"detect-libc": "^1.0.2", | |
"mkdirp": "^0.5.1", | |
"needle": "^2.2.0", | |
"nopt": "^4.0.1", | |
"npm-packlist": "^1.1.6", | |
"npmlog": "^4.0.2", | |
"rc": "^1.1.7", | |
"rimraf": "^2.6.1", | |
"semver": "^5.3.0", | |
"tar": "^4" | |
} | |
}, | |
"nopt": { | |
"version": "4.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"abbrev": "1", | |
"osenv": "^0.1.4" | |
} | |
}, | |
"npm-bundled": { | |
"version": "1.0.3", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"npm-packlist": { | |
"version": "1.1.10", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"ignore-walk": "^3.0.1", | |
"npm-bundled": "^1.0.1" | |
} | |
}, | |
"npmlog": { | |
"version": "4.1.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"are-we-there-yet": "~1.1.2", | |
"console-control-strings": "~1.1.0", | |
"gauge": "~2.7.3", | |
"set-blocking": "~2.0.0" | |
} | |
}, | |
"number-is-nan": { | |
"version": "1.0.1", | |
"bundled": true, | |
"dev": true | |
}, | |
"object-assign": { | |
"version": "4.1.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"once": { | |
"version": "1.4.0", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"wrappy": "1" | |
} | |
}, | |
"os-homedir": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"os-tmpdir": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"osenv": { | |
"version": "0.1.5", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"os-homedir": "^1.0.0", | |
"os-tmpdir": "^1.0.0" | |
} | |
}, | |
"path-is-absolute": { | |
"version": "1.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"process-nextick-args": { | |
"version": "2.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"rc": { | |
"version": "1.2.7", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"deep-extend": "^0.5.1", | |
"ini": "~1.3.0", | |
"minimist": "^1.2.0", | |
"strip-json-comments": "~2.0.1" | |
}, | |
"dependencies": { | |
"minimist": { | |
"version": "1.2.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
} | |
} | |
}, | |
"readable-stream": { | |
"version": "2.3.6", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"core-util-is": "~1.0.0", | |
"inherits": "~2.0.3", | |
"isarray": "~1.0.0", | |
"process-nextick-args": "~2.0.0", | |
"safe-buffer": "~5.1.1", | |
"string_decoder": "~1.1.1", | |
"util-deprecate": "~1.0.1" | |
} | |
}, | |
"rimraf": { | |
"version": "2.6.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"glob": "^7.0.5" | |
} | |
}, | |
"safe-buffer": { | |
"version": "5.1.1", | |
"bundled": true, | |
"dev": true | |
}, | |
"safer-buffer": { | |
"version": "2.1.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"sax": { | |
"version": "1.2.4", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"semver": { | |
"version": "5.5.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"set-blocking": { | |
"version": "2.0.0", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"signal-exit": { | |
"version": "3.0.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"string-width": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"code-point-at": "^1.0.0", | |
"is-fullwidth-code-point": "^1.0.0", | |
"strip-ansi": "^3.0.0" | |
} | |
}, | |
"string_decoder": { | |
"version": "1.1.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"safe-buffer": "~5.1.0" | |
} | |
}, | |
"strip-ansi": { | |
"version": "3.0.1", | |
"bundled": true, | |
"dev": true, | |
"requires": { | |
"ansi-regex": "^2.0.0" | |
} | |
}, | |
"strip-json-comments": { | |
"version": "2.0.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"tar": { | |
"version": "4.4.1", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"chownr": "^1.0.1", | |
"fs-minipass": "^1.2.5", | |
"minipass": "^2.2.4", | |
"minizlib": "^1.1.0", | |
"mkdirp": "^0.5.0", | |
"safe-buffer": "^5.1.1", | |
"yallist": "^3.0.2" | |
} | |
}, | |
"util-deprecate": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true | |
}, | |
"wide-align": { | |
"version": "1.1.2", | |
"bundled": true, | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"string-width": "^1.0.2" | |
} | |
}, | |
"wrappy": { | |
"version": "1.0.2", | |
"bundled": true, | |
"dev": true | |
}, | |
"yallist": { | |
"version": "3.0.2", | |
"bundled": true, | |
"dev": true | |
} | |
} | |
}, | |
"function-bind": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | |
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" | |
}, | |
"get-assigned-identifiers": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", | |
"integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" | |
}, | |
"getpass": { | |
"version": "0.1.7", | |
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | |
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", | |
"requires": { | |
"assert-plus": "^1.0.0" | |
} | |
}, | |
"glob": { | |
"version": "7.1.2", | |
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", | |
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", | |
"requires": { | |
"fs.realpath": "^1.0.0", | |
"inflight": "^1.0.4", | |
"inherits": "2", | |
"minimatch": "^3.0.4", | |
"once": "^1.3.0", | |
"path-is-absolute": "^1.0.0" | |
} | |
}, | |
"glob-base": { | |
"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": "^2.0.0", | |
"is-glob": "^2.0.0" | |
} | |
}, | |
"glob-parent": { | |
"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": "^2.0.0" | |
} | |
}, | |
"globals": { | |
"version": "9.18.0", | |
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", | |
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" | |
}, | |
"graceful-fs": { | |
"version": "4.1.11", | |
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", | |
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", | |
"dev": true | |
}, | |
"har-schema": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | |
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" | |
}, | |
"har-validator": { | |
"version": "5.0.3", | |
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", | |
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", | |
"requires": { | |
"ajv": "^5.1.0", | |
"har-schema": "^2.0.0" | |
} | |
}, | |
"has": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | |
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", | |
"requires": { | |
"function-bind": "^1.1.1" | |
} | |
}, | |
"has-ansi": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", | |
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", | |
"requires": { | |
"ansi-regex": "^2.0.0" | |
} | |
}, | |
"hash-base": { | |
"version": "3.0.4", | |
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", | |
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", | |
"requires": { | |
"inherits": "^2.0.1", | |
"safe-buffer": "^5.0.1" | |
} | |
}, | |
"hash.js": { | |
"version": "1.1.4", | |
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.4.tgz", | |
"integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==", | |
"requires": { | |
"inherits": "^2.0.3", | |
"minimalistic-assert": "^1.0.0" | |
} | |
}, | |
"hmac-drbg": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", | |
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", | |
"requires": { | |
"hash.js": "^1.0.3", | |
"minimalistic-assert": "^1.0.0", | |
"minimalistic-crypto-utils": "^1.0.1" | |
} | |
}, | |
"home-or-tmp": { | |
"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": "^1.0.0", | |
"os-tmpdir": "^1.0.1" | |
} | |
}, | |
"html-encoding-sniffer": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", | |
"integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", | |
"requires": { | |
"whatwg-encoding": "^1.0.1" | |
} | |
}, | |
"html-entities": { | |
"version": "1.2.1", | |
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", | |
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" | |
}, | |
"htmlescape": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", | |
"integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" | |
}, | |
"http-signature": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | |
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", | |
"requires": { | |
"assert-plus": "^1.0.0", | |
"jsprim": "^1.2.2", | |
"sshpk": "^1.7.0" | |
} | |
}, | |
"https-browserify": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", | |
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" | |
}, | |
"iconv-lite": { | |
"version": "0.4.19", | |
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", | |
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" | |
}, | |
"ieee754": { | |
"version": "1.1.12", | |
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", | |
"integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" | |
}, | |
"inflight": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | |
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | |
"requires": { | |
"once": "^1.3.0", | |
"wrappy": "1" | |
} | |
}, | |
"inherits": { | |
"version": "2.0.3", | |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | |
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | |
}, | |
"inline-source-map": { | |
"version": "0.6.2", | |
"resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", | |
"integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", | |
"requires": { | |
"source-map": "~0.5.3" | |
} | |
}, | |
"insert-module-globals": { | |
"version": "7.2.0", | |
"resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", | |
"integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", | |
"requires": { | |
"JSONStream": "^1.0.3", | |
"acorn-node": "^1.5.2", | |
"combine-source-map": "^0.8.0", | |
"concat-stream": "^1.6.1", | |
"is-buffer": "^1.1.0", | |
"path-is-absolute": "^1.0.1", | |
"process": "~0.11.0", | |
"through2": "^2.0.0", | |
"undeclared-identifiers": "^1.1.2", | |
"xtend": "^4.0.0" | |
} | |
}, | |
"invariant": { | |
"version": "2.2.4", | |
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", | |
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", | |
"requires": { | |
"loose-envify": "^1.0.0" | |
} | |
}, | |
"is-binary-path": { | |
"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": "^1.0.0" | |
} | |
}, | |
"is-buffer": { | |
"version": "1.1.6", | |
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", | |
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" | |
}, | |
"is-dotfile": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", | |
"integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", | |
"dev": true, | |
"optional": true | |
}, | |
"is-equal-shallow": { | |
"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": "^2.0.0" | |
} | |
}, | |
"is-extendable": { | |
"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": "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": "1.0.2", | |
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", | |
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", | |
"dev": true, | |
"requires": { | |
"number-is-nan": "^1.0.0" | |
} | |
}, | |
"is-glob": { | |
"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": "^1.0.0" | |
} | |
}, | |
"is-number": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", | |
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"kind-of": "^3.0.2" | |
} | |
}, | |
"is-posix-bracket": { | |
"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": "2.0.0", | |
"resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", | |
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", | |
"dev": true, | |
"optional": true | |
}, | |
"is-typedarray": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | |
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" | |
}, | |
"isarray": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | |
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | |
}, | |
"isobject": { | |
"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": "1.0.0" | |
} | |
}, | |
"isstream": { | |
"version": "0.1.2", | |
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | |
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" | |
}, | |
"jquery": { | |
"version": "3.3.1", | |
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", | |
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" | |
}, | |
"js-tokens": { | |
"version": "3.0.2", | |
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", | |
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" | |
}, | |
"jsbn": { | |
"version": "0.1.1", | |
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | |
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", | |
"optional": true | |
}, | |
"jsdom": { | |
"version": "11.11.0", | |
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz", | |
"integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==", | |
"requires": { | |
"abab": "^1.0.4", | |
"acorn": "^5.3.0", | |
"acorn-globals": "^4.1.0", | |
"array-equal": "^1.0.0", | |
"cssom": ">= 0.3.2 < 0.4.0", | |
"cssstyle": ">= 0.3.1 < 0.4.0", | |
"data-urls": "^1.0.0", | |
"domexception": "^1.0.0", | |
"escodegen": "^1.9.0", | |
"html-encoding-sniffer": "^1.0.2", | |
"left-pad": "^1.2.0", | |
"nwsapi": "^2.0.0", | |
"parse5": "4.0.0", | |
"pn": "^1.1.0", | |
"request": "^2.83.0", | |
"request-promise-native": "^1.0.5", | |
"sax": "^1.2.4", | |
"symbol-tree": "^3.2.2", | |
"tough-cookie": "^2.3.3", | |
"w3c-hr-time": "^1.0.1", | |
"webidl-conversions": "^4.0.2", | |
"whatwg-encoding": "^1.0.3", | |
"whatwg-mimetype": "^2.1.0", | |
"whatwg-url": "^6.4.1", | |
"ws": "^4.0.0", | |
"xml-name-validator": "^3.0.0" | |
} | |
}, | |
"jsesc": { | |
"version": "1.3.0", | |
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", | |
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", | |
"dev": true | |
}, | |
"json-schema": { | |
"version": "0.2.3", | |
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", | |
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" | |
}, | |
"json-schema-traverse": { | |
"version": "0.3.1", | |
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", | |
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" | |
}, | |
"json-stable-stringify": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", | |
"integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", | |
"requires": { | |
"jsonify": "~0.0.0" | |
} | |
}, | |
"json-stringify-safe": { | |
"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": "0.5.1", | |
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", | |
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", | |
"dev": true | |
}, | |
"jsonify": { | |
"version": "0.0.0", | |
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", | |
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" | |
}, | |
"jsonparse": { | |
"version": "1.3.1", | |
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", | |
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" | |
}, | |
"jsprim": { | |
"version": "1.4.1", | |
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", | |
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", | |
"requires": { | |
"assert-plus": "1.0.0", | |
"extsprintf": "1.3.0", | |
"json-schema": "0.2.3", | |
"verror": "1.10.0" | |
} | |
}, | |
"kind-of": { | |
"version": "3.2.2", | |
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", | |
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", | |
"dev": true, | |
"requires": { | |
"is-buffer": "^1.1.5" | |
} | |
}, | |
"labeled-stream-splicer": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", | |
"integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", | |
"requires": { | |
"inherits": "^2.0.1", | |
"isarray": "^2.0.4", | |
"stream-splicer": "^2.0.0" | |
}, | |
"dependencies": { | |
"isarray": { | |
"version": "2.0.4", | |
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", | |
"integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==" | |
} | |
} | |
}, | |
"left-pad": { | |
"version": "1.3.0", | |
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", | |
"integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" | |
}, | |
"levn": { | |
"version": "0.3.0", | |
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", | |
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", | |
"requires": { | |
"prelude-ls": "~1.1.2", | |
"type-check": "~0.3.2" | |
} | |
}, | |
"lodash": { | |
"version": "4.17.10", | |
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", | |
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" | |
}, | |
"lodash.memoize": { | |
"version": "3.0.4", | |
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", | |
"integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" | |
}, | |
"lodash.sortby": { | |
"version": "4.7.0", | |
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", | |
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" | |
}, | |
"loose-envify": { | |
"version": "1.3.1", | |
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", | |
"integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", | |
"requires": { | |
"js-tokens": "^3.0.0" | |
} | |
}, | |
"math-random": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", | |
"integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", | |
"dev": true, | |
"optional": true | |
}, | |
"md5.js": { | |
"version": "1.3.4", | |
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", | |
"integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", | |
"requires": { | |
"hash-base": "^3.0.0", | |
"inherits": "^2.0.1" | |
} | |
}, | |
"micromatch": { | |
"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": "^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" | |
} | |
}, | |
"miller-rabin": { | |
"version": "4.0.1", | |
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", | |
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", | |
"requires": { | |
"bn.js": "^4.0.0", | |
"brorand": "^1.0.1" | |
} | |
}, | |
"mime-db": { | |
"version": "1.33.0", | |
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", | |
"integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" | |
}, | |
"mime-types": { | |
"version": "2.1.18", | |
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", | |
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", | |
"requires": { | |
"mime-db": "~1.33.0" | |
} | |
}, | |
"minimalistic-assert": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", | |
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" | |
}, | |
"minimalistic-crypto-utils": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", | |
"integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" | |
}, | |
"minimatch": { | |
"version": "3.0.4", | |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | |
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | |
"requires": { | |
"brace-expansion": "^1.1.7" | |
} | |
}, | |
"minimist": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | |
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" | |
}, | |
"mkdirp": { | |
"version": "0.5.1", | |
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", | |
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", | |
"requires": { | |
"minimist": "0.0.8" | |
}, | |
"dependencies": { | |
"minimist": { | |
"version": "0.0.8", | |
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | |
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" | |
} | |
} | |
}, | |
"mobiledoc-dom-renderer": { | |
"version": "0.6.5", | |
"resolved": "https://registry.npmjs.org/mobiledoc-dom-renderer/-/mobiledoc-dom-renderer-0.6.5.tgz", | |
"integrity": "sha1-VsAwLE+cMIQKtbmyDf6QWu0eQ3s=" | |
}, | |
"mobiledoc-kit": { | |
"version": "0.11.1", | |
"resolved": "https://registry.npmjs.org/mobiledoc-kit/-/mobiledoc-kit-0.11.1.tgz", | |
"integrity": "sha1-+2SqxTRz0XLkKgiYvTVNEYT2SeU=", | |
"requires": { | |
"mobiledoc-dom-renderer": "0.6.5", | |
"mobiledoc-text-renderer": "0.3.2" | |
} | |
}, | |
"mobiledoc-text-renderer": { | |
"version": "0.3.2", | |
"resolved": "https://registry.npmjs.org/mobiledoc-text-renderer/-/mobiledoc-text-renderer-0.3.2.tgz", | |
"integrity": "sha1-EmoWemz4ts1+WMhf6xgENgODRYA=" | |
}, | |
"module-deps": { | |
"version": "6.1.0", | |
"resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.1.0.tgz", | |
"integrity": "sha512-NPs5N511VD1rrVJihSso/LiBShRbJALYBKzDW91uZYy7BpjnO4bGnZL3HjZ9yKcFdZUWwaYjDz9zxbuP7vKMuQ==", | |
"requires": { | |
"JSONStream": "^1.0.3", | |
"browser-resolve": "^1.7.0", | |
"cached-path-relative": "^1.0.0", | |
"concat-stream": "~1.6.0", | |
"defined": "^1.0.0", | |
"detective": "^5.0.2", | |
"duplexer2": "^0.1.2", | |
"inherits": "^2.0.1", | |
"parents": "^1.0.0", | |
"readable-stream": "^2.0.2", | |
"resolve": "^1.4.0", | |
"stream-combiner2": "^1.1.1", | |
"subarg": "^1.0.0", | |
"through2": "^2.0.0", | |
"xtend": "^4.0.0" | |
} | |
}, | |
"ms": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | |
}, | |
"nan": { | |
"version": "2.10.0", | |
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", | |
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", | |
"dev": true, | |
"optional": true | |
}, | |
"normalize-path": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", | |
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", | |
"dev": true, | |
"requires": { | |
"remove-trailing-separator": "^1.0.1" | |
} | |
}, | |
"number-is-nan": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", | |
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", | |
"dev": true | |
}, | |
"nwsapi": { | |
"version": "2.0.4", | |
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz", | |
"integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==" | |
}, | |
"oauth-sign": { | |
"version": "0.8.2", | |
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", | |
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" | |
}, | |
"object-assign": { | |
"version": "4.1.1", | |
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | |
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", | |
"dev": true | |
}, | |
"object.omit": { | |
"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": "^0.1.4", | |
"is-extendable": "^0.1.1" | |
} | |
}, | |
"once": { | |
"version": "1.4.0", | |
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | |
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | |
"requires": { | |
"wrappy": "1" | |
} | |
}, | |
"optionator": { | |
"version": "0.8.2", | |
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", | |
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", | |
"requires": { | |
"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-browserify": { | |
"version": "0.3.0", | |
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", | |
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" | |
}, | |
"os-homedir": { | |
"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": "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": "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": "^4.1.4", | |
"mkdirp": "^0.5.1", | |
"object-assign": "^4.1.0" | |
} | |
}, | |
"pako": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", | |
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" | |
}, | |
"parents": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", | |
"integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", | |
"requires": { | |
"path-platform": "~0.11.15" | |
} | |
}, | |
"parse-asn1": { | |
"version": "5.1.1", | |
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", | |
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", | |
"requires": { | |
"asn1.js": "^4.0.0", | |
"browserify-aes": "^1.0.0", | |
"create-hash": "^1.1.0", | |
"evp_bytestokey": "^1.0.0", | |
"pbkdf2": "^3.0.3" | |
} | |
}, | |
"parse-glob": { | |
"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": "^0.3.0", | |
"is-dotfile": "^1.0.0", | |
"is-extglob": "^1.0.0", | |
"is-glob": "^2.0.0" | |
} | |
}, | |
"parse5": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", | |
"integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" | |
}, | |
"path-browserify": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", | |
"integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" | |
}, | |
"path-is-absolute": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | |
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" | |
}, | |
"path-parse": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", | |
"integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" | |
}, | |
"path-platform": { | |
"version": "0.11.15", | |
"resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", | |
"integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" | |
}, | |
"pbkdf2": { | |
"version": "3.0.16", | |
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", | |
"integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", | |
"requires": { | |
"create-hash": "^1.1.2", | |
"create-hmac": "^1.1.4", | |
"ripemd160": "^2.0.1", | |
"safe-buffer": "^5.0.1", | |
"sha.js": "^2.4.8" | |
} | |
}, | |
"performance-now": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | |
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" | |
}, | |
"pn": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", | |
"integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" | |
}, | |
"prelude-ls": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", | |
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" | |
}, | |
"preserve": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", | |
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", | |
"dev": true, | |
"optional": true | |
}, | |
"private": { | |
"version": "0.1.8", | |
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", | |
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" | |
}, | |
"process": { | |
"version": "0.11.10", | |
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", | |
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" | |
}, | |
"process-nextick-args": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | |
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" | |
}, | |
"psl": { | |
"version": "1.1.28", | |
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", | |
"integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" | |
}, | |
"public-encrypt": { | |
"version": "4.0.2", | |
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", | |
"integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", | |
"requires": { | |
"bn.js": "^4.1.0", | |
"browserify-rsa": "^4.0.0", | |
"create-hash": "^1.1.0", | |
"parse-asn1": "^5.0.0", | |
"randombytes": "^2.0.1" | |
} | |
}, | |
"punycode": { | |
"version": "1.4.1", | |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", | |
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" | |
}, | |
"qs": { | |
"version": "6.5.2", | |
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", | |
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" | |
}, | |
"querystring": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", | |
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" | |
}, | |
"querystring-es3": { | |
"version": "0.2.1", | |
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", | |
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" | |
}, | |
"randomatic": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", | |
"integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"is-number": "^4.0.0", | |
"kind-of": "^6.0.0", | |
"math-random": "^1.0.1" | |
}, | |
"dependencies": { | |
"is-number": { | |
"version": "4.0.0", | |
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", | |
"integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", | |
"dev": true, | |
"optional": true | |
}, | |
"kind-of": { | |
"version": "6.0.2", | |
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", | |
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", | |
"dev": true, | |
"optional": true | |
} | |
} | |
}, | |
"randombytes": { | |
"version": "2.0.6", | |
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", | |
"integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", | |
"requires": { | |
"safe-buffer": "^5.1.0" | |
} | |
}, | |
"randomfill": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", | |
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", | |
"requires": { | |
"randombytes": "^2.0.5", | |
"safe-buffer": "^5.1.0" | |
} | |
}, | |
"read-only-stream": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", | |
"integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", | |
"requires": { | |
"readable-stream": "^2.0.2" | |
} | |
}, | |
"readable-stream": { | |
"version": "2.3.6", | |
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | |
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | |
"requires": { | |
"core-util-is": "~1.0.0", | |
"inherits": "~2.0.3", | |
"isarray": "~1.0.0", | |
"process-nextick-args": "~2.0.0", | |
"safe-buffer": "~5.1.1", | |
"string_decoder": "~1.1.1", | |
"util-deprecate": "~1.0.1" | |
} | |
}, | |
"readdirp": { | |
"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": "^4.1.2", | |
"minimatch": "^3.0.2", | |
"readable-stream": "^2.0.2", | |
"set-immediate-shim": "^1.0.1" | |
} | |
}, | |
"regenerate": { | |
"version": "1.4.0", | |
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", | |
"integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" | |
}, | |
"regenerator-runtime": { | |
"version": "0.11.1", | |
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", | |
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" | |
}, | |
"regenerator-transform": { | |
"version": "0.10.1", | |
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", | |
"integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", | |
"requires": { | |
"babel-runtime": "^6.18.0", | |
"babel-types": "^6.19.0", | |
"private": "^0.1.6" | |
} | |
}, | |
"regex-cache": { | |
"version": "0.4.4", | |
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", | |
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", | |
"dev": true, | |
"optional": true, | |
"requires": { | |
"is-equal-shallow": "^0.1.3" | |
} | |
}, | |
"regexpu-core": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", | |
"integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", | |
"requires": { | |
"regenerate": "^1.2.1", | |
"regjsgen": "^0.2.0", | |
"regjsparser": "^0.1.4" | |
} | |
}, | |
"regjsgen": { | |
"version": "0.2.0", | |
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", | |
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" | |
}, | |
"regjsparser": { | |
"version": "0.1.5", | |
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", | |
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", | |
"requires": { | |
"jsesc": "~0.5.0" | |
}, | |
"dependencies": { | |
"jsesc": { | |
"version": "0.5.0", | |
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", | |
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" | |
} | |
} | |
}, | |
"remove-trailing-separator": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", | |
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", | |
"dev": true | |
}, | |
"repeat-element": { | |
"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": "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": "2.0.1", | |
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", | |
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", | |
"dev": true, | |
"requires": { | |
"is-finite": "^1.0.0" | |
} | |
}, | |
"request": { | |
"version": "2.87.0", | |
"resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", | |
"integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", | |
"requires": { | |
"aws-sign2": "~0.7.0", | |
"aws4": "^1.6.0", | |
"caseless": "~0.12.0", | |
"combined-stream": "~1.0.5", | |
"extend": "~3.0.1", | |
"forever-agent": "~0.6.1", | |
"form-data": "~2.3.1", | |
"har-validator": "~5.0.3", | |
"http-signature": "~1.2.0", | |
"is-typedarray": "~1.0.0", | |
"isstream": "~0.1.2", | |
"json-stringify-safe": "~5.0.1", | |
"mime-types": "~2.1.17", | |
"oauth-sign": "~0.8.2", | |
"performance-now": "^2.1.0", | |
"qs": "~6.5.1", | |
"safe-buffer": "^5.1.1", | |
"tough-cookie": "~2.3.3", | |
"tunnel-agent": "^0.6.0", | |
"uuid": "^3.1.0" | |
}, | |
"dependencies": { | |
"tough-cookie": { | |
"version": "2.3.4", | |
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", | |
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", | |
"requires": { | |
"punycode": "^1.4.1" | |
} | |
} | |
} | |
}, | |
"request-promise-core": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", | |
"integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", | |
"requires": { | |
"lodash": "^4.13.1" | |
} | |
}, | |
"request-promise-native": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", | |
"integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", | |
"requires": { | |
"request-promise-core": "1.1.1", | |
"stealthy-require": "^1.1.0", | |
"tough-cookie": ">=2.3.3" | |
} | |
}, | |
"resolve": { | |
"version": "1.8.1", | |
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", | |
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", | |
"requires": { | |
"path-parse": "^1.0.5" | |
} | |
}, | |
"ripemd160": { | |
"version": "2.0.2", | |
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", | |
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", | |
"requires": { | |
"hash-base": "^3.0.0", | |
"inherits": "^2.0.1" | |
} | |
}, | |
"safe-buffer": { | |
"version": "5.1.2", | |
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | |
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | |
}, | |
"safer-buffer": { | |
"version": "2.1.2", | |
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | |
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | |
}, | |
"sax": { | |
"version": "1.2.4", | |
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", | |
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" | |
}, | |
"semver": { | |
"version": "5.5.0", | |
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", | |
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" | |
}, | |
"set-immediate-shim": { | |
"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 | |
}, | |
"sha.js": { | |
"version": "2.4.11", | |
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", | |
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", | |
"requires": { | |
"inherits": "^2.0.1", | |
"safe-buffer": "^5.0.1" | |
} | |
}, | |
"shasum": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", | |
"integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", | |
"requires": { | |
"json-stable-stringify": "~0.0.0", | |
"sha.js": "~2.4.4" | |
} | |
}, | |
"shell-quote": { | |
"version": "1.6.1", | |
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", | |
"integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", | |
"requires": { | |
"array-filter": "~0.0.0", | |
"array-map": "~0.0.0", | |
"array-reduce": "~0.0.0", | |
"jsonify": "~0.0.0" | |
} | |
}, | |
"simple-concat": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", | |
"integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" | |
}, | |
"slash": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", | |
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", | |
"dev": true | |
}, | |
"source-map": { | |
"version": "0.5.7", | |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", | |
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" | |
}, | |
"source-map-support": { | |
"version": "0.4.18", | |
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", | |
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", | |
"dev": true, | |
"requires": { | |
"source-map": "^0.5.6" | |
} | |
}, | |
"sshpk": { | |
"version": "1.14.2", | |
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", | |
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", | |
"requires": { | |
"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", | |
"jsbn": "~0.1.0", | |
"safer-buffer": "^2.0.2", | |
"tweetnacl": "~0.14.0" | |
} | |
}, | |
"stealthy-require": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", | |
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" | |
}, | |
"stream-browserify": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", | |
"integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", | |
"requires": { | |
"inherits": "~2.0.1", | |
"readable-stream": "^2.0.2" | |
} | |
}, | |
"stream-combiner2": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", | |
"integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", | |
"requires": { | |
"duplexer2": "~0.1.0", | |
"readable-stream": "^2.0.2" | |
} | |
}, | |
"stream-http": { | |
"version": "2.8.3", | |
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", | |
"integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", | |
"requires": { | |
"builtin-status-codes": "^3.0.0", | |
"inherits": "^2.0.1", | |
"readable-stream": "^2.3.6", | |
"to-arraybuffer": "^1.0.0", | |
"xtend": "^4.0.0" | |
} | |
}, | |
"stream-splicer": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", | |
"integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", | |
"requires": { | |
"inherits": "^2.0.1", | |
"readable-stream": "^2.0.2" | |
} | |
}, | |
"string_decoder": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | |
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | |
"requires": { | |
"safe-buffer": "~5.1.0" | |
} | |
}, | |
"strip-ansi": { | |
"version": "3.0.1", | |
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | |
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", | |
"requires": { | |
"ansi-regex": "^2.0.0" | |
} | |
}, | |
"subarg": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", | |
"integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", | |
"requires": { | |
"minimist": "^1.1.0" | |
} | |
}, | |
"supports-color": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", | |
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" | |
}, | |
"symbol-tree": { | |
"version": "3.2.2", | |
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", | |
"integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" | |
}, | |
"syntax-error": { | |
"version": "1.4.0", | |
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", | |
"integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", | |
"requires": { | |
"acorn-node": "^1.2.0" | |
} | |
}, | |
"through": { | |
"version": "2.3.8", | |
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | |
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" | |
}, | |
"through2": { | |
"version": "2.0.3", | |
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", | |
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", | |
"requires": { | |
"readable-stream": "^2.1.5", | |
"xtend": "~4.0.1" | |
} | |
}, | |
"timers-browserify": { | |
"version": "1.4.2", | |
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", | |
"integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", | |
"requires": { | |
"process": "~0.11.0" | |
} | |
}, | |
"to-arraybuffer": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", | |
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" | |
}, | |
"to-fast-properties": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", | |
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" | |
}, | |
"tough-cookie": { | |
"version": "2.4.3", | |
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | |
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", | |
"requires": { | |
"psl": "^1.1.24", | |
"punycode": "^1.4.1" | |
} | |
}, | |
"tr46": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", | |
"integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", | |
"requires": { | |
"punycode": "^2.1.0" | |
}, | |
"dependencies": { | |
"punycode": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | |
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" | |
} | |
} | |
}, | |
"trim-right": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", | |
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", | |
"dev": true | |
}, | |
"tty-browserify": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", | |
"integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" | |
}, | |
"tunnel-agent": { | |
"version": "0.6.0", | |
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | |
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", | |
"requires": { | |
"safe-buffer": "^5.0.1" | |
} | |
}, | |
"tweetnacl": { | |
"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": "0.3.2", | |
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", | |
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", | |
"requires": { | |
"prelude-ls": "~1.1.2" | |
} | |
}, | |
"typedarray": { | |
"version": "0.0.6", | |
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", | |
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" | |
}, | |
"umd": { | |
"version": "3.0.3", | |
"resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", | |
"integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==" | |
}, | |
"undeclared-identifiers": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.2.tgz", | |
"integrity": "sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ==", | |
"requires": { | |
"acorn-node": "^1.3.0", | |
"get-assigned-identifiers": "^1.2.0", | |
"simple-concat": "^1.0.0", | |
"xtend": "^4.0.1" | |
} | |
}, | |
"url": { | |
"version": "0.11.0", | |
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", | |
"integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", | |
"requires": { | |
"punycode": "1.3.2", | |
"querystring": "0.2.0" | |
}, | |
"dependencies": { | |
"punycode": { | |
"version": "1.3.2", | |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", | |
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" | |
} | |
} | |
}, | |
"user-home": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", | |
"integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", | |
"dev": true | |
}, | |
"util": { | |
"version": "0.10.4", | |
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", | |
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", | |
"requires": { | |
"inherits": "2.0.3" | |
} | |
}, | |
"util-deprecate": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | |
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | |
}, | |
"uuid": { | |
"version": "3.3.2", | |
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", | |
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" | |
}, | |
"v8flags": { | |
"version": "2.1.1", | |
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", | |
"integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", | |
"dev": true, | |
"requires": { | |
"user-home": "^1.1.1" | |
} | |
}, | |
"verror": { | |
"version": "1.10.0", | |
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | |
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", | |
"requires": { | |
"assert-plus": "^1.0.0", | |
"core-util-is": "1.0.2", | |
"extsprintf": "^1.2.0" | |
} | |
}, | |
"vm-browserify": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", | |
"integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==" | |
}, | |
"w3c-hr-time": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", | |
"integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", | |
"requires": { | |
"browser-process-hrtime": "^0.1.2" | |
} | |
}, | |
"webidl-conversions": { | |
"version": "4.0.2", | |
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", | |
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" | |
}, | |
"whatwg-encoding": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", | |
"integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", | |
"requires": { | |
"iconv-lite": "0.4.19" | |
} | |
}, | |
"whatwg-mimetype": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", | |
"integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==" | |
}, | |
"whatwg-url": { | |
"version": "6.5.0", | |
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", | |
"integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", | |
"requires": { | |
"lodash.sortby": "^4.7.0", | |
"tr46": "^1.0.1", | |
"webidl-conversions": "^4.0.2" | |
} | |
}, | |
"wordwrap": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | |
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" | |
}, | |
"wrappy": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | |
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | |
}, | |
"ws": { | |
"version": "4.1.0", | |
"resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", | |
"integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", | |
"requires": { | |
"async-limiter": "~1.0.0", | |
"safe-buffer": "~5.1.0" | |
} | |
}, | |
"xml-name-validator": { | |
"version": "3.0.0", | |
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", | |
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" | |
}, | |
"xtend": { | |
"version": "4.0.1", | |
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", | |
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "mobiledoc-parser", | |
"version": "1.0.0", | |
"description": "", | |
"main": "index.js", | |
"scripts": { | |
"start": "babel-node index.js --presets es2015,stage-2", | |
"test": "echo \"Error: no test specified\" && exit 1" | |
}, | |
"author": "", | |
"license": "ISC", | |
"dependencies": { | |
"babel-preset-env": "^1.7.0", | |
"babelify": "^8.0.0", | |
"bluestream": "^9.0.0", | |
"browserify": "^16.2.2", | |
"html-entities": "^1.2.1", | |
"jquery": "^3.3.1", | |
"jsdom": "^11.11.0", | |
"mobiledoc-kit": "^0.11.1" | |
}, | |
"devDependencies": { | |
"babel-cli": "^6.26.0", | |
"babel-preset-es2015": "^6.24.1", | |
"babel-preset-stage-2": "^6.24.1" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint-env browser */ | |
import $ from 'jquery' | |
/* | |
* Brute force remove WYSIWYG ugliness | |
* This is temporary logic should be moved for a one-time data migration! | |
*/ | |
/* IMPORTANT: The order of processing matters here. Sad but true. */ | |
const LOG_TO_CONSOLE = false | |
const SELECTORS = { | |
heading: 'h1,h2,h3,h4,h5,h6', | |
blockLike: 'h1,h2,h3,h4,h5,h6,p,div,blockquote,ul,ol,li,img,embed,object,iframe,video,audio,attachment', | |
mayContainBlocks: 'div,ul,ol,li,blockquote', | |
media: 'img,embed,object,iframe,video,audio', | |
embed: '.article-body-embed,.article-body-object,.article-body-free-embed', | |
quote: '.quote-pull,.quote-block', | |
twitter: '.twitter-tweet', | |
formatting: 'b,i,strong,em,u,a,span', | |
articleImage: '.article-body-image', | |
deprecated: 'slideshow', | |
blacklisted: 'script', | |
selfClosing: 'area,br,col,embed,hr,img,input,link,meta,param' | |
} | |
const EXPRESSIONS = { | |
outerNbsp: /^( )+|( )+$/g | |
} | |
let log | |
if (LOG_TO_CONSOLE) { | |
log = function(...logs) { | |
window.console.log(...logs) | |
} | |
} else { | |
log = function() {} | |
} | |
let cleanChildren = function(node) { | |
let childNode = node.firstChild | |
const cursor = node.insertBefore(document.createTextNode(''), childNode) | |
while (childNode) { | |
if (childNode instanceof HTMLElement) { | |
cleanNode(childNode) | |
} | |
if (cursor.nextSibling === childNode) { | |
$(cursor).insertAfter(childNode) | |
} | |
childNode = cursor.nextSibling | |
} | |
$(cursor).remove() | |
} | |
const cleanNode = function(node) { | |
const $node = $(node) | |
let originalNode = node.cloneNode(true) | |
// Special case: Skip already-processed attachments & embeds | |
if ($node.is('attachment')) { | |
// Unless some attachments are nested inside? | |
$node.find('attachment').insertAfter($node) | |
// Also, force a `content` attribute onto it | |
if (!node.dataset.content) { | |
node.dataset.content = node.innerHTML | |
} else { | |
node.dataset.content = node.dataset.content.replace(/"/gi, '"') | |
} | |
return | |
} | |
// Special-case: Re-class and skip embeds | |
if ($node.is(SELECTORS.embed)) { | |
$node.attr('class', 'article-attachment article-embed') | |
log('Simplified class names on attachment', originalNode) | |
// Strip bogus inline styles from third-party content | |
const $media = $node.find(SELECTORS.media) | |
if ($media.length) { | |
const originalMedia = $media[0].cloneNode(true) | |
let inlineWidth = $media.css('width') // preserve width, for embeds | |
let inlineHeight = $media.css('height') // preserve height, for embeds | |
if (inlineWidth === '100%') { | |
inlineWidth = null | |
} else { | |
inlineWidth = parseInt(inlineWidth, 10) | |
} | |
if (inlineHeight === '100%') { | |
inlineHeight = null | |
} else { | |
inlineHeight = parseInt(inlineHeight, 10) | |
} | |
if (inlineWidth && inlineHeight) { | |
$media.removeAttr('style').css({ | |
width: `${inlineWidth}px`, | |
height: `${inlineHeight}px` | |
}) | |
} | |
const newStyle = $media.attr('style') || '' | |
if (newStyle !== $(originalMedia).attr('style')) { | |
log('Reset style attribute of ', originalMedia, 'to', newStyle) | |
} | |
} | |
$node.wrap(`<attachment/>`) | |
const attachment = $node.parent()[0] | |
attachment.dataset.content = originalNode.outerHTML | |
return | |
} | |
// Special case: Wrap tweets | |
if ($node.is(SELECTORS.twitter)) { | |
$node.wrap(`<attachment/>`) | |
const attachment = $node.parent()[0] | |
attachment.dataset.content = originalNode.outerHTML | |
attachment.dataset.provider = 'Twitter' | |
log('Wrapped attachment in', originalNode) | |
return | |
} | |
// Special-case: Normalize image attachments | |
if ($node.is(SELECTORS.articleImage) || $node.is('img')) { | |
let $attachment = $node.is('img') ? $node : $node.find(SELECTORS.media) | |
$node.wrap(`<attachment/>`) | |
const $parent = $node.parent() | |
const nodeElement = $parent[0] | |
const isLinked = $parent.parent().is('a') | |
const src = nodeElement.dataset.src || nodeElement.src | |
if (src) { | |
nodeElement.dataset.src = src | |
} | |
if (isLinked) { | |
$attachment = $(`<a href="${$parent[0].href}"/>`).append($attachment) | |
} | |
nodeElement.dataset.type = 'image' | |
if (!nodeElement.dataset.content) { | |
nodeElement.dataset.content = $('<div/>') | |
.append($attachment) | |
.html() | |
} | |
log('Cleaned up attachment', originalNode) | |
return | |
} | |
// Special-case: Kill deprecated selectors | |
if ($node.is(SELECTORS.deprecated)) { | |
$node.remove() | |
log('Removed deprecated', originalNode) | |
return | |
} | |
// Special-case: Remove empty formatting elements | |
if ($node.is(SELECTORS.formatting) && !$.trim($node.text())) { | |
if ($node.find('img')[0]) { | |
$node.replaceWith($node.find('img')[0]) // if img nested in a, return that | |
} else { | |
$node.replaceWith($node.text()) // text may be a needed space char | |
} | |
log('Removed empty', originalNode) | |
return | |
} | |
// Special-case: Remove redundant/extra line breaks | |
if ($node.is('br')) { | |
let cursor = node | |
let realPreviousSibling | |
while (cursor && !realPreviousSibling) { | |
const previousSibling = cursor.previousSibling | |
if (previousSibling && (previousSibling.nodeType === Node.ELEMENT_NODE || $.trim(previousSibling.wholeText))) { | |
realPreviousSibling = previousSibling | |
} | |
cursor = cursor.parentNode | |
} | |
const $realPreviousSibling = $(realPreviousSibling) | |
if (node.parentNode && (!realPreviousSibling || $realPreviousSibling.is(SELECTORS.blockLike))) { | |
const parentNode = node.parentNode.cloneNode(true) | |
$node.remove() | |
log('Removed <br/> following a block or at start of', parentNode) | |
return | |
} | |
cursor = node | |
let realNextSibling | |
while (cursor && !realNextSibling) { | |
const nextSibling = cursor.nextSibling | |
if (nextSibling && (nextSibling.nodeType === Node.ELEMENT_NODE || $.trim(nextSibling.wholeText))) { | |
realNextSibling = nextSibling | |
} | |
cursor = cursor.parentNode | |
} | |
if (node.parentNode && (!realNextSibling || $(realNextSibling).is(SELECTORS.blockLike))) { | |
const parentNode = node.parentNode.cloneNode(true) | |
$node.remove() | |
log('Removed <br/> preceding a block or at end of', parentNode) | |
return | |
} | |
if ($realPreviousSibling.is('br')) { | |
const parentNode = node.parentNode.cloneNode(true) | |
cursor = node | |
const nextAll = [] | |
while ((cursor = cursor.nextSibling)) { | |
nextAll.push(cursor) | |
} | |
$('<p/>') | |
.append(nextAll) | |
.insertAfter(node.parentNode) | |
$realPreviousSibling.remove() | |
$node.remove() | |
log('Split', parentNode, 'content following <br/><br/> into a new paragraph') | |
return | |
} | |
return | |
} | |
// Special-case: Skip further processing of self-closing tags (handled, when needed, above) | |
if ($node.is(SELECTORS.selfClosing)) { | |
return | |
} | |
// Special case: Nest unnested list items | |
if ($node.is('li') && !$node.parent().is('ul, ol')) { | |
const $siblings = $node.nextAll('li+li') // all adjacent list item siblings | |
const $list = $('<ul/>') | |
.insertAfter($node) | |
.append($node) | |
.append($siblings) | |
log('Wrapped list items in', $list[0]) | |
return | |
} | |
// Otherwise, first recursively process the element's children (in a live way!) | |
cleanChildren(node) | |
// Strip bold tags from headings | |
if ($node.is(SELECTORS.heading)) { | |
originalNode = node.cloneNode(true) | |
$node.find('b,strong').each(function(index, element) { | |
const $element = $(element) | |
$element.replaceWith($element.contents()) | |
log('Stripped <b> formatting in', originalNode) | |
}) | |
} | |
// Strip bogus inline styles: <span style="font-size: 16.7999992370605px; line-height: 24.3599987030029px;"> | |
if (node.hasAttribute('style')) { | |
originalNode = node.cloneNode(true) | |
node.removeAttribute('style') | |
log('Stripped inline style from', originalNode) | |
} | |
// Fix fractured links like `<i><a>Bustle</a></i><a> Labs</a>` | |
if ($node.is(SELECTORS.formatting)) { | |
// First, bust links out of their formatting selectors (reverse the nesting) | |
const $parent = $node.parent() | |
if ($node.is('a') && $parent.is(SELECTORS.formatting) && $.trim($parent.text()) === $.trim($node.text())) { | |
const originalParent = $parent[0].cloneNode(true) | |
$node.insertAfter($parent) | |
if ($parent.is(':not(a)')) { | |
// don't nest <a>s in <a>s | |
$node | |
.wrapInner($parent) | |
.prepend(' ') | |
.append(' ') // ensure `wrapInner` hasn’t stripped any whitespace | |
$parent.remove() | |
} | |
log('Reversed nesting of ', originalParent, ' to ', node.cloneNode(true)) | |
} | |
// Second, if the previous node is a formatting node with the same attributes | |
let previous = node.previousSibling | |
while (previous && !previous.textContent) { | |
previous = previous.previousSibling | |
} | |
if (previous && node.tagName === previous.tagName) { | |
const originalPrevious = previous.cloneNode(true) | |
const previousAttributesMatch = ['href', 'class'].every(function(attributeName) { | |
return node.getAttribute(attributeName) === previous.getAttribute(attributeName) | |
}) | |
if (previousAttributesMatch) { | |
$(node) | |
.insertAfter(previous) | |
.prepend(previous.innerHTML) | |
$(previous).remove() | |
log('Prepended contents of previous', originalPrevious, ' to ', node.cloneNode(true)) | |
} | |
} | |
} | |
// Strip inner whitespace of block elements | |
if ($node.is(SELECTORS.blockLike)) { | |
const contents = $node.html() | |
const trimmedContents = $.trim(contents).replace(EXPRESSIONS.outerNbsp, '') | |
if (trimmedContents !== contents) { | |
$node.html(trimmedContents) | |
log('Trimmed whitespace from', originalNode) | |
} | |
} | |
// Prevent whitespace doubling for inline elements: `<i>foo </i> bar` or even `foo <b> <i>bar</i></b>` | |
if ($node.is(SELECTORS.formatting)) { | |
let previous = node.previousSibling | |
while (previous && !previous.textContent) { | |
previous = previous.previousSibling || (previous.parentNode && previous.parentNode.previousSibling) | |
} | |
if (previous && previous.textContent.match(/\s$/) && node.textContent.match(/^\s/)) { | |
$node.html($node.html().replace(/^\s/, '')) | |
log('Prevented whitespace doubling before', originalNode.outerHTML) | |
} | |
let next = node.nextSibling | |
while (next && !next.textContent) { | |
next = next.nextSibling || (next.parentNode && next.parentNode.nextSibling) | |
} | |
if (next && next.textContent.match(/^\s/) && node.textContent.match(/\s$/)) { | |
$node.html($node.html().replace(/\s$/, '')) | |
log('Prevented whitespace doubling after', originalNode.outerHTML) | |
} | |
} | |
// Unwrap unnecessary <div>s and <span>s | |
if ( | |
(($node.is('div') && ($node.is(SELECTORS.quote) || $node[0].attributes.length === 0)) || $node.is('span')) && | |
$.trim($node.html()) | |
) { | |
originalNode = node.cloneNode(true) | |
if ($node.parent().is('#root') || $node.prev().is(SELECTORS.blockLike) || $node.next().is(SELECTORS.blockLike)) { | |
$node.after($('<p/>').append($node.contents())) | |
log('Unwrapped contents of unnecessary', originalNode, 'into new paragraph') | |
} else { | |
$node.after($node.contents()) | |
log('Unwrapped contents of unnecessary', originalNode) | |
} | |
} | |
if ($node.is(SELECTORS.quote)) { | |
if ($node.is('.quote-block')) { | |
$node.after($('<aside/>').append($node.contents())) // these are backwards on new Posts, so swap them here | |
} else if ($node.is('.quote-pull')) { | |
$node.removeClass('quote-pull') // these are backwards on new Posts, so swap them here | |
} | |
} | |
// Move block children after this block | |
if (!$node.is(SELECTORS.mayContainBlocks)) { | |
const $blockChildren = $node.children(SELECTORS.blockLike) | |
if ($blockChildren.length) { | |
originalNode = node.cloneNode(true) | |
let cursor = node.firstChild | |
const children = [] | |
let openInlineWrapper | |
while (cursor) { | |
const nextSibling = cursor.nextSibling | |
if ($(cursor).is(SELECTORS.blockLike)) { | |
children.push(cursor) | |
openInlineWrapper = null | |
} else if (cursor.nodeType === Node.ELEMENT_NODE || $.trim(cursor.textContent)) { | |
if (children.length) { | |
// if we've already 'broken' the block | |
if (!openInlineWrapper) { | |
openInlineWrapper = node.cloneNode() | |
children.push(openInlineWrapper) | |
} | |
openInlineWrapper.appendChild(cursor) | |
} | |
} | |
cursor = nextSibling | |
} | |
$node.after(children) | |
log('Unwrapped block children', children, 'from', originalNode) | |
} | |
} | |
// Finally, kill the node if it is now empty | |
if ($node.children().length === 0 && !$.trim($node.text())) { | |
originalNode = node.cloneNode(true) | |
$node.remove() | |
log('Removed now-empty', originalNode) | |
} else { | |
node.normalize() | |
} | |
} | |
let cleanRootLevelNode = function(node) { | |
const $node = $(node) | |
const originalNode = node.cloneNode() | |
// First, find blacklisted nodes, wherever they live | |
$node.find(SELECTORS.blacklisted).each(function(index, blacklistedNode) { | |
log('Removed blacklisted', blacklistedNode.cloneNode(true)) | |
$(blacklistedNode).remove() | |
}) | |
// Promote <h3>s to <h2>s (if there are no h2s) | |
const headings = $node.find('h2') | |
if (!headings.length) { | |
$node.find('h3').each(function(index, element) { | |
log('Promoted', element.cloneNode(true), 'to an <h2>.') | |
const $subheading = $(element) | |
const $heading = $('<h2/>').append($subheading.contents()) | |
$subheading.replaceWith($heading) | |
}) | |
} | |
// Collect adjacent inline children (usually text nodes) into a single <p> | |
let $adjacentWrapper | |
$node.contents().each(function(index, childNode) { | |
const $childNode = $(childNode) | |
if (!$childNode.is(SELECTORS.blockLike) && ($.trim(childNode.textContent) || $childNode.is('br'))) { | |
if ($adjacentWrapper) { | |
$adjacentWrapper.append(childNode) | |
log( | |
'Appended', | |
originalNode, | |
'root-level', | |
childNode.cloneNode(true), | |
'to previous wrapper', | |
$adjacentWrapper[0] | |
) | |
} else { | |
$adjacentWrapper = $('<p/>').append(childNode.cloneNode(true)) | |
$childNode.replaceWith($adjacentWrapper) | |
log('Wrapped', originalNode, 'root-level', childNode.cloneNode(true), ' into ', $adjacentWrapper[0]) | |
} | |
} else { | |
$adjacentWrapper = null | |
} | |
}) | |
// Then, clean each child node (recursively, live) | |
cleanChildren(node) | |
} | |
export function cleanUpWhitespace(input) { | |
return input.replace(/\n/g, ' ').replace(/\s+/g, ' ') | |
} | |
// mobiledoc's parser plugins skip top-level elements, so wrap these in a div for it to find them | |
function wrapAttachments($el) { | |
$el.find('attachment').wrap('<div class="wrapped-attachment"></div>') | |
} | |
export default function sanitizeBody(input) { | |
if (!input) { | |
return | |
} | |
const $root = $('<div id="root"/>').append(cleanUpWhitespace(input).replace(/( |\xA0)/g, ' ')) | |
cleanRootLevelNode($root[0]) | |
wrapAttachments($root) | |
return $root.html() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment