├── .babelrc ├── .gitignore ├── .npmignore ├── .travis.yml ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── .babelrc └── index.js └── test ├── cool-element.es5.js ├── cool-element.js ├── cool.js ├── index.html ├── index.js ├── test.es5.js └── test.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "babel-plugin-transform-es2015-classes", 5 | ["babel-plugin-transform-builtin-classes", { 6 | "build": "JSON.stringify(Object.getOwnPropertyNames(window).filter(name => /^[A-Z]/.test(name)).sort(), null, ' ')", 7 | "globals": [ 8 | "AnalyserNode", 9 | "AnimationEvent", 10 | "AppBannerPromptResult", 11 | "ApplicationCache", 12 | "ApplicationCacheErrorEvent", 13 | "Array", 14 | "ArrayBuffer", 15 | "Attr", 16 | "Audio", 17 | "AudioBuffer", 18 | "AudioBufferSourceNode", 19 | "AudioContext", 20 | "AudioDestinationNode", 21 | "AudioListener", 22 | "AudioNode", 23 | "AudioParam", 24 | "AudioProcessingEvent", 25 | "AudioScheduledSourceNode", 26 | "BarProp", 27 | "BaseAudioContext", 28 | "BatteryManager", 29 | "BeforeInstallPromptEvent", 30 | "BeforeUnloadEvent", 31 | "BiquadFilterNode", 32 | "Blob", 33 | "BlobEvent", 34 | "Boolean", 35 | "BroadcastChannel", 36 | "ByteLengthQueuingStrategy", 37 | "CDATASection", 38 | "CSS", 39 | "CSSConditionRule", 40 | "CSSFontFaceRule", 41 | "CSSGroupingRule", 42 | "CSSImportRule", 43 | "CSSKeyframeRule", 44 | "CSSKeyframesRule", 45 | "CSSMediaRule", 46 | "CSSNamespaceRule", 47 | "CSSPageRule", 48 | "CSSRule", 49 | "CSSRuleList", 50 | "CSSStyleDeclaration", 51 | "CSSStyleRule", 52 | "CSSStyleSheet", 53 | "CSSSupportsRule", 54 | "CSSViewportRule", 55 | "Cache", 56 | "CacheStorage", 57 | "CanvasCaptureMediaStreamTrack", 58 | "CanvasGradient", 59 | "CanvasPattern", 60 | "CanvasRenderingContext2D", 61 | "ChannelMergerNode", 62 | "ChannelSplitterNode", 63 | "CharacterData", 64 | "ClientRect", 65 | "ClientRectList", 66 | "ClipboardEvent", 67 | "CloseEvent", 68 | "Comment", 69 | "CompositionEvent", 70 | "ConstantSourceNode", 71 | "ConvolverNode", 72 | "CountQueuingStrategy", 73 | "Credential", 74 | "CredentialsContainer", 75 | "Crypto", 76 | "CryptoKey", 77 | "CustomElementRegistry", 78 | "CustomEvent", 79 | "DOMError", 80 | "DOMException", 81 | "DOMImplementation", 82 | "DOMParser", 83 | "DOMStringList", 84 | "DOMStringMap", 85 | "DOMTokenList", 86 | "DataTransfer", 87 | "DataTransferItem", 88 | "DataTransferItemList", 89 | "DataView", 90 | "Date", 91 | "DelayNode", 92 | "DeviceMotionEvent", 93 | "DeviceOrientationEvent", 94 | "Document", 95 | "DocumentFragment", 96 | "DocumentType", 97 | "DragEvent", 98 | "DynamicsCompressorNode", 99 | "Element", 100 | "Error", 101 | "ErrorEvent", 102 | "EvalError", 103 | "Event", 104 | "EventSource", 105 | "EventTarget", 106 | "FederatedCredential", 107 | "File", 108 | "FileList", 109 | "FileReader", 110 | "Float32Array", 111 | "Float64Array", 112 | "FocusEvent", 113 | "FontFace", 114 | "FontFaceSetLoadEvent", 115 | "FormData", 116 | "Function", 117 | "GainNode", 118 | "Gamepad", 119 | "GamepadButton", 120 | "GamepadEvent", 121 | "HTMLAllCollection", 122 | "HTMLAnchorElement", 123 | "HTMLAreaElement", 124 | "HTMLAudioElement", 125 | "HTMLBRElement", 126 | "HTMLBaseElement", 127 | "HTMLBodyElement", 128 | "HTMLButtonElement", 129 | "HTMLCanvasElement", 130 | "HTMLCollection", 131 | "HTMLContentElement", 132 | "HTMLDListElement", 133 | "HTMLDataListElement", 134 | "HTMLDetailsElement", 135 | "HTMLDialogElement", 136 | "HTMLDirectoryElement", 137 | "HTMLDivElement", 138 | "HTMLDocument", 139 | "HTMLElement", 140 | "HTMLEmbedElement", 141 | "HTMLFieldSetElement", 142 | "HTMLFontElement", 143 | "HTMLFormControlsCollection", 144 | "HTMLFormElement", 145 | "HTMLFrameElement", 146 | "HTMLFrameSetElement", 147 | "HTMLHRElement", 148 | "HTMLHeadElement", 149 | "HTMLHeadingElement", 150 | "HTMLHtmlElement", 151 | "HTMLIFrameElement", 152 | "HTMLImageElement", 153 | "HTMLInputElement", 154 | "HTMLLIElement", 155 | "HTMLLabelElement", 156 | "HTMLLegendElement", 157 | "HTMLLinkElement", 158 | "HTMLMapElement", 159 | "HTMLMarqueeElement", 160 | "HTMLMediaElement", 161 | "HTMLMenuElement", 162 | "HTMLMetaElement", 163 | "HTMLMeterElement", 164 | "HTMLModElement", 165 | "HTMLOListElement", 166 | "HTMLObjectElement", 167 | "HTMLOptGroupElement", 168 | "HTMLOptionElement", 169 | "HTMLOptionsCollection", 170 | "HTMLOutputElement", 171 | "HTMLParagraphElement", 172 | "HTMLParamElement", 173 | "HTMLPictureElement", 174 | "HTMLPreElement", 175 | "HTMLProgressElement", 176 | "HTMLQuoteElement", 177 | "HTMLScriptElement", 178 | "HTMLSelectElement", 179 | "HTMLShadowElement", 180 | "HTMLSlotElement", 181 | "HTMLSourceElement", 182 | "HTMLSpanElement", 183 | "HTMLStyleElement", 184 | "HTMLTableCaptionElement", 185 | "HTMLTableCellElement", 186 | "HTMLTableColElement", 187 | "HTMLTableElement", 188 | "HTMLTableRowElement", 189 | "HTMLTableSectionElement", 190 | "HTMLTemplateElement", 191 | "HTMLTextAreaElement", 192 | "HTMLTitleElement", 193 | "HTMLTrackElement", 194 | "HTMLUListElement", 195 | "HTMLUnknownElement", 196 | "HTMLVideoElement", 197 | "HashChangeEvent", 198 | "Headers", 199 | "History", 200 | "IDBCursor", 201 | "IDBCursorWithValue", 202 | "IDBDatabase", 203 | "IDBFactory", 204 | "IDBIndex", 205 | "IDBKeyRange", 206 | "IDBObjectStore", 207 | "IDBOpenDBRequest", 208 | "IDBRequest", 209 | "IDBTransaction", 210 | "IDBVersionChangeEvent", 211 | "IIRFilterNode", 212 | "IdleDeadline", 213 | "Image", 214 | "ImageBitmap", 215 | "ImageBitmapRenderingContext", 216 | "ImageCapture", 217 | "ImageData", 218 | "Infinity", 219 | "InputDeviceCapabilities", 220 | "Int16Array", 221 | "Int32Array", 222 | "Int8Array", 223 | "IntersectionObserver", 224 | "IntersectionObserverEntry", 225 | "Intl", 226 | "JSON", 227 | "KeyboardEvent", 228 | "Location", 229 | "MIDIAccess", 230 | "MIDIConnectionEvent", 231 | "MIDIInput", 232 | "MIDIInputMap", 233 | "MIDIMessageEvent", 234 | "MIDIOutput", 235 | "MIDIOutputMap", 236 | "MIDIPort", 237 | "Map", 238 | "Math", 239 | "MediaDeviceInfo", 240 | "MediaDevices", 241 | "MediaElementAudioSourceNode", 242 | "MediaEncryptedEvent", 243 | "MediaError", 244 | "MediaKeyMessageEvent", 245 | "MediaKeySession", 246 | "MediaKeyStatusMap", 247 | "MediaKeySystemAccess", 248 | "MediaKeys", 249 | "MediaList", 250 | "MediaQueryList", 251 | "MediaQueryListEvent", 252 | "MediaRecorder", 253 | "MediaSettingsRange", 254 | "MediaSource", 255 | "MediaStream", 256 | "MediaStreamAudioDestinationNode", 257 | "MediaStreamAudioSourceNode", 258 | "MediaStreamEvent", 259 | "MediaStreamTrack", 260 | "MediaStreamTrackEvent", 261 | "MessageChannel", 262 | "MessageEvent", 263 | "MessagePort", 264 | "MimeType", 265 | "MimeTypeArray", 266 | "MouseEvent", 267 | "MutationEvent", 268 | "MutationObserver", 269 | "MutationRecord", 270 | "NaN", 271 | "NamedNodeMap", 272 | "NavigationPreloadManager", 273 | "Navigator", 274 | "Node", 275 | "NodeFilter", 276 | "NodeIterator", 277 | "NodeList", 278 | "Notification", 279 | "Number", 280 | "Object", 281 | "OfflineAudioCompletionEvent", 282 | "OfflineAudioContext", 283 | "Option", 284 | "OscillatorNode", 285 | "PageTransitionEvent", 286 | "PannerNode", 287 | "PasswordCredential", 288 | "Path2D", 289 | "Performance", 290 | "PerformanceEntry", 291 | "PerformanceLongTaskTiming", 292 | "PerformanceMark", 293 | "PerformanceMeasure", 294 | "PerformanceNavigation", 295 | "PerformanceNavigationTiming", 296 | "PerformanceObserver", 297 | "PerformanceObserverEntryList", 298 | "PerformanceResourceTiming", 299 | "PerformanceTiming", 300 | "PeriodicWave", 301 | "PermissionStatus", 302 | "Permissions", 303 | "PhotoCapabilities", 304 | "Plugin", 305 | "PluginArray", 306 | "PointerEvent", 307 | "PopStateEvent", 308 | "Presentation", 309 | "PresentationAvailability", 310 | "PresentationConnection", 311 | "PresentationConnectionAvailableEvent", 312 | "PresentationConnectionCloseEvent", 313 | "PresentationConnectionList", 314 | "PresentationReceiver", 315 | "PresentationRequest", 316 | "ProcessingInstruction", 317 | "ProgressEvent", 318 | "Promise", 319 | "PromiseRejectionEvent", 320 | "Proxy", 321 | "PushManager", 322 | "PushSubscription", 323 | "PushSubscriptionOptions", 324 | "RTCCertificate", 325 | "RTCDataChannel", 326 | "RTCDataChannelEvent", 327 | "RTCIceCandidate", 328 | "RTCPeerConnection", 329 | "RTCPeerConnectionIceEvent", 330 | "RTCRtpContributingSource", 331 | "RTCRtpReceiver", 332 | "RTCSessionDescription", 333 | "RTCStatsReport", 334 | "RadioNodeList", 335 | "Range", 336 | "RangeError", 337 | "ReadableStream", 338 | "ReferenceError", 339 | "Reflect", 340 | "RegExp", 341 | "RemotePlayback", 342 | "Request", 343 | "Response", 344 | "SVGAElement", 345 | "SVGAngle", 346 | "SVGAnimateElement", 347 | "SVGAnimateMotionElement", 348 | "SVGAnimateTransformElement", 349 | "SVGAnimatedAngle", 350 | "SVGAnimatedBoolean", 351 | "SVGAnimatedEnumeration", 352 | "SVGAnimatedInteger", 353 | "SVGAnimatedLength", 354 | "SVGAnimatedLengthList", 355 | "SVGAnimatedNumber", 356 | "SVGAnimatedNumberList", 357 | "SVGAnimatedPreserveAspectRatio", 358 | "SVGAnimatedRect", 359 | "SVGAnimatedString", 360 | "SVGAnimatedTransformList", 361 | "SVGAnimationElement", 362 | "SVGCircleElement", 363 | "SVGClipPathElement", 364 | "SVGComponentTransferFunctionElement", 365 | "SVGDefsElement", 366 | "SVGDescElement", 367 | "SVGDiscardElement", 368 | "SVGElement", 369 | "SVGEllipseElement", 370 | "SVGFEBlendElement", 371 | "SVGFEColorMatrixElement", 372 | "SVGFEComponentTransferElement", 373 | "SVGFECompositeElement", 374 | "SVGFEConvolveMatrixElement", 375 | "SVGFEDiffuseLightingElement", 376 | "SVGFEDisplacementMapElement", 377 | "SVGFEDistantLightElement", 378 | "SVGFEDropShadowElement", 379 | "SVGFEFloodElement", 380 | "SVGFEFuncAElement", 381 | "SVGFEFuncBElement", 382 | "SVGFEFuncGElement", 383 | "SVGFEFuncRElement", 384 | "SVGFEGaussianBlurElement", 385 | "SVGFEImageElement", 386 | "SVGFEMergeElement", 387 | "SVGFEMergeNodeElement", 388 | "SVGFEMorphologyElement", 389 | "SVGFEOffsetElement", 390 | "SVGFEPointLightElement", 391 | "SVGFESpecularLightingElement", 392 | "SVGFESpotLightElement", 393 | "SVGFETileElement", 394 | "SVGFETurbulenceElement", 395 | "SVGFilterElement", 396 | "SVGForeignObjectElement", 397 | "SVGGElement", 398 | "SVGGeometryElement", 399 | "SVGGradientElement", 400 | "SVGGraphicsElement", 401 | "SVGImageElement", 402 | "SVGLength", 403 | "SVGLengthList", 404 | "SVGLineElement", 405 | "SVGLinearGradientElement", 406 | "SVGMPathElement", 407 | "SVGMarkerElement", 408 | "SVGMaskElement", 409 | "SVGMatrix", 410 | "SVGMetadataElement", 411 | "SVGNumber", 412 | "SVGNumberList", 413 | "SVGPathElement", 414 | "SVGPatternElement", 415 | "SVGPoint", 416 | "SVGPointList", 417 | "SVGPolygonElement", 418 | "SVGPolylineElement", 419 | "SVGPreserveAspectRatio", 420 | "SVGRadialGradientElement", 421 | "SVGRect", 422 | "SVGRectElement", 423 | "SVGSVGElement", 424 | "SVGScriptElement", 425 | "SVGSetElement", 426 | "SVGStopElement", 427 | "SVGStringList", 428 | "SVGStyleElement", 429 | "SVGSwitchElement", 430 | "SVGSymbolElement", 431 | "SVGTSpanElement", 432 | "SVGTextContentElement", 433 | "SVGTextElement", 434 | "SVGTextPathElement", 435 | "SVGTextPositioningElement", 436 | "SVGTitleElement", 437 | "SVGTransform", 438 | "SVGTransformList", 439 | "SVGUnitTypes", 440 | "SVGUseElement", 441 | "SVGViewElement", 442 | "Screen", 443 | "ScreenOrientation", 444 | "ScriptProcessorNode", 445 | "SecurityPolicyViolationEvent", 446 | "Selection", 447 | "ServiceWorker", 448 | "ServiceWorkerContainer", 449 | "ServiceWorkerRegistration", 450 | "Set", 451 | "ShadowRoot", 452 | "SharedWorker", 453 | "SiteBoundCredential", 454 | "SourceBuffer", 455 | "SourceBufferList", 456 | "SpeechSynthesisEvent", 457 | "SpeechSynthesisUtterance", 458 | "StereoPannerNode", 459 | "Storage", 460 | "StorageEvent", 461 | "StorageManager", 462 | "String", 463 | "StyleSheet", 464 | "StyleSheetList", 465 | "SubtleCrypto", 466 | "Symbol", 467 | "SyncManager", 468 | "SyntaxError", 469 | "TaskAttributionTiming", 470 | "Text", 471 | "TextDecoder", 472 | "TextEncoder", 473 | "TextEvent", 474 | "TextMetrics", 475 | "TextTrack", 476 | "TextTrackCue", 477 | "TextTrackCueList", 478 | "TextTrackList", 479 | "TimeRanges", 480 | "Touch", 481 | "TouchEvent", 482 | "TouchList", 483 | "TrackEvent", 484 | "TransitionEvent", 485 | "TreeWalker", 486 | "TypeError", 487 | "UIEvent", 488 | "URIError", 489 | "URL", 490 | "URLSearchParams", 491 | "Uint16Array", 492 | "Uint32Array", 493 | "Uint8Array", 494 | "Uint8ClampedArray", 495 | "VTTCue", 496 | "ValidityState", 497 | "WaveShaperNode", 498 | "WeakMap", 499 | "WeakSet", 500 | "WebAssembly", 501 | "WebGL2RenderingContext", 502 | "WebGLActiveInfo", 503 | "WebGLBuffer", 504 | "WebGLContextEvent", 505 | "WebGLFramebuffer", 506 | "WebGLProgram", 507 | "WebGLQuery", 508 | "WebGLRenderbuffer", 509 | "WebGLRenderingContext", 510 | "WebGLSampler", 511 | "WebGLShader", 512 | "WebGLShaderPrecisionFormat", 513 | "WebGLSync", 514 | "WebGLTexture", 515 | "WebGLTransformFeedback", 516 | "WebGLUniformLocation", 517 | "WebGLVertexArrayObject", 518 | "WebKitAnimationEvent", 519 | "WebKitCSSMatrix", 520 | "WebKitMutationObserver", 521 | "WebKitTransitionEvent", 522 | "WebSocket", 523 | "WheelEvent", 524 | "Window", 525 | "Worker", 526 | "WritableStream", 527 | "XMLDocument", 528 | "XMLHttpRequest", 529 | "XMLHttpRequestEventTarget", 530 | "XMLHttpRequestUpload", 531 | "XMLSerializer", 532 | "XPathEvaluator", 533 | "XPathExpression", 534 | "XPathResult", 535 | "XSLTProcessor" 536 | ] 537 | }] 538 | ] 539 | ] 540 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /lib 2 | /node_modules -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /src 2 | /node_modules 3 | /test 4 | .gitignore 5 | .babelrc 6 | !/lib/.babelrc -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 6 4 | - 8 5 | git: 6 | depth: 1 7 | branches: 8 | only: 9 | - master 10 | after_success: 11 | - "npm run coveralls" 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2017, Andrea Giammarchi, @WebReflection 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14 | OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Babel Builtin Classes Fix 2 | 3 | [![Build Status](https://travis-ci.org/WebReflection/babel-plugin-transform-builtin-classes.svg?branch=master)](https://travis-ci.org/WebReflection/babel-plugin-transform-builtin-classes) [![donate](https://img.shields.io/badge/$-donate-ff69b4.svg?maxAge=2592000&style=flat)](https://github.com/WebReflection/donate) 4 | 5 | ### About Babel 7 6 | 7 | Babel 7 included this plugin in core so you don't need this plugin anymore. 8 | 9 | - - - 10 | 11 | Inspired by [Logan Smyth transformer](https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend), 12 | but actually very different. 13 | 14 | This transformer aim is to fix once forever problems with native extends and Custom Elements. 15 | 16 | ```js 17 | // finally fixed 18 | class List extends Array {} 19 | console.assert(new List instanceof List); 20 | 21 | // finally fixed too 22 | class MyElement extends HTMLElement { 23 | connectedCallback() { 24 | this.textContent = 'hello'; 25 | } 26 | } 27 | 28 | customElements.define('my-element', MyElement); 29 | 30 | const node = new MyElement; 31 | console.assert(node.constructor === MyElement); 32 | console.assert(node instanceof MyElement); 33 | console.assert(node instanceof HTMLElement); 34 | 35 | document.body.appendChild(node); 36 | ``` 37 | 38 | ## Usage 39 | 40 | In your Babel 6 configuration, for example in a `.babelrc` you might have the following, 41 | which would enable the plugin and configure it to look for any class extending `HTMLElement`, `Error` or `Array` globals. 42 | 43 | ```js 44 | { 45 | "plugins": [ 46 | // either the preset es2015 or at least the following 47 | "babel-plugin-transform-es2015-classes", 48 | ["babel-plugin-transform-builtin-classes", { 49 | "globals": ["Array", "Error", "HTMLElement"] 50 | }] 51 | ] 52 | } 53 | ``` 54 | 55 | **However**, you can find all known Chrome browser classes already listed in the file `lib/.babelrc` too. 56 | 57 | #### Rollup 58 | 59 | In this case you might need to invert the plugins order: 60 | ```js 61 | { 62 | plugins: [ 63 | ['transform-builtin-classes', { 64 | globals: ['HTMLElement'] 65 | }], 66 | 'transform-es2015-classes' 67 | // ... others ... 68 | ] 69 | } 70 | ``` 71 | 72 | 73 | ### Compatibility 74 | This transformer works on IE11 and every other browser with `Object.setPrototypeOf` or `__proto__` as fallback. 75 | 76 | There is **NO IE <= 10 support**. If you need IE <= 10 don't use this plugin and/or don't extend natives (recommended). 77 | 78 | 79 | ### About `logIfPatched` option 80 | If you'd like to have a visual feedback when patched classes are encountered, 81 | use the `logIfPatched: true` option. 82 | 83 | ```js 84 | { 85 | "plugins": [ 86 | ['transform-builtin-classes', { 87 | globals: ['Array'], 88 | logIfPatched: true 89 | }] 90 | ] 91 | } 92 | ``` 93 | 94 | This will output (as `console.warn`) `✔ builtin extends patched` whenever a class is found. 95 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-plugin-transform-builtin-classes", 3 | "version": "0.6.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-regex": { 8 | "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 9 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 10 | }, 11 | "ansi-styles": { 12 | "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 13 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 14 | }, 15 | "anymatch": { 16 | "version": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 17 | "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", 18 | "dev": true, 19 | "optional": true, 20 | "requires": { 21 | "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 22 | "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" 23 | } 24 | }, 25 | "arr-diff": { 26 | "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 27 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 28 | "dev": true, 29 | "optional": true, 30 | "requires": { 31 | "arr-flatten": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz" 32 | } 33 | }, 34 | "arr-flatten": { 35 | "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", 36 | "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", 37 | "dev": true, 38 | "optional": true 39 | }, 40 | "array-unique": { 41 | "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 42 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 43 | "dev": true, 44 | "optional": true 45 | }, 46 | "arrify": { 47 | "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 48 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 49 | "dev": true, 50 | "optional": true 51 | }, 52 | "async-each": { 53 | "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 54 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 55 | "dev": true, 56 | "optional": true 57 | }, 58 | "babel-cli": { 59 | "version": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", 60 | "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", 61 | "dev": true, 62 | "requires": { 63 | "babel-core": "6.25.0", 64 | "babel-polyfill": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", 65 | "babel-register": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", 66 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 67 | "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 68 | "commander": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", 69 | "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 70 | "fs-readdir-recursive": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", 71 | "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 72 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 73 | "output-file-sync": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", 74 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 75 | "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 76 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 77 | "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" 78 | } 79 | }, 80 | "babel-code-frame": { 81 | "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 82 | "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", 83 | "requires": { 84 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 85 | "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 86 | "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" 87 | } 88 | }, 89 | "babel-core": { 90 | "version": "6.25.0", 91 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", 92 | "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", 93 | "dev": true, 94 | "requires": { 95 | "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 96 | "babel-generator": "6.25.0", 97 | "babel-helpers": "6.24.1", 98 | "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 99 | "babel-register": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", 100 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 101 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 102 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 103 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 104 | "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", 105 | "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 106 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 107 | "json5": "0.5.1", 108 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 109 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 110 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 111 | "private": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 112 | "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 113 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" 114 | } 115 | }, 116 | "babel-generator": { 117 | "version": "6.25.0", 118 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", 119 | "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", 120 | "dev": true, 121 | "requires": { 122 | "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 123 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 124 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 125 | "detect-indent": "4.0.0", 126 | "jsesc": "1.3.0", 127 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 128 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 129 | "trim-right": "1.0.1" 130 | } 131 | }, 132 | "babel-helper-call-delegate": { 133 | "version": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 134 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 135 | "dev": true, 136 | "requires": { 137 | "babel-helper-hoist-variables": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 138 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 139 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 140 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 141 | } 142 | }, 143 | "babel-helper-define-map": { 144 | "version": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", 145 | "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", 146 | "requires": { 147 | "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 148 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 149 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 150 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 151 | } 152 | }, 153 | "babel-helper-function-name": { 154 | "version": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 155 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 156 | "requires": { 157 | "babel-helper-get-function-arity": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 158 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 159 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 160 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 161 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 162 | } 163 | }, 164 | "babel-helper-get-function-arity": { 165 | "version": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 166 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 167 | "requires": { 168 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 169 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 170 | } 171 | }, 172 | "babel-helper-hoist-variables": { 173 | "version": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 174 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 175 | "dev": true, 176 | "requires": { 177 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 178 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 179 | } 180 | }, 181 | "babel-helper-optimise-call-expression": { 182 | "version": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 183 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 184 | "requires": { 185 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 186 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 187 | } 188 | }, 189 | "babel-helper-regex": { 190 | "version": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", 191 | "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", 192 | "dev": true, 193 | "requires": { 194 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 195 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 196 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 197 | } 198 | }, 199 | "babel-helper-replace-supers": { 200 | "version": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 201 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 202 | "requires": { 203 | "babel-helper-optimise-call-expression": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 204 | "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 205 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 206 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 207 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 208 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 209 | } 210 | }, 211 | "babel-helpers": { 212 | "version": "6.24.1", 213 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 214 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 215 | "dev": true, 216 | "requires": { 217 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 218 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" 219 | } 220 | }, 221 | "babel-messages": { 222 | "version": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 223 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 224 | "requires": { 225 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 226 | } 227 | }, 228 | "babel-plugin-check-es2015-constants": { 229 | "version": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 230 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 231 | "dev": true, 232 | "requires": { 233 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 234 | } 235 | }, 236 | "babel-plugin-transform-es2015-arrow-functions": { 237 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 238 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 239 | "dev": true, 240 | "requires": { 241 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 242 | } 243 | }, 244 | "babel-plugin-transform-es2015-block-scoped-functions": { 245 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 246 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 247 | "dev": true, 248 | "requires": { 249 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 250 | } 251 | }, 252 | "babel-plugin-transform-es2015-block-scoping": { 253 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", 254 | "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", 255 | "dev": true, 256 | "requires": { 257 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 258 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 259 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 260 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 261 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 262 | } 263 | }, 264 | "babel-plugin-transform-es2015-classes": { 265 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 266 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 267 | "requires": { 268 | "babel-helper-define-map": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", 269 | "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 270 | "babel-helper-optimise-call-expression": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 271 | "babel-helper-replace-supers": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 272 | "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 273 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 274 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 275 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 276 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 277 | } 278 | }, 279 | "babel-plugin-transform-es2015-computed-properties": { 280 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 281 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 282 | "dev": true, 283 | "requires": { 284 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 285 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" 286 | } 287 | }, 288 | "babel-plugin-transform-es2015-destructuring": { 289 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 290 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 291 | "dev": true, 292 | "requires": { 293 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 294 | } 295 | }, 296 | "babel-plugin-transform-es2015-duplicate-keys": { 297 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 298 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 299 | "dev": true, 300 | "requires": { 301 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 302 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 303 | } 304 | }, 305 | "babel-plugin-transform-es2015-for-of": { 306 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 307 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 308 | "dev": true, 309 | "requires": { 310 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 311 | } 312 | }, 313 | "babel-plugin-transform-es2015-function-name": { 314 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 315 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 316 | "dev": true, 317 | "requires": { 318 | "babel-helper-function-name": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 319 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 320 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 321 | } 322 | }, 323 | "babel-plugin-transform-es2015-literals": { 324 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 325 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 326 | "dev": true, 327 | "requires": { 328 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 329 | } 330 | }, 331 | "babel-plugin-transform-es2015-modules-amd": { 332 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 333 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 334 | "dev": true, 335 | "requires": { 336 | "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", 337 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 338 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" 339 | } 340 | }, 341 | "babel-plugin-transform-es2015-modules-commonjs": { 342 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", 343 | "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", 344 | "dev": true, 345 | "requires": { 346 | "babel-plugin-transform-strict-mode": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 347 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 348 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 349 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 350 | } 351 | }, 352 | "babel-plugin-transform-es2015-modules-systemjs": { 353 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 354 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 355 | "dev": true, 356 | "requires": { 357 | "babel-helper-hoist-variables": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 358 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 359 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" 360 | } 361 | }, 362 | "babel-plugin-transform-es2015-modules-umd": { 363 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 364 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 365 | "dev": true, 366 | "requires": { 367 | "babel-plugin-transform-es2015-modules-amd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 368 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 369 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" 370 | } 371 | }, 372 | "babel-plugin-transform-es2015-object-super": { 373 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 374 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 375 | "dev": true, 376 | "requires": { 377 | "babel-helper-replace-supers": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 378 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 379 | } 380 | }, 381 | "babel-plugin-transform-es2015-parameters": { 382 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 383 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 384 | "dev": true, 385 | "requires": { 386 | "babel-helper-call-delegate": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 387 | "babel-helper-get-function-arity": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 388 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 389 | "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 390 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 391 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 392 | } 393 | }, 394 | "babel-plugin-transform-es2015-shorthand-properties": { 395 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 396 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 397 | "dev": true, 398 | "requires": { 399 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 400 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 401 | } 402 | }, 403 | "babel-plugin-transform-es2015-spread": { 404 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 405 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 406 | "dev": true, 407 | "requires": { 408 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 409 | } 410 | }, 411 | "babel-plugin-transform-es2015-sticky-regex": { 412 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 413 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 414 | "dev": true, 415 | "requires": { 416 | "babel-helper-regex": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", 417 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 418 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 419 | } 420 | }, 421 | "babel-plugin-transform-es2015-template-literals": { 422 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 423 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 424 | "dev": true, 425 | "requires": { 426 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 427 | } 428 | }, 429 | "babel-plugin-transform-es2015-typeof-symbol": { 430 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 431 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 432 | "dev": true, 433 | "requires": { 434 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 435 | } 436 | }, 437 | "babel-plugin-transform-es2015-unicode-regex": { 438 | "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 439 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 440 | "dev": true, 441 | "requires": { 442 | "babel-helper-regex": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", 443 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 444 | "regexpu-core": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" 445 | } 446 | }, 447 | "babel-plugin-transform-regenerator": { 448 | "version": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", 449 | "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", 450 | "dev": true, 451 | "requires": { 452 | "regenerator-transform": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz" 453 | } 454 | }, 455 | "babel-plugin-transform-runtime": { 456 | "version": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", 457 | "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", 458 | "dev": true, 459 | "requires": { 460 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" 461 | } 462 | }, 463 | "babel-plugin-transform-strict-mode": { 464 | "version": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 465 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 466 | "dev": true, 467 | "requires": { 468 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 469 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" 470 | } 471 | }, 472 | "babel-polyfill": { 473 | "version": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", 474 | "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", 475 | "dev": true, 476 | "requires": { 477 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 478 | "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 479 | "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" 480 | } 481 | }, 482 | "babel-preset-es2015": { 483 | "version": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", 484 | "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", 485 | "dev": true, 486 | "requires": { 487 | "babel-plugin-check-es2015-constants": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 488 | "babel-plugin-transform-es2015-arrow-functions": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 489 | "babel-plugin-transform-es2015-block-scoped-functions": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 490 | "babel-plugin-transform-es2015-block-scoping": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", 491 | "babel-plugin-transform-es2015-classes": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 492 | "babel-plugin-transform-es2015-computed-properties": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 493 | "babel-plugin-transform-es2015-destructuring": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 494 | "babel-plugin-transform-es2015-duplicate-keys": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 495 | "babel-plugin-transform-es2015-for-of": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 496 | "babel-plugin-transform-es2015-function-name": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 497 | "babel-plugin-transform-es2015-literals": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 498 | "babel-plugin-transform-es2015-modules-amd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 499 | "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", 500 | "babel-plugin-transform-es2015-modules-systemjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 501 | "babel-plugin-transform-es2015-modules-umd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 502 | "babel-plugin-transform-es2015-object-super": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 503 | "babel-plugin-transform-es2015-parameters": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 504 | "babel-plugin-transform-es2015-shorthand-properties": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 505 | "babel-plugin-transform-es2015-spread": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 506 | "babel-plugin-transform-es2015-sticky-regex": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 507 | "babel-plugin-transform-es2015-template-literals": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 508 | "babel-plugin-transform-es2015-typeof-symbol": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 509 | "babel-plugin-transform-es2015-unicode-regex": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 510 | "babel-plugin-transform-regenerator": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz" 511 | } 512 | }, 513 | "babel-register": { 514 | "version": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", 515 | "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", 516 | "dev": true, 517 | "requires": { 518 | "babel-core": "6.25.0", 519 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 520 | "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 521 | "home-or-tmp": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 522 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 523 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 524 | "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" 525 | } 526 | }, 527 | "babel-runtime": { 528 | "version": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 529 | "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", 530 | "requires": { 531 | "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 532 | "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" 533 | } 534 | }, 535 | "babel-template": { 536 | "version": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", 537 | "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", 538 | "requires": { 539 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 540 | "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 541 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 542 | "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", 543 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 544 | } 545 | }, 546 | "babel-traverse": { 547 | "version": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", 548 | "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", 549 | "requires": { 550 | "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 551 | "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 552 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 553 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 554 | "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", 555 | "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 556 | "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 557 | "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 558 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 559 | } 560 | }, 561 | "babel-types": { 562 | "version": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 563 | "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", 564 | "requires": { 565 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 566 | "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 567 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 568 | "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" 569 | } 570 | }, 571 | "babylon": { 572 | "version": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", 573 | "integrity": "sha1-Pot0AriNIsNCPhN6FXeIOxX/hpo=" 574 | }, 575 | "balanced-match": { 576 | "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 577 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 578 | "dev": true 579 | }, 580 | "binary-extensions": { 581 | "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", 582 | "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", 583 | "dev": true, 584 | "optional": true 585 | }, 586 | "brace-expansion": { 587 | "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 588 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 589 | "dev": true, 590 | "requires": { 591 | "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 592 | "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 593 | } 594 | }, 595 | "braces": { 596 | "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 597 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 598 | "dev": true, 599 | "optional": true, 600 | "requires": { 601 | "expand-range": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 602 | "preserve": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 603 | "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" 604 | } 605 | }, 606 | "chalk": { 607 | "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 608 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 609 | "requires": { 610 | "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 611 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 612 | "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 613 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 614 | "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 615 | } 616 | }, 617 | "chokidar": { 618 | "version": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 619 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 620 | "dev": true, 621 | "optional": true, 622 | "requires": { 623 | "anymatch": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 624 | "async-each": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 625 | "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 626 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 627 | "is-binary-path": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 628 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 629 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 630 | "readdirp": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz" 631 | } 632 | }, 633 | "commander": { 634 | "version": "https://registry.npmjs.org/commander/-/commander-2.10.0.tgz", 635 | "integrity": "sha1-4fXTJF3iRtGlygRwL6GtG9fkBf4=", 636 | "dev": true, 637 | "requires": { 638 | "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" 639 | } 640 | }, 641 | "concat-map": { 642 | "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 643 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 644 | "dev": true 645 | }, 646 | "consolemd": { 647 | "version": "0.1.2", 648 | "resolved": "https://registry.npmjs.org/consolemd/-/consolemd-0.1.2.tgz", 649 | "integrity": "sha1-mJSO+DAlXSI1HOXRwWDqxnEN26o=", 650 | "dev": true, 651 | "requires": { 652 | "echomd": "0.1.2" 653 | } 654 | }, 655 | "convert-source-map": { 656 | "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 657 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 658 | "dev": true 659 | }, 660 | "core-js": { 661 | "version": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 662 | "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" 663 | }, 664 | "core-util-is": { 665 | "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 666 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 667 | "dev": true, 668 | "optional": true 669 | }, 670 | "debug": { 671 | "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 672 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 673 | "requires": { 674 | "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 675 | } 676 | }, 677 | "detect-indent": { 678 | "version": "4.0.0", 679 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 680 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 681 | "dev": true, 682 | "requires": { 683 | "repeating": "2.0.1" 684 | } 685 | }, 686 | "echomd": { 687 | "version": "0.1.2", 688 | "resolved": "https://registry.npmjs.org/echomd/-/echomd-0.1.2.tgz", 689 | "integrity": "sha1-kNPPD55Fkwb0wdkKArZelxkj9v8=", 690 | "dev": true 691 | }, 692 | "escape-string-regexp": { 693 | "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 694 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 695 | }, 696 | "esutils": { 697 | "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 698 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 699 | }, 700 | "expand-brackets": { 701 | "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 702 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 703 | "dev": true, 704 | "optional": true, 705 | "requires": { 706 | "is-posix-bracket": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" 707 | } 708 | }, 709 | "expand-range": { 710 | "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 711 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 712 | "dev": true, 713 | "optional": true, 714 | "requires": { 715 | "fill-range": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" 716 | } 717 | }, 718 | "extglob": { 719 | "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 720 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 721 | "dev": true, 722 | "optional": true, 723 | "requires": { 724 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 725 | } 726 | }, 727 | "filename-regex": { 728 | "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 729 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 730 | "dev": true, 731 | "optional": true 732 | }, 733 | "fill-range": { 734 | "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 735 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 736 | "dev": true, 737 | "optional": true, 738 | "requires": { 739 | "is-number": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 740 | "isobject": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 741 | "randomatic": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 742 | "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 743 | "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 744 | } 745 | }, 746 | "for-in": { 747 | "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 748 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 749 | "dev": true, 750 | "optional": true 751 | }, 752 | "for-own": { 753 | "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 754 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 755 | "dev": true, 756 | "optional": true, 757 | "requires": { 758 | "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 759 | } 760 | }, 761 | "fs-readdir-recursive": { 762 | "version": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", 763 | "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", 764 | "dev": true 765 | }, 766 | "fs.realpath": { 767 | "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 768 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 769 | "dev": true 770 | }, 771 | "glob": { 772 | "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 773 | "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", 774 | "dev": true, 775 | "requires": { 776 | "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 777 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 778 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 779 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 780 | "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 781 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 782 | } 783 | }, 784 | "glob-base": { 785 | "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 786 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 787 | "dev": true, 788 | "optional": true, 789 | "requires": { 790 | "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 791 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 792 | } 793 | }, 794 | "glob-parent": { 795 | "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 796 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 797 | "dev": true, 798 | "requires": { 799 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 800 | } 801 | }, 802 | "globals": { 803 | "version": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 804 | "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=" 805 | }, 806 | "graceful-fs": { 807 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 808 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 809 | "dev": true 810 | }, 811 | "graceful-readlink": { 812 | "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 813 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 814 | "dev": true 815 | }, 816 | "has-ansi": { 817 | "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 818 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 819 | "requires": { 820 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 821 | } 822 | }, 823 | "home-or-tmp": { 824 | "version": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 825 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 826 | "dev": true, 827 | "requires": { 828 | "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 829 | "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 830 | } 831 | }, 832 | "inflight": { 833 | "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 834 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 835 | "dev": true, 836 | "requires": { 837 | "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 838 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 839 | } 840 | }, 841 | "inherits": { 842 | "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 843 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 844 | "dev": true 845 | }, 846 | "invariant": { 847 | "version": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 848 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 849 | "requires": { 850 | "loose-envify": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz" 851 | } 852 | }, 853 | "is-binary-path": { 854 | "version": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 855 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 856 | "dev": true, 857 | "optional": true, 858 | "requires": { 859 | "binary-extensions": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz" 860 | } 861 | }, 862 | "is-buffer": { 863 | "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 864 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 865 | "dev": true 866 | }, 867 | "is-dotfile": { 868 | "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 869 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 870 | "dev": true, 871 | "optional": true 872 | }, 873 | "is-equal-shallow": { 874 | "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 875 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 876 | "dev": true, 877 | "optional": true, 878 | "requires": { 879 | "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" 880 | } 881 | }, 882 | "is-extendable": { 883 | "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 884 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 885 | "dev": true, 886 | "optional": true 887 | }, 888 | "is-extglob": { 889 | "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 890 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 891 | "dev": true 892 | }, 893 | "is-finite": { 894 | "version": "1.0.2", 895 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 896 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 897 | "dev": true, 898 | "requires": { 899 | "number-is-nan": "1.0.1" 900 | } 901 | }, 902 | "is-glob": { 903 | "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 904 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 905 | "dev": true, 906 | "requires": { 907 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 908 | } 909 | }, 910 | "is-number": { 911 | "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 912 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 913 | "dev": true, 914 | "optional": true, 915 | "requires": { 916 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 917 | } 918 | }, 919 | "is-posix-bracket": { 920 | "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 921 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 922 | "dev": true, 923 | "optional": true 924 | }, 925 | "is-primitive": { 926 | "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 927 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 928 | "dev": true 929 | }, 930 | "isarray": { 931 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 932 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 933 | "dev": true 934 | }, 935 | "isobject": { 936 | "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 937 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 938 | "dev": true, 939 | "optional": true, 940 | "requires": { 941 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 942 | } 943 | }, 944 | "js-tokens": { 945 | "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", 946 | "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" 947 | }, 948 | "jsesc": { 949 | "version": "1.3.0", 950 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 951 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 952 | "dev": true 953 | }, 954 | "json5": { 955 | "version": "0.5.1", 956 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 957 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 958 | "dev": true 959 | }, 960 | "kind-of": { 961 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 962 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 963 | "dev": true, 964 | "requires": { 965 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" 966 | } 967 | }, 968 | "lodash": { 969 | "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 970 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" 971 | }, 972 | "loose-envify": { 973 | "version": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 974 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 975 | "requires": { 976 | "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" 977 | } 978 | }, 979 | "micromatch": { 980 | "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 981 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 982 | "dev": true, 983 | "optional": true, 984 | "requires": { 985 | "arr-diff": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 986 | "array-unique": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 987 | "braces": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 988 | "expand-brackets": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 989 | "extglob": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 990 | "filename-regex": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 991 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 992 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 993 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 994 | "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 995 | "object.omit": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 996 | "parse-glob": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 997 | "regex-cache": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz" 998 | } 999 | }, 1000 | "minimatch": { 1001 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1002 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 1003 | "dev": true, 1004 | "requires": { 1005 | "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" 1006 | } 1007 | }, 1008 | "minimist": { 1009 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1010 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1011 | "dev": true 1012 | }, 1013 | "mkdirp": { 1014 | "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1015 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1016 | "dev": true, 1017 | "requires": { 1018 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 1019 | } 1020 | }, 1021 | "ms": { 1022 | "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1023 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1024 | }, 1025 | "normalize-path": { 1026 | "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1027 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1028 | "dev": true, 1029 | "optional": true, 1030 | "requires": { 1031 | "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" 1032 | } 1033 | }, 1034 | "number-is-nan": { 1035 | "version": "1.0.1", 1036 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1037 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1038 | "dev": true 1039 | }, 1040 | "object-assign": { 1041 | "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1042 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1043 | "dev": true 1044 | }, 1045 | "object.omit": { 1046 | "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1047 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1048 | "dev": true, 1049 | "optional": true, 1050 | "requires": { 1051 | "for-own": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1052 | "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1053 | } 1054 | }, 1055 | "once": { 1056 | "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1057 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1058 | "dev": true, 1059 | "requires": { 1060 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1061 | } 1062 | }, 1063 | "os-homedir": { 1064 | "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1065 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1066 | "dev": true 1067 | }, 1068 | "os-tmpdir": { 1069 | "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1070 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1071 | "dev": true 1072 | }, 1073 | "output-file-sync": { 1074 | "version": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", 1075 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", 1076 | "dev": true, 1077 | "requires": { 1078 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1079 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1080 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1081 | } 1082 | }, 1083 | "parse-glob": { 1084 | "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1085 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 1086 | "dev": true, 1087 | "optional": true, 1088 | "requires": { 1089 | "glob-base": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1090 | "is-dotfile": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1091 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1092 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 1093 | } 1094 | }, 1095 | "path-is-absolute": { 1096 | "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1097 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1098 | "dev": true 1099 | }, 1100 | "preserve": { 1101 | "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 1102 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 1103 | "dev": true, 1104 | "optional": true 1105 | }, 1106 | "private": { 1107 | "version": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 1108 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 1109 | "dev": true 1110 | }, 1111 | "process-nextick-args": { 1112 | "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1113 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1114 | "dev": true, 1115 | "optional": true 1116 | }, 1117 | "randomatic": { 1118 | "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 1119 | "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", 1120 | "dev": true, 1121 | "optional": true, 1122 | "requires": { 1123 | "is-number": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1124 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" 1125 | }, 1126 | "dependencies": { 1127 | "is-number": { 1128 | "version": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1129 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1130 | "dev": true, 1131 | "optional": true, 1132 | "requires": { 1133 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1134 | }, 1135 | "dependencies": { 1136 | "kind-of": { 1137 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1138 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1139 | "dev": true, 1140 | "optional": true, 1141 | "requires": { 1142 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" 1143 | } 1144 | } 1145 | } 1146 | }, 1147 | "kind-of": { 1148 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1149 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1150 | "dev": true, 1151 | "optional": true, 1152 | "requires": { 1153 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" 1154 | } 1155 | } 1156 | } 1157 | }, 1158 | "readable-stream": { 1159 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", 1160 | "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", 1161 | "dev": true, 1162 | "optional": true, 1163 | "requires": { 1164 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1165 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1166 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1167 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1168 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1169 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1170 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1171 | } 1172 | }, 1173 | "readdirp": { 1174 | "version": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 1175 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 1176 | "dev": true, 1177 | "optional": true, 1178 | "requires": { 1179 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1180 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1181 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", 1182 | "set-immediate-shim": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" 1183 | } 1184 | }, 1185 | "regenerate": { 1186 | "version": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", 1187 | "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", 1188 | "dev": true 1189 | }, 1190 | "regenerator-runtime": { 1191 | "version": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 1192 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" 1193 | }, 1194 | "regenerator-transform": { 1195 | "version": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", 1196 | "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", 1197 | "dev": true, 1198 | "requires": { 1199 | "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", 1200 | "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 1201 | "private": "https://registry.npmjs.org/private/-/private-0.1.7.tgz" 1202 | } 1203 | }, 1204 | "regex-cache": { 1205 | "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 1206 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 1207 | "dev": true, 1208 | "optional": true, 1209 | "requires": { 1210 | "is-equal-shallow": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1211 | "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" 1212 | } 1213 | }, 1214 | "regexpu-core": { 1215 | "version": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 1216 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 1217 | "dev": true, 1218 | "requires": { 1219 | "regenerate": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", 1220 | "regjsgen": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 1221 | "regjsparser": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" 1222 | } 1223 | }, 1224 | "regjsgen": { 1225 | "version": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 1226 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 1227 | "dev": true 1228 | }, 1229 | "regjsparser": { 1230 | "version": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 1231 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 1232 | "dev": true, 1233 | "requires": { 1234 | "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" 1235 | }, 1236 | "dependencies": { 1237 | "jsesc": { 1238 | "version": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 1239 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 1240 | "dev": true 1241 | } 1242 | } 1243 | }, 1244 | "remove-trailing-separator": { 1245 | "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", 1246 | "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", 1247 | "dev": true, 1248 | "optional": true 1249 | }, 1250 | "repeat-element": { 1251 | "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 1252 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 1253 | "dev": true 1254 | }, 1255 | "repeat-string": { 1256 | "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1257 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1258 | "dev": true, 1259 | "optional": true 1260 | }, 1261 | "repeating": { 1262 | "version": "2.0.1", 1263 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1264 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1265 | "dev": true, 1266 | "requires": { 1267 | "is-finite": "1.0.2" 1268 | } 1269 | }, 1270 | "safe-buffer": { 1271 | "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1272 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", 1273 | "dev": true 1274 | }, 1275 | "set-immediate-shim": { 1276 | "version": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 1277 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 1278 | "dev": true, 1279 | "optional": true 1280 | }, 1281 | "slash": { 1282 | "version": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 1283 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 1284 | "dev": true 1285 | }, 1286 | "source-map": { 1287 | "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 1288 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 1289 | "dev": true 1290 | }, 1291 | "source-map-support": { 1292 | "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", 1293 | "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", 1294 | "dev": true, 1295 | "requires": { 1296 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" 1297 | } 1298 | }, 1299 | "string_decoder": { 1300 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1301 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 1302 | "dev": true, 1303 | "optional": true, 1304 | "requires": { 1305 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 1306 | } 1307 | }, 1308 | "strip-ansi": { 1309 | "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1310 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1311 | "requires": { 1312 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 1313 | } 1314 | }, 1315 | "supports-color": { 1316 | "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1317 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1318 | }, 1319 | "to-fast-properties": { 1320 | "version": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1321 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 1322 | }, 1323 | "tressa": { 1324 | "version": "0.3.1", 1325 | "resolved": "https://registry.npmjs.org/tressa/-/tressa-0.3.1.tgz", 1326 | "integrity": "sha1-OhdV5a7cQ0+tmntp0EGrztdJatI=", 1327 | "dev": true, 1328 | "requires": { 1329 | "consolemd": "0.1.2" 1330 | } 1331 | }, 1332 | "trim-right": { 1333 | "version": "1.0.1", 1334 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 1335 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 1336 | "dev": true 1337 | }, 1338 | "user-home": { 1339 | "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 1340 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 1341 | "dev": true 1342 | }, 1343 | "util-deprecate": { 1344 | "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1345 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1346 | "dev": true, 1347 | "optional": true 1348 | }, 1349 | "v8flags": { 1350 | "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 1351 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 1352 | "dev": true, 1353 | "requires": { 1354 | "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" 1355 | } 1356 | }, 1357 | "wrappy": { 1358 | "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1359 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1360 | "dev": true 1361 | } 1362 | } 1363 | } 1364 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-plugin-transform-builtin-classes", 3 | "version": "0.6.1", 4 | "description": "", 5 | "keywords": [ 6 | "babel", 7 | "babel-plugin", 8 | "es6", 9 | "classes", 10 | "native", 11 | "custom", 12 | "elements", 13 | "fixed" 14 | ], 15 | "main": "lib", 16 | "scripts": { 17 | "build": "babel src -d lib && cp .babelrc lib/.babelrc", 18 | "watch": "babel src -d lib -w", 19 | "test": "node test/test.js && npm run build && node test/index.js && node test/test.es5.js" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "git+https://github.com/WebReflection/babel-plugin-transform-builtin-classes.git" 24 | }, 25 | "author": "Andrea Giammarchi", 26 | "license": "ISC", 27 | "bugs": { 28 | "url": "https://github.com/WebReflection/babel-plugin-transform-builtin-classes/issues" 29 | }, 30 | "homepage": "https://github.com/WebReflection/babel-plugin-transform-builtin-classes#readme", 31 | "devDependencies": { 32 | "babel-cli": "^6.24.1", 33 | "babel-core": "^6.25.0", 34 | "babel-plugin-transform-runtime": "^6.23.0", 35 | "babel-preset-es2015": "^6.24.1", 36 | "tressa": "^0.3.1" 37 | }, 38 | "dependencies": { 39 | "babel-plugin-transform-es2015-classes": "^6.24.1", 40 | "babel-runtime": "^6.23.0", 41 | "babel-template": "^6.25.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015"], 3 | "plugins": ["transform-runtime"] 4 | } -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import template from 'babel-template'; 2 | 3 | const fixAsTemplate = template(` 4 | var HELPER = (function (O) { 5 | var 6 | gPO = O.getPrototypeOf || function (o) { return o.__proto__; }, 7 | sPO = O.setPrototypeOf || function (o, p) { o.__proto__ = p; return o; }, 8 | construct = typeof Reflect === 'object' ? 9 | Reflect.construct : 10 | function (Parent, args, Class) { 11 | var Constructor, a = [null]; 12 | a.push.apply(a, args); 13 | Constructor = Parent.bind.apply(Parent, a); 14 | return sPO(new Constructor, Class.prototype); 15 | } 16 | ; 17 | return function fixBabelExtend(Class) { 18 | var Parent = gPO(Class); 19 | return sPO( 20 | Class, 21 | sPO( 22 | function Super() { 23 | return construct(Parent, arguments, gPO(this).constructor); 24 | }, 25 | Parent 26 | ) 27 | ); 28 | }; 29 | }(Object)); 30 | `); 31 | 32 | export default function (babel) { 33 | 34 | let name; 35 | 36 | const VISITED = Symbol(); 37 | const {types: t} = babel; 38 | 39 | const needsWrapping = (path, globals) => { 40 | const superClass = path.get('superClass'); 41 | return !!superClass.node && 42 | (globals || []).some(name => superClass.isIdentifier({name})); 43 | }; 44 | 45 | const getName = (path) => { 46 | if (!name) { 47 | name = path.scope.generateUidIdentifier('fixBabelExtend'); 48 | path.scope.getProgramParent() 49 | .path.unshiftContainer('body',fixAsTemplate({HELPER: name})); 50 | } 51 | return name; 52 | }; 53 | 54 | return { 55 | pre() { 56 | name = null; 57 | }, 58 | visitor: { 59 | ClassDeclaration(path) { 60 | const {node} = path; 61 | if (!node[VISITED] && needsWrapping(path, this.opts.globals)) { 62 | const name = getName(path); 63 | const ref = node.id || path.scope.generateUidIdentifier('class'); 64 | path.replaceWith(t.variableDeclaration('let', [ 65 | t.variableDeclarator(ref, t.callExpression(name, [ 66 | t.toExpression(node) 67 | ])), 68 | ])); 69 | } 70 | node[VISITED] = true; 71 | }, 72 | ClassExpression(path) { 73 | const {node} = path; 74 | if (!node[VISITED] && needsWrapping(path, this.opts.globals)) { 75 | const name = getName(path); 76 | path.replaceWith(t.callExpression(name, [ 77 | t.toExpression(node) 78 | ])); 79 | } 80 | node[VISITED] = true; 81 | }, 82 | }, 83 | post() { 84 | if ( 85 | name && 86 | this.opts.logIfPatched 87 | ) console.warn(' ✔ builtin extends patched'); 88 | } 89 | }; 90 | 91 | } 92 | -------------------------------------------------------------------------------- /test/cool-element.es5.js: -------------------------------------------------------------------------------- 1 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 2 | 3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4 | 5 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 6 | 7 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 8 | 9 | var _fixBabelExtend = function (O) { 10 | var gOPD = O.getOwnPropertyDescriptor, 11 | gPO = O.getPrototypeOf || function (o) { 12 | return o.__proto__; 13 | }, 14 | sPO = O.setPrototypeOf || function (o, p) { 15 | o.__proto__ = p; 16 | return o; 17 | }, 18 | construct = typeof Reflect === 'object' ? Reflect.construct : function (Parent, args, Class) { 19 | var Constructor, 20 | a = [null]; 21 | a.push.apply(a, args); 22 | Constructor = Parent.bind.apply(Parent, a); 23 | return sPO(new Constructor(), Class.prototype); 24 | }; 25 | 26 | return function fixBabelExtend(Class) { 27 | var Parent = gPO(Class); 28 | return sPO(Class, sPO(function Super() { 29 | return construct(Parent, arguments, gPO(this).constructor); 30 | }, Parent)); 31 | }; 32 | }(Object); 33 | 34 | let CoolElement = _fixBabelExtend(function (_HTMLElement) { 35 | _inherits(CoolElement, _HTMLElement); 36 | 37 | function CoolElement() { 38 | _classCallCheck(this, CoolElement); 39 | 40 | return _possibleConstructorReturn(this, (CoolElement.__proto__ || Object.getPrototypeOf(CoolElement)).apply(this, arguments)); 41 | } 42 | 43 | _createClass(CoolElement, [{ 44 | key: 'connectedCallback', 45 | value: function connectedCallback() { 46 | this.innerText = 'Hello World'; 47 | } 48 | }]); 49 | 50 | return CoolElement; 51 | }(HTMLElement)); 52 | 53 | customElements.define('cool-element', CoolElement); -------------------------------------------------------------------------------- /test/cool-element.js: -------------------------------------------------------------------------------- 1 | class CoolElement extends HTMLElement { 2 | connectedCallback () { 3 | this.innerText = 'Hello World'; 4 | } 5 | } 6 | 7 | customElements.define('cool-element', CoolElement); -------------------------------------------------------------------------------- /test/cool.js: -------------------------------------------------------------------------------- 1 | 2 | require('babel-core').transformFile( 3 | __dirname + '/cool-element.js', 4 | { 5 | "plugins": [ 6 | [require('../lib/index.js').default, { 7 | globals: ['HTMLElement'] 8 | }] 9 | ] 10 | }, 11 | function (err, result) { 12 | if (err) (console.error(err), process.exit(1)); 13 | else require('fs').writeFile( 14 | __dirname + '/cool-element.es5.js', 15 | result.code, 16 | function (err) { 17 | if (err) (console.error(err), process.exit(1)); 18 | } 19 | ); 20 | } 21 | ); -------------------------------------------------------------------------------- /test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | require('babel-core').transformFile( 2 | __dirname + '/test.js', 3 | { 4 | "plugins": [ 5 | [require('../lib/index.js').default, { 6 | globals: ['Array'], 7 | logIfPatched: true 8 | }] 9 | ] 10 | }, 11 | function (err, result) { 12 | if (err) (console.error(err), process.exit(1)); 13 | else require('fs').writeFile( 14 | __dirname + '/test.es5.js', 15 | result.code, 16 | function (err) { 17 | if (err) (console.error(err), process.exit(1)); 18 | } 19 | ); 20 | } 21 | ); -------------------------------------------------------------------------------- /test/test.es5.js: -------------------------------------------------------------------------------- 1 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 2 | 3 | var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; 4 | 5 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6 | 7 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 8 | 9 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 10 | 11 | var _fixBabelExtend = function (O) { 12 | var gPO = O.getPrototypeOf || function (o) { 13 | return o.__proto__; 14 | }, 15 | sPO = O.setPrototypeOf || function (o, p) { 16 | o.__proto__ = p; 17 | return o; 18 | }, 19 | construct = typeof Reflect === 'object' ? Reflect.construct : function (Parent, args, Class) { 20 | var Constructor, 21 | a = [null]; 22 | a.push.apply(a, args); 23 | Constructor = Parent.bind.apply(Parent, a); 24 | return sPO(new Constructor(), Class.prototype); 25 | }; 26 | 27 | return function fixBabelExtend(Class) { 28 | var Parent = gPO(Class); 29 | return sPO(Class, sPO(function Super() { 30 | return construct(Parent, arguments, gPO(this).constructor); 31 | }, Parent)); 32 | }; 33 | }(Object); 34 | 35 | var tressa = require('tressa'); 36 | 37 | let List = _fixBabelExtend(function (_Array) { 38 | _inherits(List, _Array); 39 | 40 | function List(value) { 41 | var _this; 42 | 43 | _classCallCheck(this, List); 44 | 45 | (_this = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this)), _this).push(value); 46 | return _this; 47 | } 48 | 49 | _createClass(List, [{ 50 | key: 'push', 51 | value: function push(value) { 52 | _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'push', this).call(this, value); 53 | return this; 54 | } 55 | }]); 56 | 57 | return List; 58 | }(Array)); 59 | 60 | tressa.title(/test\.js$/.test(__filename) ? 'Native Classes' : 'Transformed Classes'); 61 | 62 | tressa.assert(new List(1) instanceof List, 'new List is an instanceof List'); 63 | tressa.assert(new List(2) instanceof Array, 'new List is an instanceof Array'); 64 | var l = new List(3); 65 | tressa.assert(l.length === 1 && l[0] === 3, 'constructor pushes an entry'); 66 | tressa.assert(l.push(4) === l && l.length === 2 && l.join() === '3,4', 'method override works'); 67 | 68 | let SecondLevel = function (_List) { 69 | _inherits(SecondLevel, _List); 70 | 71 | function SecondLevel() { 72 | _classCallCheck(this, SecondLevel); 73 | 74 | return _possibleConstructorReturn(this, (SecondLevel.__proto__ || Object.getPrototypeOf(SecondLevel)).apply(this, arguments)); 75 | } 76 | 77 | _createClass(SecondLevel, [{ 78 | key: 'method', 79 | value: function method() { 80 | return this; 81 | } 82 | }]); 83 | 84 | return SecondLevel; 85 | }(List); 86 | 87 | tressa.assert(new SecondLevel(1) instanceof SecondLevel, 'new SecondLevel is an instanceof SecondLevel'); 88 | tressa.assert(new SecondLevel(2) instanceof List, 'new SecondLevel is an instanceof List'); 89 | tressa.assert(new SecondLevel(3) instanceof Array, 'new SecondLevel is an instanceof Array'); 90 | var s = new SecondLevel(4); 91 | tressa.assert(s.length === 1 && s[0] === 4, 'constructor pushes an entry'); 92 | tressa.assert(s.push(5) === s && s.length === 2 && s.join() === '4,5', 'inherited override works'); 93 | tressa.assert(s.method() === s, 'new method works'); -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | var tressa = require('tressa'); 2 | 3 | class List extends Array { 4 | constructor(value) { 5 | super().push(value); 6 | } 7 | push(value) { 8 | super.push(value); 9 | return this; 10 | } 11 | } 12 | 13 | tressa.title(/test\.js$/.test(__filename) ? 14 | 'Native Classes' : 15 | 'Transformed Classes' 16 | ); 17 | 18 | tressa.assert(new List(1) instanceof List, 'new List is an instanceof List'); 19 | tressa.assert(new List(2) instanceof Array, 'new List is an instanceof Array'); 20 | var l = new List(3); 21 | tressa.assert(l.length === 1 && l[0] === 3, 'constructor pushes an entry'); 22 | tressa.assert(l.push(4) === l && l.length === 2 && l.join() === '3,4', 'method override works'); 23 | 24 | class SecondLevel extends List { 25 | method() { 26 | return this; 27 | } 28 | } 29 | 30 | tressa.assert(new SecondLevel(1) instanceof SecondLevel, 'new SecondLevel is an instanceof SecondLevel'); 31 | tressa.assert(new SecondLevel(2) instanceof List, 'new SecondLevel is an instanceof List'); 32 | tressa.assert(new SecondLevel(3) instanceof Array, 'new SecondLevel is an instanceof Array'); 33 | var s = new SecondLevel(4); 34 | tressa.assert(s.length === 1 && s[0] === 4, 'constructor pushes an entry'); 35 | tressa.assert(s.push(5) === s && s.length === 2 && s.join() === '4,5', 'inherited override works'); 36 | tressa.assert(s.method() === s, 'new method works'); 37 | --------------------------------------------------------------------------------