>11e3a9652a first vor 7 Jahren css-focus-within.json 11e3a9652a first vor 7 Jahren css-font-rendering-controls.json 11e3a9652a first vor 7 Jahren css-font-stretch.json 11e3a9652a first vor 7 Jahren css-gencontent.json 11e3a9652a first vor 7 Jahren css-gradients.json 11e3a9652a first vor 7 Jahren css-grid.json 11e3a9652a first vor 7 Jahren css-hanging-punctuation.json 11e3a9652a first vor 7 Jahren css-has.json 11e3a9652a first vor 7 Jahren css-hyphenate.json 11e3a9652a first vor 7 Jahren css-hyphens.json 11e3a9652a first vor 7 Jahren css-image-orientation.json 11e3a9652a first vor 7 Jahren css-image-set.json 11e3a9652a first vor 7 Jahren css-in-out-of-range.json 11e3a9652a first vor 7 Jahren css-indeterminate-pseudo.json 11e3a9652a first vor 7 Jahren css-initial-letter.json 11e3a9652a first vor 7 Jahren css-initial-value.json 11e3a9652a first vor 7 Jahren css-letter-spacing.json 11e3a9652a first vor 7 Jahren css-line-clamp.json 11e3a9652a first vor 7 Jahren css-logical-props.json 11e3a9652a first vor 7 Jahren css-marker-pseudo.json 11e3a9652a first vor 7 Jahren css-masks.json 11e3a9652a first vor 7 Jahren css-matches-pseudo.json 11e3a9652a first vor 7 Jahren css-media-interaction.json 11e3a9652a first vor 7 Jahren css-media-resolution.json 11e3a9652a first vor 7 Jahren css-media-scripting.json 11e3a9652a first vor 7 Jahren css-mediaqueries.json 11e3a9652a first vor 7 Jahren css-mixblendmode.json 11e3a9652a first vor 7 Jahren css-motion-paths.json 11e3a9652a first vor 7 Jahren css-namespaces.json 11e3a9652a first vor 7 Jahren css-not-sel-list.json 11e3a9652a first vor 7 Jahren css-nth-child-of.json 11e3a9652a first vor 7 Jahren css-opacity.json 11e3a9652a first vor 7 Jahren css-optional-pseudo.json 11e3a9652a first vor 7 Jahren css-overflow-anchor.json 11e3a9652a first vor 7 Jahren css-overscroll-behavior.json 11e3a9652a first vor 7 Jahren css-page-break.json 11e3a9652a first vor 7 Jahren css-paged-media.json 11e3a9652a first vor 7 Jahren css-paint-api.json 11e3a9652a first vor 7 Jahren css-placeholder-shown.json 11e3a9652a first vor 7 Jahren css-placeholder.json 11e3a9652a first vor 7 Jahren css-read-only-write.json 11e3a9652a first vor 7 Jahren css-rebeccapurple.json 11e3a9652a first vor 7 Jahren css-reflections.json 11e3a9652a first vor 7 Jahren css-regions.json 11e3a9652a first vor 7 Jahren css-repeating-gradients.json 11e3a9652a first vor 7 Jahren css-resize.json 11e3a9652a first vor 7 Jahren css-revert-value.json 11e3a9652a first vor 7 Jahren css-rrggbbaa.json 11e3a9652a first vor 7 Jahren css-scroll-behavior.json 11e3a9652a first vor 7 Jahren css-scrollbar.json 11e3a9652a first vor 7 Jahren css-sel2.json 11e3a9652a first vor 7 Jahren css-sel3.json 11e3a9652a first vor 7 Jahren css-selection.json 11e3a9652a first vor 7 Jahren css-shapes.json 11e3a9652a first vor 7 Jahren css-snappoints.json 11e3a9652a first vor 7 Jahren css-sticky.json 11e3a9652a first vor 7 Jahren css-supports-api.json 11e3a9652a first vor 7 Jahren css-table.json 11e3a9652a first vor 7 Jahren css-text-align-last.json 11e3a9652a first vor 7 Jahren css-text-indent.json 11e3a9652a first vor 7 Jahren css-text-justify.json 11e3a9652a first vor 7 Jahren css-text-orientation.json 11e3a9652a first vor 7 Jahren css-text-spacing.json 11e3a9652a first vor 7 Jahren css-textshadow.json 11e3a9652a first vor 7 Jahren css-touch-action-2.json 11e3a9652a first vor 7 Jahren css-touch-action.json 11e3a9652a first vor 7 Jahren css-transitions.json 11e3a9652a first vor 7 Jahren css-unicode-bidi.json 11e3a9652a first vor 7 Jahren css-unset-value.json 11e3a9652a first vor 7 Jahren css-variables.json 11e3a9652a first vor 7 Jahren css-widows-orphans.json 11e3a9652a first vor 7 Jahren css-writing-mode.json 11e3a9652a first vor 7 Jahren css-zoom.json 11e3a9652a first vor 7 Jahren css3-attr.json 11e3a9652a first vor 7 Jahren css3-boxsizing.json 11e3a9652a first vor 7 Jahren css3-colors.json 11e3a9652a first vor 7 Jahren css3-cursors-grab.json 11e3a9652a first vor 7 Jahren css3-cursors-newer.json 11e3a9652a first vor 7 Jahren css3-cursors.json 11e3a9652a first vor 7 Jahren css3-tabsize.json 11e3a9652a first vor 7 Jahren currentcolor.json 11e3a9652a first vor 7 Jahren custom-elements.json 11e3a9652a first vor 7 Jahren custom-elementsv1.json 11e3a9652a first vor 7 Jahren customevent.json 11e3a9652a first vor 7 Jahren datalist.json 11e3a9652a first vor 7 Jahren dataset.json 11e3a9652a first vor 7 Jahren datauri.json 11e3a9652a first vor 7 Jahren details.json 11e3a9652a first vor 7 Jahren deviceorientation.json 11e3a9652a first vor 7 Jahren devicepixelratio.json 11e3a9652a first vor 7 Jahren dialog.json 11e3a9652a first vor 7 Jahren dispatchevent.json 11e3a9652a first vor 7 Jahren do-not-track.json 11e3a9652a first vor 7 Jahren document-currentscript.json 11e3a9652a first vor 7 Jahren document-evaluate-xpath.json 11e3a9652a first vor 7 Jahren document-execcommand.json 11e3a9652a first vor 7 Jahren document-scrollingelement.json 11e3a9652a first vor 7 Jahren documenthead.json 11e3a9652a first vor 7 Jahren dom-manip-convenience.json 11e3a9652a first vor 7 Jahren dom-range.json 11e3a9652a first vor 7 Jahren domcontentloaded.json 11e3a9652a first vor 7 Jahren domfocusin-domfocusout-events.json 11e3a9652a first vor 7 Jahren dommatrix.json 11e3a9652a first vor 7 Jahren download.json 11e3a9652a first vor 7 Jahren dragndrop.json 11e3a9652a first vor 7 Jahren element-closest.json 11e3a9652a first vor 7 Jahren element-from-point.json 11e3a9652a first vor 7 Jahren eme.json 11e3a9652a first vor 7 Jahren eot.json 11e3a9652a first vor 7 Jahren es5.json 11e3a9652a first vor 7 Jahren es6-class.json 11e3a9652a first vor 7 Jahren es6-generators.json 11e3a9652a first vor 7 Jahren es6-module-dynamic-import.json 11e3a9652a first vor 7 Jahren es6-module.json 11e3a9652a first vor 7 Jahren es6-number.json 11e3a9652a first vor 7 Jahren es6-string-includes.json 11e3a9652a first vor 7 Jahren eventsource.json 11e3a9652a first vor 7 Jahren fetch.json 11e3a9652a first vor 7 Jahren fieldset-disabled.json 11e3a9652a first vor 7 Jahren fileapi.json 11e3a9652a first vor 7 Jahren filereader.json 11e3a9652a first vor 7 Jahren filereadersync.json 11e3a9652a first vor 7 Jahren filesystem.json 11e3a9652a first vor 7 Jahren flac.json 11e3a9652a first vor 7 Jahren flexbox.json 11e3a9652a first vor 7 Jahren flow-root.json 11e3a9652a first vor 7 Jahren focusin-focusout-events.json 11e3a9652a first vor 7 Jahren focusoptions-preventscroll.json 11e3a9652a first vor 7 Jahren font-family-system-ui.json 11e3a9652a first vor 7 Jahren font-feature.json 11e3a9652a first vor 7 Jahren font-kerning.json 11e3a9652a first vor 7 Jahren font-loading.json 11e3a9652a first vor 7 Jahren font-size-adjust.json 11e3a9652a first vor 7 Jahren font-smooth.json 11e3a9652a first vor 7 Jahren font-unicode-range.json 11e3a9652a first vor 7 Jahren font-variant-alternates.json 11e3a9652a first vor 7 Jahren font-variant-east-asian.json 11e3a9652a first vor 7 Jahren fontface.json 11e3a9652a first vor 7 Jahren form-attribute.json 11e3a9652a first vor 7 Jahren form-submit-attributes.json 11e3a9652a first vor 7 Jahren form-validation.json 11e3a9652a first vor 7 Jahren forms.json 11e3a9652a first vor 7 Jahren fullscreen.json 11e3a9652a first vor 7 Jahren gamepad.json 11e3a9652a first vor 7 Jahren geolocation.json 11e3a9652a first vor 7 Jahren getboundingclientrect.json 11e3a9652a first vor 7 Jahren getcomputedstyle.json 11e3a9652a first vor 7 Jahren getelementsbyclassname.json 11e3a9652a first vor 7 Jahren getrandomvalues.json 11e3a9652a first vor 7 Jahren hardwareconcurrency.json 11e3a9652a first vor 7 Jahren hashchange.json 11e3a9652a first vor 7 Jahren heif.json 11e3a9652a first vor 7 Jahren hevc.json 11e3a9652a first vor 7 Jahren hidden.json 11e3a9652a first vor 7 Jahren high-resolution-time.json 11e3a9652a first vor 7 Jahren history.json 11e3a9652a first vor 7 Jahren html-media-capture.json 11e3a9652a first vor 7 Jahren html5semantic.json 11e3a9652a first vor 7 Jahren http-live-streaming.json 11e3a9652a first vor 7 Jahren http2.json 11e3a9652a first vor 7 Jahren iframe-sandbox.json 11e3a9652a first vor 7 Jahren iframe-seamless.json 11e3a9652a first vor 7 Jahren iframe-srcdoc.json 11e3a9652a first vor 7 Jahren imagecapture.json 11e3a9652a first vor 7 Jahren ime.json 11e3a9652a first vor 7 Jahren img-naturalwidth-naturalheight.json 11e3a9652a first vor 7 Jahren imports.json 11e3a9652a first vor 7 Jahren indeterminate-checkbox.json 11e3a9652a first vor 7 Jahren indexeddb.json 11e3a9652a first vor 7 Jahren indexeddb2.json 11e3a9652a first vor 7 Jahren inline-block.json 11e3a9652a first vor 7 Jahren innertext.json 11e3a9652a first vor 7 Jahren input-autocomplete-onoff.json 11e3a9652a first vor 7 Jahren input-color.json 11e3a9652a first vor 7 Jahren input-datetime.json 11e3a9652a first vor 7 Jahren input-email-tel-url.json 11e3a9652a first vor 7 Jahren input-event.json 11e3a9652a first vor 7 Jahren input-file-accept.json 11e3a9652a first vor 7 Jahren input-file-directory.json 11e3a9652a first vor 7 Jahren input-file-multiple.json 11e3a9652a first vor 7 Jahren input-inputmode.json 11e3a9652a first vor 7 Jahren input-minlength.json 11e3a9652a first vor 7 Jahren input-number.json 11e3a9652a first vor 7 Jahren input-pattern.json 11e3a9652a first vor 7 Jahren input-placeholder.json 11e3a9652a first vor 7 Jahren input-range.json 11e3a9652a first vor 7 Jahren input-search.json 11e3a9652a first vor 7 Jahren input-selection.json 11e3a9652a first vor 7 Jahren insert-adjacent.json 11e3a9652a first vor 7 Jahren insertadjacenthtml.json 11e3a9652a first vor 7 Jahren internationalization.json 11e3a9652a first vor 7 Jahren intersectionobserver.json 11e3a9652a first vor 7 Jahren intrinsic-width.json 11e3a9652a first vor 7 Jahren jpeg2000.json 11e3a9652a first vor 7 Jahren jpegxr.json 11e3a9652a first vor 7 Jahren json.json 11e3a9652a first vor 7 Jahren kerning-pairs-ligatures.json 11e3a9652a first vor 7 Jahren keyboardevent-charcode.json 11e3a9652a first vor 7 Jahren keyboardevent-code.json 11e3a9652a first vor 7 Jahren keyboardevent-getmodifierstate.json 11e3a9652a first vor 7 Jahren keyboardevent-key.json 11e3a9652a first vor 7 Jahren keyboardevent-location.json 11e3a9652a first vor 7 Jahren keyboardevent-which.json 11e3a9652a first vor 7 Jahren lazyload.json 11e3a9652a first vor 7 Jahren let.json 11e3a9652a first vor 7 Jahren link-icon-png.json 11e3a9652a first vor 7 Jahren link-icon-svg.json 11e3a9652a first vor 7 Jahren link-rel-dns-prefetch.json 11e3a9652a first vor 7 Jahren link-rel-preconnect.json 11e3a9652a first vor 7 Jahren link-rel-prefetch.json 11e3a9652a first vor 7 Jahren link-rel-preload.json 11e3a9652a first vor 7 Jahren link-rel-prerender.json 11e3a9652a first vor 7 Jahren localecompare.json 11e3a9652a first vor 7 Jahren matchesselector.json 11e3a9652a first vor 7 Jahren matchmedia.json 11e3a9652a first vor 7 Jahren mathml.json 11e3a9652a first vor 7 Jahren maxlength.json 11e3a9652a first vor 7 Jahren media-attribute.json 11e3a9652a first vor 7 Jahren media-fragments.json 11e3a9652a first vor 7 Jahren media-session-api.json 11e3a9652a first vor 7 Jahren mediacapture-fromelement.json 11e3a9652a first vor 7 Jahren mediarecorder.json 11e3a9652a first vor 7 Jahren mediasource.json 11e3a9652a first vor 7 Jahren menu.json 11e3a9652a first vor 7 Jahren meter.json 11e3a9652a first vor 7 Jahren midi.json 11e3a9652a first vor 7 Jahren minmaxwh.json 11e3a9652a first vor 7 Jahren mp3.json 11e3a9652a first vor 7 Jahren mpeg-dash.json 11e3a9652a first vor 7 Jahren mpeg4.json 11e3a9652a first vor 7 Jahren multibackgrounds.json 11e3a9652a first vor 7 Jahren multicolumn.json 11e3a9652a first vor 7 Jahren mutation-events.json 11e3a9652a first vor 7 Jahren mutationobserver.json 11e3a9652a first vor 7 Jahren namevalue-storage.json 11e3a9652a first vor 7 Jahren nav-timing.json 11e3a9652a first vor 7 Jahren navigator-language.json 11e3a9652a first vor 7 Jahren netinfo.json 11e3a9652a first vor 7 Jahren node-contains.json 11e3a9652a first vor 7 Jahren node-parentelement.json 11e3a9652a first vor 7 Jahren notifications.json 11e3a9652a first vor 7 Jahren object-fit.json 11e3a9652a first vor 7 Jahren object-observe.json 11e3a9652a first vor 7 Jahren object-values.json 11e3a9652a first vor 7 Jahren objectrtc.json 11e3a9652a first vor 7 Jahren offline-apps.json 11e3a9652a first vor 7 Jahren offscreencanvas.json 11e3a9652a first vor 7 Jahren ogg-vorbis.json 11e3a9652a first vor 7 Jahren ogv.json 11e3a9652a first vor 7 Jahren ol-reversed.json 11e3a9652a first vor 7 Jahren once-event-listener.json 11e3a9652a first vor 7 Jahren online-status.json 11e3a9652a first vor 7 Jahren opus.json 11e3a9652a first vor 7 Jahren outline.json 11e3a9652a first vor 7 Jahren pad-start-end.json 11e3a9652a first vor 7 Jahren page-transition-events.json 11e3a9652a first vor 7 Jahren pagevisibility.json 11e3a9652a first vor 7 Jahren passive-event-listener.json 11e3a9652a first vor 7 Jahren path2d.json 11e3a9652a first vor 7 Jahren payment-request.json 11e3a9652a first vor 7 Jahren permissions-api.json 11e3a9652a first vor 7 Jahren picture.json 11e3a9652a first vor 7 Jahren ping.json 11e3a9652a first vor 7 Jahren png-alpha.json 11e3a9652a first vor 7 Jahren pointer-events.json 11e3a9652a first vor 7 Jahren pointer.json 11e3a9652a first vor 7 Jahren pointerlock.json 11e3a9652a first vor 7 Jahren prefers-reduced-motion.json 11e3a9652a first vor 7 Jahren progress.json 11e3a9652a first vor 7 Jahren promises.json 11e3a9652a first vor 7 Jahren proximity.json 11e3a9652a first vor 7 Jahren proxy.json 11e3a9652a first vor 7 Jahren publickeypinning.json 11e3a9652a first vor 7 Jahren push-api.json 11e3a9652a first vor 7 Jahren queryselector.json 11e3a9652a first vor 7 Jahren readonly-attr.json 11e3a9652a first vor 7 Jahren referrer-policy.json 11e3a9652a first vor 7 Jahren registerprotocolhandler.json 11e3a9652a first vor 7 Jahren rel-noopener.json 11e3a9652a first vor 7 Jahren rel-noreferrer.json 11e3a9652a first vor 7 Jahren rellist.json 11e3a9652a first vor 7 Jahren rem.json 11e3a9652a first vor 7 Jahren requestanimationframe.json 11e3a9652a first vor 7 Jahren requestidlecallback.json 11e3a9652a first vor 7 Jahren resizeobserver.json 11e3a9652a first vor 7 Jahren resource-timing.json 11e3a9652a first vor 7 Jahren rest-parameters.json 11e3a9652a first vor 7 Jahren rtcpeerconnection.json 11e3a9652a first vor 7 Jahren ruby.json 11e3a9652a first vor 7 Jahren run-in.json 11e3a9652a first vor 7 Jahren same-site-cookie-attribute.json 11e3a9652a first vor 7 Jahren screen-orientation.json 11e3a9652a first vor 7 Jahren script-async.json 11e3a9652a first vor 7 Jahren script-defer.json 11e3a9652a first vor 7 Jahren scrollintoview.json 11e3a9652a first vor 7 Jahren scrollintoviewifneeded.json 11e3a9652a first vor 7 Jahren sdch.json 11e3a9652a first vor 7 Jahren selection-api.json 11e3a9652a first vor 7 Jahren server-timing.json 11e3a9652a first vor 7 Jahren serviceworkers.json 11e3a9652a first vor 7 Jahren setimmediate.json 11e3a9652a first vor 7 Jahren sha-2.json 11e3a9652a first vor 7 Jahren shadowdom.json 11e3a9652a first vor 7 Jahren shadowdomv1.json 11e3a9652a first vor 7 Jahren sharedworkers.json 11e3a9652a first vor 7 Jahren sni.json 11e3a9652a first vor 7 Jahren spdy.json 11e3a9652a first vor 7 Jahren speech-recognition.json 11e3a9652a first vor 7 Jahren speech-synthesis.json 11e3a9652a first vor 7 Jahren spellcheck-attribute.json 11e3a9652a first vor 7 Jahren sql-storage.json 11e3a9652a first vor 7 Jahren srcset.json 11e3a9652a first vor 7 Jahren stopimmediatepropagation.json 11e3a9652a first vor 7 Jahren stream.json 11e3a9652a first vor 7 Jahren streams.json 11e3a9652a first vor 7 Jahren stricttransportsecurity.json 11e3a9652a first vor 7 Jahren style-scoped.json 11e3a9652a first vor 7 Jahren subresource-integrity.json 11e3a9652a first vor 7 Jahren svg-css.json 11e3a9652a first vor 7 Jahren svg-filters.json 11e3a9652a first vor 7 Jahren svg-fonts.json 11e3a9652a first vor 7 Jahren svg-fragment.json 11e3a9652a first vor 7 Jahren svg-html.json 11e3a9652a first vor 7 Jahren svg-html5.json 11e3a9652a first vor 7 Jahren svg-img.json 11e3a9652a first vor 7 Jahren svg-smil.json 11e3a9652a first vor 7 Jahren svg.json 11e3a9652a first vor 7 Jahren symbols.json 11e3a9652a first vor 7 Jahren tabindex-attr.json 11e3a9652a first vor 7 Jahren template-literals.json 11e3a9652a first vor 7 Jahren template.json 11e3a9652a first vor 7 Jahren testfeat.json 11e3a9652a first vor 7 Jahren text-decoration.json 11e3a9652a first vor 7 Jahren text-emphasis.json 11e3a9652a first vor 7 Jahren text-overflow.json 11e3a9652a first vor 7 Jahren text-size-adjust.json 11e3a9652a first vor 7 Jahren text-stroke.json 11e3a9652a first vor 7 Jahren textcontent.json 11e3a9652a first vor 7 Jahren textencoder.json 11e3a9652a first vor 7 Jahren tls1-1.json 11e3a9652a first vor 7 Jahren tls1-2.json 11e3a9652a first vor 7 Jahren tls1-3.json 11e3a9652a first vor 7 Jahren token-binding.json 11e3a9652a first vor 7 Jahren touch.json 11e3a9652a first vor 7 Jahren transforms2d.json 11e3a9652a first vor 7 Jahren transforms3d.json 11e3a9652a first vor 7 Jahren ttf.json 11e3a9652a first vor 7 Jahren typedarrays.json 11e3a9652a first vor 7 Jahren u2f.json 11e3a9652a first vor 7 Jahren unhandledrejection.json 11e3a9652a first vor 7 Jahren upgradeinsecurerequests.json 11e3a9652a first vor 7 Jahren url.json 11e3a9652a first vor 7 Jahren urlsearchparams.json 11e3a9652a first vor 7 Jahren use-strict.json 11e3a9652a first vor 7 Jahren user-select-none.json 11e3a9652a first vor 7 Jahren user-timing.json 11e3a9652a first vor 7 Jahren variable-fonts.json 11e3a9652a first vor 7 Jahren vibration.json 11e3a9652a first vor 7 Jahren video.json 11e3a9652a first vor 7 Jahren videotracks.json 11e3a9652a first vor 7 Jahren viewport-units.json 11e3a9652a first vor 7 Jahren wai-aria.json 11e3a9652a first vor 7 Jahren wasm.json 11e3a9652a first vor 7 Jahren wav.json 11e3a9652a first vor 7 Jahren wbr-element.json 11e3a9652a first vor 7 Jahren web-animation.json 11e3a9652a first vor 7 Jahren web-app-manifest.json 11e3a9652a first vor 7 Jahren web-bluetooth.json 11e3a9652a first vor 7 Jahren web-share.json 11e3a9652a first vor 7 Jahren webgl.json 11e3a9652a first vor 7 Jahren webgl2.json 11e3a9652a first vor 7 Jahren webm.json 11e3a9652a first vor 7 Jahren webp.json 11e3a9652a first vor 7 Jahren websockets.json 11e3a9652a first vor 7 Jahren webusb.json 11e3a9652a first vor 7 Jahren webvr.json 11e3a9652a first vor 7 Jahren webvtt.json 11e3a9652a first vor 7 Jahren webworkers.json 11e3a9652a first vor 7 Jahren will-change.json 11e3a9652a first vor 7 Jahren woff.json 11e3a9652a first vor 7 Jahren woff2.json 11e3a9652a first vor 7 Jahren word-break.json 11e3a9652a first vor 7 Jahren wordwrap.json 11e3a9652a first vor 7 Jahren x-doc-messaging.json 11e3a9652a first vor 7 Jahren x-frame-options.json 11e3a9652a first vor 7 Jahren xhr2.json 11e3a9652a first vor 7 Jahren xhtml.json 11e3a9652a first vor 7 Jahren xhtmlsmil.json 11e3a9652a first vor 7 Jahren xml-serializer.json 11e3a9652a first vor 7 Jahren adminSystem - Gogs: Go Git Service

