Test
This commit is contained in:
54
node_modules/preact/debug/src/check-props.js
generated
vendored
Normal file
54
node_modules/preact/debug/src/check-props.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
|
||||
|
||||
let loggedTypeFailures = {};
|
||||
|
||||
/**
|
||||
* Reset the history of which prop type warnings have been logged.
|
||||
*/
|
||||
export function resetPropWarnings() {
|
||||
loggedTypeFailures = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that the values match with the type specs.
|
||||
* Error messages are memorized and will only be shown once.
|
||||
*
|
||||
* Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js
|
||||
*
|
||||
* @param {object} typeSpecs Map of name to a ReactPropType
|
||||
* @param {object} values Runtime values that need to be type-checked
|
||||
* @param {string} location e.g. "prop", "context", "child context"
|
||||
* @param {string} componentName Name of the component for error messages.
|
||||
* @param {?Function} getStack Returns the component stack.
|
||||
*/
|
||||
export function checkPropTypes(
|
||||
typeSpecs,
|
||||
values,
|
||||
location,
|
||||
componentName,
|
||||
getStack
|
||||
) {
|
||||
Object.keys(typeSpecs).forEach(typeSpecName => {
|
||||
let error;
|
||||
try {
|
||||
error = typeSpecs[typeSpecName](
|
||||
values,
|
||||
typeSpecName,
|
||||
componentName,
|
||||
location,
|
||||
null,
|
||||
ReactPropTypesSecret
|
||||
);
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
if (error && !(error.message in loggedTypeFailures)) {
|
||||
loggedTypeFailures[error.message] = true;
|
||||
console.error(
|
||||
`Failed ${location} type: ${error.message}${
|
||||
(getStack && `\n${getStack()}`) || ''
|
||||
}`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user