{"componentChunkName":"component---gatsby-theme-mdx-deck-src-templates-deck-js","path":"/","matchPath":"/*","webpackCompilationHash":"2dedbeaeeb0fbe9ab37f","result":{"data":{"deck":{"id":"91beaf9c-cc55-58b9-8445-5d0f97207e11","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 theme = vsDark;\nvar _frontmatter = {};\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  theme: theme,\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(Multiline, {\n    Elem: \"h1\",\n    margin: 50,\n    lines: ['Modeling your way', 'to consistency'],\n    mdxType: \"Multiline\"\n  }), mdx(Me, {\n    mdxType: \"Me\"\n  }), mdx(\"hr\", null), mdx(\"img\", {\n    src: typescript,\n    style: {\n      width: '22vw'\n    }\n  }), mdx(\"hr\", null), mdx(\"img\", {\n    src: typescript,\n    style: {\n      width: '22vw'\n    }\n  }), mdx(Logos, {\n    mdxType: \"Logos\"\n  }), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> = {\\n  isLoading: boolean\\n  didLoad: boolean\\n  data?: T\\n  error?: Error\\n}\\n\"))), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-js\"\n  }), \"const notAsked = {\\n  isLoading: false,\\n  didLoad: false,\\n  data: undefined,\\n  error: undefined,\\n}\\n\\nconst loading = {\\n  isLoading: true,\\n  didLoad: false,\\n  data: undefined,\\n  error: undefined,\\n}\\n\"))), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-js\"\n  }), \"const success = {\\n  isLoading: false,\\n  didLoad: true,\\n  data: user,\\n  error: undefined,\\n}\\n\\nconst failure = {\\n  isLoading: false,\\n  didLoad: true,\\n  data: undefined,\\n  error: error,\\n}\\n\"))), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-jsx\"\n  }), \"type AsyncData<T> = {\\n  isLoading: boolean\\n  didLoad: boolean\\n  data?: T\\n  error?: Error\\n}\\n\\nconst LoadingUser = (props: AsyncData<User>) => {\\n  if (props.isLoading) {\\n    return <Loading />\\n  }\\n\\n  if (props.didLoad && props.error) {\\n    return <ErrorMessage error={props.error} />\\n  }\\n\\n  if (props.didLoad && props.data) {\\n    return <UserCard user={props.data} />\\n  }\\n\\n  return <Idle />\\n}\\n\"))), mdx(\"hr\", null), mdx(Multiline, {\n    lines: ['🚢 📦', 'All good, right?'],\n    mdxType: \"Multiline\"\n  }), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-js\",\n    \"metastring\": \"title=\\\"😱 What does this even ? 🤔\\\"\",\n    \"title\": \"\\\"😱\",\n    \"What\": true,\n    \"does\": true,\n    \"this\": true,\n    \"even\": true,\n    \"?\": true,\n    \"🤔\\\"\": true\n  }), \"const leWhat: AsyncData<User> = {\\n  isLoading: true,\\n  didLoad: true,\\n  data: user,\\n  error: someError,\\n}\\n\"))), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\",\n    \"metastring\": \"2:5 title=\\\"😒 No single source of truth 👎\\\"\",\n    \"2:5\": true,\n    \"title\": \"\\\"😒\",\n    \"No\": true,\n    \"single\": true,\n    \"source\": true,\n    \"of\": true,\n    \"truth\": true,\n    \"👎\\\"\": true\n  }), \"type AsyncData<T> = {\\n  isLoading: boolean\\n  didLoad: boolean\\n  data?: T\\n  error?: Error\\n}\\n\"))), mdx(\"hr\", null), mdx(Multiline, {\n    lines: ['Discriminated Unions', '😎 to the rescue 😎'],\n    mdxType: \"Multiline\"\n  }), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-diff\",\n    \"metastring\": \"4[6:31],5[6:36] title=\\\"No more optional values 🤯\\\"\",\n    \"4[6:31],5[6:36]\": true,\n    \"title\": \"\\\"No\",\n    \"more\": true,\n    \"optional\": true,\n    \"values\": true,\n    \"🤯\\\"\": true\n  }), \"\"))), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\\nconst LoadingUser = (props: AsyncData<User>) => {\\n  if (props.status === 'notAsked') {\\n    return <Idle />\\n  }\\n\\n  if (props.status === 'loading') {\\n    return <Loading />\\n  }\\n\\n  if (props.status === 'failure') {\\n    return <ErrorMessage error={props.error} />\\n  }\\n\\n  return <UserCard user={props.data} />\\n}\\n\"))), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83D\\uDCDC Let's make it declarative \\uD83D\\uDDFA\"), mdx(\"hr\", null), mdx(CodeSurfer, {\n    mdxType: \"CodeSurfer\"\n  }, mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\\ntype Matcher<T, R> = {\\n  notAsked: () => R\\n  loading: () => R\\n  success: (data: T) => R\\n  failure: (error: Error) => R\\n}\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\\ntype Matcher<T, R> = {\\n  notAsked: () => R\\n  loading: () => R\\n  success: (data: T) => R\\n  failure: (error: Error) => R\\n}\\n\\nconst LoadingUser = (props: AsyncData<User>) => {\\n  if (props.status === 'notAsked') {\\n    return <Idle />\\n  }\\n\\n  if (props.status === 'loading') {\\n    return <Loading />\\n  }\\n\\n  if (props.status === 'failure') {\\n    return <ErrorMessage error={props.error} />\\n  }\\n\\n  return <UserCard user={props.data} />\\n}\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\"\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\\ntype Matcher<T, R> = {\\n  notAsked: () => R\\n  loading: () => R\\n  success: (data: T) => R\\n  failure: (error: Error) => R\\n}\\n\\nconst match = <T, R>(m: Matcher<T, R>, ad: AsyncData<T>): R => {\\n  if (ad.status === 'notAsked') {\\n    return m.notAsked()\\n  }\\n\\n  if (ad.status === 'loading') {\\n    return m.loading()\\n  }\\n\\n  if (ad.status === 'failure') {\\n    return m.failure(ad.error)\\n  }\\n\\n  return m.success(ad.data)\\n}\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-ts\",\n    \"metastring\": \"30:39\",\n    \"30:39\": true\n  }), \"type AsyncData<T> =\\n  | {status: 'notAsked'}\\n  | {status: 'loading'}\\n  | {status: 'success', data: T}\\n  | {status: 'failure', error: Error}\\n\\ntype Matcher<T, R> = {\\n  notAsked: () => R\\n  loading: () => R\\n  success: (data: T) => R\\n  failure: (error: Error) => R\\n}\\n\\nconst match = <T, R>(m: Matcher<T, R>, ad: AsyncData<T>) => {\\n  if (ad.status === 'notAsked') {\\n    return m.notAsked()\\n  }\\n\\n  if (ad.status === 'loading') {\\n    return m.loading()\\n  }\\n\\n  if (ad.status === 'failure') {\\n    return m.failure(ad.error)\\n  }\\n\\n  return m.success(ad.data)\\n}\\n\\nconst LoadingUser = (props: AsyncData<User>) => {\\n  match<User, React.ReactNode>(\\n    {\\n      notAsked: () => <Idle />,\\n      loading: () => <Loading />,\\n      failure: (error) => <ErrorMessage error={error} />,\\n      success: (user) => <UserCard user={user} />,\\n    },\\n    props,\\n  )\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-diff\",\n    \"metastring\": \"1:40\",\n    \"1:40\": true\n  }), \"\"))), mdx(\"hr\", null), mdx(\"h2\", null, \"Domain Modeling\"), mdx(Appear, {\n    mdxType: \"Appear\"\n  }, mdx(\"h2\", null, \"\\uD83D\\uDCAA enables us \\uD83D\\uDC4D\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\uD83D\\uDCDA Resources \\uD83E\\uDD13\"), mdx(References, {\n    mdxType: \"References\"\n  }), mdx(\"hr\", null), mdx(Multiline, {\n    lines: ['🦄 Happy & safe coding! 🖖', 'Thanks!'],\n    mdxType: \"Multiline\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"matchPath":"/*","isCreatedByStatefulCreatePages":false,"id":"91beaf9c-cc55-58b9-8445-5d0f97207e11","slug":"","title":"📜 Let's make it declarative 🗺"}}}