Keine Beschreibung

normalize.js 20KB

    'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = normalize; var _crypto; function _load_crypto() { return _crypto = _interopRequireDefault(require('crypto')); } var _glob; function _load_glob() { return _glob = _interopRequireDefault(require('glob')); } var _path; function _load_path() { return _path = _interopRequireDefault(require('path')); } var _jestValidate; function _load_jestValidate() { return _jestValidate = require('jest-validate'); } var _validate_pattern; function _load_validate_pattern() { return _validate_pattern = _interopRequireDefault(require('./validate_pattern')); } var _jestUtil; function _load_jestUtil() { return _jestUtil = require('jest-util'); } var _chalk; function _load_chalk() { return _chalk = _interopRequireDefault(require('chalk')); } var _get_max_workers; function _load_get_max_workers() { return _get_max_workers = _interopRequireDefault(require('./get_max_workers')); } var _jestResolve; function _load_jestResolve() { return _jestResolve = _interopRequireDefault(require('jest-resolve')); } var _jestRegexUtil; function _load_jestRegexUtil() { return _jestRegexUtil = require('jest-regex-util'); } var _utils; function _load_utils() { return _utils = require('./utils'); } var _constants; function _load_constants() { return _constants = require('./constants'); } var _reporter_validation_errors; function _load_reporter_validation_errors() { return _reporter_validation_errors = require('./reporter_validation_errors'); } var _defaults; function _load_defaults() { return _defaults = _interopRequireDefault(require('./defaults')); } var _deprecated; function _load_deprecated() { return _deprecated = _interopRequireDefault(require('./deprecated')); } var _set_from_argv; function _load_set_from_argv() { return _set_from_argv = _interopRequireDefault(require('./set_from_argv')); } var _valid_config; function _load_valid_config() { return _valid_config = _interopRequireDefault(require('./valid_config')); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } /** * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * */ const ERROR = `${(_utils || _load_utils()).BULLET}Validation Error`; const JSON_EXTENSION = '.json'; const PRESET_NAME = 'jest-preset' + JSON_EXTENSION; const createConfigError = message => new (_jestValidate || _load_jestValidate()).ValidationError(ERROR, message, (_utils || _load_utils()).DOCUMENTATION_NOTE); const mergeOptionWithPreset = (options, preset, optionName) => { if (options[optionName] && preset[optionName]) { options[optionName] = Object.assign({}, options[optionName], preset[optionName], options[optionName]); } }; const setupPreset = (options, optionsPreset) => { let preset; const presetPath = (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, optionsPreset); const presetModule = (_jestResolve || _load_jestResolve()).default.findNodeModule(presetPath.endsWith(JSON_EXTENSION) ? presetPath : (_path || _load_path()).default.join(presetPath, PRESET_NAME), { basedir: options.rootDir }); try { // $FlowFixMe preset = require(presetModule); } catch (error) { if (error instanceof SyntaxError) { throw createConfigError(` Preset ${(_chalk || _load_chalk()).default.bold(presetPath)} is invalid:\n ${error.message}`); } throw createConfigError(` Preset ${(_chalk || _load_chalk()).default.bold(presetPath)} not found.`); } if (options.setupFiles) { options.setupFiles = (preset.setupFiles || []).concat(options.setupFiles); } if (options.modulePathIgnorePatterns && preset.modulePathIgnorePatterns) { options.modulePathIgnorePatterns = preset.modulePathIgnorePatterns.concat(options.modulePathIgnorePatterns); } mergeOptionWithPreset(options, preset, 'moduleNameMapper'); mergeOptionWithPreset(options, preset, 'transform'); return Object.assign({}, preset, options); }; const setupBabelJest = options => { const basedir = options.rootDir; const transform = options.transform; let babelJest; if (transform) { const customJSPattern = Object.keys(transform).find(pattern => { const regex = new RegExp(pattern); return regex.test('a.js') || regex.test('a.jsx'); }); if (customJSPattern) { const jsTransformer = (_jestResolve || _load_jestResolve()).default.findNodeModule(transform[customJSPattern], { basedir }); if (jsTransformer && jsTransformer.includes((_constants || _load_constants()).NODE_MODULES + 'babel-jest')) { babelJest = jsTransformer; } } } else { babelJest = (_jestResolve || _load_jestResolve()).default.findNodeModule('babel-jest', { basedir }); if (babelJest) { options.transform = { [(_constants || _load_constants()).DEFAULT_JS_PATTERN]: 'babel-jest' }; } } return babelJest; }; const normalizeCollectCoverageOnlyFrom = (options, key) => { const collectCoverageOnlyFrom = Array.isArray(options[key]) ? options[key] // passed from argv : Object.keys(options[key]); // passed from options return collectCoverageOnlyFrom.reduce((map, filePath) => { filePath = (_path || _load_path()).default.resolve(options.rootDir, (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, filePath)); map[filePath] = true; return map; }, Object.create(null)); }; const normalizeCollectCoverageFrom = (options, key) => { let value; if (!options[key]) { value = []; } if (!Array.isArray(options[key])) { try { value = JSON.parse(options[key]); } catch (e) {} Array.isArray(value) || (value = [options[key]]); } else { value = options[key]; } if (value) { value = value.map(filePath => { return filePath.replace(/^(!?)(<rootDir>\/)(.*)/, '$1$3'); }); } return value; }; const normalizeUnmockedModulePathPatterns = (options, key) => { // _replaceRootDirTags is specifically well-suited for substituting // <rootDir> in paths (it deals with properly interpreting relative path // separators, etc). // // For patterns, direct global substitution is far more ideal, so we // special case substitutions for patterns here. return options[key].map(pattern => (0, (_jestRegexUtil || _load_jestRegexUtil()).replacePathSepForRegex)(pattern.replace(/<rootDir>/g, options.rootDir))); }; const normalizePreprocessor = options => { if (options.scriptPreprocessor && options.transform) { throw createConfigError(` Options: ${(_chalk || _load_chalk()).default.bold('scriptPreprocessor')} and ${(_chalk || _load_chalk()).default.bold('transform')} cannot be used together. Please change your configuration to only use ${(_chalk || _load_chalk()).default.bold('transform')}.`); } if (options.preprocessorIgnorePatterns && options.transformIgnorePatterns) { throw createConfigError(` Options ${(_chalk || _load_chalk()).default.bold('preprocessorIgnorePatterns')} and ${(_chalk || _load_chalk()).default.bold('transformIgnorePatterns')} cannot be used together. Please change your configuration to only use ${(_chalk || _load_chalk()).default.bold('transformIgnorePatterns')}.`); } if (options.scriptPreprocessor) { options.transform = { '.*': options.scriptPreprocessor }; } if (options.preprocessorIgnorePatterns) { options.transformIgnorePatterns = options.preprocessorIgnorePatterns; } delete options.scriptPreprocessor; delete options.preprocessorIgnorePatterns; return options; }; const normalizeMissingOptions = options => { if (!options.name) { options.name = (_crypto || _load_crypto()).default.createHash('md5').update(options.rootDir).digest('hex'); } if (!options.setupFiles) { options.setupFiles = []; } return options; }; const normalizeRootDir = options => { // Assert that there *is* a rootDir if (!options.hasOwnProperty('rootDir')) { throw createConfigError(` Configuration option ${(_chalk || _load_chalk()).default.bold('rootDir')} must be specified.`); } options.rootDir = (_path || _load_path()).default.normalize(options.rootDir); return options; }; const normalizeReporters = (options, basedir) => { const reporters = options.reporters; if (!reporters || !Array.isArray(reporters)) { return options; } (0, (_reporter_validation_errors || _load_reporter_validation_errors()).validateReporters)(reporters); options.reporters = reporters.map(reporterConfig => { const normalizedReporterConfig = typeof reporterConfig === 'string' ? // if reporter config is a string, we wrap it in an array // and pass an empty object for options argument, to normalize // the shape. [reporterConfig, {}] : reporterConfig; const reporterPath = (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, normalizedReporterConfig[0]); if (reporterPath !== (_constants || _load_constants()).DEFAULT_REPORTER_LABEL) { const reporter = (_jestResolve || _load_jestResolve()).default.findNodeModule(reporterPath, { basedir: options.rootDir }); if (!reporter) { throw new Error(`Could not resolve a module for a custom reporter.\n` + ` Module name: ${reporterPath}`); } normalizedReporterConfig[0] = reporter; } return normalizedReporterConfig; }); return options; }; const buildTestPathPattern = argv => { const patterns = []; if (argv._) { patterns.push.apply(patterns, _toConsumableArray(argv._)); } if (argv.testPathPattern) { patterns.push.apply(patterns, _toConsumableArray(argv.testPathPattern)); } const replacePosixSep = pattern => { if ((_path || _load_path()).default.sep === '/') { return pattern; } return pattern.replace(/\//g, '\\\\'); }; const testPathPattern = patterns.map(replacePosixSep).join('|'); if ((0, (_validate_pattern || _load_validate_pattern()).default)(testPathPattern)) { return testPathPattern; } else { showTestPathPatternError(testPathPattern); return ''; } }; const showTestPathPatternError = testPathPattern => { (0, (_jestUtil || _load_jestUtil()).clearLine)(process.stdout); console.log((_chalk || _load_chalk()).default.red(` Invalid testPattern ${testPathPattern} supplied. ` + `Running all tests instead.`)); }; function normalize(options, argv) { var _validate = (0, (_jestValidate || _load_jestValidate()).validate)(options, { comment: (_utils || _load_utils()).DOCUMENTATION_NOTE, deprecatedConfig: (_deprecated || _load_deprecated()).default, exampleConfig: (_valid_config || _load_valid_config()).default }); const hasDeprecationWarnings = _validate.hasDeprecationWarnings; options = normalizePreprocessor(normalizeReporters(normalizeMissingOptions(normalizeRootDir((0, (_set_from_argv || _load_set_from_argv()).default)(options, argv))))); if (options.preset) { options = setupPreset(options, options.preset); } if (options.testEnvironment) { options.testEnvironment = (0, (_utils || _load_utils()).getTestEnvironment)(options); } if (!options.roots && options.testPathDirs) { options.roots = options.testPathDirs; delete options.testPathDirs; } if (!options.roots) { options.roots = [options.rootDir]; } if (!options.testRunner || options.testRunner === 'jasmine2') { options.testRunner = require.resolve('jest-jasmine2'); } if (!options.coverageDirectory) { options.coverageDirectory = (_path || _load_path()).default.resolve(options.rootDir, 'coverage'); } const babelJest = setupBabelJest(options); const newOptions = Object.assign({}, (_defaults || _load_defaults()).default); // Cast back to exact type options = options; Object.keys(options).reduce((newOptions, key) => { let value; switch (key) { case 'collectCoverageOnlyFrom': value = normalizeCollectCoverageOnlyFrom(options, key); break; case 'setupFiles': case 'snapshotSerializers': value = options[key] && options[key].map((_utils || _load_utils()).resolve.bind(null, options.rootDir, key)); break; case 'modulePaths': case 'roots': value = options[key] && options[key].map(filePath => (_path || _load_path()).default.resolve(options.rootDir, (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, filePath))); break; case 'collectCoverageFrom': value = normalizeCollectCoverageFrom(options, key); break; case 'cacheDirectory': case 'coverageDirectory': value = options[key] && (_path || _load_path()).default.resolve(options.rootDir, (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, options[key])); break; case 'globalSetup': case 'globalTeardown': case 'moduleLoader': case 'resolver': case 'runner': case 'setupTestFrameworkScriptFile': case 'testResultsProcessor': case 'testRunner': value = options[key] && (0, (_utils || _load_utils()).resolve)(options.rootDir, key, options[key]); break; case 'moduleNameMapper': const moduleNameMapper = options[key]; value = moduleNameMapper && Object.keys(moduleNameMapper).map(regex => { const item = moduleNameMapper && moduleNameMapper[regex]; return item && [regex, (0, (_utils || _load_utils())._replaceRootDirTags)(options.rootDir, item)]; }); break; case 'transform': const transform = options[key]; value = transform && Object.keys(transform).map(regex => [regex, (0, (_utils || _load_utils()).resolve)(options.rootDir, key, transform[regex])]); break; case 'coveragePathIgnorePatterns': case 'modulePathIgnorePatterns': case 'testPathIgnorePatterns': case 'transformIgnorePatterns': case 'watchPathIgnorePatterns': case 'unmockedModulePathPatterns': value = normalizeUnmockedModulePathPatterns(options, key); break; case 'haste': value = Object.assign({}, options[key]); if (value.hasteImplModulePath != null) { value.hasteImplModulePath = (0, (_utils || _load_utils()).resolve)(options.rootDir, 'haste.hasteImplModulePath', (0, (_utils || _load_utils())._replaceRootDirInPath)(options.rootDir, value.hasteImplModulePath)); } break; case 'projects': value = (options[key] || []).map(project => (0, (_utils || _load_utils())._replaceRootDirTags)(options.rootDir, project)).reduce((projects, project) => { // Project can be specified as globs. If a glob matches any files, // We expand it to these paths. If not, we keep the original path // for the future resolution. const globMatches = typeof project === 'string' ? (_glob || _load_glob()).default.sync(project) : []; return projects.concat(globMatches.length ? globMatches : project); }, []); break; case 'moduleDirectories': case 'testMatch': value = (0, (_utils || _load_utils())._replaceRootDirTags)((0, (_utils || _load_utils()).escapeGlobCharacters)(options.rootDir), options[key]); break; case 'testRegex': value = options[key] && (0, (_jestRegexUtil || _load_jestRegexUtil()).replacePathSepForRegex)(options[key]); break; case 'automock': case 'bail': case 'browser': case 'cache': case 'changedSince': case 'changedFilesWithAncestor': case 'clearMocks': case 'collectCoverage': case 'coverageReporters': case 'coverageThreshold': case 'detectLeaks': case 'displayName': case 'expand': case 'globals': case 'findRelatedTests': case 'forceCoverageMatch': case 'forceExit': case 'lastCommit': case 'listTests': case 'logHeapUsage': case 'mapCoverage': case 'moduleFileExtensions': case 'name': case 'noStackTrace': case 'notify': case 'notifyMode': case 'onlyChanged': case 'outputFile': case 'passWithNoTests': case 'replname': case 'reporters': case 'resetMocks': case 'resetModules': case 'restoreMocks': case 'rootDir': case 'runTestsByPath': case 'silent': case 'skipNodeResolution': case 'testEnvironment': case 'testEnvironmentOptions': case 'testFailureExitCode': case 'testLocationInResults': case 'testNamePattern': case 'testURL': case 'timers': case 'useStderr': case 'verbose': case 'watch': case 'watchAll': case 'watchman': value = options[key]; break; case 'watchPlugins': value = (options[key] || []).map(watchPlugin => (0, (_utils || _load_utils()).resolve)(options.rootDir, key, watchPlugin)); break; } newOptions[key] = value; return newOptions; }, newOptions); newOptions.nonFlagArgs = argv._; newOptions.testPathPattern = buildTestPathPattern(argv); newOptions.json = argv.json; newOptions.testFailureExitCode = parseInt(newOptions.testFailureExitCode, 10); for (const key of ['lastCommit', 'changedFilesWithAncestor', 'changedSince']) { if (newOptions[key]) { newOptions.onlyChanged = true; } } if (argv.all) { newOptions.onlyChanged = false; } else if (newOptions.testPathPattern) { // When passing a test path pattern we don't want to only monitor changed // files unless `--watch` is also passed. newOptions.onlyChanged = newOptions.watch; } newOptions.updateSnapshot = argv.ci && !argv.updateSnapshot ? 'none' : argv.updateSnapshot ? 'all' : 'new'; newOptions.maxWorkers = (0, (_get_max_workers || _load_get_max_workers()).default)(argv); if (babelJest) { const regeneratorRuntimePath = (_jestResolve || _load_jestResolve()).default.findNodeModule('regenerator-runtime/runtime', { basedir: options.rootDir }); if (regeneratorRuntimePath) { newOptions.setupFiles.unshift(regeneratorRuntimePath); } } if (options.testRegex && options.testMatch) { throw createConfigError(` Configuration options ${(_chalk || _load_chalk()).default.bold('testMatch')} and` + ` ${(_chalk || _load_chalk()).default.bold('testRegex')} cannot be used together.`); } if (options.testRegex && !options.testMatch) { // Prevent the default testMatch conflicting with any explicitly // configured `testRegex` value newOptions.testMatch = []; } // If argv.json is set, coverageReporters shouldn't print a text report. if (argv.json) { newOptions.coverageReporters = (newOptions.coverageReporters || []).filter(reporter => reporter !== 'text'); } return { hasDeprecationWarnings, options: newOptions }; }