| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464 | 
							- 'use strict';
 
- Object.defineProperty(exports, '__esModule', {
 
-   value: true
 
- });
 
- exports.default = exports.createMatcher = void 0;
 
- var _jestMatcherUtils = require('jest-matcher-utils');
 
- var _jestMessageUtil = require('jest-message-util');
 
- var _print = require('./print');
 
- var _utils = require('./utils');
 
- /**
 
-  * Copyright (c) Facebook, Inc. and its affiliates. 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.
 
-  *
 
-  */
 
- /* eslint-disable local/ban-types-eventually */
 
- const DID_NOT_THROW = 'Received function did not throw';
 
- const getThrown = e => {
 
-   const hasMessage =
 
-     e !== null && e !== undefined && typeof e.message === 'string';
 
-   if (hasMessage && typeof e.name === 'string' && typeof e.stack === 'string') {
 
-     return {
 
-       hasMessage,
 
-       isError: true,
 
-       message: e.message,
 
-       value: e
 
-     };
 
-   }
 
-   return {
 
-     hasMessage,
 
-     isError: false,
 
-     message: hasMessage ? e.message : String(e),
 
-     value: e
 
-   };
 
- };
 
- const createMatcher = (matcherName, fromPromise) =>
 
-   function (received, expected) {
 
-     const options = {
 
-       isNot: this.isNot,
 
-       promise: this.promise
 
-     };
 
-     let thrown = null;
 
-     if (fromPromise && (0, _utils.isError)(received)) {
 
-       thrown = getThrown(received);
 
-     } else {
 
-       if (typeof received !== 'function') {
 
-         if (!fromPromise) {
 
-           const placeholder = expected === undefined ? '' : 'expected';
 
-           throw new Error(
 
-             (0, _jestMatcherUtils.matcherErrorMessage)(
 
-               (0, _jestMatcherUtils.matcherHint)(
 
-                 matcherName,
 
-                 undefined,
 
-                 placeholder,
 
-                 options
 
-               ),
 
-               `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
 
-                 'received'
 
-               )} value must be a function`,
 
-               (0, _jestMatcherUtils.printWithType)(
 
-                 'Received',
 
-                 received,
 
-                 _jestMatcherUtils.printReceived
 
-               )
 
-             )
 
-           );
 
-         }
 
-       } else {
 
-         try {
 
-           received();
 
-         } catch (e) {
 
-           thrown = getThrown(e);
 
-         }
 
-       }
 
-     }
 
-     if (expected === undefined) {
 
-       return toThrow(matcherName, options, thrown);
 
-     } else if (typeof expected === 'function') {
 
-       return toThrowExpectedClass(matcherName, options, thrown, expected);
 
-     } else if (typeof expected === 'string') {
 
-       return toThrowExpectedString(matcherName, options, thrown, expected);
 
-     } else if (expected !== null && typeof expected.test === 'function') {
 
-       return toThrowExpectedRegExp(matcherName, options, thrown, expected);
 
-     } else if (
 
-       expected !== null &&
 
-       typeof expected.asymmetricMatch === 'function'
 
-     ) {
 
-       return toThrowExpectedAsymmetric(matcherName, options, thrown, expected);
 
-     } else if (expected !== null && typeof expected === 'object') {
 
-       return toThrowExpectedObject(matcherName, options, thrown, expected);
 
-     } else {
 
-       throw new Error(
 
-         (0, _jestMatcherUtils.matcherErrorMessage)(
 
-           (0, _jestMatcherUtils.matcherHint)(
 
-             matcherName,
 
-             undefined,
 
-             undefined,
 
-             options
 
-           ),
 
-           `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
 
-             'expected'
 
-           )} value must be a string or regular expression or class or error`,
 
-           (0, _jestMatcherUtils.printWithType)(
 
-             'Expected',
 
-             expected,
 
-             _jestMatcherUtils.printExpected
 
-           )
 
-         )
 
-       );
 
-     }
 
-   };
 
- exports.createMatcher = createMatcher;
 
- const matchers = {
 
-   toThrow: createMatcher('toThrow'),
 
-   toThrowError: createMatcher('toThrowError')
 
- };
 
- const toThrowExpectedRegExp = (matcherName, options, thrown, expected) => {
 
-   const pass = thrown !== null && expected.test(thrown.message);
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected pattern: not ', expected) +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatReceived(
 
-               'Received message:     ',
 
-               thrown,
 
-               'message',
 
-               expected
 
-             ) + formatStack(thrown)
 
-           : formatReceived('Received value:       ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected pattern: ', expected) +
 
