/home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/util
NameSizeModeActions
annotations.d.ts3900666editdlrm
annotations.d.ts.map1550666editdlrm
annotations.js10900666editdlrm
ast.d.ts51860666editdlrm
ast.d.ts.map11350666editdlrm
ast.js121970666editdlrm
Components.d.ts23960666editdlrm
Components.d.ts.map4660666editdlrm
Components.js300790666editdlrm
componentUtil.d.ts13970666editdlrm
componentUtil.d.ts.map5170666editdlrm
componentUtil.js48240666editdlrm
defaultProps.d.ts3110666editdlrm
defaultProps.d.ts.map1280666editdlrm
defaultProps.js85010666editdlrm
docsUrl.d.ts1040666editdlrm
docsUrl.d.ts.map1120666editdlrm
docsUrl.js1730666editdlrm
error.d.ts2070666editdlrm
error.d.ts.map1310666editdlrm
error.js3080666editdlrm
eslint.d.ts4130666editdlrm
eslint.d.ts.map1690666editdlrm
eslint.js12960666editdlrm
getTokenBeforeClosingBracket.d.ts3270666editdlrm
getTokenBeforeClosingBracket.d.ts.map1880666editdlrm
getTokenBeforeClosingBracket.js4280666editdlrm
isCreateContext.d.ts1150666editdlrm
isCreateContext.d.ts.map1500666editdlrm
isCreateContext.js12130666editdlrm
isCreateElement.d.ts1330666editdlrm
isCreateElement.d.ts.map1600666editdlrm
isCreateElement.js8940666editdlrm
isDestructuredFromPragmaImport.d.ts1820666editdlrm
isDestructuredFromPragmaImport.d.ts.map2010666editdlrm
isDestructuredFromPragmaImport.js27080666editdlrm
isFirstLetterCapitalized.d.ts1230666editdlrm
isFirstLetterCapitalized.d.ts.map1670666editdlrm
isFirstLetterCapitalized.js3870666editdlrm
jsx.d.ts19740666editdlrm
jsx.d.ts.map4800666editdlrm
jsx.js53740666editdlrm
lifecycleMethods.d.ts1400666editdlrm
lifecycleMethods.d.ts.map1190666editdlrm
lifecycleMethods.js6110666editdlrm
linkComponents.d.ts1720666editdlrm
linkComponents.d.ts.map1370666editdlrm
linkComponents.js15200666editdlrm
log.d.ts2010666editdlrm
log.d.ts.map1270666editdlrm
log.js3020666editdlrm
makeNoMethodSetStateRule.d.ts2330666editdlrm
makeNoMethodSetStateRule.d.ts.map2410666editdlrm
makeNoMethodSetStateRule.js37470666editdlrm
message.d.ts2140666editdlrm
message.d.ts.map1170666editdlrm
message.js2660666editdlrm
pragma.d.ts4000666editdlrm
pragma.d.ts.map2310666editdlrm
pragma.js22180666editdlrm
props.d.ts27160666editdlrm
props.d.ts.map5010666editdlrm
props.js42420666editdlrm
propTypes.d.ts7990666editdlrm
propTypes.d.ts.map1760666editdlrm
propTypes.js464490666editdlrm
propTypesSort.d.ts19330666editdlrm
propTypesSort.d.ts.map4190666editdlrm
propTypesSort.js73530666editdlrm
propWrapper.d.ts3980666editdlrm
propWrapper.d.ts.map1680666editdlrm
propWrapper.js18510666editdlrm
report.d.ts1430666editdlrm
report.d.ts.map1110666editdlrm
report.js2350666editdlrm
usedPropTypes.d.ts6380666editdlrm
usedPropTypes.d.ts.map1680666editdlrm
usedPropTypes.js185780666editdlrm
variable.d.ts17240666editdlrm
variable.d.ts.map3590666editdlrm
variable.js28760666editdlrm
version.d.ts3190666editdlrm
version.d.ts.map1580666editdlrm
version.js69640666editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/node_modules/eslint-plugin-react/lib/util/defaultProps.js (8501B)
/** * @fileoverview Common defaultProps detection functionality. */ 'use strict'; const fromEntries = require('object.fromentries'); const astUtil = require('./ast'); const componentUtil = require('./componentUtil'); const propsUtil = require('./props'); const variableUtil = require('./variable'); const propWrapperUtil = require('./propWrapper'); const getText = require('./eslint').getText; const QUOTES_REGEX = /^["']|["']$/g; module.exports = function defaultPropsInstructions(context, components, utils) { /** * Try to resolve the node passed in to a variable in the current scope. If the node passed in is not * an Identifier, then the node is simply returned. * @param {ASTNode} node The node to resolve. * @returns {ASTNode|null} Return null if the value could not be resolved, ASTNode otherwise. */ function resolveNodeValue(node) { if (node.type === 'Identifier') { return variableUtil.findVariableByName(context, node, node.name); } if ( astUtil.isCallExpression(node) && propWrapperUtil.isPropWrapperFunction(context, node.callee.name) && node.arguments && node.arguments[0] ) { return resolveNodeValue(node.arguments[0]); } return node; } /** * Extracts a DefaultProp from an ObjectExpression node. * @param {ASTNode} objectExpression ObjectExpression node. * @returns {Object|string} Object representation of a defaultProp, to be consumed by * `addDefaultPropsToComponent`, or string "unresolved", if the defaultProps * from this ObjectExpression can't be resolved. */ function getDefaultPropsFromObjectExpression(objectExpression) { const hasSpread = objectExpression.properties.find((property) => property.type === 'ExperimentalSpreadProperty' || property.type === 'SpreadElement'); if (hasSpread) { return 'unresolved'; } return objectExpression.properties.map((defaultProp) => ({ name: getText(context, defaultProp.key).replace(QUOTES_REGEX, ''), node: defaultProp, })); } /** * Marks a component's DefaultProps declaration as "unresolved". A component's DefaultProps is * marked as "unresolved" if we cannot safely infer the values of its defaultProps declarations * without risking false negatives. * @param {Object} component The component to mark. * @returns {void} */ function markDefaultPropsAsUnresolved(component) { components.set(component.node, { defaultProps: 'unresolved', }); } /** * Adds defaultProps to the component passed in. * @param {ASTNode} component The component to add the defaultProps to. * @param {Object[]|'unresolved'} defaultProps defaultProps to add to the component or the string "unresolved" * if this component has defaultProps that can't be resolved. * @returns {void} */ function addDefaultPropsToComponent(component, defaultProps) { // Early return if this component's defaultProps is already marked as "unresolved". if (component.defaultProps === 'unresolved') { return; } if (defaultProps === 'unresolved') { markDefaultPropsAsUnresolved(component); return; } const defaults = component.defaultProps || {}; const newDefaultProps = Object.assign( {}, defaults, fromEntries(defaultProps.map((prop) => [prop.name, prop])) ); components.set(component.node, { defaultProps: newDefaultProps, }); } return { MemberExpression(node) { const isDefaultProp = propsUtil.isDefaultPropsDeclaration(node); if (!isDefaultProp) { return; } // find component this defaultProps belongs to const component = utils.getRelatedComponent(node); if (!component) { return; } // e.g.: // MyComponent.propTypes = { // foo: React.PropTypes.string.isRequired, // bar: React.PropTypes.string // }; // // or: // // MyComponent.propTypes = myPropTypes; if (node.parent.type === 'AssignmentExpression') { const expression = resolveNodeValue(node.parent.right); if (!expression || expression.type !== 'ObjectExpression') { // If a value can't be found, we mark the defaultProps declaration as "unresolved", because // we should ignore this component and not report any errors for it, to avoid false-positives // with e.g. external defaultProps declarations. if (isDefaultProp) { markDefaultPropsAsUnresolved(component); } return; } addDefaultPropsToComponent(component, getDefaultPropsFromObjectExpression(expression)); return; } // e.g.: // MyComponent.propTypes.baz = React.PropTypes.string; if (node.parent.type === 'MemberExpression' && node.parent.parent && node.parent.parent.type === 'AssignmentExpression') { addDefaultPropsToComponent(component, [{ name: node.parent.property.name, node: node.parent.parent, }]); } }, // e.g.: // class Hello extends React.Component { // static get defaultProps() { // return { // name: 'Dean' // }; // } // render() { // return
Hello {this.props.name}
; // } // } MethodDefinition(node) { if (!node.static || node.kind !== 'get') { return; } if (!propsUtil.isDefaultPropsDeclaration(node)) { return; } // find component this propTypes/defaultProps belongs to const component = components.get(componentUtil.getParentES6Component(context, node)); if (!component) { return; } const returnStatement = utils.findReturnStatement(node); if (!returnStatement) { return; } const expression = resolveNodeValue(returnStatement.argument); if (!expression || expression.type !== 'ObjectExpression') { return; } addDefaultPropsToComponent(component, getDefaultPropsFromObjectExpression(expression)); }, // e.g.: // class Greeting extends React.Component { // render() { // return ( //

Hello, {this.props.foo} {this.props.bar}

// ); // } // static defaultProps = { // foo: 'bar', // bar: 'baz' // }; // } 'ClassProperty, PropertyDefinition'(node) { if (!(node.static && node.value)) { return; } const propName = astUtil.getPropertyName(node); const isDefaultProp = propName === 'defaultProps' || propName === 'getDefaultProps'; if (!isDefaultProp) { return; } // find component this propTypes/defaultProps belongs to const component = components.get(componentUtil.getParentES6Component(context, node)); if (!component) { return; } const expression = resolveNodeValue(node.value); if (!expression || expression.type !== 'ObjectExpression') { return; } addDefaultPropsToComponent(component, getDefaultPropsFromObjectExpression(expression)); }, // e.g.: // React.createClass({ // render: function() { // return
{this.props.foo}
; // }, // getDefaultProps: function() { // return { // foo: 'default' // }; // } // }); ObjectExpression(node) { // find component this propTypes/defaultProps belongs to const component = componentUtil.isES5Component(node, context) && components.get(node); if (!component) { return; } // Search for the proptypes declaration node.properties.forEach((property) => { if (property.type === 'ExperimentalSpreadProperty' || property.type === 'SpreadElement') { return; } const isDefaultProp = propsUtil.isDefaultPropsDeclaration(property); if (isDefaultProp && property.value.type === 'FunctionExpression') { const returnStatement = utils.findReturnStatement(property); if (!returnStatement || returnStatement.argument.type !== 'ObjectExpression') { return; } addDefaultPropsToComponent(component, getDefaultPropsFromObjectExpression(returnStatement.argument)); } }); }, }; };