{"componentChunkName":"component---src-components-tutorial-layout-js","path":"/tutorial/entity-flow/","webpackCompilationHash":"","result":{"data":{"allFile":{"group":[{"fieldValue":"Resources","nodes":[{"childMdx":{"fields":{"slug":"tutorial/entity-flow/"},"frontmatter":{"title":"Entity Flow"},"headings":[]}},{"childMdx":{"fields":{"slug":"tutorial/faq/"},"frontmatter":{"title":"FAQ"},"headings":[{"value":"How do I handle endpoints that return arrays?","depth":3}]}}]},{"fieldValue":"Tutorials","nodes":[{"childMdx":{"fields":{"slug":"tutorial/api/"},"frontmatter":{"title":"Entity Api"},"headings":[{"value":"Declaring an API","depth":2},{"value":"Sharing","depth":2},{"value":"Non prescriptive","depth":2},{"value":"Api shimming","depth":2}]}},{"childMdx":{"fields":{"slug":"tutorial/examples/"},"frontmatter":{"title":"Examples"},"headings":[{"value":"Request on Load","depth":2},{"value":"Callbacks","depth":2},{"value":"Loading Hoc","depth":2},{"value":"Parallel Requests","depth":2},{"value":"Sequential Requests","depth":2},{"value":"Caching","depth":2},{"value":"Streaming Requests","depth":2},{"value":"Take Last Request","depth":2},{"value":"Hoc Chaining","depth":2},{"value":"Composite Entities","depth":2},{"value":"Normalizing To Filter","depth":2}]}},{"childMdx":{"fields":{"slug":"tutorial/getting-started/"},"frontmatter":{"title":"Getting Started"},"headings":[{"value":"Installation","depth":2},{"value":"Setup","depth":2},{"value":"1. Schema","depth":3},{"value":"2. API","depth":3},{"value":"3. Connect to react","depth":3},{"value":"4. Make a Request","depth":3}]}},{"childMdx":{"fields":{"slug":"tutorial/introduction/"},"frontmatter":{"title":"Introduction"},"headings":[{"value":"Purpose","depth":2}]}},{"childMdx":{"fields":{"slug":"tutorial/schemas/"},"frontmatter":{"title":"Schemas"},"headings":[{"value":"Structure","depth":2},{"value":"Relationships","depth":3},{"value":"Constructing","depth":3},{"value":"Merging","depth":3},{"value":"Entities","depth":2},{"value":"Changing the idAttribute","depth":3},{"value":"Why does an entity require a structure?","depth":3}]}}]}]},"mdx":{"id":"a4bb1880-fa21-535e-919a-6dfcdacccbbd","body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": \"entity-flow\",\n  \"title\": \"Entity Flow\",\n  \"group\": \"Resources\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RequestHoc.onRequest triggered\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The Enty data flow begins when a RequestHoc's onRequest is called. This either happens automatically\\nbased on \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"config.auto\"), \" or as the result of user interaction.\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Data Request\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The result of the payloadCreator is hashed to create a responseKey. This key is what identifies this\\nparticular request in state. The API function is called and the view is re rendered with a Fetching\\nor Refetching requestState in the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Message\"), \".\"))), mdx(\"p\", null, \"If the promise resolves Enty moves on to normalizing. If the promise rejects the view is rerendered\\nwith an Error requestState.\"), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Normalize\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The successful response is passed into schema.normalize, which will in turn call schema.normalize\\nrecursively on its children as defined. Entities found are collected under their schema type and the\\nresult of their idAttribute function. These entities are passed through their shape\\nfunction and if that entity already exists in state, the existing and new entities are passed through\\nthe shapes merge function.\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Results & Entities Stored\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The collected entities are merged into state and the normalized response is stored under its repsonseKey.\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Views Updated\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The RequestHoc now uses its responseKey to select the normalized response out of state and pass\\nthat through the appliction schema's denormalize function. The view is re-rendered with a Success\\nrequest state and the response is now the most up to date version of the entities requested\\nthrough the api.\"))));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"tutorial/entity-flow/"},"headings":[],"frontmatter":{"title":"Entity Flow"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"id":"a4bb1880-fa21-535e-919a-6dfcdacccbbd"}}}