-         (thrown === null
 
-           ? '\n' + DID_NOT_THROW
 
-           : thrown.hasMessage
 
-           ? formatReceived('Received message: ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Received value:   ', thrown, 'value'));
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const toThrowExpectedAsymmetric = (matcherName, options, thrown, expected) => {
 
-   const pass = thrown !== null && expected.asymmetricMatch(thrown.value);
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected asymmetric matcher: not ', expected) +
 
-         '\n' +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatReceived('Received name:    ', thrown, 'name') +
 
-             formatReceived('Received message: ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Thrown value: ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected asymmetric matcher: ', expected) +
 
-         '\n' +
 
-         (thrown === null
 
-           ? DID_NOT_THROW
 
-           : thrown.hasMessage
 
-           ? formatReceived('Received name:    ', thrown, 'name') +
 
-             formatReceived('Received message: ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Thrown value: ', thrown, 'value'));
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const toThrowExpectedObject = (matcherName, options, thrown, expected) => {
 
-   const pass = thrown !== null && thrown.message === expected.message;
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected message: not ', expected.message) +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatStack(thrown)
 
-           : formatReceived('Received value:       ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         (thrown === null
 
-           ? formatExpected('Expected message: ', expected.message) +
 
-             '\n' +
 
-             DID_NOT_THROW
 
-           : thrown.hasMessage
 
-           ? (0, _jestMatcherUtils.printDiffOrStringify)(
 
-               expected.message,
 
-               thrown.message,
 
-               'Expected message',
 
-               'Received message',
 
-               true
 
-             ) +
 
-             '\n' +
 
-             formatStack(thrown)
 
-           : formatExpected('Expected message: ', expected.message) +
 
-             formatReceived('Received value:   ', thrown, 'value'));
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const toThrowExpectedClass = (matcherName, options, thrown, expected) => {
 
-   const pass = thrown !== null && thrown.value instanceof expected;
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         (0, _print.printExpectedConstructorNameNot)(
 
-           'Expected constructor',
 
-           expected
 
-         ) +
 
-         (thrown !== null &&
 
-         thrown.value != null &&
 
-         typeof thrown.value.constructor === 'function' &&
 
-         thrown.value.constructor !== expected
 
-           ? (0, _print.printReceivedConstructorNameNot)(
 
-               'Received constructor',
 
-               thrown.value.constructor,
 
-               expected
 
-             )
 
-           : '') +
 
-         '\n' +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatReceived('Received message: ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Received value: ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         (0, _print.printExpectedConstructorName)(
 
-           'Expected constructor',
 
-           expected
 
-         ) +
 
-         (thrown === null
 
-           ? '\n' + DID_NOT_THROW
 
-           : (thrown.value != null &&
 
-             typeof thrown.value.constructor === 'function'
 
-               ? (0, _print.printReceivedConstructorName)(
 
-                   'Received constructor',
 
-                   thrown.value.constructor
 
-                 )
 
-               : '') +
 
-             '\n' +
 
-             (thrown.hasMessage
 
-               ? formatReceived('Received message: ', thrown, 'message') +
 
-                 formatStack(thrown)
 
-               : formatReceived('Received value: ', thrown, 'value')));
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const toThrowExpectedString = (matcherName, options, thrown, expected) => {
 
-   const pass = thrown !== null && thrown.message.includes(expected);
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected substring: not ', expected) +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatReceived(
 
-               'Received message:       ',
 
-               thrown,
 
-               'message',
 
-               expected
 
-             ) + formatStack(thrown)
 
-           : formatReceived('Received value:         ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           undefined,
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         formatExpected('Expected substring: ', expected) +
 
-         (thrown === null
 
-           ? '\n' + DID_NOT_THROW
 
-           : thrown.hasMessage
 
-           ? formatReceived('Received message:   ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Received value:     ', thrown, 'value'));
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const toThrow = (matcherName, options, thrown) => {
 
-   const pass = thrown !== null;
 
-   const message = pass
 
-     ? () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           '',
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         (thrown !== null && thrown.hasMessage
 
-           ? formatReceived('Error name:    ', thrown, 'name') +
 
-             formatReceived('Error message: ', thrown, 'message') +
 
-             formatStack(thrown)
 
-           : formatReceived('Thrown value: ', thrown, 'value'))
 
-     : () =>
 
-         (0, _jestMatcherUtils.matcherHint)(
 
-           matcherName,
 
-           undefined,
 
-           '',
 
-           options
 
-         ) +
 
-         '\n\n' +
 
-         DID_NOT_THROW;
 
-   return {
 
-     message,
 
-     pass
 
-   };
 
- };
 
- const formatExpected = (label, expected) =>
 
-   label + (0, _jestMatcherUtils.printExpected)(expected) + '\n';
 
- const formatReceived = (label, thrown, key, expected) => {
 
-   if (thrown === null) {
 
-     return '';
 
-   }
 
-   if (key === 'message') {
 
-     const message = thrown.message;
 
-     if (typeof expected === 'string') {
 
-       const index = message.indexOf(expected);
 
-       if (index !== -1) {
 
-         return (
 
-           label +
 
-           (0, _print.printReceivedStringContainExpectedSubstring)(
 
-             message,
 
-             index,
 
-             expected.length
 
-           ) +
 
-           '\n'
 
-         );
 
-       }
 
-     } else if (expected instanceof RegExp) {
 
-       return (
 
-         label +
 
-         (0, _print.printReceivedStringContainExpectedResult)(
 
-           message,
 
-           typeof expected.exec === 'function' ? expected.exec(message) : null
 
-         ) +
 
-         '\n'
 
-       );
 
-     }
 
-     return label + (0, _jestMatcherUtils.printReceived)(message) + '\n';
 
-   }
 
-   if (key === 'name') {
 
-     return thrown.isError
 
-       ? label + (0, _jestMatcherUtils.printReceived)(thrown.value.name) + '\n'
 
-       : '';
 
-   }
 
-   if (key === 'value') {
 
-     return thrown.isError
 
-       ? ''
 
-       : label + (0, _jestMatcherUtils.printReceived)(thrown.value) + '\n';
 
-   }
 
-   return '';
 
- };
 
- const formatStack = thrown =>
 
-   thrown === null || !thrown.isError
 
-     ? ''
 
-     : (0, _jestMessageUtil.formatStackTrace)(
 
-         (0, _jestMessageUtil.separateMessageFromStack)(thrown.value.stack)
 
-           .stack,
 
-         {
 
-           rootDir: process.cwd(),
 
-           testMatch: []
 
-         },
 
-         {
 
-           noStackTrace: false
 
-         }
 
-       );
 
- var _default = matchers;
 
- exports.default = _default;
 
 
  |