{"version":3,"sources":["webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/construct.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/regenerator/index.js","webpack://blog.hppd.dev/./node_modules/@chakra-ui/skeleton/dist/esm/skeleton.js","webpack://blog.hppd.dev/./node_modules/@chakra-ui/hooks/dist/esm/use-previous.js","webpack://blog.hppd.dev/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://blog.hppd.dev/./src/components/git-info/useLatestCommit.ts","webpack://blog.hppd.dev/./src/components/article-info/index.tsx","webpack://blog.hppd.dev/./node_modules/@chakra-ui/avatar/dist/esm/avatar.js","webpack://blog.hppd.dev/./node_modules/@chakra-ui/image/dist/esm/use-image.js","webpack://blog.hppd.dev/./src/components/author/index.tsx","webpack://blog.hppd.dev/./src/images/hatena-bookmark.tsx","webpack://blog.hppd.dev/./src/components/share/index.tsx","webpack://blog.hppd.dev/./src/templates/blog-post-template/index.tsx","webpack://blog.hppd.dev/./node_modules/gatsby-plugin-mdx/index.js","webpack://blog.hppd.dev/./node_modules/gatsby-plugin-mdx/mdx-renderer.js","webpack://blog.hppd.dev/./node_modules/regenerator-runtime/runtime.js"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","arrayLikeToArray","isArray","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","args","Class","Reflect","construct","a","push","apply","instance","Function","bind","prototype","arguments","obj","key","value","Object","defineProperty","enumerable","configurable","writable","sham","Proxy","Boolean","valueOf","call","e","iter","Symbol","iterator","from","TypeError","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","o","minLen","n","toString","slice","constructor","name","test","_extends","assign","target","source","hasOwnProperty","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","StyledSkeleton","baseStyle","boxShadow","backgroundClip","cursor","color","pointerEvents","userSelect","visibility","fade","opacity","to","Skeleton","props","ref","styles","isFirstRender","current","useIsFirstRender","_omitThemingProps","isLoaded","fadeDuration","className","rest","wasPreviouslyLoaded","useRef","useEffect","usePrevious","_className","cx","animation","__css","defaultProps","speed","displayName","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","latestCommitReducer","state","action","type","isError","isLoading","data","payload","errMessage","message","useLatestCommit","filePath","useReducer","lastUpdate","url","dispatch","fn","fetch","encodeURIComponent","response","ok","json","panic","Error","status","statusText","commit","committer","date","html_url","self","err","undefined","fetchLatestCommit","SeeInGitHub","chakra","marginInlineEnd","Hyper","UpdatedAtView","d","w","UpdatedAt","path","ArticleInfo","AvatarBadge","badgeStyles","position","display","alignItems","justifyContent","insetEnd","bottom","badge","initials","_name$split","split","_name$split2","firstName","lastName","charAt","AvatarName","getInitials","role","label","DefaultIcon","viewBox","width","height","fill","textAlign","textTransform","fontWeight","flexShrink","Avatar","src","showBorder","_omitThemingProps$bor","borderRadius","onError","_omitThemingProps$get","_omitThemingProps$ico","icon","_omitThemingProps$ico2","iconLabel","loading","children","borderColor","ignoreFallback","avatarStyles","borderWidth","container","AvatarImage","_props$icon","srcSet","onLoad","crossOrigin","sizes","_useState","useState","_useState2","setStatus","imageRef","load","useCallback","flush","img","Image","srcset","onload","event","onerror","useImage","alt","objectFit","Author","iconColor","useIconColor","my","gridGap","mb","_hover","size","faTwitter","faGithub","fontSize","Hatebu","xmlns","id","transform","cy","rx","ry","Share","title","bg","p","rounded","BlogPost","mdx","frontmatter","$","fields","center","tags","flatMap","tag","relativeDir","scrollable","toc","tableOfContents","M","MDXProvider","components","ArticleElements","MDXRenderer","body","require","React","useMDXScope","scope","mdxScope","End","fullScope","values","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","GenStateSuspendedStart","method","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","isGeneratorFunction","genFun","ctor","mark","__proto__","awrap","async","object","reverse","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode"],"mappings":"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","file":"component---src-templates-blog-post-template-index-tsx-d1098e98a1aa8447b4a3.js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nimport { useBreakpointValue } from \"@chakra-ui/media-query\";\nimport { chakra, forwardRef, keyframes, omitThemingProps, useStyleConfig } from \"@chakra-ui/system\";\nimport { usePrevious } from \"@chakra-ui/hooks\";\nimport { cx, __DEV__ } from \"@chakra-ui/utils\";\nimport * as React from \"react\";\nvar StyledSkeleton = chakra(\"div\", {\n baseStyle: {\n boxShadow: \"none\",\n backgroundClip: \"padding-box\",\n cursor: \"default\",\n color: \"transparent\",\n pointerEvents: \"none\",\n userSelect: \"none\",\n \"&::before, &::after, *\": {\n visibility: \"hidden\"\n }\n }\n});\nvar fade = keyframes({\n from: {\n opacity: 0\n },\n to: {\n opacity: 1\n }\n});\n\nvar useIsFirstRender = function useIsFirstRender() {\n var isFirstRender = React.useRef(true);\n React.useEffect(function () {\n isFirstRender.current = false;\n }, []);\n return isFirstRender.current;\n};\n\nexport var Skeleton = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyleConfig(\"Skeleton\", props);\n var isFirstRender = useIsFirstRender();\n\n var _omitThemingProps = omitThemingProps(props),\n isLoaded = _omitThemingProps.isLoaded,\n fadeDuration = _omitThemingProps.fadeDuration,\n className = _omitThemingProps.className,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, [\"startColor\", \"endColor\", \"isLoaded\", \"fadeDuration\", \"speed\", \"className\"]);\n\n var wasPreviouslyLoaded = usePrevious(isLoaded);\n\n var _className = cx(\"chakra-skeleton\", className);\n\n if (isLoaded) {\n var animation = isFirstRender || wasPreviouslyLoaded ? \"none\" : fade + \" \" + fadeDuration + \"s\";\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref,\n className: _className,\n __css: {\n animation: animation\n }\n }, rest));\n }\n\n return /*#__PURE__*/React.createElement(StyledSkeleton, _extends({\n ref: ref,\n className: _className\n }, rest, {\n __css: styles\n }));\n});\nSkeleton.defaultProps = {\n fadeDuration: 0.4,\n speed: 0.8\n};\n\nif (__DEV__) {\n Skeleton.displayName = \"Skeleton\";\n}\n\nfunction range(count) {\n return Array(count).fill(1).map(function (_, index) {\n return index + 1;\n });\n}\n\nvar defaultNoOfLines = 3;\nexport var SkeletonText = function SkeletonText(props) {\n var _props$noOfLines = props.noOfLines,\n noOfLines = _props$noOfLines === void 0 ? defaultNoOfLines : _props$noOfLines,\n _props$spacing = props.spacing,\n spacing = _props$spacing === void 0 ? \"0.5rem\" : _props$spacing,\n _props$skeletonHeight = props.skeletonHeight,\n skeletonHeight = _props$skeletonHeight === void 0 ? \"0.5rem\" : _props$skeletonHeight,\n className = props.className,\n startColor = props.startColor,\n endColor = props.endColor,\n isLoaded = props.isLoaded,\n fadeDuration = props.fadeDuration,\n speed = props.speed,\n children = props.children,\n rest = _objectWithoutPropertiesLoose(props, [\"noOfLines\", \"spacing\", \"skeletonHeight\", \"className\", \"startColor\", \"endColor\", \"isLoaded\", \"fadeDuration\", \"speed\", \"children\"]);\n\n var noOfLinesValue = useBreakpointValue(typeof noOfLines === \"number\" ? [noOfLines] : noOfLines) || defaultNoOfLines;\n var numbers = range(noOfLinesValue);\n\n var getWidth = function getWidth(index) {\n if (noOfLinesValue > 1) {\n return index === numbers.length ? \"80%\" : \"100%\";\n }\n\n return \"100%\";\n };\n\n var _className = cx(\"chakra-skeleton__group\", className);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n className: _className\n }, rest), numbers.map(function (number, index) {\n if (isLoaded && index > 0) {\n // skip other lines\n return null;\n }\n\n var sizeProps = isLoaded ? null : {\n mb: number === numbers.length ? \"0\" : spacing,\n width: getWidth(number),\n height: skeletonHeight\n };\n return /*#__PURE__*/React.createElement(Skeleton, _extends({\n key: numbers.length.toString() + number,\n startColor: startColor,\n endColor: endColor,\n isLoaded: isLoaded,\n fadeDuration: fadeDuration,\n speed: speed\n }, sizeProps), // allows animating the children\n index === 0 ? children : undefined);\n }));\n};\n\nif (__DEV__) {\n SkeletonText.displayName = \"SkeletonText\";\n}\n\nexport var SkeletonCircle = function SkeletonCircle(_ref) {\n var _ref$size = _ref.size,\n size = _ref$size === void 0 ? \"2rem\" : _ref$size,\n rest = _objectWithoutPropertiesLoose(_ref, [\"size\"]);\n\n return /*#__PURE__*/React.createElement(Skeleton, _extends({\n borderRadius: \"full\",\n boxSize: size\n }, rest));\n};\n\nif (__DEV__) {\n SkeletonCircle.displayName = \"SkeletonCircle\";\n}","import { useRef, useEffect } from \"react\";\nexport function usePrevious(value) {\n var ref = useRef();\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import { useEffect, useReducer } from \"react\";\n\nimport { panic } from \"../../utils/panic\";\n\ntype User = { date: string; email: string; name: string };\n\ntype LatestCommit = {\n commit: {\n author: User;\n committer: User;\n message: string;\n };\n html_url: string;\n node_id: string;\n sha: string;\n};\n\ntype Data = {\n lastUpdate: string;\n message: string;\n url: string;\n};\n\ntype State = {\n data: Data;\n errMessage: string;\n isError: boolean;\n isLoading: boolean;\n};\n\ntype Action =\n | { type: \"FETCH_START\" }\n | { message: string; type: \"FETCH_FAILURE\" }\n | { payload: Data; type: \"FETCH_SUCCESS\" };\n\nconst latestCommitReducer: React.Reducer = (state, action) => {\n switch (action.type) {\n case \"FETCH_START\":\n return { ...state, isError: false, isLoading: true };\n break;\n case \"FETCH_SUCCESS\":\n return {\n ...state,\n isError: false,\n isLoading: false,\n data: action.payload,\n };\n case \"FETCH_FAILURE\":\n return {\n ...state,\n isError: true,\n isLoading: false,\n errMessage: action.message,\n };\n }\n};\n\nexport const useLatestCommit = (filePath: string): State => {\n const [state, dispatch] = useReducer(latestCommitReducer, {\n isLoading: false,\n isError: false,\n errMessage: \"\",\n data: {\n lastUpdate: \"None\",\n message: \"None\",\n url: \"\",\n },\n });\n\n useEffect(() => {\n const fetchLatestCommit = async () => {\n dispatch({ type: \"FETCH_START\" });\n try {\n const response = await fetch(\n `https://api.github.com/repos/AumyF/blog/commits?path=posts/${encodeURIComponent(\n filePath\n )}.mdx&page=1&per_page=1`\n );\n\n const [\n {\n commit: {\n committer: { date: lastUpdate },\n message,\n },\n html_url: url,\n },\n ] = response.ok\n ? await (response.json() as Promise<[LatestCommit]>)\n : panic(new Error(`${response.status} ${response.statusText}`));\n\n dispatch({\n type: \"FETCH_SUCCESS\",\n payload: { url, lastUpdate, message },\n });\n } catch (error) {\n if (!(error instanceof Error)) throw error;\n dispatch({\n type: \"FETCH_FAILURE\",\n message: `${error.name}: ${error.message}`,\n });\n }\n };\n\n fetchLatestCommit();\n }, []);\n return state;\n};\n","import { Box, chakra, Skeleton } from \"@chakra-ui/react\";\nimport React from \"react\";\n\nimport { Hyper } from \"../atoms/Hyper\";\nimport { useLatestCommit } from \"../git-info/useLatestCommit\";\n\nexport const SeeInGitHub: React.FC<{\n url: string;\n}> = ({ url }) => (\n \n \n source_url:\n \n GitHubで見る\n \n);\n\nconst UpdatedAtView: React.FC<{\n isLoading: boolean;\n lastUpdate: string;\n}> = ({ isLoading, lastUpdate }) => (\n \n \n updated_at:\n \n\n \n \n \n \n);\n\nexport const UpdatedAt: React.FC<{ path: string }> = props => {\n const path = `${props.path}/index`;\n const { data, isLoading } = useLatestCommit(path);\n const { lastUpdate } = data;\n\n return ;\n};\n\nexport const ArticleInfo: React.FC<{ path: string }> = ({ path }) => (\n <>\n \n \n \n);\n","import _slicedToArray from \"/opt/buildhome/repo/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nimport { useImage } from \"@chakra-ui/image\";\nimport { chakra, forwardRef, omitThemingProps, StylesProvider, useMultiStyleConfig, useStyles } from \"@chakra-ui/system\";\nimport { cx, __DEV__ } from \"@chakra-ui/utils\";\nimport * as React from \"react\";\n/**\n * AvatarBadge used to show extra badge to the top-right\n * or bottom-right corner of an avatar.\n */\n\nexport var AvatarBadge = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useStyles();\n\n var badgeStyles = _extends({\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n insetEnd: \"0\",\n bottom: \"0\"\n }, styles.badge);\n\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n ref: ref\n }, props, {\n className: cx(\"chakra-avatar__badge\", props.className),\n __css: badgeStyles\n }));\n});\n\nif (__DEV__) {\n AvatarBadge.displayName = \"AvatarBadge\";\n}\n\nfunction initials(name) {\n var _name$split = name.split(\" \"),\n _name$split2 = _slicedToArray(_name$split, 2),\n firstName = _name$split2[0],\n lastName = _name$split2[1];\n\n return firstName && lastName ? \"\" + firstName.charAt(0) + lastName.charAt(0) : firstName.charAt(0);\n}\n/**\n * The avatar name container\n */\n\n\nvar AvatarName = function AvatarName(props) {\n var name = props.name,\n getInitials = props.getInitials,\n rest = _objectWithoutPropertiesLoose(props, [\"name\", \"getInitials\"]);\n\n var styles = useStyles();\n return /*#__PURE__*/React.createElement(chakra.div, _extends({\n role: \"img\",\n \"aria-label\": name\n }, rest, {\n __css: styles.label\n }), name ? getInitials == null ? void 0 : getInitials(name) : null);\n};\n/**\n * Fallback avatar react component.\n * This should be a generic svg used to represent an avatar\n */\n\n\nvar DefaultIcon = function DefaultIcon(props) {\n return /*#__PURE__*/React.createElement(chakra.svg, _extends({\n viewBox: \"0 0 128 128\",\n color: \"#fff\",\n width: \"100%\",\n height: \"100%\",\n className: \"chakra-avatar__svg\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M103,102.1388 C93.094,111.92 79.3504,118 64.1638,118 C48.8056,118 34.9294,111.768 25,101.7892 L25,95.2 C25,86.8096 31.981,80 40.6,80 L87.4,80 C96.019,80 103,86.8096 103,95.2 L103,102.1388 Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M63.9961647,24 C51.2938136,24 41,34.2938136 41,46.9961647 C41,59.7061864 51.2938136,70 63.9961647,70 C76.6985159,70 87,59.7061864 87,46.9961647 C87,34.2938136 76.6985159,24 63.9961647,24\"\n }));\n};\n\nexport var baseStyle = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n textTransform: \"uppercase\",\n fontWeight: \"medium\",\n position: \"relative\",\n flexShrink: 0\n};\n/**\n * Avatar component that renders an user avatar with\n * support for fallback avatar and name-only avatars\n */\n\nexport var Avatar = /*#__PURE__*/forwardRef(function (props, ref) {\n var styles = useMultiStyleConfig(\"Avatar\", props);\n\n var _omitThemingProps = omitThemingProps(props),\n src = _omitThemingProps.src,\n name = _omitThemingProps.name,\n showBorder = _omitThemingProps.showBorder,\n _omitThemingProps$bor = _omitThemingProps.borderRadius,\n borderRadius = _omitThemingProps$bor === void 0 ? \"full\" : _omitThemingProps$bor,\n onError = _omitThemingProps.onError,\n _omitThemingProps$get = _omitThemingProps.getInitials,\n getInitials = _omitThemingProps$get === void 0 ? initials : _omitThemingProps$get,\n _omitThemingProps$ico = _omitThemingProps.icon,\n icon = _omitThemingProps$ico === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _omitThemingProps$ico,\n _omitThemingProps$ico2 = _omitThemingProps.iconLabel,\n iconLabel = _omitThemingProps$ico2 === void 0 ? \" avatar\" : _omitThemingProps$ico2,\n loading = _omitThemingProps.loading,\n children = _omitThemingProps.children,\n borderColor = _omitThemingProps.borderColor,\n ignoreFallback = _omitThemingProps.ignoreFallback,\n rest = _objectWithoutPropertiesLoose(_omitThemingProps, [\"src\", \"name\", \"showBorder\", \"borderRadius\", \"onError\", \"getInitials\", \"icon\", \"iconLabel\", \"loading\", \"children\", \"borderColor\", \"ignoreFallback\"]);\n\n var avatarStyles = _extends({\n borderRadius: borderRadius,\n borderWidth: showBorder ? \"2px\" : undefined\n }, baseStyle, styles.container);\n\n if (borderColor) {\n avatarStyles.borderColor = borderColor;\n }\n\n return /*#__PURE__*/React.createElement(chakra.span, _extends({\n ref: ref\n }, rest, {\n className: cx(\"chakra-avatar\", props.className),\n __css: avatarStyles\n }), /*#__PURE__*/React.createElement(StylesProvider, {\n value: styles\n }, /*#__PURE__*/React.createElement(AvatarImage, {\n src: src,\n loading: loading,\n onError: onError,\n getInitials: getInitials,\n name: name,\n borderRadius: borderRadius,\n icon: icon,\n iconLabel: iconLabel,\n ignoreFallback: ignoreFallback\n }), children));\n});\n\nif (__DEV__) {\n Avatar.displayName = \"Avatar\";\n}\n\nvar AvatarImage = function AvatarImage(props) {\n var src = props.src,\n onError = props.onError,\n getInitials = props.getInitials,\n name = props.name,\n borderRadius = props.borderRadius,\n loading = props.loading,\n iconLabel = props.iconLabel,\n _props$icon = props.icon,\n icon = _props$icon === void 0 ? /*#__PURE__*/React.createElement(DefaultIcon, null) : _props$icon,\n ignoreFallback = props.ignoreFallback;\n /**\n * use the image hook to only show the image when it has loaded\n */\n\n var status = useImage({\n src: src,\n onError: onError,\n ignoreFallback: ignoreFallback\n });\n var hasLoaded = status === \"loaded\";\n /**\n * Fallback avatar applies under 2 conditions:\n * - If `src` was passed and the image has not loaded or failed to load\n * - If `src` wasn't passed\n *\n * In this case, we'll show either the name avatar or default avatar\n */\n\n var showFallback = !src || !hasLoaded;\n\n if (showFallback) {\n return name ? /*#__PURE__*/React.createElement(AvatarName, {\n className: \"chakra-avatar__initials\",\n getInitials: getInitials,\n name: name\n }) : /*#__PURE__*/React.cloneElement(icon, {\n role: \"img\",\n \"aria-label\": iconLabel\n });\n }\n /**\n * If `src` was passed and the image has loaded, we'll show it\n */\n\n\n return /*#__PURE__*/React.createElement(chakra.img, {\n src: src,\n alt: name,\n className: \"chakra-avatar__img\",\n loading: loading,\n __css: {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius: borderRadius\n }\n });\n};\n\nif (__DEV__) {\n AvatarImage.displayName = \"AvatarImage\";\n}","import _slicedToArray from \"/opt/buildhome/repo/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport { useSafeLayoutEffect } from \"@chakra-ui/hooks\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n/**\n * React hook that loads an image in the browser,\n * and let's us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? : \n * }\n * ```\n */\n\nexport function useImage(props) {\n var loading = props.loading,\n src = props.src,\n srcSet = props.srcSet,\n onLoad = props.onLoad,\n onError = props.onError,\n crossOrigin = props.crossOrigin,\n sizes = props.sizes,\n ignoreFallback = props.ignoreFallback;\n\n var _useState = useState(\"pending\"),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setStatus = _useState2[1];\n\n useEffect(function () {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n var imageRef = useRef();\n var load = useCallback(function () {\n if (!src) return;\n flush();\n var img = new Image();\n img.src = src;\n if (crossOrigin) img.crossOrigin = crossOrigin;\n if (srcSet) img.srcset = srcSet;\n if (sizes) img.sizes = sizes;\n if (loading) img.loading = loading;\n\n img.onload = function (event) {\n flush();\n setStatus(\"loaded\");\n onLoad == null ? void 0 : onLoad(event);\n };\n\n img.onerror = function (error) {\n flush();\n setStatus(\"failed\");\n onError == null ? void 0 : onError(error);\n };\n\n imageRef.current = img;\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading]);\n\n var flush = function flush() {\n if (imageRef.current) {\n imageRef.current.onload = null;\n imageRef.current.onerror = null;\n imageRef.current = null;\n }\n };\n\n useSafeLayoutEffect(function () {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined;\n\n if (status === \"loading\") {\n load();\n }\n\n return function () {\n flush();\n };\n }, [status, load, ignoreFallback]);\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n\n return ignoreFallback ? \"loaded\" : status;\n}","import { Avatar, Box, Flex, Text } from \"@chakra-ui/react\";\nimport { faGithub, faTwitter } from \"@fortawesome/free-brands-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\n\nimport { Hyper } from \"../atoms/Hyper\";\nimport { useIconColor } from \"../styles/colors\";\n\nexport const Author: React.FC = () => {\n const iconColor = useIconColor();\n\n return (\n <>\n \n \n \n Aumy / おーみー\n \n \n \n \n \n \n \n \n \n \n \n 2003年,横浜市生れ.小学生ごろからプログラミングに触れる.\n ビジネス,プロダクトとかよりもコンピュータの理論やオープンソースの文化が好き.\n \n \n );\n};\n","import React from \"react\";\n\nexport const Hatebu: React.VFC = () => (\n \n \n \n \n \n \n \n);\n","import { Flex } from \"@chakra-ui/react\";\nimport { faTwitter } from \"@fortawesome/free-brands-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\n\nimport { Hatebu } from \"../../images/hatena-bookmark\";\nimport { Hyper } from \"../atoms/Hyper\";\nimport { useIconColor } from \"../styles/colors\";\n\nexport const Share: React.FC<{ url: string; title: string }> = ({\n url,\n title,\n}) => {\n const iconColor = useIconColor();\n\n return (\n (url = encodeURIComponent(url)),\n (\n \n \n \n \n \n \n \n \n )\n );\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { graphql, PageProps } from \"gatsby\";\nimport { MDXRenderer } from \"gatsby-plugin-mdx\";\nimport React from \"react\";\n\nimport { Article } from \"../../components/article\";\nimport { ArticleInfo } from \"../../components/article-info\";\nimport { HeadTitle } from \"../../components/atoms/head-title\";\nimport { TagList } from \"../../components/atoms/tag-list\";\nimport { Author } from \"../../components/author\";\nimport { Layout } from \"../../components/layout\";\nimport { BodyContainer } from \"../../components/layout/container\";\nimport { MainContent } from \"../../components/layout/main-content\";\nimport {\n Sidebar,\n SidebarCard,\n SidebarCardTitle,\n} from \"../../components/layout/sidebar\";\nimport { TitleContainer, TitleName } from \"../../components/layout/title\";\nimport { MobileTOC } from \"../../components/mobile-toc\";\nimport { Share } from \"../../components/share\";\nimport * as tableOfContents from \"../../components/table-of-contents\";\nimport { assertsNonNull as $ } from \"../../utils/asserts-non-null\";\nimport { ArticleElements } from \"./article-elements\";\n\nexport type BlogPostContext = {\n id: string;\n};\n\nexport type BlogPostProps = PageProps<\n GatsbyTypes.BlogPostQuery,\n BlogPostContext\n>;\n\nexport const BlogPost: React.FC = ({ data: { mdx } }) => {\n const frontmatter = $(mdx?.frontmatter);\n const path = $(mdx?.fields?.path);\n\n return (\n \n {frontmatter.title}\n \n {frontmatter.title}\n tag ?? []) ?? []}\n />\n \n \n\n \n \n \n 著者\n \n \n\n \n Table of Contents\n \n \n\n \n 共有\n \n \n \n\n \n
\n \n {$(mdx?.body)}\n \n
\n
\n
\n\n \n \n );\n};\n\nexport const pageQuery = graphql`\n query BlogPost($id: String) {\n mdx(id: { eq: $id }) {\n frontmatter {\n title\n tags\n description\n }\n tableOfContents\n body\n excerpt(truncate: true)\n fields {\n path\n relativeDir\n }\n }\n }\n`;\n\nexport default BlogPost;\n","/**\n * Welcome to gatsby-plugin-mdx!\n *\n * Start reading in gatsby-node.js\n */\n\nconst MDXRenderer = require(`./mdx-renderer`)\n\nmodule.exports = {\n MDXRenderer: MDXRenderer,\n}\n","const React = require(`react`)\nconst { mdx } = require(`@mdx-js/react`)\nconst { useMDXScope } = require(`./context`)\n\nmodule.exports = function MDXRenderer({\n scope,\n children,\n ...props\n}) {\n const mdxScope = useMDXScope(scope)\n\n // Memoize the compiled component\n const End = React.useMemo(() => {\n if (!children) {\n return null\n }\n\n const fullScope = {\n // React is here just in case the user doesn't pass them in\n // in a manual usage of the renderer\n React,\n mdx,\n ...mdxScope,\n }\n\n const keys = Object.keys(fullScope)\n const values = keys.map(key => fullScope[key])\n const fn = new Function(`_fn`, ...keys, `${children}`)\n\n return fn({}, ...values)\n }, [children, scope])\n\n return React.createElement(End, {...props })\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n"],"sourceRoot":""}