pretty-format
Advanced tools
Comparing version 29.7.0 to 30.0.0-alpha.1
@@ -1,24 +0,724 @@ | ||
'use strict'; | ||
/*! | ||
* /** | ||
* * Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* * | ||
* * This source code is licensed under the MIT license found in the | ||
* * LICENSE file in the root directory of this source tree. | ||
* * / | ||
*/ | ||
/******/ (() => { // webpackBootstrap | ||
/******/ "use strict"; | ||
/******/ var __webpack_modules__ = ({ | ||
Object.defineProperty(exports, '__esModule', { | ||
/***/ "./src/collections.ts": | ||
/***/ ((__unused_webpack_module, exports) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
}); | ||
exports.default = exports.DEFAULT_OPTIONS = void 0; | ||
})); | ||
exports.printIteratorEntries = printIteratorEntries; | ||
exports.printIteratorValues = printIteratorValues; | ||
exports.printListItems = printListItems; | ||
exports.printObjectProperties = printObjectProperties; | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
* | ||
*/ | ||
const getKeysOfEnumerableProperties = (object, compareKeys) => { | ||
const rawKeys = Object.keys(object); | ||
const keys = compareKeys === null ? rawKeys : rawKeys.sort(compareKeys); | ||
if (Object.getOwnPropertySymbols) { | ||
for (const symbol of Object.getOwnPropertySymbols(object)) { | ||
if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) { | ||
keys.push(symbol); | ||
} | ||
} | ||
} | ||
return keys; | ||
}; | ||
/** | ||
* Return entries (for example, of a map) | ||
* with spacing, indentation, and comma | ||
* without surrounding punctuation (for example, braces) | ||
*/ | ||
function printIteratorEntries(iterator, config, indentation, depth, refs, printer, | ||
// Too bad, so sad that separator for ECMAScript Map has been ' => ' | ||
// What a distracting diff if you change a data structure to/from | ||
// ECMAScript Object or Immutable.Map/OrderedMap which use the default. | ||
separator = ': ') { | ||
let result = ''; | ||
let width = 0; | ||
let current = iterator.next(); | ||
if (!current.done) { | ||
result += config.spacingOuter; | ||
const indentationNext = indentation + config.indent; | ||
while (!current.done) { | ||
result += indentationNext; | ||
if (width++ === config.maxWidth) { | ||
result += '…'; | ||
break; | ||
} | ||
const name = printer(current.value[0], config, indentationNext, depth, refs); | ||
const value = printer(current.value[1], config, indentationNext, depth, refs); | ||
result += name + separator + value; | ||
current = iterator.next(); | ||
if (!current.done) { | ||
result += `,${config.spacingInner}`; | ||
} else if (!config.min) { | ||
result += ','; | ||
} | ||
} | ||
result += config.spacingOuter + indentation; | ||
} | ||
return result; | ||
} | ||
/** | ||
* Return values (for example, of a set) | ||
* with spacing, indentation, and comma | ||
* without surrounding punctuation (braces or brackets) | ||
*/ | ||
function printIteratorValues(iterator, config, indentation, depth, refs, printer) { | ||
let result = ''; | ||
let width = 0; | ||
let current = iterator.next(); | ||
if (!current.done) { | ||
result += config.spacingOuter; | ||
const indentationNext = indentation + config.indent; | ||
while (!current.done) { | ||
result += indentationNext; | ||
if (width++ === config.maxWidth) { | ||
result += '…'; | ||
break; | ||
} | ||
result += printer(current.value, config, indentationNext, depth, refs); | ||
current = iterator.next(); | ||
if (!current.done) { | ||
result += `,${config.spacingInner}`; | ||
} else if (!config.min) { | ||
result += ','; | ||
} | ||
} | ||
result += config.spacingOuter + indentation; | ||
} | ||
return result; | ||
} | ||
/** | ||
* Return items (for example, of an array) | ||
* with spacing, indentation, and comma | ||
* without surrounding punctuation (for example, brackets) | ||
**/ | ||
function printListItems(list, config, indentation, depth, refs, printer) { | ||
let result = ''; | ||
list = list instanceof ArrayBuffer ? new DataView(list) : list; | ||
const isDataView = l => l instanceof DataView; | ||
const length = isDataView(list) ? list.byteLength : list.length; | ||
if (length > 0) { | ||
result += config.spacingOuter; | ||
const indentationNext = indentation + config.indent; | ||
for (let i = 0; i < length; i++) { | ||
result += indentationNext; | ||
if (i === config.maxWidth) { | ||
result += '…'; | ||
break; | ||
} | ||
if (isDataView(list) || i in list) { | ||
result += printer(isDataView(list) ? list.getInt8(i) : list[i], config, indentationNext, depth, refs); | ||
} | ||
if (i < length - 1) { | ||
result += `,${config.spacingInner}`; | ||
} else if (!config.min) { | ||
result += ','; | ||
} | ||
} | ||
result += config.spacingOuter + indentation; | ||
} | ||
return result; | ||
} | ||
/** | ||
* Return properties of an object | ||
* with spacing, indentation, and comma | ||
* without surrounding punctuation (for example, braces) | ||
*/ | ||
function printObjectProperties(val, config, indentation, depth, refs, printer) { | ||
let result = ''; | ||
const keys = getKeysOfEnumerableProperties(val, config.compareKeys); | ||
if (keys.length > 0) { | ||
result += config.spacingOuter; | ||
const indentationNext = indentation + config.indent; | ||
for (let i = 0; i < keys.length; i++) { | ||
const key = keys[i]; | ||
const name = printer(key, config, indentationNext, depth, refs); | ||
const value = printer(val[key], config, indentationNext, depth, refs); | ||
result += `${indentationNext + name}: ${value}`; | ||
if (i < keys.length - 1) { | ||
result += `,${config.spacingInner}`; | ||
} else if (!config.min) { | ||
result += ','; | ||
} | ||
} | ||
result += config.spacingOuter + indentation; | ||
} | ||
return result; | ||
} | ||
/***/ }), | ||
/***/ "./src/plugins/AsymmetricMatcher.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var _collections = __webpack_require__("./src/collections.ts"); | ||
var Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol; | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
const asymmetricMatcher = typeof Symbol === 'function' && Symbol.for ? Symbol.for('jest.asymmetricMatcher') : 0x13_57_a5; | ||
const SPACE = ' '; | ||
const serialize = (val, config, indentation, depth, refs, printer) => { | ||
const stringedValue = val.toString(); | ||
if (stringedValue === 'ArrayContaining' || stringedValue === 'ArrayNotContaining') { | ||
if (++depth > config.maxDepth) { | ||
return `[${stringedValue}]`; | ||
} | ||
return `${stringedValue + SPACE}[${(0, _collections.printListItems)(val.sample, config, indentation, depth, refs, printer)}]`; | ||
} | ||
if (stringedValue === 'ObjectContaining' || stringedValue === 'ObjectNotContaining') { | ||
if (++depth > config.maxDepth) { | ||
return `[${stringedValue}]`; | ||
} | ||
return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(val.sample, config, indentation, depth, refs, printer)}}`; | ||
} | ||
if (stringedValue === 'StringMatching' || stringedValue === 'StringNotMatching') { | ||
return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); | ||
} | ||
if (stringedValue === 'StringContaining' || stringedValue === 'StringNotContaining') { | ||
return stringedValue + SPACE + printer(val.sample, config, indentation, depth, refs); | ||
} | ||
if (typeof val.toAsymmetricMatcher !== 'function') { | ||
throw new Error(`Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`); | ||
} | ||
return val.toAsymmetricMatcher(); | ||
}; | ||
exports.serialize = serialize; | ||
const test = val => val && val.$$typeof === asymmetricMatcher; | ||
exports.test = test; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/DOMCollection.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var _collections = __webpack_require__("./src/collections.ts"); | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
const SPACE = ' '; | ||
const OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap']; | ||
const ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/; | ||
const testName = name => OBJECT_NAMES.includes(name) || ARRAY_REGEXP.test(name); | ||
const test = val => val && val.constructor && !!val.constructor.name && testName(val.constructor.name); | ||
exports.test = test; | ||
const isNamedNodeMap = collection => collection.constructor.name === 'NamedNodeMap'; | ||
const serialize = (collection, config, indentation, depth, refs, printer) => { | ||
const name = collection.constructor.name; | ||
if (++depth > config.maxDepth) { | ||
return `[${name}]`; | ||
} | ||
return (config.min ? '' : name + SPACE) + (OBJECT_NAMES.includes(name) ? `{${(0, _collections.printObjectProperties)(isNamedNodeMap(collection) ? Array.from(collection).reduce((props, attribute) => { | ||
props[attribute.name] = attribute.value; | ||
return props; | ||
}, {}) : { | ||
...collection | ||
}, config, indentation, depth, refs, printer)}}` : `[${(0, _collections.printListItems)(Array.from(collection), config, indentation, depth, refs, printer)}]`); | ||
}; | ||
exports.serialize = serialize; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/DOMElement.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var _markup = __webpack_require__("./src/plugins/lib/markup.ts"); | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
const ELEMENT_NODE = 1; | ||
const TEXT_NODE = 3; | ||
const COMMENT_NODE = 8; | ||
const FRAGMENT_NODE = 11; | ||
const ELEMENT_REGEXP = /^((HTML|SVG)\w*)?Element$/; | ||
const testHasAttribute = val => { | ||
try { | ||
return typeof val.hasAttribute === 'function' && val.hasAttribute('is'); | ||
} catch { | ||
return false; | ||
} | ||
}; | ||
const testNode = val => { | ||
const constructorName = val.constructor.name; | ||
const { | ||
nodeType, | ||
tagName | ||
} = val; | ||
const isCustomElement = typeof tagName === 'string' && tagName.includes('-') || testHasAttribute(val); | ||
return nodeType === ELEMENT_NODE && (ELEMENT_REGEXP.test(constructorName) || isCustomElement) || nodeType === TEXT_NODE && constructorName === 'Text' || nodeType === COMMENT_NODE && constructorName === 'Comment' || nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment'; | ||
}; | ||
const test = val => val?.constructor?.name && testNode(val); | ||
exports.test = test; | ||
function nodeIsText(node) { | ||
return node.nodeType === TEXT_NODE; | ||
} | ||
function nodeIsComment(node) { | ||
return node.nodeType === COMMENT_NODE; | ||
} | ||
function nodeIsFragment(node) { | ||
return node.nodeType === FRAGMENT_NODE; | ||
} | ||
const serialize = (node, config, indentation, depth, refs, printer) => { | ||
if (nodeIsText(node)) { | ||
return (0, _markup.printText)(node.data, config); | ||
} | ||
if (nodeIsComment(node)) { | ||
return (0, _markup.printComment)(node.data, config); | ||
} | ||
const type = nodeIsFragment(node) ? 'DocumentFragment' : node.tagName.toLowerCase(); | ||
if (++depth > config.maxDepth) { | ||
return (0, _markup.printElementAsLeaf)(type, config); | ||
} | ||
return (0, _markup.printElement)(type, (0, _markup.printProps)(nodeIsFragment(node) ? [] : Array.from(node.attributes, attr => attr.name).sort(), nodeIsFragment(node) ? {} : Array.from(node.attributes).reduce((props, attribute) => { | ||
props[attribute.name] = attribute.value; | ||
return props; | ||
}, {}), config, indentation + config.indent, depth, refs, printer), (0, _markup.printChildren)(Array.prototype.slice.call(node.childNodes || node.children), config, indentation + config.indent, depth, refs, printer), config, indentation); | ||
}; | ||
exports.serialize = serialize; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/Immutable.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var _collections = __webpack_require__("./src/collections.ts"); | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
// SENTINEL constants are from https://github.com/facebook/immutable-js | ||
const IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; | ||
const IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@'; | ||
const IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; | ||
const IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@'; | ||
const IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; | ||
const IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4 | ||
const IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@'; | ||
const IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; | ||
const IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@'; | ||
const getImmutableName = name => `Immutable.${name}`; | ||
const printAsLeaf = name => `[${name}]`; | ||
const SPACE = ' '; | ||
const LAZY = '…'; // Seq is lazy if it calls a method like filter | ||
const printImmutableEntries = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}{${(0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer)}}`; | ||
// Record has an entries method because it is a collection in immutable v3. | ||
// Return an iterator for Immutable Record from version v3 or v4. | ||
function getRecordEntries(val) { | ||
let i = 0; | ||
return { | ||
next() { | ||
if (i < val._keys.length) { | ||
const key = val._keys[i++]; | ||
return { | ||
done: false, | ||
value: [key, val.get(key)] | ||
}; | ||
} | ||
return { | ||
done: true, | ||
value: undefined | ||
}; | ||
} | ||
}; | ||
} | ||
const printImmutableRecord = (val, config, indentation, depth, refs, printer) => { | ||
// _name property is defined only for an Immutable Record instance | ||
// which was constructed with a second optional descriptive name arg | ||
const name = getImmutableName(val._name || 'Record'); | ||
return ++depth > config.maxDepth ? printAsLeaf(name) : `${name + SPACE}{${(0, _collections.printIteratorEntries)(getRecordEntries(val), config, indentation, depth, refs, printer)}}`; | ||
}; | ||
const printImmutableSeq = (val, config, indentation, depth, refs, printer) => { | ||
const name = getImmutableName('Seq'); | ||
if (++depth > config.maxDepth) { | ||
return printAsLeaf(name); | ||
} | ||
if (val[IS_KEYED_SENTINEL]) { | ||
return `${name + SPACE}{${ | ||
// from Immutable collection of entries or from ECMAScript object | ||
val._iter || val._object ? (0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer) : LAZY}}`; | ||
} | ||
return `${name + SPACE}[${val._iter || | ||
// from Immutable collection of values | ||
val._array || | ||
// from ECMAScript array | ||
val._collection || | ||
// from ECMAScript collection in immutable v4 | ||
val._iterable // from ECMAScript collection in immutable v3 | ||
? (0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer) : LAZY}]`; | ||
}; | ||
const printImmutableValues = (val, config, indentation, depth, refs, printer, type) => ++depth > config.maxDepth ? printAsLeaf(getImmutableName(type)) : `${getImmutableName(type) + SPACE}[${(0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer)}]`; | ||
const serialize = (val, config, indentation, depth, refs, printer) => { | ||
if (val[IS_MAP_SENTINEL]) { | ||
return printImmutableEntries(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'); | ||
} | ||
if (val[IS_LIST_SENTINEL]) { | ||
return printImmutableValues(val, config, indentation, depth, refs, printer, 'List'); | ||
} | ||
if (val[IS_SET_SENTINEL]) { | ||
return printImmutableValues(val, config, indentation, depth, refs, printer, val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'); | ||
} | ||
if (val[IS_STACK_SENTINEL]) { | ||
return printImmutableValues(val, config, indentation, depth, refs, printer, 'Stack'); | ||
} | ||
if (val[IS_SEQ_SENTINEL]) { | ||
return printImmutableSeq(val, config, indentation, depth, refs, printer); | ||
} | ||
// For compatibility with immutable v3 and v4, let record be the default. | ||
return printImmutableRecord(val, config, indentation, depth, refs, printer); | ||
}; | ||
// Explicitly comparing sentinel properties to true avoids false positive | ||
// when mock identity-obj-proxy returns the key as the value for any key. | ||
exports.serialize = serialize; | ||
const test = val => val && (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true); | ||
exports.test = test; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/ReactElement.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var ReactIs = _interopRequireWildcard(require("react-is")); | ||
var _markup = __webpack_require__("./src/plugins/lib/markup.ts"); | ||
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } | ||
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
// Given element.props.children, or subtree during recursive traversal, | ||
// return flattened array of children. | ||
const getChildren = (arg, children = []) => { | ||
if (Array.isArray(arg)) { | ||
for (const item of arg) { | ||
getChildren(item, children); | ||
} | ||
} else if (arg != null && arg !== false && arg !== '') { | ||
children.push(arg); | ||
} | ||
return children; | ||
}; | ||
const getType = element => { | ||
const type = element.type; | ||
if (typeof type === 'string') { | ||
return type; | ||
} | ||
if (typeof type === 'function') { | ||
return type.displayName || type.name || 'Unknown'; | ||
} | ||
if (ReactIs.isFragment(element)) { | ||
return 'React.Fragment'; | ||
} | ||
if (ReactIs.isSuspense(element)) { | ||
return 'React.Suspense'; | ||
} | ||
if (typeof type === 'object' && type !== null) { | ||
if (ReactIs.isContextProvider(element)) { | ||
return 'Context.Provider'; | ||
} | ||
if (ReactIs.isContextConsumer(element)) { | ||
return 'Context.Consumer'; | ||
} | ||
if (ReactIs.isForwardRef(element)) { | ||
if (type.displayName) { | ||
return type.displayName; | ||
} | ||
const functionName = type.render.displayName || type.render.name || ''; | ||
return functionName === '' ? 'ForwardRef' : `ForwardRef(${functionName})`; | ||
} | ||
if (ReactIs.isMemo(element)) { | ||
const functionName = type.displayName || type.type.displayName || type.type.name || ''; | ||
return functionName === '' ? 'Memo' : `Memo(${functionName})`; | ||
} | ||
} | ||
return 'UNDEFINED'; | ||
}; | ||
const getPropKeys = element => { | ||
const { | ||
props | ||
} = element; | ||
return Object.keys(props).filter(key => key !== 'children' && props[key] !== undefined).sort(); | ||
}; | ||
const serialize = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(getType(element), config) : (0, _markup.printElement)(getType(element), (0, _markup.printProps)(getPropKeys(element), element.props, config, indentation + config.indent, depth, refs, printer), (0, _markup.printChildren)(getChildren(element.props.children), config, indentation + config.indent, depth, refs, printer), config, indentation); | ||
exports.serialize = serialize; | ||
const test = val => val != null && ReactIs.isElement(val); | ||
exports.test = test; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/ReactTestComponent.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.test = exports.serialize = exports["default"] = void 0; | ||
var _markup = __webpack_require__("./src/plugins/lib/markup.ts"); | ||
var Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol; | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
// Child can be `number` in Stack renderer but not in Fiber renderer. | ||
const testSymbol = typeof Symbol === 'function' && Symbol.for ? Symbol.for('react.test.json') : 0xe_a7_13_57; | ||
const getPropKeys = object => { | ||
const { | ||
props | ||
} = object; | ||
return props ? Object.keys(props).filter(key => props[key] !== undefined).sort() : []; | ||
}; | ||
const serialize = (object, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(object.type, config) : (0, _markup.printElement)(object.type, object.props ? (0, _markup.printProps)(getPropKeys(object), object.props, config, indentation + config.indent, depth, refs, printer) : '', object.children ? (0, _markup.printChildren)(object.children, config, indentation + config.indent, depth, refs, printer) : '', config, indentation); | ||
exports.serialize = serialize; | ||
const test = val => val && val.$$typeof === testSymbol; | ||
exports.test = test; | ||
const plugin = { | ||
serialize, | ||
test | ||
}; | ||
var _default = exports["default"] = plugin; | ||
/***/ }), | ||
/***/ "./src/plugins/lib/escapeHTML.ts": | ||
/***/ ((__unused_webpack_module, exports) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports["default"] = escapeHTML; | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
function escapeHTML(str) { | ||
return str.replace(/</g, '<').replace(/>/g, '>'); | ||
} | ||
/***/ }), | ||
/***/ "./src/plugins/lib/markup.ts": | ||
/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports.printText = exports.printProps = exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printChildren = void 0; | ||
var _escapeHTML = _interopRequireDefault(__webpack_require__("./src/plugins/lib/escapeHTML.ts")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
// Return empty string if keys is empty. | ||
const printProps = (keys, props, config, indentation, depth, refs, printer) => { | ||
const indentationNext = indentation + config.indent; | ||
const colors = config.colors; | ||
return keys.map(key => { | ||
const value = props[key]; | ||
let printed = printer(value, config, indentationNext, depth, refs); | ||
if (typeof value !== 'string') { | ||
if (printed.includes('\n')) { | ||
printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation; | ||
} | ||
printed = `{${printed}}`; | ||
} | ||
return `${config.spacingInner + indentation + colors.prop.open + key + colors.prop.close}=${colors.value.open}${printed}${colors.value.close}`; | ||
}).join(''); | ||
}; | ||
// Return empty string if children is empty. | ||
exports.printProps = printProps; | ||
const printChildren = (children, config, indentation, depth, refs, printer) => children.map(child => config.spacingOuter + indentation + (typeof child === 'string' ? printText(child, config) : printer(child, config, indentation, depth, refs))).join(''); | ||
exports.printChildren = printChildren; | ||
const printText = (text, config) => { | ||
const contentColor = config.colors.content; | ||
return contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close; | ||
}; | ||
exports.printText = printText; | ||
const printComment = (comment, config) => { | ||
const commentColor = config.colors.comment; | ||
return `${commentColor.open}<!--${(0, _escapeHTML.default)(comment)}-->${commentColor.close}`; | ||
}; | ||
// Separate the functions to format props, children, and element, | ||
// so a plugin could override a particular function, if needed. | ||
// Too bad, so sad: the traditional (but unnecessary) space | ||
// in a self-closing tagColor requires a second test of printedProps. | ||
exports.printComment = printComment; | ||
const printElement = (type, printedProps, printedChildren, config, indentation) => { | ||
const tagColor = config.colors.tag; | ||
return `${tagColor.open}<${type}${printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open}${printedChildren ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}</${type}` : `${printedProps && !config.min ? '' : ' '}/`}>${tagColor.close}`; | ||
}; | ||
exports.printElement = printElement; | ||
const printElementAsLeaf = (type, config) => { | ||
const tagColor = config.colors.tag; | ||
return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`; | ||
}; | ||
exports.printElementAsLeaf = printElementAsLeaf; | ||
/***/ }) | ||
/******/ }); | ||
/************************************************************************/ | ||
/******/ // The module cache | ||
/******/ var __webpack_module_cache__ = {}; | ||
/******/ | ||
/******/ // The require function | ||
/******/ function __webpack_require__(moduleId) { | ||
/******/ // Check if module is in cache | ||
/******/ var cachedModule = __webpack_module_cache__[moduleId]; | ||
/******/ if (cachedModule !== undefined) { | ||
/******/ return cachedModule.exports; | ||
/******/ } | ||
/******/ // Create a new module (and put it into the cache) | ||
/******/ var module = __webpack_module_cache__[moduleId] = { | ||
/******/ // no module.id needed | ||
/******/ // no module.loaded needed | ||
/******/ exports: {} | ||
/******/ }; | ||
/******/ | ||
/******/ // Execute the module function | ||
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); | ||
/******/ | ||
/******/ // Return the exports of the module | ||
/******/ return module.exports; | ||
/******/ } | ||
/******/ | ||
/************************************************************************/ | ||
var __webpack_exports__ = {}; | ||
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. | ||
(() => { | ||
var exports = __webpack_exports__; | ||
Object.defineProperty(exports, "__esModule", ({ | ||
value: true | ||
})); | ||
exports["default"] = exports.DEFAULT_OPTIONS = void 0; | ||
exports.format = format; | ||
exports.plugins = void 0; | ||
var _ansiStyles = _interopRequireDefault(require('ansi-styles')); | ||
var _collections = require('./collections'); | ||
var _AsymmetricMatcher = _interopRequireDefault( | ||
require('./plugins/AsymmetricMatcher') | ||
); | ||
var _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection')); | ||
var _DOMElement = _interopRequireDefault(require('./plugins/DOMElement')); | ||
var _Immutable = _interopRequireDefault(require('./plugins/Immutable')); | ||
var _ReactElement = _interopRequireDefault(require('./plugins/ReactElement')); | ||
var _ReactTestComponent = _interopRequireDefault( | ||
require('./plugins/ReactTestComponent') | ||
); | ||
function _interopRequireDefault(obj) { | ||
return obj && obj.__esModule ? obj : {default: obj}; | ||
} | ||
var _ansiStyles = _interopRequireDefault(require("ansi-styles")); | ||
var _collections = __webpack_require__("./src/collections.ts"); | ||
var _AsymmetricMatcher = _interopRequireDefault(__webpack_require__("./src/plugins/AsymmetricMatcher.ts")); | ||
var _DOMCollection = _interopRequireDefault(__webpack_require__("./src/plugins/DOMCollection.ts")); | ||
var _DOMElement = _interopRequireDefault(__webpack_require__("./src/plugins/DOMElement.ts")); | ||
var _Immutable = _interopRequireDefault(__webpack_require__("./src/plugins/Immutable.ts")); | ||
var _ReactElement = _interopRequireDefault(__webpack_require__("./src/plugins/ReactElement.ts")); | ||
var _ReactTestComponent = _interopRequireDefault(__webpack_require__("./src/plugins/ReactTestComponent.ts")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
/** | ||
@@ -42,4 +742,3 @@ * Copyright (c) Meta Platforms, Inc. and affiliates. | ||
*/ | ||
const getConstructorName = val => | ||
(typeof val.constructor === 'function' && val.constructor.name) || 'Object'; | ||
const getConstructorName = val => typeof val.constructor === 'function' && val.constructor.name || 'Object'; | ||
@@ -59,16 +758,3 @@ /* global window */ | ||
function isToStringedArrayType(toStringed) { | ||
return ( | ||
toStringed === '[object Array]' || | ||
toStringed === '[object ArrayBuffer]' || | ||
toStringed === '[object DataView]' || | ||
toStringed === '[object Float32Array]' || | ||
toStringed === '[object Float64Array]' || | ||
toStringed === '[object Int8Array]' || | ||
toStringed === '[object Int16Array]' || | ||
toStringed === '[object Int32Array]' || | ||
toStringed === '[object Uint8Array]' || | ||
toStringed === '[object Uint8ClampedArray]' || | ||
toStringed === '[object Uint16Array]' || | ||
toStringed === '[object Uint32Array]' | ||
); | ||
return toStringed === '[object Array]' || toStringed === '[object ArrayBuffer]' || toStringed === '[object DataView]' || toStringed === '[object Float32Array]' || toStringed === '[object Float64Array]' || toStringed === '[object Int8Array]' || toStringed === '[object Int16Array]' || toStringed === '[object Int32Array]' || toStringed === '[object Uint8Array]' || toStringed === '[object Uint8ClampedArray]' || toStringed === '[object Uint16Array]' || toStringed === '[object Uint32Array]'; | ||
} | ||
@@ -134,6 +820,3 @@ function printNumber(val) { | ||
} | ||
if ( | ||
toStringed === '[object Function]' || | ||
toStringed === '[object GeneratorFunction]' | ||
) { | ||
if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') { | ||
return printFunction(val, printFunctionName); | ||
@@ -167,11 +850,4 @@ } | ||
*/ | ||
function printComplexValue( | ||
val, | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
hasCalledToJSON | ||
) { | ||
if (refs.indexOf(val) !== -1) { | ||
function printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON) { | ||
if (refs.includes(val)) { | ||
return '[Circular]'; | ||
@@ -183,9 +859,3 @@ } | ||
const min = config.min; | ||
if ( | ||
config.callToJSON && | ||
!hitMaxDepth && | ||
val.toJSON && | ||
typeof val.toJSON === 'function' && | ||
!hasCalledToJSON | ||
) { | ||
if (config.callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function' && !hasCalledToJSON) { | ||
return printer(val.toJSON(), config, indentation, depth, refs, true); | ||
@@ -195,55 +865,12 @@ } | ||
if (toStringed === '[object Arguments]') { | ||
return hitMaxDepth | ||
? '[Arguments]' | ||
: `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)( | ||
val, | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
printer | ||
)}]`; | ||
return hitMaxDepth ? '[Arguments]' : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(val, config, indentation, depth, refs, printer)}]`; | ||
} | ||
if (isToStringedArrayType(toStringed)) { | ||
return hitMaxDepth | ||
? `[${val.constructor.name}]` | ||
: `${ | ||
min | ||
? '' | ||
: !config.printBasicPrototype && val.constructor.name === 'Array' | ||
? '' | ||
: `${val.constructor.name} ` | ||
}[${(0, _collections.printListItems)( | ||
val, | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
printer | ||
)}]`; | ||
return hitMaxDepth ? `[${val.constructor.name}]` : `${min ? '' : !config.printBasicPrototype && val.constructor.name === 'Array' ? '' : `${val.constructor.name} `}[${(0, _collections.printListItems)(val, config, indentation, depth, refs, printer)}]`; | ||
} | ||
if (toStringed === '[object Map]') { | ||
return hitMaxDepth | ||
? '[Map]' | ||
: `Map {${(0, _collections.printIteratorEntries)( | ||
val.entries(), | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
printer, | ||
' => ' | ||
)}}`; | ||
return hitMaxDepth ? '[Map]' : `Map {${(0, _collections.printIteratorEntries)(val.entries(), config, indentation, depth, refs, printer, ' => ')}}`; | ||
} | ||
if (toStringed === '[object Set]') { | ||
return hitMaxDepth | ||
? '[Set]' | ||
: `Set {${(0, _collections.printIteratorValues)( | ||
val.values(), | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
printer | ||
)}}`; | ||
return hitMaxDepth ? '[Set]' : `Set {${(0, _collections.printIteratorValues)(val.values(), config, indentation, depth, refs, printer)}}`; | ||
} | ||
@@ -253,18 +880,3 @@ | ||
// For example, not even relevant if window is prop of React element. | ||
return hitMaxDepth || isWindow(val) | ||
? `[${getConstructorName(val)}]` | ||
: `${ | ||
min | ||
? '' | ||
: !config.printBasicPrototype && getConstructorName(val) === 'Object' | ||
? '' | ||
: `${getConstructorName(val)} ` | ||
}{${(0, _collections.printObjectProperties)( | ||
val, | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
printer | ||
)}}`; | ||
return hitMaxDepth || isWindow(val) ? `[${getConstructorName(val)}]` : `${min ? '' : !config.printBasicPrototype && getConstructorName(val) === 'Object' ? '' : `${getConstructorName(val)} `}{${(0, _collections.printObjectProperties)(val, config, indentation, depth, refs, printer)}}`; | ||
} | ||
@@ -277,21 +889,10 @@ function isNewPlugin(plugin) { | ||
try { | ||
printed = isNewPlugin(plugin) | ||
? plugin.serialize(val, config, indentation, depth, refs, printer) | ||
: plugin.print( | ||
val, | ||
valChild => printer(valChild, config, indentation, depth, refs), | ||
str => { | ||
const indentationNext = indentation + config.indent; | ||
return ( | ||
indentationNext + | ||
str.replace(NEWLINE_REGEXP, `\n${indentationNext}`) | ||
); | ||
}, | ||
{ | ||
edgeSpacing: config.spacingOuter, | ||
min: config.min, | ||
spacing: config.spacingInner | ||
}, | ||
config.colors | ||
); | ||
printed = isNewPlugin(plugin) ? plugin.serialize(val, config, indentation, depth, refs, printer) : plugin.print(val, valChild => printer(valChild, config, indentation, depth, refs), str => { | ||
const indentationNext = indentation + config.indent; | ||
return indentationNext + str.replace(NEWLINE_REGEXP, `\n${indentationNext}`); | ||
}, { | ||
edgeSpacing: config.spacingOuter, | ||
min: config.min, | ||
spacing: config.spacingInner | ||
}, config.colors); | ||
} catch (error) { | ||
@@ -301,5 +902,3 @@ throw new PrettyFormatPluginError(error.message, error.stack); | ||
if (typeof printed !== 'string') { | ||
throw new Error( | ||
`pretty-format: Plugin must return type "string" but instead returned "${typeof printed}".` | ||
); | ||
throw new Error(`pretty-format: Plugin must return type "string" but instead returned "${typeof printed}".`); | ||
} | ||
@@ -325,19 +924,7 @@ return printed; | ||
} | ||
const basicResult = printBasicValue( | ||
val, | ||
config.printFunctionName, | ||
config.escapeRegex, | ||
config.escapeString | ||
); | ||
const basicResult = printBasicValue(val, config.printFunctionName, config.escapeRegex, config.escapeString); | ||
if (basicResult !== null) { | ||
return basicResult; | ||
} | ||
return printComplexValue( | ||
val, | ||
config, | ||
indentation, | ||
depth, | ||
refs, | ||
hasCalledToJSON | ||
); | ||
return printComplexValue(val, config, indentation, depth, refs, hasCalledToJSON); | ||
} | ||
@@ -355,3 +942,3 @@ const DEFAULT_THEME = { | ||
const toOptionsSubtype = options => options; | ||
const DEFAULT_OPTIONS = toOptionsSubtype({ | ||
const DEFAULT_OPTIONS = exports.DEFAULT_OPTIONS = toOptionsSubtype({ | ||
callToJSON: true, | ||
@@ -371,13 +958,10 @@ compareKeys: undefined, | ||
}); | ||
exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS; | ||
function validateOptions(options) { | ||
Object.keys(options).forEach(key => { | ||
for (const key of Object.keys(options)) { | ||
if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) { | ||
throw new Error(`pretty-format: Unknown option "${key}".`); | ||
} | ||
}); | ||
} | ||
if (options.min && options.indent !== undefined && options.indent !== 0) { | ||
throw new Error( | ||
'pretty-format: Options "min" and "indent" cannot be used together.' | ||
); | ||
throw new Error('pretty-format: Options "min" and "indent" cannot be used together.'); | ||
} | ||
@@ -389,54 +973,33 @@ if (options.theme !== undefined) { | ||
if (typeof options.theme !== 'object') { | ||
throw new Error( | ||
`pretty-format: Option "theme" must be of type "object" but instead received "${typeof options.theme}".` | ||
); | ||
throw new Error(`pretty-format: Option "theme" must be of type "object" but instead received "${typeof options.theme}".`); | ||
} | ||
} | ||
} | ||
const getColorsHighlight = options => | ||
DEFAULT_THEME_KEYS.reduce((colors, key) => { | ||
const value = | ||
options.theme && options.theme[key] !== undefined | ||
? options.theme[key] | ||
: DEFAULT_THEME[key]; | ||
const color = value && _ansiStyles.default[value]; | ||
if ( | ||
color && | ||
typeof color.close === 'string' && | ||
typeof color.open === 'string' | ||
) { | ||
colors[key] = color; | ||
} else { | ||
throw new Error( | ||
`pretty-format: Option "theme" has a key "${key}" whose value "${value}" is undefined in ansi-styles.` | ||
); | ||
} | ||
return colors; | ||
}, Object.create(null)); | ||
const getColorsEmpty = () => | ||
DEFAULT_THEME_KEYS.reduce((colors, key) => { | ||
colors[key] = { | ||
close: '', | ||
open: '' | ||
}; | ||
return colors; | ||
}, Object.create(null)); | ||
const getPrintFunctionName = options => | ||
options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName; | ||
const getEscapeRegex = options => | ||
options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex; | ||
const getEscapeString = options => | ||
options?.escapeString ?? DEFAULT_OPTIONS.escapeString; | ||
const getColorsHighlight = options => DEFAULT_THEME_KEYS.reduce((colors, key) => { | ||
const value = options.theme && options.theme[key] !== undefined ? options.theme[key] : DEFAULT_THEME[key]; | ||
const color = value && _ansiStyles.default[value]; | ||
if (color && typeof color.close === 'string' && typeof color.open === 'string') { | ||
colors[key] = color; | ||
} else { | ||
throw new Error(`pretty-format: Option "theme" has a key "${key}" whose value "${value}" is undefined in ansi-styles.`); | ||
} | ||
return colors; | ||
}, Object.create(null)); | ||
const getColorsEmpty = () => DEFAULT_THEME_KEYS.reduce((colors, key) => { | ||
colors[key] = { | ||
close: '', | ||
open: '' | ||
}; | ||
return colors; | ||
}, Object.create(null)); | ||
const getPrintFunctionName = options => options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName; | ||
const getEscapeRegex = options => options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex; | ||
const getEscapeString = options => options?.escapeString ?? DEFAULT_OPTIONS.escapeString; | ||
const getConfig = options => ({ | ||
callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON, | ||
colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(), | ||
compareKeys: | ||
typeof options?.compareKeys === 'function' || options?.compareKeys === null | ||
? options.compareKeys | ||
: DEFAULT_OPTIONS.compareKeys, | ||
compareKeys: typeof options?.compareKeys === 'function' || options?.compareKeys === null ? options.compareKeys : DEFAULT_OPTIONS.compareKeys, | ||
escapeRegex: getEscapeRegex(options), | ||
escapeString: getEscapeString(options), | ||
indent: options?.min | ||
? '' | ||
: createIndent(options?.indent ?? DEFAULT_OPTIONS.indent), | ||
indent: options?.min ? '' : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent), | ||
maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth, | ||
@@ -470,8 +1033,3 @@ maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth, | ||
} | ||
const basicResult = printBasicValue( | ||
val, | ||
getPrintFunctionName(options), | ||
getEscapeRegex(options), | ||
getEscapeString(options) | ||
); | ||
const basicResult = printBasicValue(val, getPrintFunctionName(options), getEscapeRegex(options), getEscapeString(options)); | ||
if (basicResult !== null) { | ||
@@ -482,3 +1040,3 @@ return basicResult; | ||
} | ||
const plugins = { | ||
const plugins = exports.plugins = { | ||
AsymmetricMatcher: _AsymmetricMatcher.default, | ||
@@ -491,4 +1049,7 @@ DOMCollection: _DOMCollection.default, | ||
}; | ||
exports.plugins = plugins; | ||
var _default = format; | ||
exports.default = _default; | ||
var _default = exports["default"] = format; | ||
})(); | ||
module.exports = __webpack_exports__; | ||
/******/ })() | ||
; |
{ | ||
"name": "pretty-format", | ||
"version": "29.7.0", | ||
"version": "30.0.0-alpha.1", | ||
"repository": { | ||
@@ -16,2 +16,4 @@ "type": "git", | ||
"types": "./build/index.d.ts", | ||
"require": "./build/index.js", | ||
"import": "./build/index.mjs", | ||
"default": "./build/index.js" | ||
@@ -23,3 +25,3 @@ }, | ||
"dependencies": { | ||
"@jest/schemas": "^29.6.3", | ||
"@jest/schemas": "30.0.0-alpha.1", | ||
"ansi-styles": "^5.0.0", | ||
@@ -29,13 +31,13 @@ "react-is": "^18.0.0" | ||
"devDependencies": { | ||
"@types/react": "^17.0.3", | ||
"@types/react": "^18.2.0", | ||
"@types/react-is": "^18.0.0", | ||
"@types/react-test-renderer": "17.0.2", | ||
"@types/react-test-renderer": "^18.0.1", | ||
"immutable": "^4.0.0", | ||
"jest-util": "^29.7.0", | ||
"react": "17.0.2", | ||
"react-dom": "^17.0.1", | ||
"react-test-renderer": "17.0.2" | ||
"jest-util": "30.0.0-alpha.1", | ||
"react": "18.2.0", | ||
"react-dom": "18.2.0", | ||
"react-test-renderer": "18.2.0" | ||
}, | ||
"engines": { | ||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0" | ||
"node": "^16.10.0 || ^18.12.0 || >=20.0.0" | ||
}, | ||
@@ -45,3 +47,3 @@ "publishConfig": { | ||
}, | ||
"gitHead": "4e56991693da7cd4c3730dc3579a1dd1403ee630" | ||
"gitHead": "d005cb2505c041583e0c5636d006e08666a54b63" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
60189
6
1116
2
1
+ Added@jest/schemas@30.0.0-alpha.1(transitive)
+ Added@sinclair/typebox@0.31.28(transitive)
- Removed@jest/schemas@29.6.3(transitive)
- Removed@sinclair/typebox@0.27.8(transitive)
Updated@jest/schemas@30.0.0-alpha.1