modules/core/src/lifecycle/create-props.js
function addAsyncPropsToPropPrototype(defaultProps, propTypes) {
  const defaultValues = {};

  const descriptors = {
    // Default "resolved" values for async props, returned if value not yet resolved/set.
    _asyncPropDefaultValues: {
      enumerable: false,
      value: defaultValues
    },
    // Shadowed object, just to make sure "early indexing" into the instance does not fail
    _asyncPropOriginalValues: {
      enumerable: false,
      value: {}
    }
  };

  // Move async props into shadow values
  for (const propName in propTypes) {
    const propType = propTypes[propName];
    const {name, value} = propType;

    // Note: async is ES7 keyword, can't destructure
    if (propType.async) {
      defaultValues[name] = value;
      descriptors[name] = getDescriptorForAsyncProp(name, value);
    }
  }

  Object.defineProperties(defaultProps, descriptors);
}
function addAsyncPropsToPropPrototype(defaultProps, propTypes) {
  const defaultValues = {};

  const descriptors = {
    // Default "resolved" values for async props, returned if value not yet resolved/set.
    _asyncPropDefaultValues: {
      enumerable: false,
      value: defaultValues
    },
    // Shadowed object, just to make sure "early indexing" into the instance does not fail
    _asyncPropOriginalValues: {
      enumerable: false,
      value: {}
    }
  };

  // Move async props into shadow values
  for (const propName in propTypes) {
    const propType = propTypes[propName];
    const {name, value} = propType;

    // Note: async is ES7 keyword, can't destructure
    if (propType.async) {
      defaultValues[name] = value;
      descriptors[name] = getDescriptorForAsyncProp(name, value);
    }
  }

  Object.defineProperties(defaultProps, descriptors);
}
function addAsyncPropsToPropPrototype ( defaultProps , propTypes ) { const defaultValues = { } ; const descriptors = { // Default "resolved" values for async props, returned if value not yet resolved/set. _asyncPropDefaultValues : { enumerable : false , value : defaultValues } , // Shadowed object, just to make sure "early indexing" into the instance does not fail _asyncPropOriginalValues : { enumerable : false , value : { } } } ; // Move async props into shadow values for ( const propName in propTypes ) { const propType = propTypes [ propName ] ; const { name , value } = propType ; // Note: async is ES7 keyword, can't destructure if ( propType . async ) { defaultValues [ name ] = value ; descriptors [ name ] = getDescriptorForAsyncProp ( name , value ) ; } } Object . defineProperties ( defaultProps , descriptors ) ; }
Create descriptors for overridable props
Create descriptors for overridable props